From ab3b60ff5ad948c18e4427fe00e473e62a0b78b3 Mon Sep 17 00:00:00 2001 From: Sup Yut Sum Date: Tue, 2 Apr 2013 20:48:16 +0800 Subject: [PATCH] Add the "Enable Edit mode" button to the ribbon and the File menu * Set the button as enabled if it's possible to change the readonly state * Set the button as checked if the current view is editable * remove state indication from the view header Based on TortoiseSVN revision 24076 Signed-off-by: Sup Yut Sum --- src/Resources/TortoiseMergeENG.rc | 3 ++- src/Resources/ribbon.mfcribbon-ms | 2 +- src/TortoiseMerge/BaseView.cpp | 32 -------------------------------- src/TortoiseMerge/MainFrm.cpp | 26 ++++++++++++++++++++++++++ src/TortoiseMerge/MainFrm.h | 2 ++ src/TortoiseMerge/resource.h | 5 +++-- 6 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/Resources/TortoiseMergeENG.rc b/src/Resources/TortoiseMergeENG.rc index 91c11e870..0cbddc4da 100644 --- a/src/Resources/TortoiseMergeENG.rc +++ b/src/Resources/TortoiseMergeENG.rc @@ -411,6 +411,7 @@ BEGIN MENUITEM "Save &as...", ID_FILE_SAVE_AS MENUITEM SEPARATOR MENUITEM "Reload", ID_FILE_RELOAD + MENUITEM "&Enable edit", ID_EDIT_ENABLE MENUITEM SEPARATOR MENUITEM "E&xit", ID_APP_EXIT END @@ -1030,7 +1031,7 @@ END STRINGTABLE BEGIN - ID_EDIT_ENABLE "Allow Editing for this view" + ID_EDIT_ENABLE "Allow Editing for this view\nAllow Edit" END #endif // English (United States) resources diff --git a/src/Resources/ribbon.mfcribbon-ms b/src/Resources/ribbon.mfcribbon-ms index 62c06dff2..111c5d563 100644 --- a/src/Resources/ribbon.mfcribbon-ms +++ b/src/Resources/ribbon.mfcribbon-ms @@ -1 +1 @@ -
1
RibbonBarTRUETRUETRUETRUEFALSEIDB_RIBBONSMALL158Button_MainID_LOGOBUTTON32897TFALSEFALSE-1-1TRUEIDB_LOGO159Category_MainTortoiseMergeIDB_RIBBONSMALL158IDB_RIBBONLARGE157ButtonID_VIEW_SHOWFILELIST32817Hide/Show the patch file listHFALSEFALSE3030TRUEFALSEButtonID_VIEW_OPTIONS32782SettingsSFALSEFALSE4242TRUEFALSEButton_Main_PanelID_APP_EXIT57665ExitXFALSEFALSE40-1TRUEFALSE300GroupButtonIDC_STYLEBUTTON10000StyleFALSEFALSE-1-1FALSEFALSEButtonID_VIEW_APPLOOK_WIN_200010003Windows 2000FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_XP10004Office XPFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_WIN_XP10005Windows XPFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_200310006Office 2003FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_VS_200510007Visual Studio 2005FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_VS_200810002Visual Studio 2008FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_WIN710001Windows 7FALSEFALSE-1-1TRUEFALSEButtonID_OFFICE200710008Office 2007FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_BLUE10009Blue StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_BLACK10010Black StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_SILVER10011Silver StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_AQUA10012Aqua StyleFALSEFALSE-1-1TRUEFALSEButtonID_HELP57670HelpFALSEFALSE41-1TRUEFALSEButtonID_APP_ABOUT57664AboutFALSEFALSE39-1TRUEFALSECategoryMainMIDB_RIBBONSMALL158IDB_RIBBONLARGE157PanelFilesF-1FALSEFALSEButtonID_FILE_OPEN57601OpenOFALSEFALSE0-1TRUEFALSEButtonID_FILE_SAVE57603SaveSFALSEFALSE1-1TRUEFALSEButtonID_FILE_SAVE_AS57604Save asAFALSEFALSE43-1TRUEFALSEPanelEditE-1FALSEFALSEButtonID_FILE_RELOAD32794ReloadRFALSEFALSE22FALSEFALSEButtonID_EDIT_UNDO57643UndoZFALSEFALSE33TRUEFALSESeparatorFALSEButtonID_EDIT_COPY57634CopyCFALSEFALSE2727TRUEFALSEButtonID_EDIT_PASTE57637PastePFALSEFALSE2828TRUEFALSEButtonID_USEBLOCKS32914Use BlocksBFALSEFALSE1818FALSEFALSEButtonID_EDIT_USELEFTBLOCK32855Use left blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USELEFTFILE32856Use left fileFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEBLOCKFROMLEFTBEFORERIGHT32857Use block from left before rightFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEBLOCKFROMRIGHTBEFORELEFT32859Use block from right before leftFALSEFALSE-1-1TRUEFALSESeparatorTRUEButtonID_EDIT_USETHEIRBLOCK32819Use 'theirs' text blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEMYBLOCK32820Use 'mine' text blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USETHEIRTHENMYBLOCK32821Use 'theirs' text block then 'mine'FALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEMINETHENTHEIRBLOCK32822Use 'mine' text block then 'theirs'FALSEFALSE-1-1TRUEFALSESeparatorFALSEButtonID_EDIT_FIND57636FindFFALSEFALSE2424TRUEFALSEButtonID_EDIT_GOTOLINE32893Goto LineGFALSEFALSE2525TRUEFALSEButtonID_EDIT_MARKASRESOLVED32808Mark as resolvedFALSEFALSE2020TRUEFALSESeparatorFALSEButtonID_EDIT_CREATEUNIFIEDDIFFFILE32828Create patch filePFALSEFALSE2626TRUEFALSEPanelNavigateN-1TRUEFALSEButtonID_NAVIGATE_PREVIOUSDIFFERENCE32780Previous differencePDFALSEFALSE66FALSEFALSEButtonID_NAVIGATE_NEXTDIFFERENCE32779Next differenceNDFALSEFALSE44FALSEFALSEButtonID_NAVIGATE_PREVIOUSCONFLICT32802Previous conflictPCFALSEFALSE1414FALSEFALSEButtonID_NAVIGATE_NEXTCONFLICT32804Next conflictNCFALSEFALSE1212FALSEFALSEButtonID_NAVIGATE_PREVINLINEDIFF32876Previous inline differencePIFALSEFALSE1010TRUEFALSEButtonID_NAVIGATE_NEXTINLINEDIFF32875Next inline differenceNIFALSEFALSE88TRUEFALSEPanelViewV-1FALSEFALSEButtonID_VIEW_WHITESPACES32774Show WhitespacesWFALSEFALSE2323TRUEFALSEButtonID_VIEW_WRAPLONGLINES32881Wrap long linesLFALSEFALSE3838TRUEFALSEButtonID_VIEW_INLINEDIFF32889Inline diffFALSEFALSE3131TRUEFALSEButtonID_VIEW_INLINEDIFFWORD32825Inline diff word-wiseFALSEFALSE3232TRUEFALSESeparatorFALSEButtonID_VIEW_COMPAREWHITESPACES32871Compare whitespacesFALSEFALSE35-1TRUEFALSEButtonID_VIEW_IGNOREWHITESPACECHANGES32872Ignore whitespace changesFALSEFALSE36-1TRUEFALSEButtonID_VIEW_IGNOREALLWHITESPACECHANGES32873Ignore all whitespace changesFALSEFALSE37-1TRUEFALSESeparatorFALSEButtonID_VIEW_ONEWAYDIFF32775Switch between single and double pane viewFALSEFALSE3333TRUEFALSEButtonID_VIEW_SWITCHLEFT32811Switch left and right viewFALSEFALSE3434TRUEFALSEButtonID_VIEW_COLLAPSED32870CollapseFALSEFALSE2929TRUEFALSE
\ No newline at end of file +
1
RibbonBarTRUETRUETRUETRUEFALSEIDB_RIBBONSMALL158Button_MainID_LOGOBUTTON32897TFALSEFALSE-1-1TRUEIDB_LOGO159Category_MainTortoiseMergeIDB_RIBBONSMALL158IDB_RIBBONLARGE157ButtonID_VIEW_SHOWFILELIST32817Hide/Show the patch file listHFALSEFALSE3030TRUEFALSEButtonID_VIEW_OPTIONS32782SettingsSFALSEFALSE4242TRUEFALSEButton_Main_PanelID_APP_EXIT57665ExitXFALSEFALSE40-1TRUEFALSE300GroupButtonIDC_STYLEBUTTON10000StyleFALSEFALSE-1-1FALSEFALSEButtonID_VIEW_APPLOOK_WIN_200010003Windows 2000FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_XP10004Office XPFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_WIN_XP10005Windows XPFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_200310006Office 2003FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_VS_200510007Visual Studio 2005FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_VS_200810002Visual Studio 2008FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_WIN710001Windows 7FALSEFALSE-1-1TRUEFALSEButtonID_OFFICE200710008Office 2007FALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_BLUE10009Blue StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_BLACK10010Black StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_SILVER10011Silver StyleFALSEFALSE-1-1TRUEFALSEButtonID_VIEW_APPLOOK_OFF_2007_AQUA10012Aqua StyleFALSEFALSE-1-1TRUEFALSEButtonID_HELP57670HelpFALSEFALSE41-1TRUEFALSEButtonID_APP_ABOUT57664AboutFALSEFALSE39-1TRUEFALSECategoryMainMIDB_RIBBONSMALL158IDB_RIBBONLARGE157PanelFilesF-1FALSEFALSEButtonID_FILE_OPEN57601OpenOFALSEFALSE0-1TRUEFALSEButtonID_FILE_SAVE57603SaveSFALSEFALSE1-1TRUEFALSEButtonID_FILE_SAVE_AS57604Save asAFALSEFALSE43-1TRUEFALSEPanelEditE-1FALSEFALSEButtonID_FILE_RELOAD32794ReloadRFALSEFALSE22FALSEFALSEButtonID_EDIT_UNDO57643UndoZFALSEFALSE33TRUEFALSEButtonID_EDIT_ENABLE32976Enable EditEFALSEFALSE4444FALSEFALSESeparatorFALSEButtonID_EDIT_COPY57634CopyCFALSEFALSE2727TRUEFALSEButtonID_EDIT_PASTE57637PastePFALSEFALSE2828TRUEFALSEButtonID_USEBLOCKS32914Use BlocksBFALSEFALSE1818FALSEFALSEButtonID_EDIT_USELEFTBLOCK32855Use left blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USELEFTFILE32856Use left fileFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEBLOCKFROMLEFTBEFORERIGHT32857Use block from left before rightFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEBLOCKFROMRIGHTBEFORELEFT32859Use block from right before leftFALSEFALSE-1-1TRUEFALSESeparatorTRUEButtonID_EDIT_USETHEIRBLOCK32819Use 'theirs' text blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEMYBLOCK32820Use 'mine' text blockFALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USETHEIRTHENMYBLOCK32821Use 'theirs' text block then 'mine'FALSEFALSE-1-1TRUEFALSEButtonID_EDIT_USEMINETHENTHEIRBLOCK32822Use 'mine' text block then 'theirs'FALSEFALSE-1-1TRUEFALSESeparatorFALSEButtonID_EDIT_FIND57636FindFFALSEFALSE2424TRUEFALSEButtonID_EDIT_GOTOLINE32893Goto LineGFALSEFALSE2525TRUEFALSEButtonID_EDIT_MARKASRESOLVED32808Mark as resolvedFALSEFALSE2020TRUEFALSESeparatorFALSEButtonID_EDIT_CREATEUNIFIEDDIFFFILE32828Create patch filePFALSEFALSE2626TRUEFALSEPanelNavigateN-1TRUEFALSEButtonID_NAVIGATE_PREVIOUSDIFFERENCE32780Previous differencePDFALSEFALSE66FALSEFALSEButtonID_NAVIGATE_NEXTDIFFERENCE32779Next differenceNDFALSEFALSE44FALSEFALSEButtonID_NAVIGATE_PREVIOUSCONFLICT32802Previous conflictPCFALSEFALSE1414FALSEFALSEButtonID_NAVIGATE_NEXTCONFLICT32804Next conflictNCFALSEFALSE1212FALSEFALSEButtonID_NAVIGATE_PREVINLINEDIFF32876Previous inline differencePIFALSEFALSE1010TRUEFALSEButtonID_NAVIGATE_NEXTINLINEDIFF32875Next inline differenceNIFALSEFALSE88TRUEFALSEPanelViewV-1FALSEFALSEButtonID_VIEW_WHITESPACES32774Show WhitespacesWFALSEFALSE2323TRUEFALSEButtonID_VIEW_WRAPLONGLINES32881Wrap long linesLFALSEFALSE3838TRUEFALSEButtonID_VIEW_INLINEDIFF32889Inline diffFALSEFALSE3131TRUEFALSEButtonID_VIEW_INLINEDIFFWORD32825Inline diff word-wiseFALSEFALSE3232TRUEFALSESeparatorFALSEButtonID_VIEW_COMPAREWHITESPACES32871Compare whitespacesFALSEFALSE35-1TRUEFALSEButtonID_VIEW_IGNOREWHITESPACECHANGES32872Ignore whitespace changesFALSEFALSE36-1TRUEFALSEButtonID_VIEW_IGNOREALLWHITESPACECHANGES32873Ignore all whitespace changesFALSEFALSE37-1TRUEFALSESeparatorFALSEButtonID_VIEW_ONEWAYDIFF32775Switch between single and double pane viewFALSEFALSE3333TRUEFALSEButtonID_VIEW_SWITCHLEFT32811Switch left and right viewFALSEFALSE3434TRUEFALSEButtonID_VIEW_COLLAPSED32870CollapseFALSEFALSE2929TRUEFALSE
\ No newline at end of file diff --git a/src/TortoiseMerge/BaseView.cpp b/src/TortoiseMerge/BaseView.cpp index 7618315a3..4c4917733 100644 --- a/src/TortoiseMerge/BaseView.cpp +++ b/src/TortoiseMerge/BaseView.cpp @@ -1302,38 +1302,6 @@ void CBaseView::DrawHeader(CDC *pdc, const CRect &rect) pdc->SelectObject(GetFont(FALSE, TRUE)); - // until ribbon button is ready show state in View title bar - if ((IsLeftViewGood() && m_pwndLeft->m_bReadonlyIsChangable) - || (IsRightViewGood() && m_pwndRight->m_bReadonlyIsChangable) - || (IsBottomViewGood() && m_pwndBottom->m_bReadonlyIsChangable)) - { - // any view has Readonly state changable draw current status - CString sState(IsReadonly() ? "ro" : "rw"); - if (!m_bReadonlyIsChangable) - { - // state is locked - sState = CString("[") + sState + CString("]"); - } - CFont * p_oldFont = pdc->GetCurrentFont(); - LOGFONT lf; - p_oldFont->GetLogFont(&lf); - CFont oFont; - if (lf.lfHeight<-14) - { - lf.lfHeight /= 2; - } - else - if (lf.lfHeight<-7) - { - lf.lfHeight = -7; - } - - oFont.CreateFontIndirect(&lf); - pdc->SelectObject(&oFont); - pdc->ExtTextOut(3, 1, ETO_CLIPPED, textrect, sState, NULL); - pdc->SelectObject(p_oldFont); - } - CString sViewTitle; if (IsModified()) { diff --git a/src/TortoiseMerge/MainFrm.cpp b/src/TortoiseMerge/MainFrm.cpp index 7d2be2d7c..c51d0bdf8 100644 --- a/src/TortoiseMerge/MainFrm.cpp +++ b/src/TortoiseMerge/MainFrm.cpp @@ -95,6 +95,8 @@ BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) ON_COMMAND(ID_EDIT_USEMINETHENTHEIRBLOCK, &CMainFrame::OnEditUseMineThenTheirs) ON_COMMAND(ID_EDIT_UNDO, &CMainFrame::OnEditUndo) ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, &CMainFrame::OnUpdateEditUndo) + ON_COMMAND(ID_EDIT_ENABLE, &CMainFrame::OnEditEnable) + ON_UPDATE_COMMAND_UI(ID_EDIT_ENABLE, &CMainFrame::OnUpdateEditEnable) ON_UPDATE_COMMAND_UI(ID_EDIT_USEMINETHENTHEIRBLOCK, &CMainFrame::OnUpdateEditUseminethentheirblock) ON_UPDATE_COMMAND_UI(ID_EDIT_USEMYBLOCK, &CMainFrame::OnUpdateEditUsemyblock) ON_UPDATE_COMMAND_UI(ID_EDIT_USETHEIRBLOCK, &CMainFrame::OnUpdateEditUsetheirblock) @@ -1959,6 +1961,30 @@ void CMainFrame::OnUpdateEditUndo(CCmdUI *pCmdUI) pCmdUI->Enable(CUndo::GetInstance().CanUndo()); } +void CMainFrame::OnEditEnable() +{ + CBaseView * pView = GetActiveBaseView(); + if (pView && pView->IsReadonlyChangable()) + { + bool isReadOnly = pView->IsReadonly(); + pView->SetReadonly(!isReadOnly); + } +} + +void CMainFrame::OnUpdateEditEnable(CCmdUI *pCmdUI) +{ + CBaseView * pView = GetActiveBaseView(); + if (pView) + { + pCmdUI->Enable(pView->IsReadonlyChangable() || !pView->IsReadonly()); + pCmdUI->SetCheck(!pView->IsReadonly()); + } + else + { + pCmdUI->Enable(FALSE); + } +} + int CMainFrame::CheckForReload() { static bool bLock = false; //we don't want to check when activated after MessageBox we just created ... this is simple, but we don't need multithread lock diff --git a/src/TortoiseMerge/MainFrm.h b/src/TortoiseMerge/MainFrm.h index 437ca92bd..92e14f08b 100644 --- a/src/TortoiseMerge/MainFrm.h +++ b/src/TortoiseMerge/MainFrm.h @@ -105,6 +105,8 @@ protected: afx_msg void OnViewShowfilelist(); afx_msg void OnEditUndo(); afx_msg void OnUpdateEditUndo(CCmdUI *pCmdUI); + afx_msg void OnEditEnable(); + afx_msg void OnUpdateEditEnable(CCmdUI *pCmdUI); afx_msg void OnViewInlinediffword(); afx_msg void OnUpdateViewInlinediffword(CCmdUI *pCmdUI); afx_msg void OnViewInlinediff(); diff --git a/src/TortoiseMerge/resource.h b/src/TortoiseMerge/resource.h index ad0de0e07..6b6d49ad8 100644 --- a/src/TortoiseMerge/resource.h +++ b/src/TortoiseMerge/resource.h @@ -332,13 +332,14 @@ #define ID_BUTTON14 32968 #define ID_BUTTON17 32971 #define ID_EDIT_ENABLE 32976 +#define ID_FILE_ENABLEEDIT 32978 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 161 -#define _APS_NEXT_COMMAND_VALUE 32978 +#define _APS_NEXT_COMMAND_VALUE 32979 #define _APS_NEXT_CONTROL_VALUE 1080 #define _APS_NEXT_SYMED_VALUE 101 #endif -- 2.11.4.GIT