From a7f90c21a2f6acfd8f580688e62d9bf94d94ba54 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Mon, 3 Dec 2018 01:45:02 +0900 Subject: [PATCH] Add File/Recompare As/Image menu item --- Src/DirView.cpp | 15 +++++++++------ Src/DirView.h | 4 ++-- Src/HexMergeDoc.cpp | 16 +++++++++++++--- Src/HexMergeDoc.h | 4 +++- Src/ImgMergeFrm.cpp | 10 ++++++---- Src/ImgMergeFrm.h | 4 ++-- Src/Merge.rc | 2 ++ Src/MergeDoc.cpp | 33 ++++++++++++++++++--------------- Src/MergeDoc.h | 2 +- Src/resource.h | 9 +++++---- 10 files changed, 61 insertions(+), 38 deletions(-) diff --git a/Src/DirView.cpp b/Src/DirView.cpp index 3dad9e1ff..2aa9c362d 100644 --- a/Src/DirView.cpp +++ b/Src/DirView.cpp @@ -292,8 +292,8 @@ BEGIN_MESSAGE_MAP(CDirView, CListView) ON_UPDATE_COMMAND_UI(ID_MERGE_COMPARE_LEFT2_RIGHT1, OnUpdateMergeCompare2) ON_COMMAND(ID_MERGE_COMPARE_XML, OnMergeCompareXML) ON_UPDATE_COMMAND_UI(ID_MERGE_COMPARE_XML, OnUpdateMergeCompare) - ON_COMMAND(ID_MERGE_COMPARE_HEX, OnMergeCompareHex) - ON_UPDATE_COMMAND_UI(ID_MERGE_COMPARE_HEX, OnUpdateMergeCompare) + ON_COMMAND_RANGE(ID_MERGE_COMPARE_HEX, ID_MERGE_COMPARE_IMAGE, OnMergeCompareAs) + ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_HEX, ID_MERGE_COMPARE_IMAGE, OnUpdateMergeCompare) ON_COMMAND(ID_VIEW_TREEMODE, OnViewTreeMode) ON_UPDATE_COMMAND_UI(ID_VIEW_TREEMODE, OnUpdateViewTreeMode) ON_COMMAND(ID_VIEW_EXPAND_ALLSUBDIRS, OnViewExpandAllSubdirs) @@ -1453,7 +1453,7 @@ void CDirView::OpenSelection(SELECTIONTYPE selectionType /*= SELECTIONTYPE_NORMA } } -void CDirView::OpenSelectionHex() +void CDirView::OpenSelectionAs(UINT id) { CDirDoc * pDoc = GetDocument(); const CDiffContext& ctxt = GetDiffContext(); @@ -1512,7 +1512,10 @@ void CDirView::OpenSelectionHex() fileloc[pane].setPath(paths[pane]); dwFlags[pane] |= FFILEOPEN_NOMRU | (pDoc->GetReadOnly(nPane[pane]) ? FFILEOPEN_READONLY : 0); } - GetMainFrame()->ShowHexMergeDoc(pDoc, paths.GetSize(), fileloc, dwFlags, nullptr); + if (id == ID_MERGE_COMPARE_HEX) + GetMainFrame()->ShowHexMergeDoc(pDoc, paths.GetSize(), fileloc, dwFlags, nullptr); + else + GetMainFrame()->ShowImgMergeDoc(pDoc, paths.GetSize(), fileloc, dwFlags, nullptr); } /// User chose (context menu) delete left @@ -3426,10 +3429,10 @@ void CDirView::OnMergeCompareXML() OpenSelection(SELECTIONTYPE_NORMAL, &packingInfo); } -void CDirView::OnMergeCompareHex() +void CDirView::OnMergeCompareAs(UINT nID) { CWaitCursor waitstatus; - OpenSelectionHex(); + OpenSelectionAs(nID); } void CDirView::OnUpdateMergeCompare(CCmdUI *pCmdUI) diff --git a/Src/DirView.h b/Src/DirView.h index df1eb602e..543de3292 100644 --- a/Src/DirView.h +++ b/Src/DirView.h @@ -360,7 +360,7 @@ protected: template afx_msg void OnMergeCompare2(); afx_msg void OnMergeCompareXML(); - afx_msg void OnMergeCompareHex(); + afx_msg void OnMergeCompareAs(UINT nID); afx_msg void OnUpdateMergeCompare(CCmdUI *pCmdUI); template afx_msg void OnUpdateMergeCompare2(CCmdUI *pCmdUI); @@ -388,7 +388,7 @@ protected: private: void OpenSelection(SELECTIONTYPE selectionType = SELECTIONTYPE_NORMAL, PackingInfo * infoUnpacker = nullptr); - void OpenSelectionHex(); + void OpenSelectionAs(UINT id); bool GetSelectedItems(int * sel1, int * sel2, int * sel3); void OpenParentDirectory(); template diff --git a/Src/HexMergeDoc.cpp b/Src/HexMergeDoc.cpp index 084d78020..8f148f78c 100644 --- a/Src/HexMergeDoc.cpp +++ b/Src/HexMergeDoc.cpp @@ -112,7 +112,8 @@ BEGIN_MESSAGE_MAP(CHexMergeDoc, CDocument) ON_COMMAND(ID_VIEW_ZOOMOUT, OnViewZoomOut) ON_COMMAND(ID_VIEW_ZOOMNORMAL, OnViewZoomNormal) ON_COMMAND(ID_REFRESH, OnRefresh) - ON_COMMAND(ID_MERGE_COMPARE_TEXT, OnFileRecompareAsText) + ON_COMMAND_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnFileRecompareAs) + ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnUpdateFileRecompareAs) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -816,7 +817,7 @@ void CHexMergeDoc::OnRefresh() LangMessageBox(IDS_FILESSAME, MB_ICONINFORMATION | MB_DONT_DISPLAY_AGAIN); } -void CHexMergeDoc::OnFileRecompareAsText() +void CHexMergeDoc::OnFileRecompareAs(UINT nID) { FileLocation fileloc[3]; DWORD dwFlags[3]; @@ -831,5 +832,14 @@ void CHexMergeDoc::OnFileRecompareAsText() strDesc[nBuffer] = m_strDesc[nBuffer]; } CloseNow(); - GetMainFrame()->ShowMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); + if (nID == ID_MERGE_COMPARE_TEXT) + GetMainFrame()->ShowMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); + else + GetMainFrame()->ShowImgMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); } + +void CHexMergeDoc::OnUpdateFileRecompareAs(CCmdUI* pCmdUI) +{ + pCmdUI->Enable(pCmdUI->m_nID != ID_MERGE_COMPARE_XML); +} + diff --git a/Src/HexMergeDoc.h b/Src/HexMergeDoc.h index 5cc18e3f8..4ed7c0793 100644 --- a/Src/HexMergeDoc.h +++ b/Src/HexMergeDoc.h @@ -92,6 +92,7 @@ private: void DoFileSave(int nBuffer); void DoFileSaveAs(int nBuffer); HRESULT LoadOneFile(int index, LPCTSTR filename, bool readOnly, const String& strDesc); + void RecompareAs(UINT id); // Implementation data protected: CHexMergeView * m_pView[3]; /**< Pointer to left/right view */ @@ -125,7 +126,8 @@ protected: afx_msg void OnViewZoomOut(); afx_msg void OnViewZoomNormal(); afx_msg void OnRefresh(); - afx_msg void OnFileRecompareAsText(); + afx_msg void OnFileRecompareAs(UINT nID); + afx_msg void OnUpdateFileRecompareAs(CCmdUI* pCmdUI); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; diff --git a/Src/ImgMergeFrm.cpp b/Src/ImgMergeFrm.cpp index 0ffd0113e..59093a7ff 100644 --- a/Src/ImgMergeFrm.cpp +++ b/Src/ImgMergeFrm.cpp @@ -82,8 +82,8 @@ BEGIN_MESSAGE_MAP(CImgMergeFrame, CMDIChildWnd) ON_COMMAND(ID_FILE_RIGHT_READONLY, OnRightReadOnly) ON_UPDATE_COMMAND_UI(ID_FILE_RIGHT_READONLY, OnUpdateRightReadOnly) ON_COMMAND(ID_RESCAN, OnFileReload) - ON_COMMAND_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_HEX, OnFileRecompare) - ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_HEX, OnUpdateFileRecompare) + ON_COMMAND_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnFileRecompareAs) + ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnUpdateFileRecompareAs) ON_COMMAND(ID_WINDOW_CHANGE_PANE, OnWindowChangePane) ON_MESSAGE_VOID(WM_IDLEUPDATECMDUI, OnIdleUpdateCmdUI) ON_MESSAGE(MSG_STORE_PANESIZES, OnStorePaneSizes) @@ -862,7 +862,7 @@ void CImgMergeFrame::OnUpdateRightReadOnly(CCmdUI* pCmdUI) pCmdUI->SetCheck(m_pImgMergeWindow->GetReadOnly(m_pImgMergeWindow->GetPaneCount() - 1)); } -void CImgMergeFrame::OnFileRecompare(UINT nId) +void CImgMergeFrame::OnFileRecompareAs(UINT nId) { FileLocation fileloc[3]; DWORD dwFlags[3]; @@ -881,9 +881,11 @@ void CImgMergeFrame::OnFileRecompare(UINT nId) GetMainFrame()->ShowMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); else if (nId == ID_MERGE_COMPARE_HEX) GetMainFrame()->ShowHexMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); + else + GetMainFrame()->ShowImgMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc); } -void CImgMergeFrame::OnUpdateFileRecompare(CCmdUI* pCmdUI) +void CImgMergeFrame::OnUpdateFileRecompareAs(CCmdUI* pCmdUI) { pCmdUI->Enable(pCmdUI->m_nID != ID_MERGE_COMPARE_XML); } diff --git a/Src/ImgMergeFrm.h b/Src/ImgMergeFrm.h index ab7b8718a..32d193e68 100644 --- a/Src/ImgMergeFrm.h +++ b/Src/ImgMergeFrm.h @@ -152,8 +152,8 @@ private: afx_msg void OnUpdateRightReadOnly(CCmdUI* pCmdUI); afx_msg void OnFileReload(); afx_msg void OnFileClose(); - afx_msg void OnFileRecompare(UINT nId); - afx_msg void OnUpdateFileRecompare(CCmdUI* pCmdUI); + afx_msg void OnFileRecompareAs(UINT nId); + afx_msg void OnUpdateFileRecompareAs(CCmdUI* pCmdUI); afx_msg void OnWindowChangePane(); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnIdleUpdateCmdUI(); diff --git a/Src/Merge.rc b/Src/Merge.rc index f0e89c913..075df0330 100644 --- a/Src/Merge.rc +++ b/Src/Merge.rc @@ -415,6 +415,7 @@ BEGIN MENUITEM "&Text", ID_MERGE_COMPARE_TEXT MENUITEM "&XML", ID_MERGE_COMPARE_XML MENUITEM "&Binary", ID_MERGE_COMPARE_HEX + MENUITEM "&Image", ID_MERGE_COMPARE_IMAGE END MENUITEM SEPARATOR POPUP "Recent F&iles Or Folders" @@ -631,6 +632,7 @@ BEGIN BEGIN MENUITEM "&XML", ID_MERGE_COMPARE_XML MENUITEM "&Binary", ID_MERGE_COMPARE_HEX + MENUITEM "&Image", ID_MERGE_COMPARE_IMAGE END MENUITEM SEPARATOR POPUP "&Copy" diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index 27f35ccaa..172c6fd1d 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -116,7 +116,7 @@ BEGIN_MESSAGE_MAP(CMergeDoc, CDocument) ON_BN_CLICKED(IDC_HEXVIEW, OnBnClickedHexView) ON_COMMAND(IDOK, OnOK) ON_COMMAND(ID_MERGE_COMPARE_XML, OnFileRecompareAsXML) - ON_COMMAND(ID_MERGE_COMPARE_HEX, OnFileRecompareAsBinary) + ON_COMMAND_RANGE(ID_MERGE_COMPARE_HEX, ID_MERGE_COMPARE_IMAGE, OnFileRecompareAs) //}}AFX_MSG_MAP END_MESSAGE_MAP() @@ -3067,18 +3067,7 @@ void CMergeDoc::OnBnClickedPlugin() void CMergeDoc::OnBnClickedHexView() { - DWORD dwFlags[3] = { 0 }; - FileLocation fileloc[3]; - for (int pane = 0; pane < m_nBuffers; pane++) - { - fileloc[pane].setPath(m_filePaths[pane]); - dwFlags[pane] |= FFILEOPEN_NOMRU | (m_ptBuf[pane]->GetReadOnly() ? FFILEOPEN_READONLY : 0); - } - if (m_pEncodingErrorBar && m_pEncodingErrorBar->IsWindowVisible()) - m_pView[0][0]->GetParentFrame()->ShowControlBar(m_pEncodingErrorBar.get(), FALSE, FALSE); - GetMainFrame()->ShowHexMergeDoc(m_pDirDoc, m_nBuffers, fileloc, dwFlags, m_strDesc); - GetParentFrame()->ShowWindow(SW_RESTORE); - GetParentFrame()->DestroyWindow(); + OnFileRecompareAs(ID_MERGE_COMPARE_HEX); } void CMergeDoc::OnOK() @@ -3093,9 +3082,23 @@ void CMergeDoc::OnFileRecompareAsXML() OnFileReload(); } -void CMergeDoc::OnFileRecompareAsBinary() +void CMergeDoc::OnFileRecompareAs(UINT nID) { - OnBnClickedHexView(); + DWORD dwFlags[3] = { 0 }; + FileLocation fileloc[3]; + for (int pane = 0; pane < m_nBuffers; pane++) + { + fileloc[pane].setPath(m_filePaths[pane]); + dwFlags[pane] |= FFILEOPEN_NOMRU | (m_ptBuf[pane]->GetReadOnly() ? FFILEOPEN_READONLY : 0); + } + if (m_pEncodingErrorBar && m_pEncodingErrorBar->IsWindowVisible()) + m_pView[0][0]->GetParentFrame()->ShowControlBar(m_pEncodingErrorBar.get(), FALSE, FALSE); + if (nID == ID_MERGE_COMPARE_HEX) + GetMainFrame()->ShowHexMergeDoc(m_pDirDoc, m_nBuffers, fileloc, dwFlags, m_strDesc); + else + GetMainFrame()->ShowImgMergeDoc(m_pDirDoc, m_nBuffers, fileloc, dwFlags, m_strDesc); + GetParentFrame()->ShowWindow(SW_RESTORE); + GetParentFrame()->DestroyWindow(); } // Return file extension either from file name diff --git a/Src/MergeDoc.h b/Src/MergeDoc.h index 829fa6ee0..82b97d684 100644 --- a/Src/MergeDoc.h +++ b/Src/MergeDoc.h @@ -376,7 +376,7 @@ protected: afx_msg void OnBnClickedHexView(); afx_msg void OnOK(); afx_msg void OnFileRecompareAsXML(); - afx_msg void OnFileRecompareAsBinary(); + afx_msg void OnFileRecompareAs(UINT nID); //}}AFX_MSG DECLARE_MESSAGE_MAP() private: diff --git a/Src/resource.h b/Src/resource.h index b302bf4ce..47283bcd4 100644 --- a/Src/resource.h +++ b/Src/resource.h @@ -995,10 +995,11 @@ #define ID_MERGE_COMPARE_TEXT 32870 #define ID_MERGE_COMPARE_XML 32871 #define ID_MERGE_COMPARE_HEX 32872 -#define ID_MERGE_COMPARE_LEFT1_LEFT2 32873 -#define ID_MERGE_COMPARE_RIGHT1_RIGHT2 32874 -#define ID_MERGE_COMPARE_LEFT1_RIGHT2 32875 -#define ID_MERGE_COMPARE_LEFT2_RIGHT1 32876 +#define ID_MERGE_COMPARE_IMAGE 32873 +#define ID_MERGE_COMPARE_LEFT1_LEFT2 32874 +#define ID_MERGE_COMPARE_RIGHT1_RIGHT2 32875 +#define ID_MERGE_COMPARE_LEFT1_RIGHT2 32876 +#define ID_MERGE_COMPARE_LEFT2_RIGHT1 32877 #define ID_UNPACK_MANUAL 32880 #define ID_UNPACK_AUTO 32881 #define ID_POPUP_OPEN_WITH_UNPACKER 32882 -- 2.11.0