From 95c01687f8a0697b66bceab4e0e0bd3c69cb3a47 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 9 Jan 2009 13:11:37 +0800 Subject: [PATCH] Create TortoiseGitBlame --- src/TortoiseGitBlame/MainFrm.cpp | 354 ++++++++++ src/TortoiseGitBlame/MainFrm.h | 56 ++ src/TortoiseGitBlame/OutputWnd.cpp | 198 ++++++ src/TortoiseGitBlame/OutputWnd.h | 59 ++ src/TortoiseGitBlame/PropertiesWnd.cpp | 269 +++++++ src/TortoiseGitBlame/PropertiesWnd.h | 60 ++ src/TortoiseGitBlame/ReadMe.txt | 146 ++++ src/TortoiseGitBlame/Resource.h | 58 ++ src/TortoiseGitBlame/TortoiseGitBlame.cpp | 184 +++++ src/TortoiseGitBlame/TortoiseGitBlame.h | 39 ++ src/TortoiseGitBlame/TortoiseGitBlame.rc | 463 ++++++++++++ src/TortoiseGitBlame/TortoiseGitBlame.vcproj | 773 +++++++++++++++++++++ .../TortoiseGitBlame.vcproj.FSL.B20596.user | 65 ++ src/TortoiseGitBlame/TortoiseGitBlameDoc.cpp | 79 +++ src/TortoiseGitBlame/TortoiseGitBlameDoc.h | 41 ++ src/TortoiseGitBlame/TortoiseGitBlameView.cpp | 117 ++++ src/TortoiseGitBlame/TortoiseGitBlameView.h | 53 ++ src/TortoiseGitBlame/UserImages.bmp | Bin 0 -> 7976 bytes src/TortoiseGitBlame/hlp/Images/Bullet.gif | Bin 0 -> 816 bytes src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhc | 42 ++ src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhk | 9 + src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhp | 213 ++++++ src/TortoiseGitBlame/hlp/afx_hidd_color.htm | 16 + src/TortoiseGitBlame/hlp/afx_hidd_fileopen.htm | 39 ++ src/TortoiseGitBlame/hlp/afx_hidd_filesave.htm | 36 + src/TortoiseGitBlame/hlp/afx_hidd_find.htm | 16 + src/TortoiseGitBlame/hlp/afx_hidd_font.htm | 16 + src/TortoiseGitBlame/hlp/afx_hidd_newtypedlg.htm | 20 + src/TortoiseGitBlame/hlp/afx_hidd_print.htm | 59 ++ src/TortoiseGitBlame/hlp/afx_hidd_printdlg.htm | 18 + src/TortoiseGitBlame/hlp/afx_hidd_printsetup.htm | 42 ++ src/TortoiseGitBlame/hlp/afx_hidd_replace.htm | 16 + src/TortoiseGitBlame/hlp/afx_hidp_default.htm | 20 + src/TortoiseGitBlame/hlp/afx_hidw_dockbar_top.htm | 16 + src/TortoiseGitBlame/hlp/afx_hidw_preview_bar.htm | 48 ++ src/TortoiseGitBlame/hlp/afx_hidw_status_bar.htm | 34 + src/TortoiseGitBlame/hlp/afx_hidw_toolbar.htm | 23 + src/TortoiseGitBlame/hlp/hid_app_about.htm | 16 + src/TortoiseGitBlame/hlp/hid_app_exit.htm | 22 + src/TortoiseGitBlame/hlp/hid_context_help.htm | 20 + src/TortoiseGitBlame/hlp/hid_edit_clear.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_clear_all.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_copy.htm | 19 + src/TortoiseGitBlame/hlp/hid_edit_cut.htm | 19 + src/TortoiseGitBlame/hlp/hid_edit_find.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_paste.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_redo.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_repeat.htm | 17 + src/TortoiseGitBlame/hlp/hid_edit_replace.htm | 16 + src/TortoiseGitBlame/hlp/hid_edit_undo.htm | 19 + src/TortoiseGitBlame/hlp/hid_file_close.htm | 22 + src/TortoiseGitBlame/hlp/hid_file_mru_file1.htm | 20 + src/TortoiseGitBlame/hlp/hid_file_new.htm | 23 + src/TortoiseGitBlame/hlp/hid_file_open.htm | 24 + src/TortoiseGitBlame/hlp/hid_file_page_setup.htm | 16 + src/TortoiseGitBlame/hlp/hid_file_print.htm | 21 + .../hlp/hid_file_print_preview.htm | 21 + src/TortoiseGitBlame/hlp/hid_file_print_setup.htm | 20 + src/TortoiseGitBlame/hlp/hid_file_save.htm | 22 + src/TortoiseGitBlame/hlp/hid_file_save_as.htm | 22 + src/TortoiseGitBlame/hlp/hid_file_send_mail.htm | 18 + src/TortoiseGitBlame/hlp/hid_help_index.htm | 18 + src/TortoiseGitBlame/hlp/hid_help_using.htm | 16 + src/TortoiseGitBlame/hlp/hid_ht_caption.htm | 36 + src/TortoiseGitBlame/hlp/hid_ht_nowhere.htm | 16 + src/TortoiseGitBlame/hlp/hid_next_pane.htm | 16 + src/TortoiseGitBlame/hlp/hid_prev_pane.htm | 16 + src/TortoiseGitBlame/hlp/hid_sc_close.htm | 1 + src/TortoiseGitBlame/hlp/hid_sc_maximize.htm | 17 + src/TortoiseGitBlame/hlp/hid_sc_minimize.htm | 16 + src/TortoiseGitBlame/hlp/hid_sc_move.htm | 18 + src/TortoiseGitBlame/hlp/hid_sc_nextwindow.htm | 17 + src/TortoiseGitBlame/hlp/hid_sc_prevwindow.htm | 16 + src/TortoiseGitBlame/hlp/hid_sc_restore.htm | 17 + src/TortoiseGitBlame/hlp/hid_sc_size.htm | 26 + src/TortoiseGitBlame/hlp/hid_sc_tasklist.htm | 50 ++ src/TortoiseGitBlame/hlp/hid_view_ruler.htm | 16 + src/TortoiseGitBlame/hlp/hid_view_status_bar.htm | 24 + src/TortoiseGitBlame/hlp/hid_view_toolbar.htm | 23 + src/TortoiseGitBlame/hlp/hid_window_all.htm | 17 + src/TortoiseGitBlame/hlp/hid_window_arrange.htm | 17 + src/TortoiseGitBlame/hlp/hid_window_cascade.htm | 16 + src/TortoiseGitBlame/hlp/hid_window_new.htm | 17 + src/TortoiseGitBlame/hlp/hid_window_split.htm | 18 + src/TortoiseGitBlame/hlp/hid_window_tile.htm | 16 + src/TortoiseGitBlame/hlp/hid_window_tile_horz.htm | 17 + src/TortoiseGitBlame/hlp/hid_window_tile_vert.htm | 16 + src/TortoiseGitBlame/hlp/hidr_doc1type.htm | 28 + src/TortoiseGitBlame/hlp/main_index.htm | 28 + src/TortoiseGitBlame/hlp/menu_edit.htm | 39 ++ src/TortoiseGitBlame/hlp/menu_file.htm | 68 ++ src/TortoiseGitBlame/hlp/menu_help.htm | 29 + src/TortoiseGitBlame/hlp/menu_view.htm | 29 + src/TortoiseGitBlame/hlp/menu_window.htm | 43 ++ src/TortoiseGitBlame/hlp/scrollbars.htm | 18 + src/TortoiseGitBlame/res/Toolbar.bmp | Bin 0 -> 1198 bytes src/TortoiseGitBlame/res/Toolbar256.bmp | Bin 0 -> 6536 bytes src/TortoiseGitBlame/res/TortoiseGitBlame.ico | Bin 0 -> 67777 bytes src/TortoiseGitBlame/res/TortoiseGitBlame.rc2 | 13 + src/TortoiseGitBlame/res/TortoiseGitBlameDoc.ico | Bin 0 -> 4710 bytes src/TortoiseGitBlame/res/output_wnd.ico | Bin 0 -> 1078 bytes src/TortoiseGitBlame/res/output_wnd_hc.ico | Bin 0 -> 2166 bytes src/TortoiseGitBlame/res/properties.bmp | Bin 0 -> 630 bytes src/TortoiseGitBlame/res/properties_hc.bmp | Bin 0 -> 3128 bytes src/TortoiseGitBlame/res/properties_wnd.ico | Bin 0 -> 1078 bytes src/TortoiseGitBlame/res/properties_wnd_hc.ico | Bin 0 -> 2166 bytes src/TortoiseGitBlame/stdafx.cpp | 8 + src/TortoiseGitBlame/stdafx.h | 60 ++ src/TortoiseGitBlame/targetver.h | 26 + 109 files changed, 5036 insertions(+) create mode 100644 src/TortoiseGitBlame/MainFrm.cpp create mode 100644 src/TortoiseGitBlame/MainFrm.h create mode 100644 src/TortoiseGitBlame/OutputWnd.cpp create mode 100644 src/TortoiseGitBlame/OutputWnd.h create mode 100644 src/TortoiseGitBlame/PropertiesWnd.cpp create mode 100644 src/TortoiseGitBlame/PropertiesWnd.h create mode 100644 src/TortoiseGitBlame/ReadMe.txt create mode 100644 src/TortoiseGitBlame/Resource.h create mode 100644 src/TortoiseGitBlame/TortoiseGitBlame.cpp create mode 100644 src/TortoiseGitBlame/TortoiseGitBlame.h create mode 100644 src/TortoiseGitBlame/TortoiseGitBlame.rc create mode 100644 src/TortoiseGitBlame/TortoiseGitBlame.vcproj create mode 100644 src/TortoiseGitBlame/TortoiseGitBlame.vcproj.FSL.B20596.user create mode 100644 src/TortoiseGitBlame/TortoiseGitBlameDoc.cpp create mode 100644 src/TortoiseGitBlame/TortoiseGitBlameDoc.h create mode 100644 src/TortoiseGitBlame/TortoiseGitBlameView.cpp create mode 100644 src/TortoiseGitBlame/TortoiseGitBlameView.h create mode 100644 src/TortoiseGitBlame/UserImages.bmp create mode 100644 src/TortoiseGitBlame/hlp/Images/Bullet.gif create mode 100644 src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhc create mode 100644 src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhk create mode 100644 src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhp create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_color.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_fileopen.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_filesave.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_find.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_font.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_newtypedlg.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_print.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_printdlg.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_printsetup.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidd_replace.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidp_default.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidw_dockbar_top.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidw_preview_bar.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidw_status_bar.htm create mode 100644 src/TortoiseGitBlame/hlp/afx_hidw_toolbar.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_app_about.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_app_exit.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_context_help.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_clear.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_clear_all.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_copy.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_cut.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_find.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_paste.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_redo.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_repeat.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_replace.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_edit_undo.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_close.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_mru_file1.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_new.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_open.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_page_setup.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_print.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_print_preview.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_print_setup.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_save.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_save_as.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_file_send_mail.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_help_index.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_help_using.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_ht_caption.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_ht_nowhere.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_next_pane.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_prev_pane.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_close.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_maximize.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_minimize.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_move.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_nextwindow.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_prevwindow.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_restore.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_size.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_sc_tasklist.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_view_ruler.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_view_status_bar.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_view_toolbar.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_all.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_arrange.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_cascade.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_new.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_split.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_tile.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_tile_horz.htm create mode 100644 src/TortoiseGitBlame/hlp/hid_window_tile_vert.htm create mode 100644 src/TortoiseGitBlame/hlp/hidr_doc1type.htm create mode 100644 src/TortoiseGitBlame/hlp/main_index.htm create mode 100644 src/TortoiseGitBlame/hlp/menu_edit.htm create mode 100644 src/TortoiseGitBlame/hlp/menu_file.htm create mode 100644 src/TortoiseGitBlame/hlp/menu_help.htm create mode 100644 src/TortoiseGitBlame/hlp/menu_view.htm create mode 100644 src/TortoiseGitBlame/hlp/menu_window.htm create mode 100644 src/TortoiseGitBlame/hlp/scrollbars.htm create mode 100644 src/TortoiseGitBlame/res/Toolbar.bmp create mode 100644 src/TortoiseGitBlame/res/Toolbar256.bmp create mode 100644 src/TortoiseGitBlame/res/TortoiseGitBlame.ico create mode 100644 src/TortoiseGitBlame/res/TortoiseGitBlame.rc2 create mode 100644 src/TortoiseGitBlame/res/TortoiseGitBlameDoc.ico create mode 100644 src/TortoiseGitBlame/res/output_wnd.ico create mode 100644 src/TortoiseGitBlame/res/output_wnd_hc.ico create mode 100644 src/TortoiseGitBlame/res/properties.bmp create mode 100644 src/TortoiseGitBlame/res/properties_hc.bmp create mode 100644 src/TortoiseGitBlame/res/properties_wnd.ico create mode 100644 src/TortoiseGitBlame/res/properties_wnd_hc.ico create mode 100644 src/TortoiseGitBlame/stdafx.cpp create mode 100644 src/TortoiseGitBlame/stdafx.h create mode 100644 src/TortoiseGitBlame/targetver.h diff --git a/src/TortoiseGitBlame/MainFrm.cpp b/src/TortoiseGitBlame/MainFrm.cpp new file mode 100644 index 0000000..236010d --- /dev/null +++ b/src/TortoiseGitBlame/MainFrm.cpp @@ -0,0 +1,354 @@ + +// MainFrm.cpp : implementation of the CMainFrame class +// + +#include "stdafx.h" +#include "TortoiseGitBlame.h" + +#include "MainFrm.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// CMainFrame + +IMPLEMENT_DYNCREATE(CMainFrame, CFrameWndEx) + +const int iMaxUserToolbars = 10; +const UINT uiFirstUserToolBarId = AFX_IDW_CONTROLBAR_FIRST + 40; +const UINT uiLastUserToolBarId = uiFirstUserToolBarId + iMaxUserToolbars - 1; + +BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) + ON_WM_CREATE() + // Global help commands + ON_COMMAND(ID_HELP_FINDER, &CFrameWndEx::OnHelpFinder) + ON_COMMAND(ID_HELP, &CFrameWndEx::OnHelp) + ON_COMMAND(ID_CONTEXT_HELP, &CFrameWndEx::OnContextHelp) + ON_COMMAND(ID_DEFAULT_HELP, &CFrameWndEx::OnHelpFinder) + ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize) + ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, &CMainFrame::OnToolbarCreateNew) + ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook) + ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook) +END_MESSAGE_MAP() + +static UINT indicators[] = +{ + ID_SEPARATOR, // status line indicator + ID_INDICATOR_CAPS, + ID_INDICATOR_NUM, + ID_INDICATOR_SCRL, +}; + +// CMainFrame construction/destruction + +CMainFrame::CMainFrame() +{ + // TODO: add member initialization code here + theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2005); +} + +CMainFrame::~CMainFrame() +{ +} + +int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CFrameWndEx::OnCreate(lpCreateStruct) == -1) + return -1; + + BOOL bNameValid; + // set the visual manager and style based on persisted value + OnApplicationLook(theApp.m_nAppLook); + + if (!m_wndMenuBar.Create(this)) + { + TRACE0("Failed to create menubar\n"); + return -1; // fail to create + } + + m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY); + + // prevent the menu bar from taking the focus on activation + CMFCPopupMenu::SetForceMenuFocus(FALSE); + + if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || + !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)) + { + TRACE0("Failed to create toolbar\n"); + return -1; // fail to create + } + + CString strToolBarName; + bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD); + ASSERT(bNameValid); + m_wndToolBar.SetWindowText(strToolBarName); + + CString strCustomize; + bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); + ASSERT(bNameValid); + m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); + + // Allow user-defined toolbars operations: + InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId); + + if (!m_wndStatusBar.Create(this)) + { + TRACE0("Failed to create status bar\n"); + return -1; // fail to create + } + m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); + + // TODO: Delete these five lines if you don't want the toolbar and menubar to be dockable + m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY); + m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); + EnableDocking(CBRS_ALIGN_ANY); + DockPane(&m_wndMenuBar); + DockPane(&m_wndToolBar); + + + // enable Visual Studio 2005 style docking window behavior + CDockingManager::SetDockingMode(DT_SMART); + // enable Visual Studio 2005 style docking window auto-hide behavior + EnableAutoHidePanes(CBRS_ALIGN_ANY); + + // create docking windows + if (!CreateDockingWindows()) + { + TRACE0("Failed to create docking windows\n"); + return -1; + } + + m_wndOutput.EnableDocking(CBRS_ALIGN_ANY); + DockPane(&m_wndOutput); + m_wndProperties.EnableDocking(CBRS_ALIGN_ANY); + DockPane(&m_wndProperties); + + + // Enable toolbar and docking window menu replacement + EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR); + + // enable quick (Alt+drag) toolbar customization + CMFCToolBar::EnableQuickCustomization(); + + if (CMFCToolBar::GetUserImages() == NULL) + { + // load user-defined toolbar images + if (m_UserImages.Load(_T(".\\UserImages.bmp"))) + { + m_UserImages.SetImageSize(CSize(16, 16), FALSE); + CMFCToolBar::SetUserImages(&m_UserImages); + } + } + + // enable menu personalization (most-recently used commands) + // TODO: define your own basic commands, ensuring that each pulldown menu has at least one basic command. + CList lstBasicCommands; + + lstBasicCommands.AddTail(ID_FILE_NEW); + lstBasicCommands.AddTail(ID_FILE_OPEN); + lstBasicCommands.AddTail(ID_FILE_SAVE); + lstBasicCommands.AddTail(ID_FILE_PRINT); + lstBasicCommands.AddTail(ID_APP_EXIT); + lstBasicCommands.AddTail(ID_EDIT_CUT); + lstBasicCommands.AddTail(ID_EDIT_PASTE); + lstBasicCommands.AddTail(ID_EDIT_UNDO); + lstBasicCommands.AddTail(ID_APP_ABOUT); + lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR); + lstBasicCommands.AddTail(ID_VIEW_TOOLBAR); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK); + lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA); + + CMFCToolBar::SetBasicCommands(lstBasicCommands); + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + if( !CFrameWndEx::PreCreateWindow(cs) ) + return FALSE; + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return TRUE; +} + +BOOL CMainFrame::CreateDockingWindows() +{ + BOOL bNameValid; + // Create output window + CString strOutputWnd; + bNameValid = strOutputWnd.LoadString(IDS_OUTPUT_WND); + ASSERT(bNameValid); + if (!m_wndOutput.Create(strOutputWnd, this, CRect(0, 0, 100, 100), TRUE, ID_VIEW_OUTPUTWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) + { + TRACE0("Failed to create Output window\n"); + return FALSE; // failed to create + } + + // Create properties window + CString strPropertiesWnd; + bNameValid = strPropertiesWnd.LoadString(IDS_PROPERTIES_WND); + ASSERT(bNameValid); + if (!m_wndProperties.Create(strPropertiesWnd, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI)) + { + TRACE0("Failed to create Properties window\n"); + return FALSE; // failed to create + } + + SetDockingWindowIcons(theApp.m_bHiColorIcons); + return TRUE; +} + +void CMainFrame::SetDockingWindowIcons(BOOL bHiColorIcons) +{ + HICON hOutputBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_OUTPUT_WND_HC : IDI_OUTPUT_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0); + m_wndOutput.SetIcon(hOutputBarIcon, FALSE); + + HICON hPropertiesBarIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(bHiColorIcons ? IDI_PROPERTIES_WND_HC : IDI_PROPERTIES_WND), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0); + m_wndProperties.SetIcon(hPropertiesBarIcon, FALSE); + +} + +// CMainFrame diagnostics + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CFrameWndEx::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CFrameWndEx::Dump(dc); +} +#endif //_DEBUG + + +// CMainFrame message handlers + +void CMainFrame::OnViewCustomize() +{ + CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* scan menus */); + pDlgCust->EnableUserDefinedToolbars(); + pDlgCust->Create(); +} + +LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp) +{ + LRESULT lres = CFrameWndEx::OnToolbarCreateNew(wp,lp); + if (lres == 0) + { + return 0; + } + + CMFCToolBar* pUserToolbar = (CMFCToolBar*)lres; + ASSERT_VALID(pUserToolbar); + + BOOL bNameValid; + CString strCustomize; + bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); + ASSERT(bNameValid); + + pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); + return lres; +} + +void CMainFrame::OnApplicationLook(UINT id) +{ + CWaitCursor wait; + + theApp.m_nAppLook = id; + + switch (theApp.m_nAppLook) + { + case ID_VIEW_APPLOOK_WIN_2000: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager)); + break; + + case ID_VIEW_APPLOOK_OFF_XP: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP)); + break; + + case ID_VIEW_APPLOOK_WIN_XP: + CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE; + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); + break; + + case ID_VIEW_APPLOOK_OFF_2003: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + case ID_VIEW_APPLOOK_VS_2005: + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005)); + CDockingManager::SetDockingMode(DT_SMART); + break; + + default: + switch (theApp.m_nAppLook) + { + case ID_VIEW_APPLOOK_OFF_2007_BLUE: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue); + break; + + case ID_VIEW_APPLOOK_OFF_2007_BLACK: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack); + break; + + case ID_VIEW_APPLOOK_OFF_2007_SILVER: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); + break; + + case ID_VIEW_APPLOOK_OFF_2007_AQUA: + CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua); + break; + } + + CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); + CDockingManager::SetDockingMode(DT_SMART); + } + + RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE); + + theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook); +} + +void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI) +{ + pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID); +} + +BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) +{ + // base class does the real work + + if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) + { + return FALSE; + } + + + // enable customization button for all user toolbars + BOOL bNameValid; + CString strCustomize; + bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); + ASSERT(bNameValid); + + for (int i = 0; i < iMaxUserToolbars; i ++) + { + CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i); + if (pUserToolbar != NULL) + { + pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); + } + } + + return TRUE; +} + diff --git a/src/TortoiseGitBlame/MainFrm.h b/src/TortoiseGitBlame/MainFrm.h new file mode 100644 index 0000000..fbaf732 --- /dev/null +++ b/src/TortoiseGitBlame/MainFrm.h @@ -0,0 +1,56 @@ + +// MainFrm.h : interface of the CMainFrame class +// + +#pragma once +#include "OutputWnd.h" +#include "PropertiesWnd.h" + +class CMainFrame : public CFrameWndEx +{ + +protected: // create from serialization only + CMainFrame(); + DECLARE_DYNCREATE(CMainFrame) + +// Attributes +public: + +// Operations +public: + +// Overrides +public: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual BOOL LoadFrame(UINT nIDResource, DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, CWnd* pParentWnd = NULL, CCreateContext* pContext = NULL); + +// Implementation +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: // control bar embedded members + CMFCMenuBar m_wndMenuBar; + CMFCToolBar m_wndToolBar; + CMFCStatusBar m_wndStatusBar; + CMFCToolBarImages m_UserImages; + COutputWnd m_wndOutput; + CPropertiesWnd m_wndProperties; + +// Generated message map functions +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnViewCustomize(); + afx_msg LRESULT OnToolbarCreateNew(WPARAM wp, LPARAM lp); + afx_msg void OnApplicationLook(UINT id); + afx_msg void OnUpdateApplicationLook(CCmdUI* pCmdUI); + DECLARE_MESSAGE_MAP() + + BOOL CreateDockingWindows(); + void SetDockingWindowIcons(BOOL bHiColorIcons); +}; + + diff --git a/src/TortoiseGitBlame/OutputWnd.cpp b/src/TortoiseGitBlame/OutputWnd.cpp new file mode 100644 index 0000000..fa17a70 --- /dev/null +++ b/src/TortoiseGitBlame/OutputWnd.cpp @@ -0,0 +1,198 @@ + +#include "stdafx.h" + +#include "OutputWnd.h" +#include "Resource.h" +#include "MainFrm.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// COutputBar + +COutputWnd::COutputWnd() +{ +} + +COutputWnd::~COutputWnd() +{ +} + +BEGIN_MESSAGE_MAP(COutputWnd, CDockablePane) + ON_WM_CREATE() + ON_WM_SIZE() +END_MESSAGE_MAP() + +int COutputWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CDockablePane::OnCreate(lpCreateStruct) == -1) + return -1; + + m_Font.CreateStockObject(DEFAULT_GUI_FONT); + + CRect rectDummy; + rectDummy.SetRectEmpty(); + + // Create tabs window: + if (!m_wndTabs.Create(CMFCTabCtrl::STYLE_FLAT, rectDummy, this, 1)) + { + TRACE0("Failed to create output tab window\n"); + return -1; // fail to create + } + + // Create output panes: + const DWORD dwStyle = LBS_NOINTEGRALHEIGHT | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL; + + if (!m_wndOutputBuild.Create(dwStyle, rectDummy, &m_wndTabs, 2) || + !m_wndOutputDebug.Create(dwStyle, rectDummy, &m_wndTabs, 3) || + !m_wndOutputFind.Create(dwStyle, rectDummy, &m_wndTabs, 4)) + { + TRACE0("Failed to create output windows\n"); + return -1; // fail to create + } + + m_wndOutputBuild.SetFont(&m_Font); + m_wndOutputDebug.SetFont(&m_Font); + m_wndOutputFind.SetFont(&m_Font); + + CString strTabName; + BOOL bNameValid; + + // Attach list windows to tab: + bNameValid = strTabName.LoadString(IDS_BUILD_TAB); + ASSERT(bNameValid); + m_wndTabs.AddTab(&m_wndOutputBuild, strTabName, (UINT)0); + bNameValid = strTabName.LoadString(IDS_DEBUG_TAB); + ASSERT(bNameValid); + m_wndTabs.AddTab(&m_wndOutputDebug, strTabName, (UINT)1); + bNameValid = strTabName.LoadString(IDS_FIND_TAB); + ASSERT(bNameValid); + m_wndTabs.AddTab(&m_wndOutputFind, strTabName, (UINT)2); + + // Fill output tabs with some dummy text (nothing magic here) + FillBuildWindow(); + FillDebugWindow(); + FillFindWindow(); + + return 0; +} + +void COutputWnd::OnSize(UINT nType, int cx, int cy) +{ + CDockablePane::OnSize(nType, cx, cy); + + // Tab control should cover the whole client area: + m_wndTabs.SetWindowPos (NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER); +} + +void COutputWnd::AdjustHorzScroll(CListBox& wndListBox) +{ + CClientDC dc(this); + CFont* pOldFont = dc.SelectObject(&m_Font); + + int cxExtentMax = 0; + + for (int i = 0; i < wndListBox.GetCount(); i ++) + { + CString strItem; + wndListBox.GetText(i, strItem); + + cxExtentMax = max(cxExtentMax, dc.GetTextExtent(strItem).cx); + } + + wndListBox.SetHorizontalExtent(cxExtentMax); + dc.SelectObject(pOldFont); +} + +void COutputWnd::FillBuildWindow() +{ + m_wndOutputBuild.AddString(_T("Build output is being displayed here.")); + m_wndOutputBuild.AddString(_T("The output is being displayed in rows of a list view")); + m_wndOutputBuild.AddString(_T("but you can change the way it is displayed as you wish...")); +} + +void COutputWnd::FillDebugWindow() +{ + m_wndOutputDebug.AddString(_T("Debug output is being displayed here.")); + m_wndOutputDebug.AddString(_T("The output is being displayed in rows of a list view")); + m_wndOutputDebug.AddString(_T("but you can change the way it is displayed as you wish...")); +} + +void COutputWnd::FillFindWindow() +{ + m_wndOutputFind.AddString(_T("Find output is being displayed here.")); + m_wndOutputFind.AddString(_T("The output is being displayed in rows of a list view")); + m_wndOutputFind.AddString(_T("but you can change the way it is displayed as you wish...")); +} + +///////////////////////////////////////////////////////////////////////////// +// COutputList1 + +COutputList::COutputList() +{ +} + +COutputList::~COutputList() +{ +} + +BEGIN_MESSAGE_MAP(COutputList, CListBox) + ON_WM_CONTEXTMENU() + ON_COMMAND(ID_EDIT_COPY, OnEditCopy) + ON_COMMAND(ID_EDIT_CLEAR, OnEditClear) + ON_COMMAND(ID_VIEW_OUTPUTWND, OnViewOutput) + ON_WM_WINDOWPOSCHANGING() +END_MESSAGE_MAP() +///////////////////////////////////////////////////////////////////////////// +// COutputList message handlers + +void COutputList::OnContextMenu(CWnd* /*pWnd*/, CPoint point) +{ + CMenu menu; + menu.LoadMenu(IDR_OUTPUT_POPUP); + + CMenu* pSumMenu = menu.GetSubMenu(0); + + if (AfxGetMainWnd()->IsKindOf(RUNTIME_CLASS(CMDIFrameWndEx))) + { + CMFCPopupMenu* pPopupMenu = new CMFCPopupMenu; + + if (!pPopupMenu->Create(this, point.x, point.y, (HMENU)pSumMenu->m_hMenu, FALSE, TRUE)) + return; + + ((CMDIFrameWndEx*)AfxGetMainWnd())->OnShowPopupMenu(pPopupMenu); + UpdateDialogControls(this, FALSE); + } + + SetFocus(); +} + +void COutputList::OnEditCopy() +{ + MessageBox(_T("Copy output")); +} + +void COutputList::OnEditClear() +{ + MessageBox(_T("Clear output")); +} + +void COutputList::OnViewOutput() +{ + CDockablePane* pParentBar = DYNAMIC_DOWNCAST(CDockablePane, GetOwner()); + CMDIFrameWndEx* pMainFrame = DYNAMIC_DOWNCAST(CMDIFrameWndEx, GetTopLevelFrame()); + + if (pMainFrame != NULL && pParentBar != NULL) + { + pMainFrame->SetFocus(); + pMainFrame->ShowPane(pParentBar, FALSE, FALSE, FALSE); + pMainFrame->RecalcLayout(); + + } +} + + diff --git a/src/TortoiseGitBlame/OutputWnd.h b/src/TortoiseGitBlame/OutputWnd.h new file mode 100644 index 0000000..868bcbb --- /dev/null +++ b/src/TortoiseGitBlame/OutputWnd.h @@ -0,0 +1,59 @@ + +#pragma once + +///////////////////////////////////////////////////////////////////////////// +// COutputList window + +class COutputList : public CListBox +{ +// Construction +public: + COutputList(); + +// Implementation +public: + virtual ~COutputList(); + +protected: + afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); + afx_msg void OnEditCopy(); + afx_msg void OnEditClear(); + afx_msg void OnViewOutput(); + + DECLARE_MESSAGE_MAP() +}; + +class COutputWnd : public CDockablePane +{ +// Construction +public: + COutputWnd(); + +// Attributes +protected: + CFont m_Font; + + CMFCTabCtrl m_wndTabs; + + COutputList m_wndOutputBuild; + COutputList m_wndOutputDebug; + COutputList m_wndOutputFind; + +protected: + void FillBuildWindow(); + void FillDebugWindow(); + void FillFindWindow(); + + void AdjustHorzScroll(CListBox& wndListBox); + +// Implementation +public: + virtual ~COutputWnd(); + +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + + DECLARE_MESSAGE_MAP() +}; + diff --git a/src/TortoiseGitBlame/PropertiesWnd.cpp b/src/TortoiseGitBlame/PropertiesWnd.cpp new file mode 100644 index 0000000..595ad6a --- /dev/null +++ b/src/TortoiseGitBlame/PropertiesWnd.cpp @@ -0,0 +1,269 @@ + +#include "stdafx.h" + +#include "PropertiesWnd.h" +#include "Resource.h" +#include "MainFrm.h" +#include "TortoiseGitBlame.h" + +#ifdef _DEBUG +#undef THIS_FILE +static char THIS_FILE[]=__FILE__; +#define new DEBUG_NEW +#endif + +///////////////////////////////////////////////////////////////////////////// +// CResourceViewBar + +CPropertiesWnd::CPropertiesWnd() +{ +} + +CPropertiesWnd::~CPropertiesWnd() +{ +} + +BEGIN_MESSAGE_MAP(CPropertiesWnd, CDockablePane) + ON_WM_CREATE() + ON_WM_SIZE() + ON_COMMAND(ID_EXPAND_ALL, OnExpandAllProperties) + ON_UPDATE_COMMAND_UI(ID_EXPAND_ALL, OnUpdateExpandAllProperties) + ON_COMMAND(ID_SORTPROPERTIES, OnSortProperties) + ON_UPDATE_COMMAND_UI(ID_SORTPROPERTIES, OnUpdateSortProperties) + ON_COMMAND(ID_PROPERTIES1, OnProperties1) + ON_UPDATE_COMMAND_UI(ID_PROPERTIES1, OnUpdateProperties1) + ON_COMMAND(ID_PROPERTIES2, OnProperties2) + ON_UPDATE_COMMAND_UI(ID_PROPERTIES2, OnUpdateProperties2) + ON_WM_SETFOCUS() + ON_WM_SETTINGCHANGE() +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CResourceViewBar message handlers + +void CPropertiesWnd::AdjustLayout() +{ + if (GetSafeHwnd() == NULL) + { + return; + } + + CRect rectClient,rectCombo; + GetClientRect(rectClient); + + m_wndObjectCombo.GetWindowRect(&rectCombo); + + int cyCmb = rectCombo.Size().cy; + int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy; + + m_wndObjectCombo.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), 200, SWP_NOACTIVATE | SWP_NOZORDER); + m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER); + m_wndPropList.SetWindowPos(NULL, rectClient.left, rectClient.top + cyCmb + cyTlb, rectClient.Width(), rectClient.Height() -(cyCmb+cyTlb), SWP_NOACTIVATE | SWP_NOZORDER); +} + +int CPropertiesWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CDockablePane::OnCreate(lpCreateStruct) == -1) + return -1; + + CRect rectDummy; + rectDummy.SetRectEmpty(); + + // Create combo: + const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_BORDER | CBS_SORT | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + + if (!m_wndObjectCombo.Create(dwViewStyle, rectDummy, this, 1)) + { + TRACE0("Failed to create Properties Combo \n"); + return -1; // fail to create + } + + m_wndObjectCombo.AddString(_T("Application")); + m_wndObjectCombo.AddString(_T("Properties Window")); + m_wndObjectCombo.SetFont(CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT))); + m_wndObjectCombo.SetCurSel(0); + + if (!m_wndPropList.Create(WS_VISIBLE | WS_CHILD, rectDummy, this, 2)) + { + TRACE0("Failed to create Properties Grid \n"); + return -1; // fail to create + } + + InitPropList(); + + m_wndToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, IDR_PROPERTIES); + m_wndToolBar.LoadToolBar(IDR_PROPERTIES, 0, 0, TRUE /* Is locked */); + m_wndToolBar.CleanUpLockedImages(); + m_wndToolBar.LoadBitmap(theApp.m_bHiColorIcons ? IDB_PROPERTIES_HC : IDR_PROPERTIES, 0, 0, TRUE /* Locked */); + + m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); + m_wndToolBar.SetPaneStyle(m_wndToolBar.GetPaneStyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT)); + m_wndToolBar.SetOwner(this); + + // All commands will be routed via this control , not via the parent frame: + m_wndToolBar.SetRouteCommandsViaFrame(FALSE); + + AdjustLayout(); + return 0; +} + +void CPropertiesWnd::OnSize(UINT nType, int cx, int cy) +{ + CDockablePane::OnSize(nType, cx, cy); + AdjustLayout(); +} + +void CPropertiesWnd::OnExpandAllProperties() +{ + m_wndPropList.ExpandAll(); +} + +void CPropertiesWnd::OnUpdateExpandAllProperties(CCmdUI* pCmdUI) +{ +} + +void CPropertiesWnd::OnSortProperties() +{ + m_wndPropList.SetAlphabeticMode(!m_wndPropList.IsAlphabeticMode()); +} + +void CPropertiesWnd::OnUpdateSortProperties(CCmdUI* pCmdUI) +{ + pCmdUI->SetCheck(m_wndPropList.IsAlphabeticMode()); +} + +void CPropertiesWnd::OnProperties1() +{ + // TODO: Add your command handler code here +} + +void CPropertiesWnd::OnUpdateProperties1(CCmdUI* /*pCmdUI*/) +{ + // TODO: Add your command update UI handler code here +} + +void CPropertiesWnd::OnProperties2() +{ + // TODO: Add your command handler code here +} + +void CPropertiesWnd::OnUpdateProperties2(CCmdUI* /*pCmdUI*/) +{ + // TODO: Add your command update UI handler code here +} + +void CPropertiesWnd::InitPropList() +{ + SetPropListFont(); + + m_wndPropList.EnableHeaderCtrl(FALSE); + m_wndPropList.EnableDescriptionArea(); + m_wndPropList.SetVSDotNetLook(); + m_wndPropList.MarkModifiedProperties(); + + CMFCPropertyGridProperty* pGroup1 = new CMFCPropertyGridProperty(_T("Appearance")); + + pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("3D Look"), (_variant_t) false, _T("Specifies the window's font will be non-bold and controls will have a 3D border"))); + + CMFCPropertyGridProperty* pProp = new CMFCPropertyGridProperty(_T("Border"), _T("Dialog Frame"), _T("One of: None, Thin, Resizable, or Dialog Frame")); + pProp->AddOption(_T("None")); + pProp->AddOption(_T("Thin")); + pProp->AddOption(_T("Resizable")); + pProp->AddOption(_T("Dialog Frame")); + pProp->AllowEdit(FALSE); + + pGroup1->AddSubItem(pProp); + pGroup1->AddSubItem(new CMFCPropertyGridProperty(_T("Caption"), (_variant_t) _T("About"), _T("Specifies the text that will be displayed in the window's title bar"))); + + m_wndPropList.AddProperty(pGroup1); + + CMFCPropertyGridProperty* pSize = new CMFCPropertyGridProperty(_T("Window Size"), 0, TRUE); + + pProp = new CMFCPropertyGridProperty(_T("Height"), (_variant_t) 250l, _T("Specifies the window's height")); + pProp->EnableSpinControl(TRUE, 0, 1000); + pSize->AddSubItem(pProp); + + pProp = new CMFCPropertyGridProperty( _T("Width"), (_variant_t) 150l, _T("Specifies the window's width")); + pProp->EnableSpinControl(); + pSize->AddSubItem(pProp); + + m_wndPropList.AddProperty(pSize); + + CMFCPropertyGridProperty* pGroup2 = new CMFCPropertyGridProperty(_T("Font")); + + LOGFONT lf; + CFont* font = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)); + font->GetLogFont(&lf); + + lstrcpy(lf.lfFaceName, _T("Arial")); + + pGroup2->AddSubItem(new CMFCPropertyGridFontProperty(_T("Font"), lf, CF_EFFECTS | CF_SCREENFONTS, _T("Specifies the default font for the window"))); + pGroup2->AddSubItem(new CMFCPropertyGridProperty(_T("Use System Font"), (_variant_t) true, _T("Specifies that the window uses MS Shell Dlg font"))); + + m_wndPropList.AddProperty(pGroup2); + + CMFCPropertyGridProperty* pGroup3 = new CMFCPropertyGridProperty(_T("Misc")); + pProp = new CMFCPropertyGridProperty(_T("(Name)"), _T("Application")); + pProp->Enable(FALSE); + pGroup3->AddSubItem(pProp); + + CMFCPropertyGridColorProperty* pColorProp = new CMFCPropertyGridColorProperty(_T("Window Color"), RGB(210, 192, 254), NULL, _T("Specifies the default window color")); + pColorProp->EnableOtherButton(_T("Other...")); + pColorProp->EnableAutomaticButton(_T("Default"), ::GetSysColor(COLOR_3DFACE)); + pGroup3->AddSubItem(pColorProp); + + static TCHAR BASED_CODE szFilter[] = _T("Icon Files(*.ico)|*.ico|All Files(*.*)|*.*||"); + pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("Icon"), TRUE, _T(""), _T("ico"), 0, szFilter, _T("Specifies the window icon"))); + + pGroup3->AddSubItem(new CMFCPropertyGridFileProperty(_T("Folder"), _T("c:\\"))); + + m_wndPropList.AddProperty(pGroup3); + + CMFCPropertyGridProperty* pGroup4 = new CMFCPropertyGridProperty(_T("Hierarchy")); + + CMFCPropertyGridProperty* pGroup41 = new CMFCPropertyGridProperty(_T("First sub-level")); + pGroup4->AddSubItem(pGroup41); + + CMFCPropertyGridProperty* pGroup411 = new CMFCPropertyGridProperty(_T("Second sub-level")); + pGroup41->AddSubItem(pGroup411); + + pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("Item 1"), (_variant_t) _T("Value 1"), _T("This is a description"))); + pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("Item 2"), (_variant_t) _T("Value 2"), _T("This is a description"))); + pGroup411->AddSubItem(new CMFCPropertyGridProperty(_T("Item 3"), (_variant_t) _T("Value 3"), _T("This is a description"))); + + pGroup4->Expand(FALSE); + m_wndPropList.AddProperty(pGroup4); +} + +void CPropertiesWnd::OnSetFocus(CWnd* pOldWnd) +{ + CDockablePane::OnSetFocus(pOldWnd); + m_wndPropList.SetFocus(); +} + +void CPropertiesWnd::OnSettingChange(UINT uFlags, LPCTSTR lpszSection) +{ + CDockablePane::OnSettingChange(uFlags, lpszSection); + SetPropListFont(); +} + +void CPropertiesWnd::SetPropListFont() +{ + ::DeleteObject(m_fntPropList.Detach()); + + LOGFONT lf; + afxGlobalData.fontRegular.GetLogFont(&lf); + + NONCLIENTMETRICS info; + info.cbSize = sizeof(info); + + afxGlobalData.GetNonClientMetrics(info); + + lf.lfHeight = info.lfMenuFont.lfHeight; + lf.lfWeight = info.lfMenuFont.lfWeight; + lf.lfItalic = info.lfMenuFont.lfItalic; + + m_fntPropList.CreateFontIndirect(&lf); + + m_wndPropList.SetFont(&m_fntPropList); +} diff --git a/src/TortoiseGitBlame/PropertiesWnd.h b/src/TortoiseGitBlame/PropertiesWnd.h new file mode 100644 index 0000000..b081d33 --- /dev/null +++ b/src/TortoiseGitBlame/PropertiesWnd.h @@ -0,0 +1,60 @@ + +#pragma once + +class CPropertiesToolBar : public CMFCToolBar +{ +public: + virtual void OnUpdateCmdUI(CFrameWnd* /*pTarget*/, BOOL bDisableIfNoHndler) + { + CMFCToolBar::OnUpdateCmdUI((CFrameWnd*) GetOwner(), bDisableIfNoHndler); + } + + virtual BOOL AllowShowOnList() const { return FALSE; } +}; + +class CPropertiesWnd : public CDockablePane +{ +// Construction +public: + CPropertiesWnd(); + + void AdjustLayout(); + +// Attributes +public: + void SetVSDotNetLook(BOOL bSet) + { + m_wndPropList.SetVSDotNetLook(bSet); + m_wndPropList.SetGroupNameFullWidth(bSet); + } + +protected: + CFont m_fntPropList; + CComboBox m_wndObjectCombo; + CPropertiesToolBar m_wndToolBar; + CMFCPropertyGridCtrl m_wndPropList; + +// Implementation +public: + virtual ~CPropertiesWnd(); + +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSize(UINT nType, int cx, int cy); + afx_msg void OnExpandAllProperties(); + afx_msg void OnUpdateExpandAllProperties(CCmdUI* pCmdUI); + afx_msg void OnSortProperties(); + afx_msg void OnUpdateSortProperties(CCmdUI* pCmdUI); + afx_msg void OnProperties1(); + afx_msg void OnUpdateProperties1(CCmdUI* pCmdUI); + afx_msg void OnProperties2(); + afx_msg void OnUpdateProperties2(CCmdUI* pCmdUI); + afx_msg void OnSetFocus(CWnd* pOldWnd); + afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection); + + DECLARE_MESSAGE_MAP() + + void InitPropList(); + void SetPropListFont(); +}; + diff --git a/src/TortoiseGitBlame/ReadMe.txt b/src/TortoiseGitBlame/ReadMe.txt new file mode 100644 index 0000000..6226e9b --- /dev/null +++ b/src/TortoiseGitBlame/ReadMe.txt @@ -0,0 +1,146 @@ +================================================================================ + MICROSOFT FOUNDATION CLASS LIBRARY : TortoiseGitBlame Project Overview +=============================================================================== + +The application wizard has created this TortoiseGitBlame application for +you. This application not only demonstrates the basics of using the Microsoft +Foundation Classes but is also a starting point for writing your application. + +This file contains a summary of what you will find in each of the files that +make up your TortoiseGitBlame application. + +TortoiseGitBlame.vcproj + This is the main project file for VC++ projects generated using an application wizard. + It contains information about the version of Visual C++ that generated the file, and + information about the platforms, configurations, and project features selected with the + application wizard. + +TortoiseGitBlame.h + This is the main header file for the application. It includes other + project specific headers (including Resource.h) and declares the + CTortoiseGitBlameApp application class. + +TortoiseGitBlame.cpp + This is the main application source file that contains the application + class CTortoiseGitBlameApp. + +TortoiseGitBlame.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Visual C++. Your project resources are in 1033. + +res\TortoiseGitBlame.ico + This is an icon file, which is used as the application's icon. This + icon is included by the main resource file TortoiseGitBlame.rc. + +res\TortoiseGitBlame.rc2 + This file contains resources that are not edited by Microsoft + Visual C++. You should place all resources not editable by + the resource editor in this file. + +///////////////////////////////////////////////////////////////////////////// + +For the main frame window: + The project includes a standard MFC interface. + +MainFrm.h, MainFrm.cpp + These files contain the frame class CMainFrame, which is derived from + CFrameWnd and controls all SDI frame features. + +res\Toolbar.bmp + This bitmap file is used to create tiled images for the toolbar. + The initial toolbar and status bar are constructed in the CMainFrame + class. Edit this toolbar bitmap using the resource editor, and + update the IDR_MAINFRAME TOOLBAR array in TortoiseGitBlame.rc to add + toolbar buttons. +///////////////////////////////////////////////////////////////////////////// + +The application wizard creates one document type and one view: + +TortoiseGitBlameDoc.h, TortoiseGitBlameDoc.cpp - the document + These files contain your CTortoiseGitBlameDoc class. Edit these files to + add your special document data and to implement file saving and loading + (via CTortoiseGitBlameDoc::Serialize). + +TortoiseGitBlameView.h, TortoiseGitBlameView.cpp - the view of the document + These files contain your CTortoiseGitBlameView class. + CTortoiseGitBlameView objects are used to view CTortoiseGitBlameDoc objects. + + + + +///////////////////////////////////////////////////////////////////////////// + +Help Support: + +hlp\TortoiseGitBlame.hhp + This file is a help project file. It contains the data needed to + compile the help files into a .chm file. + +hlp\TortoiseGitBlame.hhc + This file lists the contents of the help project. + +hlp\TortoiseGitBlame.hhk + This file contains an index of the help topics. + +hlp\afxcore.htm + This file contains the standard help topics for standard MFC + commands and screen objects. Add your own help topics to this file. + +hlp\afxprint.htm + This file contains the help topics for the printing commands. + +makehtmlhelp.bat + This file is used by the build system to compile the help files. + +hlp\Images\*.gif + These are bitmap files required by the standard help file topics for + Microsoft Foundation Class Library standard commands. + + +///////////////////////////////////////////////////////////////////////////// + +Other Features: + +ActiveX Controls + The application includes support to use ActiveX controls. + +Printing and Print Preview support + The application wizard has generated code to handle the print, print setup, and print preview + commands by calling member functions in the CView class from the MFC library. + +///////////////////////////////////////////////////////////////////////////// + +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named TortoiseGitBlame.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Visual C++ reads and updates this file. + +TortoiseGitBlame.manifest + Application manifest files are used by Windows XP to describe an applications + dependency on specific versions of Side-by-Side assemblies. The loader uses this + information to load the appropriate assembly from the assembly cache or private + from the application. The Application manifest maybe included for redistribution + as an external .manifest file that is installed in the same folder as the application + executable or it may be included in the executable in the form of a resource. +///////////////////////////////////////////////////////////////////////////// + +Other notes: + +The application wizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +If your application uses MFC in a shared DLL, you will need +to redistribute the MFC DLLs. If your application is in a language +other than the operating system's locale, you will also have to +redistribute the corresponding localized resources MFC90XXX.DLL. +For more information on both of these topics, please see the section on +redistributing Visual C++ applications in MSDN documentation. + +///////////////////////////////////////////////////////////////////////////// diff --git a/src/TortoiseGitBlame/Resource.h b/src/TortoiseGitBlame/Resource.h new file mode 100644 index 0000000..2454b26 --- /dev/null +++ b/src/TortoiseGitBlame/Resource.h @@ -0,0 +1,58 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by TortoiseGitBlame.rc +// +#define IDD_ABOUTBOX 100 +#define IDP_OLE_INIT_FAILED 100 +#define IDR_POPUP_EDIT 119 +#define ID_STATUSBAR_PANE1 120 +#define ID_STATUSBAR_PANE2 121 +#define IDS_STATUS_PANE1 122 +#define IDS_STATUS_PANE2 123 +#define IDS_TOOLBAR_STANDARD 124 +#define IDS_TOOLBAR_CUSTOMIZE 125 +#define ID_VIEW_CUSTOMIZE 126 +#define IDR_MAINFRAME 128 +#define IDR_MAINFRAME_256 129 +#define IDR_TortoiseGitBlamTYPE 130 +#define ID_VIEW_OUTPUTWND 149 +#define ID_VIEW_PROPERTIESWND 150 +#define ID_SORTPROPERTIES 151 +#define ID_PROPERTIES1 152 +#define ID_PROPERTIES2 153 +#define ID_EXPAND_ALL 154 +#define IDS_OUTPUT_WND 157 +#define IDS_PROPERTIES_WND 158 +#define IDI_OUTPUT_WND 165 +#define IDI_OUTPUT_WND_HC 166 +#define IDI_PROPERTIES_WND 167 +#define IDI_PROPERTIES_WND_HC 168 +#define IDR_OUTPUT_POPUP 182 +#define IDR_PROPERTIES 183 +#define IDB_PROPERTIES_HC 184 +#define IDR_THEME_MENU 200 +#define ID_SET_STYLE 201 +#define ID_VIEW_APPLOOK_WIN_2000 210 +#define ID_VIEW_APPLOOK_OFF_XP 211 +#define ID_VIEW_APPLOOK_WIN_XP 212 +#define ID_VIEW_APPLOOK_OFF_2003 213 +#define ID_VIEW_APPLOOK_VS_2005 214 +#define ID_VIEW_APPLOOK_OFF_2007_BLUE 215 +#define ID_VIEW_APPLOOK_OFF_2007_BLACK 216 +#define ID_VIEW_APPLOOK_OFF_2007_SILVER 217 +#define ID_VIEW_APPLOOK_OFF_2007_AQUA 218 +#define IDS_BUILD_TAB 300 +#define IDS_DEBUG_TAB 301 +#define IDS_FIND_TAB 302 +#define IDS_EDIT_MENU 306 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 310 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 310 +#define _APS_NEXT_COMMAND_VALUE 32771 +#endif +#endif diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.cpp b/src/TortoiseGitBlame/TortoiseGitBlame.cpp new file mode 100644 index 0000000..59c9d19 --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlame.cpp @@ -0,0 +1,184 @@ + +// TortoiseGitBlame.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "afxwinappex.h" +#include "TortoiseGitBlame.h" +#include "MainFrm.h" + +#include "TortoiseGitBlameDoc.h" +#include "TortoiseGitBlameView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CTortoiseGitBlameApp + +BEGIN_MESSAGE_MAP(CTortoiseGitBlameApp, CWinAppEx) + ON_COMMAND(ID_APP_ABOUT, &CTortoiseGitBlameApp::OnAppAbout) + // Standard file based document commands + ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew) + ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen) + // Standard print setup command + ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup) +END_MESSAGE_MAP() + + +// CTortoiseGitBlameApp construction + +CTortoiseGitBlameApp::CTortoiseGitBlameApp() +{ + EnableHtmlHelp(); + + + m_bHiColorIcons = TRUE; + + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +// The one and only CTortoiseGitBlameApp object + +CTortoiseGitBlameApp theApp; + + +// CTortoiseGitBlameApp initialization + +BOOL CTortoiseGitBlameApp::InitInstance() +{ + // InitCommonControlsEx() is required on Windows XP if an application + // manifest specifies use of ComCtl32.dll version 6 or later to enable + // visual styles. Otherwise, any window creation will fail. + INITCOMMONCONTROLSEX InitCtrls; + InitCtrls.dwSize = sizeof(InitCtrls); + // Set this to include all the common control classes you want to use + // in your application. + InitCtrls.dwICC = ICC_WIN95_CLASSES; + InitCommonControlsEx(&InitCtrls); + + CWinAppEx::InitInstance(); + + // Initialize OLE libraries + if (!AfxOleInit()) + { + AfxMessageBox(IDP_OLE_INIT_FAILED); + return FALSE; + } + AfxEnableControlContainer(); + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need + // Change the registry key under which our settings are stored + // TODO: You should modify this string to be something appropriate + // such as the name of your company or organization + SetRegistryKey(_T("Local AppWizard-Generated Applications")); + LoadStdProfileSettings(4); // Load standard INI file options (including MRU) + + InitContextMenuManager(); + + InitKeyboardManager(); + + InitTooltipManager(); + CMFCToolTipInfo ttParams; + ttParams.m_bVislManagerTheme = TRUE; + theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, + RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); + + // Register the application's document templates. Document templates + // serve as the connection between documents, frame windows and views + CSingleDocTemplate* pDocTemplate; + pDocTemplate = new CSingleDocTemplate( + IDR_MAINFRAME, + RUNTIME_CLASS(CTortoiseGitBlameDoc), + RUNTIME_CLASS(CMainFrame), // main SDI frame window + RUNTIME_CLASS(CTortoiseGitBlameView)); + if (!pDocTemplate) + return FALSE; + AddDocTemplate(pDocTemplate); + + + + // Parse command line for standard shell commands, DDE, file open + CCommandLineInfo cmdInfo; + ParseCommandLine(cmdInfo); + + + // Dispatch commands specified on the command line. Will return FALSE if + // app was launched with /RegServer, /Register, /Unregserver or /Unregister. + if (!ProcessShellCommand(cmdInfo)) + return FALSE; + + // The one and only window has been initialized, so show and update it + m_pMainWnd->ShowWindow(SW_SHOW); + m_pMainWnd->UpdateWindow(); + // call DragAcceptFiles only if there's a suffix + // In an SDI app, this should occur after ProcessShellCommand + return TRUE; +} + + + +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + enum { IDD = IDD_ABOUTBOX }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + +// Implementation +protected: + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) +END_MESSAGE_MAP() + +// App command to run the dialog +void CTortoiseGitBlameApp::OnAppAbout() +{ + CAboutDlg aboutDlg; + aboutDlg.DoModal(); +} + +// CTortoiseGitBlameApp customization load/save methods + +void CTortoiseGitBlameApp::PreLoadState() +{ + BOOL bNameValid; + CString strName; + bNameValid = strName.LoadString(IDS_EDIT_MENU); + ASSERT(bNameValid); + GetContextMenuManager()->AddMenu(strName, IDR_POPUP_EDIT); +} + +void CTortoiseGitBlameApp::LoadCustomState() +{ +} + +void CTortoiseGitBlameApp::SaveCustomState() +{ +} + +// CTortoiseGitBlameApp message handlers + + + diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.h b/src/TortoiseGitBlame/TortoiseGitBlame.h new file mode 100644 index 0000000..3b0d00d --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlame.h @@ -0,0 +1,39 @@ + +// TortoiseGitBlame.h : main header file for the TortoiseGitBlame application +// +#pragma once + +#ifndef __AFXWIN_H__ + #error "include 'stdafx.h' before including this file for PCH" +#endif + +#include "resource.h" // main symbols + + +// CTortoiseGitBlameApp: +// See TortoiseGitBlame.cpp for the implementation of this class +// + +class CTortoiseGitBlameApp : public CWinAppEx +{ +public: + CTortoiseGitBlameApp(); + + +// Overrides +public: + virtual BOOL InitInstance(); + +// Implementation + UINT m_nAppLook; + BOOL m_bHiColorIcons; + + virtual void PreLoadState(); + virtual void LoadCustomState(); + virtual void SaveCustomState(); + + afx_msg void OnAppAbout(); + DECLARE_MESSAGE_MAP() +}; + +extern CTortoiseGitBlameApp theApp; diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.rc b/src/TortoiseGitBlame/TortoiseGitBlame.rc new file mode 100644 index 0000000..d864aad --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlame.rc @@ -0,0 +1,463 @@ +//Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#ifndef APSTUDIO_INVOKED +#include "targetver.h" +#endif +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +#ifdef APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#ifndef APSTUDIO_INVOKED\r\n" + "#include ""targetver.h""\r\n" + "#endif\r\n" + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#include ""res\\TortoiseGitBlame.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#include ""afxprint.rc"" // printing/print preview resources\r\n" + "#if !defined(_AFXDLL)\r\n" + "#include ""afxribbon.rc"" // MFC ribbon and control bar resources\r\n" + "#endif\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) +IDR_MAINFRAME ICON "res\\TortoiseGitBlame.ico" +IDR_TortoiseGitBlamTYPE ICON "res\\TortoiseGitBlameDoc.ico" +#endif +IDI_OUTPUT_WND ICON "res\\output_wnd.ico" +IDI_OUTPUT_WND_HC ICON "res\\output_wnd_hc.ico" +IDI_PROPERTIES_WND ICON "res\\properties_wnd.ico" +IDI_PROPERTIES_WND_HC ICON "res\\properties_wnd_hc.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDR_MAINFRAME BITMAP "res\\Toolbar.bmp" +IDR_MAINFRAME_256 BITMAP "res\\Toolbar256.bmp" +IDR_PROPERTIES BITMAP "res\\properties.bmp" +IDB_PROPERTIES_HC BITMAP "res\\properties_hc.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Toolbar +// + +IDR_MAINFRAME TOOLBAR 16, 16 +BEGIN + BUTTON ID_FILE_NEW + BUTTON ID_FILE_OPEN + BUTTON ID_FILE_SAVE + SEPARATOR + BUTTON ID_EDIT_CUT + BUTTON ID_EDIT_COPY + BUTTON ID_EDIT_PASTE + SEPARATOR + BUTTON ID_FILE_PRINT + BUTTON ID_APP_ABOUT + BUTTON ID_CONTEXT_HELP +END + +IDR_MAINFRAME_256 TOOLBAR 16, 16 +BEGIN + BUTTON ID_FILE_NEW + BUTTON ID_FILE_OPEN + BUTTON ID_FILE_SAVE + SEPARATOR + BUTTON ID_EDIT_CUT + BUTTON ID_EDIT_COPY + BUTTON ID_EDIT_PASTE + SEPARATOR + BUTTON ID_FILE_PRINT + BUTTON ID_APP_ABOUT + BUTTON ID_CONTEXT_HELP +END + + +IDR_PROPERTIES TOOLBAR 16, 16 +BEGIN + BUTTON ID_EXPAND_ALL + BUTTON ID_SORTPROPERTIES + BUTTON ID_PROPERTIES1 + BUTTON ID_PROPERTIES2 +END +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&New\tCtrl+N", ID_FILE_NEW + MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN + MENUITEM "&Save\tCtrl+S", ID_FILE_SAVE + MENUITEM "Save &As...", ID_FILE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "&Print...\tCtrl+P", ID_FILE_PRINT + MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW + MENUITEM "P&rint Setup...", ID_FILE_PRINT_SETUP + MENUITEM SEPARATOR + MENUITEM "Recent File", ID_FILE_MRU_FILE1,GRAYED + MENUITEM SEPARATOR + MENUITEM "E&xit", ID_APP_EXIT + END + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT + MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY + MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE + END + POPUP "&View" + BEGIN + POPUP "&Toolbars and Docking Windows" + BEGIN + MENUITEM "", ID_VIEW_TOOLBAR + END + MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR + POPUP "&Application Look" + BEGIN + MENUITEM "Windows &2000", ID_VIEW_APPLOOK_WIN_2000 + MENUITEM "Office &XP", ID_VIEW_APPLOOK_OFF_XP + MENUITEM "&Windows XP", ID_VIEW_APPLOOK_WIN_XP + MENUITEM "Office 200&3", ID_VIEW_APPLOOK_OFF_2003 + MENUITEM "Visual Studio.NET 200&5", ID_VIEW_APPLOOK_VS_2005 + POPUP "Office 200&7" + BEGIN + MENUITEM "&Blue Style", ID_VIEW_APPLOOK_OFF_2007_BLUE + MENUITEM "B&lack Style", ID_VIEW_APPLOOK_OFF_2007_BLACK + MENUITEM "&Silver Style", ID_VIEW_APPLOOK_OFF_2007_SILVER + MENUITEM "&Aqua Style", ID_VIEW_APPLOOK_OFF_2007_AQUA + END + END + END + POPUP "&Help" + BEGIN + MENUITEM "&Help Topics", ID_HELP_FINDER + MENUITEM SEPARATOR + MENUITEM "&About TortoiseGitBlame...", ID_APP_ABOUT + END +END + + + +IDR_POPUP_EDIT MENU +BEGIN + POPUP "Edit" + BEGIN + MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT + MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY + MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE + END +END + +IDR_OUTPUT_POPUP MENU +BEGIN + POPUP "Popup" + BEGIN + MENUITEM "&Copy", ID_EDIT_COPY + MENUITEM "&Clear", ID_EDIT_CLEAR + MENUITEM SEPARATOR + MENUITEM "&Hide", ID_VIEW_OUTPUTWND + END +END + +IDR_THEME_MENU MENU DISCARDABLE +BEGIN + MENUITEM "Office 2007 (&Blue Style)", ID_VIEW_APPLOOK_OFF_2007_BLUE + MENUITEM "Office 2007 (B&lack Style)", ID_VIEW_APPLOOK_OFF_2007_BLACK + MENUITEM "Office 2007 (&Silver Style)", ID_VIEW_APPLOOK_OFF_2007_SILVER + MENUITEM "Office 2007 (&Aqua Style)", ID_VIEW_APPLOOK_OFF_2007_AQUA +END + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MAINFRAME ACCELERATORS +BEGIN + "N", ID_FILE_NEW, VIRTKEY,CONTROL + "O", ID_FILE_OPEN, VIRTKEY,CONTROL + "S", ID_FILE_SAVE, VIRTKEY,CONTROL + "P", ID_FILE_PRINT, VIRTKEY,CONTROL + "Z", ID_EDIT_UNDO, VIRTKEY,CONTROL + "X", ID_EDIT_CUT, VIRTKEY,CONTROL + "C", ID_EDIT_COPY, VIRTKEY,CONTROL + "V", ID_EDIT_PASTE, VIRTKEY,CONTROL + VK_BACK, ID_EDIT_UNDO, VIRTKEY,ALT + VK_DELETE, ID_EDIT_CUT, VIRTKEY,SHIFT + VK_INSERT, ID_EDIT_COPY, VIRTKEY,CONTROL + VK_INSERT, ID_EDIT_PASTE, VIRTKEY,SHIFT + VK_F6, ID_NEXT_PANE, VIRTKEY + VK_F6, ID_PREV_PANE, VIRTKEY,SHIFT + VK_F1, ID_CONTEXT_HELP, VIRTKEY,SHIFT + VK_F1, ID_HELP, VIRTKEY +END + + + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About TortoiseGitBlame" +FONT 8, "MS Shell Dlg" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,14,14,21,20 + LTEXT "TortoiseGitBlame, Version 1.0",IDC_STATIC,42,14,114,8,SS_NOPREFIX + LTEXT "Copyright (C) 2009",IDC_STATIC,42,26,114,8 + DEFPUSHBUTTON "OK",IDOK,113,41,50,14,WS_GROUP +END + + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "TODO: " + VALUE "FileDescription", "TODO: " + VALUE "FileVersion", "1.0.0.1" + VALUE "InternalName", "TortoiseGitBlame.exe" + VALUE "LegalCopyright", "TODO: (c) . All rights reserved." + VALUE "OriginalFilename","TortoiseGitBlame.exe" + VALUE "ProductName", "TODO: " + VALUE "ProductVersion", "1.0.0.1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1252 + END +END + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 163 + TOPMARGIN, 7 + BOTTOMMARGIN, 55 + END +END +#endif // APSTUDIO_INVOKED + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDP_OLE_INIT_FAILED "OLE initialization failed. Make sure that the OLE libraries are the correct version." +END +STRINGTABLE +BEGIN +// Non-mac-targeting apps remove the two extra substrings + IDR_MAINFRAME "TortoiseGitBlame\n\nTortoiseGitBlam\n\n\nTortoiseGitBlame.Document\nTortoiseGitBlame.Document" + +END +STRINGTABLE +BEGIN + AFX_IDS_APP_TITLE "TortoiseGitBlame" + AFX_IDS_IDLEMESSAGE "For Help, press F1" + AFX_IDS_HELPMODEMESSAGE "Select an object on which to get Help" +END +STRINGTABLE +BEGIN + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "CAP" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "SCRL" + ID_INDICATOR_OVR "OVR" + ID_INDICATOR_REC "REC" +END +STRINGTABLE +BEGIN + ID_FILE_NEW "Create a new document\nNew" + ID_FILE_OPEN "Open an existing document\nOpen" + ID_FILE_CLOSE "Close the active document\nClose" + ID_FILE_SAVE "Save the active document\nSave" + ID_FILE_SAVE_AS "Save the active document with a new name\nSave As" + ID_FILE_PAGE_SETUP "Change the printing options\nPage Setup" + ID_FILE_PRINT_SETUP "Change the printer and printing options\nPrint Setup" + ID_FILE_PRINT_DIRECT "Print the active document using current options\nQuick Print" + ID_FILE_PRINT "Print the active document\nPrint" + ID_FILE_PRINT_PREVIEW "Display full pages\nPrint Preview" + ID_APP_ABOUT "Display program information, version number and copyright\nAbout" + ID_APP_EXIT "Quit the application; prompts to save documents\nExit" + ID_CONTEXT_HELP "Display help for clicked on buttons, menus and windows\nHelp" + ID_HELP_INDEX "Opens Help\nHelp Topics" + ID_HELP_FINDER "List Help topics\nHelp Topics" + ID_HELP_USING "Display instructions about how to use help\nHelp" + ID_HELP "Display help for current task or command\nHelp" + ID_FILE_MRU_FILE1 "Open this document" + ID_FILE_MRU_FILE2 "Open this document" + ID_FILE_MRU_FILE3 "Open this document" + ID_FILE_MRU_FILE4 "Open this document" + ID_FILE_MRU_FILE5 "Open this document" + ID_FILE_MRU_FILE6 "Open this document" + ID_FILE_MRU_FILE7 "Open this document" + ID_FILE_MRU_FILE8 "Open this document" + ID_FILE_MRU_FILE9 "Open this document" + ID_FILE_MRU_FILE10 "Open this document" + ID_FILE_MRU_FILE11 "Open this document" + ID_FILE_MRU_FILE12 "Open this document" + ID_FILE_MRU_FILE13 "Open this document" + ID_FILE_MRU_FILE14 "Open this document" + ID_FILE_MRU_FILE15 "Open this document" + ID_FILE_MRU_FILE16 "Open this document" + ID_NEXT_PANE "Switch to the next window pane\nNext Pane" + ID_PREV_PANE "Switch back to the previous window pane\nPrevious Pane" + ID_WINDOW_SPLIT "Split the active window into panes\nSplit" + ID_EDIT_CLEAR "Erase the selection\nErase" + ID_EDIT_CLEAR_ALL "Erase everything\nErase All" + ID_EDIT_COPY "Copy the selection and put it on the Clipboard\nCopy" + ID_EDIT_CUT "Cut the selection and put it on the Clipboard\nCut" + ID_EDIT_FIND "Find the specified text\nFind" + ID_EDIT_PASTE "Insert Clipboard contents\nPaste" + ID_EDIT_REPEAT "Repeat the last action\nRepeat" + ID_EDIT_REPLACE "Replace specific text with different text\nReplace" + ID_EDIT_SELECT_ALL "Select the entire document\nSelect All" + ID_EDIT_UNDO "Undo the last action\nUndo" + ID_EDIT_REDO "Redo the previously undone action\nRedo" + ID_VIEW_STATUS_BAR "Show or hide the status bar\nToggle Status Bar" +END + +STRINGTABLE +BEGIN + AFX_IDS_SCSIZE "Change the window size" + AFX_IDS_SCMOVE "Change the window position" + AFX_IDS_SCMINIMIZE "Reduce the window to an icon" + AFX_IDS_SCMAXIMIZE "Enlarge the window to full size" + AFX_IDS_SCNEXTWINDOW "Switch to the next document window" + AFX_IDS_SCPREVWINDOW "Switch to the previous document window" + AFX_IDS_SCCLOSE "Close the active window and prompts to save the documents" + AFX_IDS_SCRESTORE "Restore the window to normal size" + AFX_IDS_SCTASKLIST "Activate Task List" + AFX_IDS_PREVIEW_CLOSE "Close print preview mode\nCancel Preview" +END + + +STRINGTABLE +BEGIN + IDS_STATUS_PANE1 "Pane 1" + IDS_STATUS_PANE2 "Pane 2" + IDS_TOOLBAR_STANDARD "Standard" + IDS_TOOLBAR_CUSTOMIZE "Customize..." + IDS_OUTPUT_WND "Output" + IDS_BUILD_TAB "Build" + IDS_DEBUG_TAB "Debug" + IDS_FIND_TAB "Find" + IDS_PROPERTIES_WND "Properties" + IDS_EDIT_MENU "Edit" +END +#endif + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) +#include "res\\TortoiseGitBlame.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#include "afxprint.rc" // printing/print preview resources +#if !defined(_AFXDLL) +#include "afxribbon.rc" // MFC ribbon and control bar resources +#endif +#endif +#endif // not APSTUDIO_INVOKED diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.vcproj b/src/TortoiseGitBlame/TortoiseGitBlame.vcproj new file mode 100644 index 0000000..80ca7cc --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlame.vcproj @@ -0,0 +1,773 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.vcproj.FSL.B20596.user b/src/TortoiseGitBlame/TortoiseGitBlame.vcproj.FSL.B20596.user new file mode 100644 index 0000000..ae5c3ce --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlame.vcproj.FSL.B20596.user @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/src/TortoiseGitBlame/TortoiseGitBlameDoc.cpp b/src/TortoiseGitBlame/TortoiseGitBlameDoc.cpp new file mode 100644 index 0000000..a04d238 --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlameDoc.cpp @@ -0,0 +1,79 @@ + +// TortoiseGitBlameDoc.cpp : implementation of the CTortoiseGitBlameDoc class +// + +#include "stdafx.h" +#include "TortoiseGitBlame.h" + +#include "TortoiseGitBlameDoc.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CTortoiseGitBlameDoc + +IMPLEMENT_DYNCREATE(CTortoiseGitBlameDoc, CDocument) + +BEGIN_MESSAGE_MAP(CTortoiseGitBlameDoc, CDocument) +END_MESSAGE_MAP() + + +// CTortoiseGitBlameDoc construction/destruction + +CTortoiseGitBlameDoc::CTortoiseGitBlameDoc() +{ + // TODO: add one-time construction code here + +} + +CTortoiseGitBlameDoc::~CTortoiseGitBlameDoc() +{ +} + +BOOL CTortoiseGitBlameDoc::OnNewDocument() +{ + if (!CDocument::OnNewDocument()) + return FALSE; + + // TODO: add reinitialization code here + // (SDI documents will reuse this document) + + return TRUE; +} + + + + +// CTortoiseGitBlameDoc serialization + +void CTortoiseGitBlameDoc::Serialize(CArchive& ar) +{ + if (ar.IsStoring()) + { + // TODO: add storing code here + } + else + { + // TODO: add loading code here + } +} + + +// CTortoiseGitBlameDoc diagnostics + +#ifdef _DEBUG +void CTortoiseGitBlameDoc::AssertValid() const +{ + CDocument::AssertValid(); +} + +void CTortoiseGitBlameDoc::Dump(CDumpContext& dc) const +{ + CDocument::Dump(dc); +} +#endif //_DEBUG + + +// CTortoiseGitBlameDoc commands diff --git a/src/TortoiseGitBlame/TortoiseGitBlameDoc.h b/src/TortoiseGitBlame/TortoiseGitBlameDoc.h new file mode 100644 index 0000000..cf115c1 --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlameDoc.h @@ -0,0 +1,41 @@ + +// TortoiseGitBlameDoc.h : interface of the CTortoiseGitBlameDoc class +// + + +#pragma once + + +class CTortoiseGitBlameDoc : public CDocument +{ +protected: // create from serialization only + CTortoiseGitBlameDoc(); + DECLARE_DYNCREATE(CTortoiseGitBlameDoc) + +// Attributes +public: + +// Operations +public: + +// Overrides +public: + virtual BOOL OnNewDocument(); + virtual void Serialize(CArchive& ar); + +// Implementation +public: + virtual ~CTortoiseGitBlameDoc(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + DECLARE_MESSAGE_MAP() +}; + + diff --git a/src/TortoiseGitBlame/TortoiseGitBlameView.cpp b/src/TortoiseGitBlame/TortoiseGitBlameView.cpp new file mode 100644 index 0000000..6ec0b78 --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlameView.cpp @@ -0,0 +1,117 @@ + +// TortoiseGitBlameView.cpp : implementation of the CTortoiseGitBlameView class +// + +#include "stdafx.h" +#include "TortoiseGitBlame.h" + +#include "TortoiseGitBlameDoc.h" +#include "TortoiseGitBlameView.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CTortoiseGitBlameView + +IMPLEMENT_DYNCREATE(CTortoiseGitBlameView, CView) + +BEGIN_MESSAGE_MAP(CTortoiseGitBlameView, CView) + // Standard printing commands + ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint) + ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CTortoiseGitBlameView::OnFilePrintPreview) +END_MESSAGE_MAP() + +// CTortoiseGitBlameView construction/destruction + +CTortoiseGitBlameView::CTortoiseGitBlameView() +{ + // TODO: add construction code here + +} + +CTortoiseGitBlameView::~CTortoiseGitBlameView() +{ +} + +BOOL CTortoiseGitBlameView::PreCreateWindow(CREATESTRUCT& cs) +{ + // TODO: Modify the Window class or styles here by modifying + // the CREATESTRUCT cs + + return CView::PreCreateWindow(cs); +} + +// CTortoiseGitBlameView drawing + +void CTortoiseGitBlameView::OnDraw(CDC* /*pDC*/) +{ + CTortoiseGitBlameDoc* pDoc = GetDocument(); + ASSERT_VALID(pDoc); + if (!pDoc) + return; + + // TODO: add draw code for native data here +} + + +// CTortoiseGitBlameView printing + + +void CTortoiseGitBlameView::OnFilePrintPreview() +{ + AFXPrintPreview(this); +} + +BOOL CTortoiseGitBlameView::OnPreparePrinting(CPrintInfo* pInfo) +{ + // default preparation + return DoPreparePrinting(pInfo); +} + +void CTortoiseGitBlameView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ + // TODO: add extra initialization before printing +} + +void CTortoiseGitBlameView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) +{ + // TODO: add cleanup after printing +} + +void CTortoiseGitBlameView::OnRButtonUp(UINT nFlags, CPoint point) +{ + ClientToScreen(&point); + OnContextMenu(this, point); +} + +void CTortoiseGitBlameView::OnContextMenu(CWnd* pWnd, CPoint point) +{ + theApp.GetContextMenuManager()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE); +} + + +// CTortoiseGitBlameView diagnostics + +#ifdef _DEBUG +void CTortoiseGitBlameView::AssertValid() const +{ + CView::AssertValid(); +} + +void CTortoiseGitBlameView::Dump(CDumpContext& dc) const +{ + CView::Dump(dc); +} + +CTortoiseGitBlameDoc* CTortoiseGitBlameView::GetDocument() const // non-debug version is inline +{ + ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTortoiseGitBlameDoc))); + return (CTortoiseGitBlameDoc*)m_pDocument; +} +#endif //_DEBUG + + +// CTortoiseGitBlameView message handlers diff --git a/src/TortoiseGitBlame/TortoiseGitBlameView.h b/src/TortoiseGitBlame/TortoiseGitBlameView.h new file mode 100644 index 0000000..a9a7784 --- /dev/null +++ b/src/TortoiseGitBlame/TortoiseGitBlameView.h @@ -0,0 +1,53 @@ + +// TortoiseGitBlameView.h : interface of the CTortoiseGitBlameView class +// + + +#pragma once + + +class CTortoiseGitBlameView : public CView +{ +protected: // create from serialization only + CTortoiseGitBlameView(); + DECLARE_DYNCREATE(CTortoiseGitBlameView) + +// Attributes +public: + CTortoiseGitBlameDoc* GetDocument() const; + +// Operations +public: + +// Overrides +public: + virtual void OnDraw(CDC* pDC); // overridden to draw this view + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); +protected: + virtual BOOL OnPreparePrinting(CPrintInfo* pInfo); + virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo); + virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo); + +// Implementation +public: + virtual ~CTortoiseGitBlameView(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: + +// Generated message map functions +protected: + afx_msg void OnFilePrintPreview(); + afx_msg void OnRButtonUp(UINT nFlags, CPoint point); + afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); + DECLARE_MESSAGE_MAP() +}; + +#ifndef _DEBUG // debug version in TortoiseGitBlameView.cpp +inline CTortoiseGitBlameDoc* CTortoiseGitBlameView::GetDocument() const + { return reinterpret_cast(m_pDocument); } +#endif + diff --git a/src/TortoiseGitBlame/UserImages.bmp b/src/TortoiseGitBlame/UserImages.bmp new file mode 100644 index 0000000000000000000000000000000000000000..affe657025e47679f501e959df84b108ec017b51 GIT binary patch literal 7976 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 kJ<{dhy25~0I&EPo&W#< literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhc b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhc new file mode 100644 index 0000000..b15170e --- /dev/null +++ b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhc @@ -0,0 +1,42 @@ + + + + + + +
    +
  • + + + +
  • + + +
      +
    • + + + +
    • + + + +
    • + + + +
    • + + + +
    +
  • + + + +
  • + + + +
+ diff --git a/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhk b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhk new file mode 100644 index 0000000..2e24f6f --- /dev/null +++ b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhk @@ -0,0 +1,9 @@ + + + + + + +
    +
+ diff --git a/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhp b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhp new file mode 100644 index 0000000..4321396 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/TortoiseGitBlame.hhp @@ -0,0 +1,213 @@ +[OPTIONS] +Auto Index=Yes +Compatibility=1.1 or later +Compiled file=TortoiseGitBlame.chm +Contents file=TortoiseGitBlame.hhc +Index file=TortoiseGitBlame.hhk +Default topic=main_index.htm +Display compile progress=No +Full-text search=Yes +Language=0x0409 English (United States) + + +[FILES] +afx_hidd_color.htm +afx_hidd_fileopen.htm +afx_hidd_filesave.htm +afx_hidd_find.htm +afx_hidd_font.htm +afx_hidd_newtypedlg.htm +afx_hidd_replace.htm +afx_hidp_default.htm +afx_hidw_dockbar_top.htm +afx_hidw_status_bar.htm +afx_hidw_toolbar.htm +hidr_doc1type.htm +hid_app_about.htm +hid_app_exit.htm +hid_context_help.htm +hid_edit_clear.htm +hid_edit_clear_all.htm +hid_edit_copy.htm +hid_edit_cut.htm +hid_edit_find.htm +hid_edit_paste.htm +hid_edit_redo.htm +hid_edit_repeat.htm +hid_edit_replace.htm +hid_edit_undo.htm +hid_file_close.htm +hid_file_mru_file1.htm +hid_file_new.htm +hid_file_open.htm +hid_file_save.htm +hid_file_save_as.htm +hid_file_send_mail.htm +hid_help_index.htm +hid_help_using.htm +hid_ht_caption.htm +hid_ht_nowhere.htm +hid_next_pane.htm +hid_prev_pane.htm +hid_sc_close.htm +hid_sc_maximize.htm +hid_sc_minimize.htm +hid_sc_move.htm +hid_sc_nextwindow.htm +hid_sc_prevwindow.htm +hid_sc_restore.htm +hid_sc_size.htm +hid_sc_tasklist.htm +hid_view_ruler.htm +hid_view_status_bar.htm +hid_view_toolbar.htm +hid_window_all.htm +hid_window_arrange.htm +hid_window_cascade.htm +hid_window_new.htm +hid_window_split.htm +hid_window_tile.htm +hid_window_tile_horz.htm +hid_window_tile_vert.htm +main_index.htm +menu_edit.htm +menu_file.htm +menu_help.htm +menu_view.htm +menu_window.htm +scrollbars.htm +afx_hidd_print.htm +afx_hidd_printdlg.htm +afx_hidd_printsetup.htm +afx_hidw_preview_bar.htm +hid_file_page_setup.htm +hid_file_print.htm +hid_file_print_preview.htm +hid_file_print_setup.htm + +[ALIAS] +HIDR_MAINFRAME = main_index.htm + +main_index = main_index.htm +afx_hidd_color = afx_hidd_color.htm +afx_hidd_fileopen = afx_hidd_fileopen.htm +afx_hidd_filesave = afx_hidd_filesave.htm +afx_hidd_find = afx_hidd_find.htm +afx_hidd_font = afx_hidd_font.htm +afx_hidd_newtypedlg = afx_hidd_newtypedlg.htm +afx_hidd_replace = afx_hidd_replace.htm +AFX_HIDP_DEFAULT = AFX_HIDP_DEFAULT.htm +afx_hidw_dockbar_top = afx_hidw_dockbar_top.htm +afx_hidw_status_bar = afx_hidw_status_bar.htm +afx_hidw_toolbar = afx_hidw_toolbar.htm +hid_app_about = hid_app_about.htm +hid_app_exit = hid_app_exit.htm +hid_context_help = hid_context_help.htm +hid_edit_clear = hid_edit_clear.htm +hid_edit_clear_all = hid_edit_clear_all.htm +hid_edit_copy = hid_edit_copy.htm +hid_edit_cut = hid_edit_cut.htm +hid_edit_find = hid_edit_find.htm +hid_edit_paste = hid_edit_paste.htm +hid_edit_redo = hid_edit_redo.htm +hid_edit_repeat = hid_edit_repeat.htm +hid_edit_replace = hid_edit_replace.htm +hid_edit_undo = hid_edit_undo.htm +hid_file_close = hid_file_close.htm +hid_file_mru_file1 = hid_file_mru_file1.htm +hid_file_new = hid_file_new.htm +hid_file_open = hid_file_open.htm +hid_file_save = hid_file_save.htm +hid_file_save_as = hid_file_save_as.htm +hid_file_send_mail = hid_file_send_mail.htm +hid_help_index = hid_help_index.htm +hid_help_using = hid_help_using.htm +hid_ht_caption = hid_ht_caption.htm +hid_ht_nowhere = hid_ht_nowhere.htm +hid_next_pane = hid_next_pane.htm +hid_prev_pane = hid_prev_pane.htm +hid_sc_close = hid_sc_close.htm +hid_sc_maximize = hid_sc_maximize.htm +hid_sc_minimize = hid_sc_minimize.htm +hid_sc_move = hid_sc_move.htm +hid_sc_nextwindow = hid_sc_nextwindow.htm +hid_sc_prevwindow = hid_sc_prevwindow.htm +hid_sc_restore = hid_sc_restore.htm +hid_sc_size = hid_sc_size.htm +hid_sc_tasklist = hid_sc_tasklist.htm +hid_view_ruler = hid_view_ruler.htm +hid_view_status_bar = hid_view_status_bar.htm +hid_view_toolbar = hid_view_toolbar.htm +hid_window_all = hid_window_all.htm +hid_window_arrange = hid_window_arrange.htm +hid_window_cascade = hid_window_cascade.htm +hid_window_new = hid_window_new.htm +hid_window_split = hid_window_split.htm +hid_window_tile = hid_window_tile.htm +hid_window_tile_horz = hid_window_tile_horz.htm +hid_window_tile_vert = hid_window_tile_vert.htm +hidr_doc1type = hidr_doc1type.htm +menu_edit = menu_edit.htm +menu_file = menu_file.htm +menu_help = menu_help.htm +menu_view = menu_view.htm +menu_window = menu_window.htm +scrollbars = scrollbars.htm +afx_hidd_print = afx_hidd_print.htm +afx_hidd_printdlg = afx_hidd_printdlg.htm +afx_hidd_printsetup = afx_hidd_printsetup.htm +afx_hidw_preview_bar = afx_hidw_preview_bar.htm +hid_file_page_setup = hid_file_page_setup.htm +hid_file_print = hid_file_print.htm +hid_file_print_preview = hid_file_print_preview.htm +hid_file_print_setup = hid_file_print_setup.htm +HIDD_ABOUTBOX = HID_APP_ABOUT.htm +HID_HT_SIZE = HID_SC_SIZE.htm +HID_HT_HSCROLL = scrollbars.htm +HID_HT_VSCROLL = scrollbars.htm +HID_HT_MINBUTTON = HID_SC_MINIMIZE.htm +HID_HT_MAXBUTTON = HID_SC_MAXIMIZE.htm +AFX_HIDP_INVALID_FILENAME = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_OPEN_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_SAVE_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_ASK_TO_SAVE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_CREATE_DOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FILE_TOO_LARGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_START_PRINT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_LAUNCH_HELP = AFX_HIDP_DEFAULT.htm +AFX_HIDP_INTERNAL_FAILURE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_COMMAND_FAILURE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_INT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_REAL = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_INT_RANGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_REAL_RANGE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_PARSE_STRING_SIZE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_INVALID_FORMAT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_INVALID_PATH = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_DISK_FULL = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_ACCESS_READ = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_ACCESS_WRITE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_IO_ERROR_READ = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_IO_ERROR_WRITE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_STATIC_OBJECT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_CONNECT = AFX_HIDP_DEFAULT.htm +AFX_HIDP_SERVER_BUSY = AFX_HIDP_DEFAULT.htm +AFX_HIDP_BAD_VERB = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_MEMORY_ALLOC = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_NOTIFY = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_LAUNCH = AFX_HIDP_DEFAULT.htm +AFX_HIDP_ASK_TO_UPDATE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_UPDATE = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_REGISTER = AFX_HIDP_DEFAULT.htm +AFX_HIDP_FAILED_TO_AUTO_REGISTER = AFX_HIDP_DEFAULT.htm +AFX_HIDW_DOCKBAR_BOTTOM = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests +AFX_HIDW_DOCKBAR_LEFT = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests +AFX_HIDW_DOCKBAR_RIGHT = AFX_HIDW_DOCKBAR_TOP.HTM ; Same topic, 4 different possible hit tests + +[MAP] +#include HTMLDefines.h + +[TEXT POPUPS] +HTMLDefines.h + +[INFOTYPES] diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_color.htm b/src/TortoiseGitBlame/hlp/afx_hidd_color.htm new file mode 100644 index 0000000..646eed0 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_color.htm @@ -0,0 +1,16 @@ + + + + +(Choose Color Dialog) + + + + + +

Choose Color dialog box

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_fileopen.htm b/src/TortoiseGitBlame/hlp/afx_hidd_fileopen.htm new file mode 100644 index 0000000..2f95ebc --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_fileopen.htm @@ -0,0 +1,39 @@ + + + + +(File Open dialog box) + + + + + +

File Open dialog box

+ +

The following options allow you to specify which file to open:

+ +

File Name

+ +

Specifies the file you want to open. This box lists files with the extension you select in the + List Files of Type field.

+ +

List Files of Type

+ +

Specifies the type of file you want to open:

+ +

<< List your application's file types here. >>

+ +

Drives

+ +

Specifies the drive in which <<YourApp>> stores the file that you want to open.

+ +

Directories

+ +

Specifies the directory in which <<YourApp>> stores the file that you want to open.

+ +

Network

+ +

Click this button to connect to a network location, assigning it a new drive letter.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_filesave.htm b/src/TortoiseGitBlame/hlp/afx_hidd_filesave.htm new file mode 100644 index 0000000..4d53bb5 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_filesave.htm @@ -0,0 +1,36 @@ + + + + +(File Save As dialog box) + + + + + +

File Save As dialog box

+ +

The following options allow you to specify the name and location of the file you're about to save:

+ +

File Name

+ +

Specifies a file name to save a document with a different name. <<YourApp>> adds the extension you specify in the + Save File As Type box.

+ +

Drives

+ +

Specifies the drive in which you want to store the document.

+ +

Directories

+ +

Specifies the directory in which you want to store the document.

+ +

Network

+ +

Click this button to connect to a network location, assigning it a new drive letter.

+ +

<< Add other File Save As dialog box options depending on which ones your application chooses +through the OFN_ flags of the OPENFILENAME structure used by the CFileDialog. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_find.htm b/src/TortoiseGitBlame/hlp/afx_hidd_find.htm new file mode 100644 index 0000000..37bef29 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_find.htm @@ -0,0 +1,16 @@ + + + + +(Find Dialog) + + + + + +

Find dialog box

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_font.htm b/src/TortoiseGitBlame/hlp/afx_hidd_font.htm new file mode 100644 index 0000000..90ecee9 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_font.htm @@ -0,0 +1,16 @@ + + + + +(Choose Font Dialog) + + + + + +

Choose Font dialog box

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_newtypedlg.htm b/src/TortoiseGitBlame/hlp/afx_hidd_newtypedlg.htm new file mode 100644 index 0000000..17ca38b --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_newtypedlg.htm @@ -0,0 +1,20 @@ + + + + +(File New dialog box) + + + + + +

File New dialog box

+ +

<< Delete this help topic if your application supports only one document type. >>

+ +

Specify the type of document you want to create:

+ +

<< List your application's document types here >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_print.htm b/src/TortoiseGitBlame/hlp/afx_hidd_print.htm new file mode 100644 index 0000000..3216a28 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_print.htm @@ -0,0 +1,59 @@ + + + + +(Print dialog box) + + + + + +

Print dialog box

+ +

The following options allow you to specify how the document should be printed:

+ +

Printer

+ +

Displays the active printer and printer connection. Choose the Setup option to change the printer and printer connection.

+ +

Setup

+ +

Displays a Print Setup dialog box, so you can select a printer and printer connection.

+ +

Print Range

+ +

Specifies the pages you want to print:

+ + + + + + + + + + + + + + + + + +
AllPrints the entire document.
SelectionPrints the currently selected text.
PagesPrints the range of pages you specify in the From and To + fields.
+ +

Copies

+ +

Specifies the number of copies you want to print for the above page range.

+ +

Collate Copies

+ +

Prints copies in page number order, instead of separated multiple copies of each page.

+ +

Print Quality

+ +

Specifies the quality of the printing. Generally, lower quality printing takes less time to produce.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_printdlg.htm b/src/TortoiseGitBlame/hlp/afx_hidd_printdlg.htm new file mode 100644 index 0000000..7b42bdb --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_printdlg.htm @@ -0,0 +1,18 @@ + + + + +(Print Progress Dialog) + + + + + +

Print Progress Dialog

+ +

The Printing dialog box is shown during the time that <<YourApp>> is sending output to the printer. The page number indicates the progress of the printing.

+ +

To abort printing, choose Cancel.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_printsetup.htm b/src/TortoiseGitBlame/hlp/afx_hidd_printsetup.htm new file mode 100644 index 0000000..83d94be --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_printsetup.htm @@ -0,0 +1,42 @@ + + + + +(Print Setup dialog box) + + + + + +

Print Setup dialog box

+ +

The following options allow you to select the destination printer and its connection.

+ +

Printer

+ +

Specifies the printer you want to use. Choose the default printer, or choose the + Specific Printer option and select one of the current installed printers shown in the box. You install printers and configure ports using +Control Panel.

+ +

Orientation

+ +

Specifies Portrait or Landscape.

+ +

Paper Size

+ +

Specifies the size of paper that the document is to be printed on.

+ +

Paper Source

+ +

Specifies the paper source, because some printers offer multiple trays for different paper sources.

+ +

Options

+ +

Displays a dialog box where you can make additional choices about printing, specific to the type of printer you have selected.

+ +

Network

+ +

Click this button to connect to a network location, assigning it a new drive letter.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidd_replace.htm b/src/TortoiseGitBlame/hlp/afx_hidd_replace.htm new file mode 100644 index 0000000..759652c --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidd_replace.htm @@ -0,0 +1,16 @@ + + + + +(Replace Dialog) + + + + + +

Replace dialog box

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidp_default.htm b/src/TortoiseGitBlame/hlp/afx_hidp_default.htm new file mode 100644 index 0000000..3902577 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidp_default.htm @@ -0,0 +1,20 @@ + + + + +(No Help Available) + + + + + +

No Help Available

+ +

No help is available for this message box.

+ +

<< If you want to author help specific to each message box prompt, then remove the AFX_HIDP_xxx values from the [ALIAS] section of your +.hpj file, and author a topic for each AFX_HIDP_xxx value. For example, AFX_HIDP_INVALID_FILENAME is the help topic for the + Invalid Filename message box. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidw_dockbar_top.htm b/src/TortoiseGitBlame/hlp/afx_hidw_dockbar_top.htm new file mode 100644 index 0000000..a47c230 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidw_dockbar_top.htm @@ -0,0 +1,16 @@ + + + + +(Docking Toolbar Area) + + + + + +

Docking Toolbar Area

+ +

This area is provided to contain dockable toolbars, such as the default toolbar created for the application. Docking toolbars can be dragged onto or off this client area, and arrange themselves according to the space available.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidw_preview_bar.htm b/src/TortoiseGitBlame/hlp/afx_hidw_preview_bar.htm new file mode 100644 index 0000000..d199cfa --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidw_preview_bar.htm @@ -0,0 +1,48 @@ + + + + +(print preview toolbar) + + + + + + + + + +

Print Preview toolbar

+ +

The print preview toolbar offers you the following options:

+ +

Print

+ +

Opens the Print dialog box to start a print job.

+ +

Next Page

+ +

Previews the next printed page.

+ +

Prev Page

+ +

Previews the previous printed page.

+ +

One Page / Two Page

+ +

Previews one or two printed pages at a time.

+ +

Zoom In

+ +

Takes a closer look at the printed page.

+ +

Zoom Out

+ +

Takes a larger look at the printed page.

+ +

Close

+ +

Returns from print preview to the editing window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidw_status_bar.htm b/src/TortoiseGitBlame/hlp/afx_hidw_status_bar.htm new file mode 100644 index 0000000..3b87a33 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidw_status_bar.htm @@ -0,0 +1,34 @@ + + + + +(status bar) + + + + + + + + + +

Status Bar

+ +

The status bar is displayed at the bottom of the <<YourApp>> window. To display or hide the status bar, use the + Status Bar command in the View menu.

+ +

The left area of the status bar describes actions of menu items as you use the arrow keys to navigate through menus. This area similarly shows messages that describe the actions of toolbar buttons as you +press them, before releasing them. If after viewing the description of the toolbar button command you wish not to execute the command, then release the mouse button while the pointer is off the toolbar button.

+ +

The right areas of the status bar indicate which of the following keys are latched down:

+ +

Indicator    Description

+ +

CAP           The Caps Lock key is latched down.

+ +

NUM         The Num Lock key is latched down.

+ +

SCRL         The Scroll Lock key is latched down.

+ + + diff --git a/src/TortoiseGitBlame/hlp/afx_hidw_toolbar.htm b/src/TortoiseGitBlame/hlp/afx_hidw_toolbar.htm new file mode 100644 index 0000000..2295769 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/afx_hidw_toolbar.htm @@ -0,0 +1,23 @@ + + + + +(toolbar) + + + + + + + + + +

Toolbar

+ + +

The toolbar is displayed across the top of the application window, below the menu bar. The toolbar provides quick mouse access to many tools used in <<YourApp>>,

+ +

To hide or display the toolbar, click Toolbar from the View menu.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_app_about.htm b/src/TortoiseGitBlame/hlp/hid_app_about.htm new file mode 100644 index 0000000..83c8371 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_app_about.htm @@ -0,0 +1,16 @@ + + + + +(About command (Help menu)) + + + + + +

About command (Help menu)

+ +

Use this command to display the copyright notice and version number of your copy of <<YourApp>>.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_app_exit.htm b/src/TortoiseGitBlame/hlp/hid_app_exit.htm new file mode 100644 index 0000000..bbcf0e6 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_app_exit.htm @@ -0,0 +1,22 @@ + + + + +(File Exit command) + + + + + + + + + +

Exit command (File menu)

+ +

Use this command to end your <<YourApp>> session. You can also use the + Close command on the application Control menu. <<YourApp>> prompts you to save documents with unsaved changes.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_context_help.htm b/src/TortoiseGitBlame/hlp/hid_context_help.htm new file mode 100644 index 0000000..7197730 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_context_help.htm @@ -0,0 +1,20 @@ + + + + +(Help Using Help Command) + + + + + +

Context Help command

+ + +

Use this command to obtain help on some portion of <<YourApp>>. When you choose the +toolbar's Context Help button, the mouse pointer will change to an arrow and question mark. Then click somewhere in the <<YourApp>> window, such as another +toolbar button. The help topic will be shown for the item you clicked.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_clear.htm b/src/TortoiseGitBlame/hlp/hid_edit_clear.htm new file mode 100644 index 0000000..89093c8 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_clear.htm @@ -0,0 +1,16 @@ + + + + +(Edit Clear Command) + + + + + +

Clear command (Edit menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_clear_all.htm b/src/TortoiseGitBlame/hlp/hid_edit_clear_all.htm new file mode 100644 index 0000000..6f1927a --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_clear_all.htm @@ -0,0 +1,16 @@ + + + + +(Edit Clear All) + + + + + +

Clear All command (Edit menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_copy.htm b/src/TortoiseGitBlame/hlp/hid_edit_copy.htm new file mode 100644 index 0000000..afb2552 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_copy.htm @@ -0,0 +1,19 @@ + + + + +(Copy command (Edit menu)) + + + + + +

Copy command (Edit menu)

+ +

Use this command to copy selected data onto the clipboard. This command is unavailable if there is no data currently selected.

+ +

Copying data to the clipboard replaces the contents previously stored there.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_cut.htm b/src/TortoiseGitBlame/hlp/hid_edit_cut.htm new file mode 100644 index 0000000..4b00071 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_cut.htm @@ -0,0 +1,19 @@ + + + + +(Cut command (Edit menu)) + + + + + +

Cut command (Edit menu)

+ +

Use this command to remove the currently selected data from the document and put it on the clipboard. This command is unavailable if there is no data currently selected.

+ +

Cutting data to the clipboard replaces the contents previously stored there.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_find.htm b/src/TortoiseGitBlame/hlp/hid_edit_find.htm new file mode 100644 index 0000000..46a7111 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_find.htm @@ -0,0 +1,16 @@ + + + + +(Edit Find Command) + + + + + +

Find command (Edit menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_paste.htm b/src/TortoiseGitBlame/hlp/hid_edit_paste.htm new file mode 100644 index 0000000..a5b8b1b --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_paste.htm @@ -0,0 +1,16 @@ + + + + +(Paste command (Edit menu)) + + + + + +

Paste command (Edit menu)

+ +

Use this command to insert a copy of the clipboard contents at the insertion point. This command is unavailable if the clipboard is empty.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_redo.htm b/src/TortoiseGitBlame/hlp/hid_edit_redo.htm new file mode 100644 index 0000000..672d3b0 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_redo.htm @@ -0,0 +1,16 @@ + + + + +(Redo command (Edit menu)) + + + + + +

Redo command (Edit menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_repeat.htm b/src/TortoiseGitBlame/hlp/hid_edit_repeat.htm new file mode 100644 index 0000000..ac806a1 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_repeat.htm @@ -0,0 +1,17 @@ + + + + +(Edit Repeat Command) + + + + + +

Repeat command (Edit menu)

+ +

Use this command to repeat the last editing command carried out. The Repeat menu item changes to + Can't Repeat if you cannot repeat your last action.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_replace.htm b/src/TortoiseGitBlame/hlp/hid_edit_replace.htm new file mode 100644 index 0000000..b726a01 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_replace.htm @@ -0,0 +1,16 @@ + + + + +(Edit Replace Command) + + + + + +

Replace command (Edit menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_edit_undo.htm b/src/TortoiseGitBlame/hlp/hid_edit_undo.htm new file mode 100644 index 0000000..dacc084 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_edit_undo.htm @@ -0,0 +1,19 @@ + + + + +(Undo/Can't Undo command (Edit menu)) + + + + + +

Undo/Can't Undo command (Edit menu)

+ +

<< Your application's user interface for Undo may differ from the one described below. Modify this help text accordingly. >>

+ +

Use this command to reverse the last editing action, if possible. The name of the command changes, depending on what the last action was. The + Undo command changes to Can't Undo on the menu if you cannot reverse your last action.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_close.htm b/src/TortoiseGitBlame/hlp/hid_file_close.htm new file mode 100644 index 0000000..bf60219 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_close.htm @@ -0,0 +1,22 @@ + + + + +(File Close command) + + + + + + + + + +

Close command (File menu)

+ +

Use this command to close all windows containing the active document. <<YourApp>> suggests that you save changes to your document before you close it. If you close a document without saving, you lose all changes made since the last time y +ou saved it. Before closing an untitled document, <<YourApp>> displays the Save As dialog box and suggests that you name and save the document.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_mru_file1.htm b/src/TortoiseGitBlame/hlp/hid_file_mru_file1.htm new file mode 100644 index 0000000..fc349ad --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_mru_file1.htm @@ -0,0 +1,20 @@ + + + + +(File 1, 2, 3, 4 command) + + + + + + + + + +

1, 2, 3, 4 command (File menu)

+ +

Use the numbers and filenames listed at the bottom of the File menu to open the last four documents you closed. Choose the number that corresponds with the document you want to open.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_new.htm b/src/TortoiseGitBlame/hlp/hid_file_new.htm new file mode 100644 index 0000000..9309619 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_new.htm @@ -0,0 +1,23 @@ + + + + +(File New command) + + + + + + + + + +

New command (File menu)

+ +

Use this command to create a new document in <<YourApp>>. Select the type of new file you want to create in the File New dialog box. << Remove previous sentence if your application supports only + one document type. >>

+ +

You can open an existing document with the Open command.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_open.htm b/src/TortoiseGitBlame/hlp/hid_file_open.htm new file mode 100644 index 0000000..6ecb730 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_open.htm @@ -0,0 +1,24 @@ + + + + +(File Open command) + + + + + + + + + +

Open command (File menu)

+ +

Use this command to open an existing document in a new window. You can open multiple documents at once. Use the + Window menu to switch among the multiple open documents. See Window 1, 2, ... command.

+ +

You can create new documents with the New command.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_page_setup.htm b/src/TortoiseGitBlame/hlp/hid_file_page_setup.htm new file mode 100644 index 0000000..fd33b19 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_page_setup.htm @@ -0,0 +1,16 @@ + + + + +(File Page Setup Command) + + + + + +

Page Setup command (File menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_print.htm b/src/TortoiseGitBlame/hlp/hid_file_print.htm new file mode 100644 index 0000000..4de1299 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_print.htm @@ -0,0 +1,21 @@ + + + + +(File Print command) + + + + + + + + + +

Print command (File menu)

+ +

Use this command to print a document. This command presents a Print dialog box, where you may specify the range of pages to be printed, the number of copies, the destination printer, and other printer setup options. + + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_print_preview.htm b/src/TortoiseGitBlame/hlp/hid_file_print_preview.htm new file mode 100644 index 0000000..407ab18 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_print_preview.htm @@ -0,0 +1,21 @@ + + + + +(File Print Preview command) + + + + + + + + + +

Print Preview command (File menu)

+ +

Use this command to display the active document as it would appear when printed. When you choose this command, the main window will be replaced with a print preview window in which one or two pages will be displayed in their printed format. The print preview toolbar offers you options to view either one or two pages at a time; move back and forth through the document; zoom in and out of pages; and initiate a print job.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_print_setup.htm b/src/TortoiseGitBlame/hlp/hid_file_print_setup.htm new file mode 100644 index 0000000..e1a4948 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_print_setup.htm @@ -0,0 +1,20 @@ + + + + +(File Print Setup command) + + + + + + + + + +

Print Setup command (File menu)

+ +

Use this command to select a printer and a printer connection. This command presents a Print Setup dialog box, where you specify the printer and its connection.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_save.htm b/src/TortoiseGitBlame/hlp/hid_file_save.htm new file mode 100644 index 0000000..22ad190 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_save.htm @@ -0,0 +1,22 @@ + + + + +(File Save command) + + + + + + + + + +

Save command (File menu)

+ +

Use this command to save the active document to its current name and directory. When you save a document for the first time, <<YourApp>> displays the Save As dialog box so you can name your document. If + you want to change the name and directory of an existing document before you save it, choose the Save As command.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_save_as.htm b/src/TortoiseGitBlame/hlp/hid_file_save_as.htm new file mode 100644 index 0000000..313ff42 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_save_as.htm @@ -0,0 +1,22 @@ + + + + +(File Save As command) + + + + + + + + + +

Save As command (File menu)

+ +

Use this command to save and name the active document. <<YourApp>> displays the Save As dialog box so you can name your document.

+ +

To save a document with its existing name and directory, use the Save command.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_file_send_mail.htm b/src/TortoiseGitBlame/hlp/hid_file_send_mail.htm new file mode 100644 index 0000000..7449593 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_file_send_mail.htm @@ -0,0 +1,18 @@ + + + + +(Send command (File menu)) + + + + + +

Send command (File menu)

+ +

Use this command to send the active document through e-mail. This command presents a mail window with the active document attached to it. You may then fill out the +To field, Subject field, and so on, and add text to the body of the message. When you are finished, you +can click the Send button to send the message.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_help_index.htm b/src/TortoiseGitBlame/hlp/hid_help_index.htm new file mode 100644 index 0000000..ce2c582 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_help_index.htm @@ -0,0 +1,18 @@ + + + + +(Index command (Help menu)) + + + + + +

Index command (Help menu)

+ +

Use this command to display the opening screen of help. From the opening screen, you can jump to step-by-step instructions for using <<YourApp>> and various types of reference information.

+ +

Once you open help, you can click the Contents button whenever you want to return to the opening screen.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_help_using.htm b/src/TortoiseGitBlame/hlp/hid_help_using.htm new file mode 100644 index 0000000..5dfcb4f --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_help_using.htm @@ -0,0 +1,16 @@ + + + + +(Using Help command (Help menu)) + + + + + +

Using Help command (Help menu)

+ +

Use this command for instructions about using help.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_ht_caption.htm b/src/TortoiseGitBlame/hlp/hid_ht_caption.htm new file mode 100644 index 0000000..360c676 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_ht_caption.htm @@ -0,0 +1,36 @@ + + + + +(Title Bar) + + + + + +

Title Bar

+ +

<< Show your application's title bar here. >>

+ +

The title bar is located along the top of a window. It contains the name of the application and document.

+ +

To move the window, drag the title bar. Note: You can also move dialog boxes by dragging their title bars.

+ +

A title bar may contain the following elements:

+ +

Application Control menu button

+ +

Document Control menu button

+ +

Maximize button

+ +

Minimize button

+ +

Name of the application

+ +

Name of the document

+ +

Restore button

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_ht_nowhere.htm b/src/TortoiseGitBlame/hlp/hid_ht_nowhere.htm new file mode 100644 index 0000000..0a333d4 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_ht_nowhere.htm @@ -0,0 +1,16 @@ + + + + +(No Help Available) + + + + + +

No Help Available

+ +

No help is available for this area of the window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_next_pane.htm b/src/TortoiseGitBlame/hlp/hid_next_pane.htm new file mode 100644 index 0000000..4c10ec5 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_next_pane.htm @@ -0,0 +1,16 @@ + + + + +(Next Pane Command) + + + + + +

Next Pane

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_prev_pane.htm b/src/TortoiseGitBlame/hlp/hid_prev_pane.htm new file mode 100644 index 0000000..c062605 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_prev_pane.htm @@ -0,0 +1,16 @@ + + + + +(Prev Pane Command) + + + + + +

Prev Pane

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_close.htm b/src/TortoiseGitBlame/hlp/hid_sc_close.htm new file mode 100644 index 0000000..1a33450 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_close.htm @@ -0,0 +1 @@ +(Close command (Control menus))

Close command (Control menus)

Use this command to close the active window or dialog box.

Double-clicking a Control menu box is the same as choosing the Close command.

Note: If you have multiple windows open for a single document, the Close command on the document Control menu closes only one window at a time. You can close all windows at once with the Close command on the File menu.

diff --git a/src/TortoiseGitBlame/hlp/hid_sc_maximize.htm b/src/TortoiseGitBlame/hlp/hid_sc_maximize.htm new file mode 100644 index 0000000..4d21d3b --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_maximize.htm @@ -0,0 +1,17 @@ + + + + +(Maximize command (System menu)) + + + + + +

Maximize command (System menu)

+ +

Use this command to enlarge the active window to fill the available space.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_minimize.htm b/src/TortoiseGitBlame/hlp/hid_sc_minimize.htm new file mode 100644 index 0000000..ea936a3 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_minimize.htm @@ -0,0 +1,16 @@ + + + + +(System Minimize Command) + + + + + +

Minimize command (application Control menu)

+ +

Use this command to reduce the <<YourApp>> window to an icon.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_move.htm b/src/TortoiseGitBlame/hlp/hid_sc_move.htm new file mode 100644 index 0000000..3a81e74 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_move.htm @@ -0,0 +1,18 @@ + + + + +(Move command (Control menu)) + + + + + +

Move command (Control menu)

+ +

Use this command to display a four-headed arrow so you can move the active window or dialog box with the arrow keys.

+ +

Note: This command is unavailable if you maximize the window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_nextwindow.htm b/src/TortoiseGitBlame/hlp/hid_sc_nextwindow.htm new file mode 100644 index 0000000..7ff4339 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_nextwindow.htm @@ -0,0 +1,17 @@ + + + + +(Next Window command (document Control menu)) + + + + + +

Next Window command (document Control menu)

+ +

Use this command to switch to the next open document window. <<YourApp>> determines which window is next according to the order in which you opened the windows.

+ + + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_prevwindow.htm b/src/TortoiseGitBlame/hlp/hid_sc_prevwindow.htm new file mode 100644 index 0000000..23272c7 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_prevwindow.htm @@ -0,0 +1,16 @@ + + + + +(Previous Window command (document Control menu)) + + + + + +

Previous Window command (document Control menu)

+ +

Use this command to switch to the previous open document window. <<YourApp>> determines which window is previous according to the order in which you opened the windows.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_restore.htm b/src/TortoiseGitBlame/hlp/hid_sc_restore.htm new file mode 100644 index 0000000..e1dc513 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_restore.htm @@ -0,0 +1,17 @@ + + + + +(Restore command (Control menu)) + + + + + +

Restore command (Control menu)

+ +

Use this command to return the active window to its size and position before you chose the + Maximize or Minimize command.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_size.htm b/src/TortoiseGitBlame/hlp/hid_sc_size.htm new file mode 100644 index 0000000..1fbb557 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_size.htm @@ -0,0 +1,26 @@ + + + + +(Size command (System menu)) + + + + + +

Size command (System menu)

+ +

Use this command to display a four-headed arrow so you can size the active window with the arrow keys.

+ +

After the pointer changes to the four-headed arrow:

+ +

1.Press one of the direction keys (left, right, up, or down arrow key) to move the pointer to the border you want to move.

+ +

2.Press a direction key to move the border.

+ +

3.Press ENTER when the window is the size you want.

+ +

Note: This command is unavailable if you maximize the window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_sc_tasklist.htm b/src/TortoiseGitBlame/hlp/hid_sc_tasklist.htm new file mode 100644 index 0000000..abd4e55 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_sc_tasklist.htm @@ -0,0 +1,50 @@ + + + + +(Switch to command (application Control menu)) + + + + + +

Switch to command (application Control menu)

+ +

Use this command to display a list of all open applications. Use this task +List to switch to or close an application on the list.

+ + +

Dialog Box Options

+ +

When you choose the Switch To command, you will be presented with a dialog box with the following options:

+ +

Task List

+ +

Specifies the application you want to switch to or close.

+ +

Switch To

+ +

Makes the selected application active.

+ +

End Task

+ +

Closes the selected application.

+ +

Cancel

+ +

Closes the Task List box.

+ +

Cascade

+ +

Arranges open applications so they overlap and you can see each title bar. This option does not affect applications reduced to icons.

+ +

Tile

+ +

Arranges open applications into windows that do not overlap. This option does not affect applications reduced to icons.

+ +

Arrange Icons

+ +

Arranges the icons of all minimized applications across the bottom of the screen.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_view_ruler.htm b/src/TortoiseGitBlame/hlp/hid_view_ruler.htm new file mode 100644 index 0000000..d86ea8f --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_view_ruler.htm @@ -0,0 +1,16 @@ + + + + +(View Ruler Command) + + + + + +

Ruler command (View menu)

+ +

<< Write application-specific help here. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_view_status_bar.htm b/src/TortoiseGitBlame/hlp/hid_view_status_bar.htm new file mode 100644 index 0000000..c05d2a2 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_view_status_bar.htm @@ -0,0 +1,24 @@ + + + + +(View Status Bar Command) + + + + + + + + + +

Status Bar command (View menu)

+ +

Use this command to display and hide the status bar, which describes the action to be executed by the selected menu item or +pressed toolbar button, and keyboard latch state. A checkmark appears next to the menu item when the +status bar is displayed.

+ +

See Status Bar for help on using the status bar.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_view_toolbar.htm b/src/TortoiseGitBlame/hlp/hid_view_toolbar.htm new file mode 100644 index 0000000..733124a --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_view_toolbar.htm @@ -0,0 +1,23 @@ + + + + +(View Toolbar command) + + + + + + + + + +

Toolbar command (View menu)

+ +

Use this command to display and hide the toolbar, which includes buttons for some of the most common commands in <<YourApp>>, such as + File Open. A checkmark appears next to the menu item when the toolbar is displayed.

+ +

See Toolbar for help on using the toolbar.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_all.htm b/src/TortoiseGitBlame/hlp/hid_window_all.htm new file mode 100644 index 0000000..c14df11 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_all.htm @@ -0,0 +1,17 @@ + + + + +(1, 2, ... command (Window menu)) + + + + + +

1, 2, ... command (Window menu)

+ +

<<YourApp>> displays a list of currently open document windows at the bottom of the + Window menu. A checkmark appears in front of the document name of the active window. Choose a document from this list to make its window active.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_arrange.htm b/src/TortoiseGitBlame/hlp/hid_window_arrange.htm new file mode 100644 index 0000000..07d2328 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_arrange.htm @@ -0,0 +1,17 @@ + + + + +(Window Arrange Icons Command) + + + + + +

Window Arrange Icons Command

+ +

Use this command to arrange the icons for minimized windows at the bottom of the main window. If there is an open document window at the bottom of the main window, then some or all of the icons may not be visible because they will be underneath this d +ocument window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_cascade.htm b/src/TortoiseGitBlame/hlp/hid_window_cascade.htm new file mode 100644 index 0000000..a231054 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_cascade.htm @@ -0,0 +1,16 @@ + + + + +(Cascade command (Window menu)) + + + + + +

Cascade command (Window menu)

+ +

Use this command to arrange multiple opened windows in an overlapped fashion.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_new.htm b/src/TortoiseGitBlame/hlp/hid_window_new.htm new file mode 100644 index 0000000..1a3eb9f --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_new.htm @@ -0,0 +1,17 @@ + + + + +(New command (Window menu)) + + + + + +

New command (Window menu)

+ +

Use this command to open a new window with the same contents as the active window. You can open multiple document windows to display different parts or views of a document at the same time. If you change the contents in one window, all other windows +containing the same document reflect those changes. When you open a new window, it becomes the active window and is displayed on top of all other open windows.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_split.htm b/src/TortoiseGitBlame/hlp/hid_window_split.htm new file mode 100644 index 0000000..e9e0ee3 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_split.htm @@ -0,0 +1,18 @@ + + + + +(Split Command (Window menu)) + + + + + +

Split Command (Window menu)

+ +

Use this command to split the active window into panes. You may then use the mouse or the keyboard arrows to move the splitter bars. When you are finished, press the mouse button or enter to leave the splitter bars in their new location. Pressing es +cape keeps the splitter bars in their original location. << In a single document interface application, this command will appear on the + View menu. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_tile.htm b/src/TortoiseGitBlame/hlp/hid_window_tile.htm new file mode 100644 index 0000000..6942ba0 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_tile.htm @@ -0,0 +1,16 @@ + + + + +(Tile command (Window menu)) + + + + + +

Tile command (Window menu)

+ +

Use this command to arrange multiple opened windows in a nonoverlapped fashion.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_tile_horz.htm b/src/TortoiseGitBlame/hlp/hid_window_tile_horz.htm new file mode 100644 index 0000000..ccb9694 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_tile_horz.htm @@ -0,0 +1,17 @@ + + + + +(Tile Horizontal command (Window menu)) + + + + + +

Tile Horizontal command (Window menu)

+ +

Use this command to vertically arrange multiple opened windows in a +nonoverlapped fashion.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hid_window_tile_vert.htm b/src/TortoiseGitBlame/hlp/hid_window_tile_vert.htm new file mode 100644 index 0000000..ef0aa82 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hid_window_tile_vert.htm @@ -0,0 +1,16 @@ + + + + +(Tile Vertical command (Window menu)) + + + + + +

Tile Vertical command (Window menu)

+ +

Use this command to arrange multiple opened windows side by side.

+ + + diff --git a/src/TortoiseGitBlame/hlp/hidr_doc1type.htm b/src/TortoiseGitBlame/hlp/hidr_doc1type.htm new file mode 100644 index 0000000..4a35f13 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/hidr_doc1type.htm @@ -0,0 +1,28 @@ + + + + +(Modifying the Document) + + + + + +

Modifying the Document

+ +

<< Write application-specific help here that provides an overview of how the user should modify a document using your application.

+ +

If your application supports multiple document types and you want to have a distinct help topic for each, then use the help context +ID generated by running the MAKEHELP.BAT file produced by the application +wizard. Alternately, run MAKEHM as follows:

+ +

makehm IDR_HIDR_,0x2000 resource.h

+ +

If the IDR_ symbol for one of your document types is, for example, IDR_CHARTTYPE, then the help context +ID generated by MAKEHM will be HIDR_CHARTTYPE.

+ +

Note: The application wizard defines the HIDR_DOC1TYPE help context ID used by this help topic for the first document type supported by your application. +The application wizard produces an alias in the .hpj file for your application, mapping HIDR_DOC1TYPE to the HIDR_ produced by MAKEHM for that document type. >>

+ + + diff --git a/src/TortoiseGitBlame/hlp/main_index.htm b/src/TortoiseGitBlame/hlp/main_index.htm new file mode 100644 index 0000000..eacf75c --- /dev/null +++ b/src/TortoiseGitBlame/hlp/main_index.htm @@ -0,0 +1,28 @@ + + + + +(<<YourApp>> Help Index) + + + + + +

<<YourApp>> Help Index

+ +

How To ...

+ +

<< Add your application-specific how-to topics here. >>

+ +

Commands

+ +

File menu

+ +

Edit menu

+ +

View menu

+ +

Help menu

+ + + diff --git a/src/TortoiseGitBlame/hlp/menu_edit.htm b/src/TortoiseGitBlame/hlp/menu_edit.htm new file mode 100644 index 0000000..a110239 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/menu_edit.htm @@ -0,0 +1,39 @@ + + + + +(Edit menu commands) + + + + + +

Edit menu commands

+ +

The Edit menu offers the following commands:

+ + + + + + + + + + + + + + + + + + + + + + +
UndoReverse previous editing operation.
CutDeletes data from the document and moves it to the clipboard.
CopyCopies data from the document to the clipboard.
PastePastes data from the clipboard into the document.
+ + + diff --git a/src/TortoiseGitBlame/hlp/menu_file.htm b/src/TortoiseGitBlame/hlp/menu_file.htm new file mode 100644 index 0000000..57d0453 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/menu_file.htm @@ -0,0 +1,68 @@ + + + + +(File menu commands) + + + + + + + + + +

File menu commands

+ +

The File menu offers the following commands:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NewCreates a new document.
OpenOpens an existing document.
CloseCloses an opened document.
SaveSaves an opened document using the same file name.
Save AsSaves an opened document to a specified file name.
PrintPrints a document.
Print PreviewDisplays the document on the screen as it would appear printed.
Print SetupSelects a printer and printer connection.
ExitExits <<YourApp>>.

+ + + diff --git a/src/TortoiseGitBlame/hlp/menu_help.htm b/src/TortoiseGitBlame/hlp/menu_help.htm new file mode 100644 index 0000000..868b555 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/menu_help.htm @@ -0,0 +1,29 @@ + + + + +(Help menu commands) + + + + + +

Help menu commands

+ +

The Help menu offers the following commands, which provide you assistance with this application:

+ + + + + + + + + + + + +
Help TopicsOffers you an index to topics on which you can get help.
AboutDisplays the version number of this application.

+ + + diff --git a/src/TortoiseGitBlame/hlp/menu_view.htm b/src/TortoiseGitBlame/hlp/menu_view.htm new file mode 100644 index 0000000..67b4f15 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/menu_view.htm @@ -0,0 +1,29 @@ + + + + +(View menu commands) + + + + + +

View menu commands

+ +

The View menu offers the following commands:

+ + + + + + + + + + + + +
ToolbarShows or hides the toolbar.
Status BarShows or hides the status bar.
+ + + diff --git a/src/TortoiseGitBlame/hlp/menu_window.htm b/src/TortoiseGitBlame/hlp/menu_window.htm new file mode 100644 index 0000000..b10a1c6 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/menu_window.htm @@ -0,0 +1,43 @@ + + + + +(Window menu commands) + + + + + +

Window menu commands

+ +

The Window menu offers the following commands, which enable you to arrange multiple views of multiple documents in the application window:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
New WindowCreates a new window that views the same document.
CascadeArranges windows in an overlapped fashion.
TileArranges windows in non-overlapped tiles.
Arrange IconsArranges icons of closed windows.
Window 1, 2, ...Goes to specified window.

+ + + diff --git a/src/TortoiseGitBlame/hlp/scrollbars.htm b/src/TortoiseGitBlame/hlp/scrollbars.htm new file mode 100644 index 0000000..a9a1a19 --- /dev/null +++ b/src/TortoiseGitBlame/hlp/scrollbars.htm @@ -0,0 +1,18 @@ + + + + +(Scroll bars) + + + + + +

Scrollbars

+ +

Displayed at the right and bottom edges of the document window. The scroll boxes inside the scrollbars indicate your vertical and horizontal location in the document. You can use the mouse to scroll to other parts of the document.

+ +

<< Describe the actions of the various parts of the scrollbar, according to how they behave in your application. >>

+ + + diff --git a/src/TortoiseGitBlame/res/Toolbar.bmp b/src/TortoiseGitBlame/res/Toolbar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0556e006257111562c019428920e8401989c3155 GIT binary patch literal 1198 zcmcJOJ#O1T5JoqUiUm~g8YvApfKmqwm`&iT1fY?)oPvM{NRyKo>{UodV!=)Y{k~Z; zqK&i}aep|o`}Uhz>f86%eG2CAp(HG3uu)8fH>R=JTDI<8VVF#z}y##69zeoRMa#{3;fmPVT zAv%w4yL&9Z9Le*KA~qS1YUl5)uV(g*R=lXxmH0YSxOL4Us#8Ro1SUS%ZML> zqoS7QSQzy=pCk3Er*if>Z@lRN+3Eo5yyc|4pU7J0Gd8^ASm+KtkF6cUvNyV3=}C5C0UVA)(8{?|1^I7!LcH|Mb8+hkr!Fhe zG_u!*EJ1Kyia$LBM*v~*ZaB$s+1Tt0_i9JI(8al$51EG@xqskp!{6Yqwr~QPRUo!S z)Vd$TVTT^)A1@DCRXu*=AVk SHqi<+#R)UA%9!y7e0~GO_3rWj literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/Toolbar256.bmp b/src/TortoiseGitBlame/res/Toolbar256.bmp new file mode 100644 index 0000000000000000000000000000000000000000..14bd4222ed181294aa1e4df44e67850f6ea02670 GIT binary patch literal 6536 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 NK9A-8OQnhX{{?OVn?wKr literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/TortoiseGitBlame.rc2 b/src/TortoiseGitBlame/res/TortoiseGitBlame.rc2 new file mode 100644 index 0000000..cf5c79b --- /dev/null +++ b/src/TortoiseGitBlame/res/TortoiseGitBlame.rc2 @@ -0,0 +1,13 @@ +// +// TortoiseGitBlame.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED +#error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/src/TortoiseGitBlame/res/TortoiseGitBlameDoc.ico b/src/TortoiseGitBlame/res/TortoiseGitBlameDoc.ico new file mode 100644 index 0000000000000000000000000000000000000000..96365d434ce66a0721e4b81a6a511a7982cb42dc GIT binary patch literal 4710 zcmeH~J#17*5Xa|&lRKR(8T$~{NeCP&Xwqy&WebFD)xhr9n;?B@)W3 zOp!#1WH(#|qOcSxMc5h&pg>m;!y%t#KfOCe%H}uo-hKFNtV9Y;jWHZVl{N{sph^HCK|Wo4xyD=TORgrYJ~OyM&XI|Bu>(!isT z@n~3pz8obFF_1fzz4n+7z}{Uk0tJ}|{;`Aq%7{!>k__zzV@&Rh%PV{RJC$KRORDlH zy$`vV-#hd5lGt0NNmgUj{Jprk+Usfm59R*&!vE0u*dmNHU;Ucz1d(}m#1veHj}=^^ zmom(bWg8Be$Nz*%=Ln-)e-7^N^9`O4rUsiD3;WtSS{`kW>s~)>pO=@*w{c)Lw`G}b zs>58-*!s&yH>a}Y<>m77&0H?u&i6$}Ophg(1{gZ%bnOP;)X zCExtAP9g_;IDtbhI&==5L+4aS0o28#_dIy?9=%7e!xHof`UD|CpP;9cfIgrP=mUy? zJ|ait7%a1+bp&?=atv~uZJK4-O9o4~AeTd&o;jp8SJs<<;tdirfi)R%&u5U`j}u zkRSn5Lhb}(Lhgjz3At@KEH`@cC*)7auS=AWKcO}pUod*=pvy*8Z1!mAX>}Q?K_FiM zTL4EOpDnH8pauaPL2)oKTW$sgumrFKKm-!n7640NV8AJ$2w>q06NfbkU`#y)4{aQcBnlXjOG4vfC zVmF6$Y!-!s+4ngN3z6Fkhp`Zfp|HpF9rNqk-xXnC-`p%QjZ&#zKYjYNHM(sF@#8{F zH~H*t)^UMo)nPDxF~)^-Ax$^&DD3L+Oy{q3E5^mRn5K(`eO{eL>`O~acr7iZ>8;C` z>vd&y7>u_dc_~M0J#M#ojyOEq(tY~i!NWcDY)FqvB|QnggwMd^_c@v3xOkuUIlHF} z?{oP*WkK&c2U3GO3I@(J>u7mAx~K3?;uQrS-BXV4DcmLghxe3fo0mH8tp1z*%}lM^ zt<`GXLes9-Yc-C{S}j*(J9dJq#)f1&JNnLt@*&yoPT`?Js?}_FpwJ-IEZxoB^D)&d z@{;QhA!f#5JXEOMYN2QmwAC{EY@AJJcV~BI4MP^M=x6uJ&Xq#ezwEI`j9xE~XJ>pK ebf!9zJj>c|s^4=u%RGFh;Db)((f^2J&wm5njJ}%y literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/output_wnd.ico b/src/TortoiseGitBlame/res/output_wnd.ico new file mode 100644 index 0000000000000000000000000000000000000000..d14f99150a44bf91fcf7cd6515faa024f419fb0c GIT binary patch literal 1078 zcmeH`u?@m76hzN4HTDRuP|8SIfP%ri0VA-AJ656e2IhU6bZMZWfJ^S*_diRPth3}a zDWxdGW0Fp2jAK1J>FA}IS%PQibf8L^z5B?RI5`iY(yEk#n$h~N)~thkHnQ@^Pu~C; z_$n;tmiz>_oEQ3iWHOFJrn^vSKg;=eZg%KEehq>Pt+uLAWAg!RPJS`1e(CGFF6K84 b)oLF5kv_Nkthx+rYESJ3uka2Fr@q4{hGyV^ literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/output_wnd_hc.ico b/src/TortoiseGitBlame/res/output_wnd_hc.ico new file mode 100644 index 0000000000000000000000000000000000000000..fdd27e85abee63b55cc208018e772307a1f6eca9 GIT binary patch literal 2166 zcmeH}u}@S%5QpdROgKXfG$fZ$oD@dtt>_Fr2@N&f#Q%WC;wowr6O!#H)WqT%B9+Zm z7Ba0z!&MX-Vsa3;Kw>d|GcQ-DSXf!;-tF$2-|pMrceDFmPNXGs((5fslrM84kLeei zP@dfvd3aCc30jZ(l-iOutw^7_cb7hcjP(0WN6V!QheP@p@cfEKQTX}8-lKR+)E3k$Nev?R;R z%d)bvBCD&bvbMG++uPf+xw$DD8ym8|zApXeE?ZkJFJ&bD)#SryBBRfr<;B|pMun=> zO0^~|Xa%jHmC$&GVv3?G7mBXviXOLB^om{yDtbky6GJz2LpKCNcVZ`YOXoscSiG=M z;ikfKoAxvXh5|!@p}>$xFccUH363PYq$ z;ZPV92Fo{=H7UfW`4DG%BRf#xU744u#=F8)F|8O>m@3|t!HRdqyW*YOk>2R|SNtpf zu|*aCN^U9)6^2S4V%x|{{(2O8+So>NVE7qq28ZF7TN@nYz~Hdp;D_aQbCbbhuow`A zVIBckj2n$fhG4MprLqotVz5}`BU$1!#4e!0;4nB04uiwsFywK9!C-J090r4dWvI-D z!C`P190r!AqQl@YI1CPe<8LhH+~`bF)=*-F!*lJJqw+{z%g)Y@?C$Q$-rk<<@9)d; z@v$5p9?HqdiHyf%IXgR(^Ye4Lyu6g#+grK#=JM*`fakbRcHjBbt}Ieby3O+1;sC#P3A z{(iRpWERgRc#e-oqoa3G27^KHj5?jp>FMYbrHOwUk2$|Dk%uAw3;wh=`4jmL>r|qB literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/properties.bmp b/src/TortoiseGitBlame/res/properties.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8bf6601aaac490026f4070494675302ddd961b0d GIT binary patch literal 630 zcmZ`$OHRcw3^Y$j>F&K_a14Yh!G^ndQPq{Y$pR_YVc$)U)Ek8HIC&HVevR`P&y17z z@;+aLF(W@=JY(E29^?@j(eT)ua~8oTImd*IrR@8T*@4PWYV{Qcetv|c*sEx=e?n_L z2#F+{PDPEP^?E2E8!XvJ`7T(6Yds|R3T%8egC7FeCrD<_XCVZZ@y(#(r)EnCxPSDg zWg17|f(f`43V8qICosLg&hG*^AiwwD`PfGXBv9f9ziitE<^Dd7V}S&jlQ$dG-fF-1|2Q1fPXQe?A|tOaYLCzYL_GQ`!9P?R{MM{QtGWFO&7& AMgRZ+ literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/properties_hc.bmp b/src/TortoiseGitBlame/res/properties_hc.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6e90ff49bfdf9b7948ef6f0339df49b73147b087 GIT binary patch literal 3128 zcmd6pdu$9r9LInB*YJl3iB!=S>Mx{;cvRb*ctleAPo)*260VwhT!mgs)rCk~x#%fU zN7Q;WRu6Zr>XlNb32Ay44sA+8Y?MUmwO7ii$NKF}P1fw*Dj_lX?c_JVnfcCVemi?} zhP0W(Ayj5yoq$g&J|plM0%NcS7>fNPhmj`~z{=zC`0PfdVFXKkeZ9|aKh1G=yAhj8 zKh*!fR7mdidI^o)=R?DYKAiXd)9G`pQxdnEw$`6q(K*F z%U(21-{@fCB=jW$F--0NA5t{jj#G^u*4aR~b!gqM9-&^0ts!1kNHHHVHPgY{8Q4x1`G#fhpC$j=jH> z)5mr8M?LJ1dh{8pufoY|$}YlBwm_}`jNkzM{|~Z4$;w7^=E2qTlxoyh^GhCXz?y85 z%O>#_ku!;h(X!F>`B66N$(ONDzl?qU70$FkZ3|t9@)LNh2|pbW&beE?+nqPR?ZOGo w0cw7Y{FeP^Ug`DuQA3HSIIe- h60DdurZv6C&i%e|m>qbWXY{GR)8P(2$S0az(--u4*2w?> literal 0 HcmV?d00001 diff --git a/src/TortoiseGitBlame/res/properties_wnd_hc.ico b/src/TortoiseGitBlame/res/properties_wnd_hc.ico new file mode 100644 index 0000000000000000000000000000000000000000..05a6d0e43de08afe978215d9cc398d61ec543d90 GIT binary patch literal 2166 zcmeH{KTOj>6vtn&hC&*JK@yS|#&)Xl`a`OI_V zTqY(aq*N-&)YOzrPfyFj!h+1r&B^TStjx^JNd2+N{JhCi*%dnu@@}^)y9WpIeI2arZ4hCmv za5y+zJ$!zL175#ixsjI5-0oNr}W0`Kt*iNyp(EUdzd^yJpnvSp4gs2Pi#+YPwaFY zDKZ7}A;U@#aA1_N7T=r9-z27>`$#1Cv{EHox5dnmrbVQKF;N9DG>l;!1R zSzTR~jg1Z2+}xC%ogLZU-j=<+J?V5hvcJDChlhu9dU`5@!9Y&FnY`HA;ytdD-S`f~ zhW(Nk_l>T}=x?RT<+>AHYt>t4_}%%Im3(cuwpLr>%W`yorDeTRqvmVtmBnhcvhu9eYIPAB zmG$+d#p=qlgkNe@8tVv44<99ewA5%ItQ~isXZ|Rks?w+9;coZb|JB4i$jv`kk+Dl< MK>s`T1B+{a0#9& // MFC core and standard components +#include // MFC extensions + + +#include // MFC Automation classes + + + +#ifndef _AFX_NO_OLE_SUPPORT +#include // MFC support for Internet Explorer 4 Common Controls +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC support for ribbons and control bars + + + + + + + + + +#ifdef _UNICODE +#if defined _M_IX86 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_IA64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#elif defined _M_X64 +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") +#else +#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") +#endif +#endif + + diff --git a/src/TortoiseGitBlame/targetver.h b/src/TortoiseGitBlame/targetver.h new file mode 100644 index 0000000..27867ba --- /dev/null +++ b/src/TortoiseGitBlame/targetver.h @@ -0,0 +1,26 @@ + +#pragma once + +// The following macros define the minimum required platform. The minimum required platform +// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run +// your application. The macros work by enabling all features available on platform versions up to and +// including the version specified. + +// Modify the following defines if you have to target a platform prior to the ones specified below. +// Refer to MSDN for the latest info on corresponding values for different platforms. +#ifndef WINVER // Specifies that the minimum required platform is Windows Vista. +#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. +#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. +#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. +#endif + +#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. +#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. +#endif + -- 2.11.0