From e524d9cbf307de0985e85cb8503e62263ea98ecc Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Thu, 31 Jan 2013 22:32:59 +0100 Subject: [PATCH] Fixed issue #1619: TortoiseGitMerge: Ribbon UI/toolbars can be toggled Signed-off-by: Sven Strickroth --- src/Changelog.txt | 1 + src/Resources/Toolbar.bmp | Bin 15414 -> 20790 bytes src/Resources/TortoiseMergeENG.rc | 166 +++++++++++++++++++++++++++++++++++--- src/TortoiseMerge/MainFrm.cpp | 47 ++++++++--- src/TortoiseMerge/MainFrm.h | 7 ++ src/TortoiseMerge/SetMainPage.cpp | 7 ++ src/TortoiseMerge/SetMainPage.h | 3 + src/TortoiseMerge/resource.h | 1 + 8 files changed, 212 insertions(+), 20 deletions(-) rewrite src/Resources/Toolbar.bmp (72%) diff --git a/src/Changelog.txt b/src/Changelog.txt index 52e030666..208efeb3c 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -10,6 +10,7 @@ Released: unreleased * Fixed issue #1611: Changing Search criteria with empty search field refreshes log content * Fixed issue #1620: Apply Patch serial can't open file dialog on WinXP * Fixed issue #1533: Could not parse git.exe version number + * Fixed issue #1619: TortoiseGitMerge: Ribbon UI/toolbars can be toggled = Release 1.8.0.0 = Released: 2013-01-27 diff --git a/src/Resources/Toolbar.bmp b/src/Resources/Toolbar.bmp dissimilarity index 72% index c4f217a184be0b6cdbd54fe079b124469eadd08d..58b47cf4a33ef7de4b163f8a06038435b608654c 100644 GIT binary patch delta 3626 zcwUuPe^3;46u&)&lOtj-hO=|X6A}fHlbbX|Z5kw}L7k8z(`0PghGHuFLD3&f%(SBt zhS}Z&EU0#5#gb68jT$ zms<~k)`>&3q;&RTaW|n0L_FniIGFzf$N$I7%*>*%^PPW-A3$MC0??>L0!I`Cf*K@B zI(Eq`V)S8<1f@#5v}BN*NtcFVJ;SM|Rx)}H%u*!|9~2OtBbAd?X@oEGMmTj_Gzr649|DiIFETs>1j`y z*iFQUP`@;U_ITWz2r-u)V?~!{)}^vikSr7&l}UH3GCf)J9|lJFqYs$as8@?zWtZB~WN@x|W;Uf#Qm%M-94;^K624-F zLu2EhLXjCAeb#21Vt?`N-fx6{LYfn{K0*!&fFix+^c8QJSOQ#Ox`OCBnKz-fHrpbeXFPs#4>CuBx;+j?m~lhL;ie%z6sGVsps2OE5_vH6=UA=@!Ar$r(PBqgOtXwS;J z;N^7~?BU_sii&C^@kvm1#z)*SRNuK?2{Ke$<&^7{gEdz`z&kuVY~}z8o#?YlEXC2Y z1l)I*qZLp1(3!rE5o%}P!r14sC=GvuTR8`S2T)7}$>?=Y1uB*+VsNR5<^!rocq=R? zjB}TYmL2v2lD_yU?R-V?iqCyOPbvIZtMS`?KRN`68PSAaFDnr~bL~n6@CPnn4s@Z5 zB=az5pkT|}O<3>s%I>OCQ*~M2)$##gDEp}KgSbJCJn-JTckg!& zpdh_mPH$OCh?P8J3+3{bopgxeWkL$nz=r}mT1_}4hny0I&wowG+kR_r=y87tHvWfL zobz=1dANnT`eV%OQt}R57seZG!E9DA!>$XQ*b~7nC_FW1S;L)kbB&mmq@;3QC&}}| zXHmv7Qgvy2P+$GEwo4bRg(u2o0ouNtROz-oJ=j{`e(mzD%95KW4#BP6Zih1#{YQI8M@NS_ zfPx~IL#J8(@0oLMMJS;qRc_E$P_A5#hW-60zLubbT&hUK6%w!WDOGX13^paJ&EgQC zWvFTCVGj`VUqje}!*MFQT$Yh{V_kw}w(%NlQ?TOmB)k_p=3~c>?=fG&!N_8 z{U1pKNY#%o2AXd*_B7P=HyJ>mo}LEJg2@K3EDXDZ>b}r+yX4D+G zPjxXS^lnFUpV4sVxBAw?6L1Ucz!^*Jrz9lTI0sPZ)vHzs_bhaNrG$}KVasv}6t<~}=at~HzNB_}1PFjO z3vt5+1&ud9zf7Sx0=G(KMp4lv;mTs|7o8|8I6iFu=8^8-pr%0Xb{M;K+4}vPK`cG3 zBi*f_OifKqasUOMqwfYk%}+TT1>S3)2MR*i@x@2@3C=kC)+**rs>1BW7HB8JHq7v~ z0hqKi3DM3$WrK`)Es~Y3{&SQCJ_KG5}7e+MscJNEnS`+Xg72Cwk_bfP*=JohI=g?36+tg2j}!sh8lEcgx;?04l+^u>b%7 delta 383 zcwXDKh;dtmj+3vM4FedM0kH-UJ1{aZ2monD1_=fjIKl_Q8+DkNHpeloW!$XIdY5r> zG?VVc1kTBM?Dr;L;*^`5z{v*0PMa@r7BfwbW8$1#$FpK`7_R~IfddC7d-7#&e#9rq zv{_q_n{i@-+2k1ExXrJG6`3|$i$Mf(Bw{!Jlu%;Y>@CgBI60nIV)8s0iOFTM$(uRl zgqb$`C^!O@@lWniiUnG_SxK3TX>*LKJ0r*ibJW3NMjAk|94#rv$^9~-lTT|)gKb`^ zlK_%*(gj-Htq-wlk74X)Pa~jRvrT|@T{AV9e9SCmbCfyIIjb!l87JSdj@_JTQ^PcQ zy*}GyY5Ub6J#QRhC&qGaZgO;E0{Yxw@@sCe@8eu5CbPLhJo(cVY}F(;Z~$mcOb`N6 cDwC&r22PAMo6O@4lx5qz$onnxGetPanel(3); - if (pPanel) - pPanel->EnableLaunchButton(ID_VIEW_OPTIONS); + m_wndRibbonBar.Create(this); + m_wndRibbonBar.LoadFromResource(IDR_RIBBON); + + // enable the dialog launch button on the view panel + CMFCRibbonCategory * pMainCat = m_wndRibbonBar.GetCategory(1); + if (pMainCat) + { + CMFCRibbonPanel * pPanel = pMainCat->GetPanel(3); + if (pPanel) + pPanel->EnableLaunchButton(ID_VIEW_OPTIONS); + } } + else + { + 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_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) + { + TRACE0("Failed to create toolbar\n"); + return -1; // fail to create + } + m_wndToolBar.SetWindowText(_T("Main")); + } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, _countof(indicators))) @@ -233,6 +255,13 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) m_wndLineDiffBar.m_pMainFrm = this; EnableDocking(CBRS_ALIGN_ANY); + if (!m_bUseRibbons) + { + m_wndMenuBar.EnableDocking(CBRS_ALIGN_TOP); + m_wndToolBar.EnableDocking(CBRS_ALIGN_TOP); + DockPane(&m_wndMenuBar); + DockPane(&m_wndToolBar); + } DockPane(&m_wndLocatorBar); DockPane(&m_wndLineDiffBar); ShowPane(&m_wndLocatorBar, true, false, true); diff --git a/src/TortoiseMerge/MainFrm.h b/src/TortoiseMerge/MainFrm.h index 12cc79938..1a5596f16 100644 --- a/src/TortoiseMerge/MainFrm.h +++ b/src/TortoiseMerge/MainFrm.h @@ -1,5 +1,6 @@ // TortoiseGitMerge - a Diff/Patch program +// Copyright (C) 2013 - TortoiseGit // Copyright (C) 2006-2012 - TortoiseSVN // This program is free software; you can redistribute it and/or @@ -192,6 +193,7 @@ protected: bool m_bInlineDiff; bool m_bLineDiff; bool m_bLocatorBar; + bool m_bUseRibbons; CMFCRibbonBar m_wndRibbonBar; CMFCRibbonApplicationButton m_MainButton; @@ -201,6 +203,7 @@ protected: CRegDWORD m_regOneWay; CRegDWORD m_regCollapsed; CRegDWORD m_regInlineDiff; + CRegDWORD m_regUseRibbons; public: CLeftView * m_pwndLeftView; CRightView * m_pwndRightView; @@ -218,4 +221,8 @@ public: HWND resolveMsgWnd; WPARAM resolveMsgWParam; LPARAM resolveMsgLParam; + + const CMFCToolBar * GetToolbar() const { return &m_wndToolBar; } + CMFCMenuBar m_wndMenuBar; + CMFCToolBar m_wndToolBar; }; \ No newline at end of file diff --git a/src/TortoiseMerge/SetMainPage.cpp b/src/TortoiseMerge/SetMainPage.cpp index 235bd117d..1e7ef170b 100644 --- a/src/TortoiseMerge/SetMainPage.cpp +++ b/src/TortoiseMerge/SetMainPage.cpp @@ -1,5 +1,6 @@ // TortoiseGitMerge - a Diff/Patch program +// Copyright (C) 2013 - TortoiseGit // Copyright (C) 2006-2010, 2012 - TortoiseSVN // This program is free software; you can redistribute it and/or @@ -57,6 +58,7 @@ CSetMainPage::CSetMainPage() m_regUTF8Default = CRegDWORD(_T("Software\\TortoiseGitMerge\\UseUTF8"), FALSE); m_regAutoAdd = CRegDWORD(_T("Software\\TortoiseGitMerge\\AutoAdd"), TRUE); m_regMaxInline = CRegDWORD(_T("Software\\TortoiseGitMerge\\InlineDiffMaxLineLength"), 3000); + m_regUseRibbons = CRegDWORD(L"Software\\TortoiseGitMerge\\UseRibbons", TRUE); m_bBackup = m_regBackup; m_bFirstDiffOnLoad = m_regFirstDiffOnLoad; @@ -69,6 +71,7 @@ CSetMainPage::CSetMainPage() m_bUTF8Default = m_regUTF8Default; m_bAutoAdd = m_regAutoAdd; m_nMaxInline = m_regMaxInline; + m_bUseRibbons = m_regUseRibbons; } CSetMainPage::~CSetMainPage() @@ -99,6 +102,7 @@ void CSetMainPage::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_UTF8DEFAULT, m_bUTF8Default); DDX_Check(pDX, IDC_AUTOADD, m_bAutoAdd); DDX_Text(pDX, IDC_MAXINLINE, m_nMaxInline); + DDX_Check(pDX, IDC_USERIBBONS, m_bUseRibbons); } void CSetMainPage::SaveData() @@ -116,6 +120,7 @@ void CSetMainPage::SaveData() m_regUTF8Default = m_bUTF8Default; m_regAutoAdd = m_bAutoAdd; m_regMaxInline = m_nMaxInline; + m_regUseRibbons = m_bUseRibbons; } BOOL CSetMainPage::OnApply() @@ -149,6 +154,7 @@ BOOL CSetMainPage::OnInitDialog() m_bUTF8Default = m_regUTF8Default; m_bAutoAdd = m_regAutoAdd; m_nMaxInline = m_regMaxInline; + m_bUseRibbons = m_regUseRibbons; DialogEnableWindow(IDC_FIRSTCONFLICTONLOAD, m_bFirstDiffOnLoad); @@ -196,6 +202,7 @@ BEGIN_MESSAGE_MAP(CSetMainPage, CPropertyPage) ON_BN_CLICKED(IDC_UTF8DEFAULT, &CSetMainPage::OnModified) ON_BN_CLICKED(IDC_AUTOADD, &CSetMainPage::OnModified) ON_EN_CHANGE(IDC_MAXINLINE, &CSetMainPage::OnModifiedWithReload) + ON_BN_CLICKED(IDC_USERIBBONS, &CSetMainPage::OnModified) END_MESSAGE_MAP() diff --git a/src/TortoiseMerge/SetMainPage.h b/src/TortoiseMerge/SetMainPage.h index 4be5a83a0..19a8e5d69 100644 --- a/src/TortoiseMerge/SetMainPage.h +++ b/src/TortoiseMerge/SetMainPage.h @@ -1,5 +1,6 @@ // TortoiseGitMerge - a Diff/Patch program +// Copyright (C) 2013 - TortoiseGit // Copyright (C) 2006-2010 - TortoiseSVN // This program is free software; you can redistribute it and/or @@ -79,6 +80,8 @@ protected: CRegDWORD m_regAutoAdd; int m_nMaxInline; CRegDWORD m_regMaxInline; + BOOL m_bUseRibbons; + CRegDWORD m_regUseRibbons; CRegDWORD m_regFontSize; DWORD m_dwFontSize; diff --git a/src/TortoiseMerge/resource.h b/src/TortoiseMerge/resource.h index 2a335c013..2c8233646 100644 --- a/src/TortoiseMerge/resource.h +++ b/src/TortoiseMerge/resource.h @@ -132,6 +132,7 @@ #define IDC_LIMITTODIFFS 1065 #define IDC_AUTOADD 1065 #define IDC_WHOLEWORD 1066 +#define IDC_USERIBBONS 1066 #define IDC_RESOLVE 1067 #define IDC_CASEINSENSITIVE 1067 #define IDC_USEBDIFF 1068 -- 2.11.4.GIT