ON_COMMAND(ID_MERGE_COMPARE_NONHORIZONTALLY, OnMergeCompareNonHorizontally)
ON_COMMAND(ID_MERGE_COMPARE_XML, OnMergeCompareXML)
ON_UPDATE_COMMAND_UI(ID_MERGE_COMPARE_XML, 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_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnMergeCompareAs)
+ ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_TEXT, 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)
fileloc[pane].setPath(paths[pane]);
dwFlags[pane] |= FFILEOPEN_NOMRU | (pDoc->GetReadOnly(nPane[pane]) ? FFILEOPEN_READONLY : 0);
}
- if (id == ID_MERGE_COMPARE_HEX)
- GetMainFrame()->ShowHexMergeDoc(pDoc, paths.GetSize(), fileloc, dwFlags, nullptr);
- else
- GetMainFrame()->ShowImgMergeDoc(pDoc, paths.GetSize(), fileloc, dwFlags, nullptr);
+ GetMainFrame()->ShowMergeDoc(id, pDoc, paths.GetSize(), fileloc, dwFlags, nullptr);
}
/// User chose (context menu) delete left
strDesc[nBuffer] = m_strDesc[nBuffer];
}
CloseNow();
- if (nID == ID_MERGE_COMPARE_TEXT)
- GetMainFrame()->ShowMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc);
- else
- GetMainFrame()->ShowImgMergeDoc(pDirDoc, nBuffers, fileloc, dwFlags, strDesc);
+ GetMainFrame()->ShowMergeDoc(nID, pDirDoc, nBuffers, fileloc, dwFlags, strDesc);
}
void CHexMergeDoc::OnUpdateFileRecompareAs(CCmdUI* pCmdUI)
strDesc[nBuffer] = m_strDesc[nBuffer];
}
CloseNow();
- if (nId == ID_MERGE_COMPARE_TEXT)
- 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);
+ GetMainFrame()->ShowMergeDoc(nId, pDirDoc, nBuffers, fileloc, dwFlags, strDesc);
}
void CImgMergeFrame::OnUpdateFileRecompareAs(CCmdUI* pCmdUI)
SysFreeString(bstr);
}
}
- GetMainFrame()->ShowMergeDoc(m_pDirDoc, m_filePaths.GetSize(), text, desc, _T(".yaml"));
+ GetMainFrame()->ShowTextMergeDoc(m_pDirDoc, m_filePaths.GetSize(), text, desc, _T(".yaml"));
}
/**
else if (filterBin.includeFile(ifileloc[pane].filepath) && CHexMergeView::IsLoadable())
return ShowHexMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
}
- return ShowMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
+ return ShowTextOrTableMergeDoc({}, pDirDoc, nFiles, ifileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
+}
+
+bool CMainFrame::ShowMergeDoc(UINT nID, CDirDoc* pDirDoc,
+ int nFiles, const FileLocation ifileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile /*= _T("")*/,
+ const PackingInfo* infoUnpacker /*= nullptr*/)
+{
+ switch (nID)
+ {
+ case ID_MERGE_COMPARE_TEXT:
+ return GetMainFrame()->ShowTextMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags,
+ strDesc, sReportFile, infoUnpacker);
+ case ID_MERGE_COMPARE_TABLE:
+ return GetMainFrame()->ShowTableMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags,
+ strDesc, sReportFile, infoUnpacker);
+ case ID_MERGE_COMPARE_HEX:
+ return GetMainFrame()->ShowHexMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags,
+ strDesc, sReportFile, infoUnpacker);
+ case ID_MERGE_COMPARE_IMAGE:
+ return GetMainFrame()->ShowImgMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags,
+ strDesc, sReportFile, infoUnpacker);
+ default:
+ return GetMainFrame()->ShowAutoMergeDoc(pDirDoc, nFiles, ifileloc, dwFlags,
+ strDesc, sReportFile, infoUnpacker);
+ }
}
std::array<bool, 3> GetROFromFlags(int nFiles, const DWORD dwFlags[])
* @param [in] infoUnpacker Plugin info.
* @return success/failure
*/
-bool CMainFrame::ShowMergeDoc(CDirDoc * pDirDoc,
+bool CMainFrame::ShowTextOrTableMergeDoc(std::optional<bool> table, CDirDoc * pDirDoc,
int nFiles, const FileLocation ifileloc[],
const DWORD dwFlags[], const String strDesc[], const String& sReportFile /*= _T("")*/,
const PackingInfo * infoUnpacker /*= nullptr*/)
}
}
+ pMergeDoc->SetEnableTableEditing(table);
+
// Note that OpenDocs() takes care of closing compare window when needed.
bool bResult = pMergeDoc->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc);
if (bResult)
return true;
}
+bool CMainFrame::ShowTextMergeDoc(CDirDoc* pDirDoc,
+ int nFiles, const FileLocation ifileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile /*= _T("")*/,
+ const PackingInfo* infoUnpacker /*= nullptr*/)
+{
+ return ShowTextOrTableMergeDoc(false, pDirDoc, nFiles, ifileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
+}
+
+bool CMainFrame::ShowTableMergeDoc(CDirDoc* pDirDoc,
+ int nFiles, const FileLocation ifileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile /*= _T("")*/,
+ const PackingInfo* infoUnpacker /*= nullptr*/)
+{
+ return ShowTextOrTableMergeDoc(true, pDirDoc, nFiles, ifileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
+}
+
bool CMainFrame::ShowHexMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
const DWORD dwFlags[], const String strDesc[], const String& sReportFile /*= _T("")*/,
const PackingInfo * infoUnpacker /*= nullptr*/)
pDirDoc->AddMergeDoc(pImgMergeFrame);
if (!pImgMergeFrame->OpenDocs(nFiles, fileloc, GetROFromFlags(nFiles, dwFlags).data(), strDesc, this))
- return ShowMergeDoc(pDirDoc, nFiles, fileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
+ return ShowTextMergeDoc(pDirDoc, nFiles, fileloc, dwFlags, strDesc, sReportFile, infoUnpacker);
for (int pane = 0; pane < nFiles; pane++)
{
return true;
}
-bool CMainFrame::ShowMergeDoc(CDirDoc* pDirDoc, int nBuffers, const String text[],
+bool CMainFrame::ShowTextMergeDoc(CDirDoc* pDirDoc, int nBuffers, const String text[],
const String strDesc[], const String& strFileExt)
{
FileLocation fileloc[3];
}
fileloc[nBuffer].setPath(workFile);
}
- return ShowMergeDoc(pDirDoc2, nBuffers, fileloc, dwFlags, strDesc);
+ return ShowTextMergeDoc(pDirDoc2, nBuffers, fileloc, dwFlags, strDesc);
}
/**
return true;
}
+bool CMainFrame::DoFileOpen(UINT nID, const PathContext* pFiles /*= nullptr*/,
+ const DWORD dwFlags[] /*= nullptr*/, const String strDesc[] /*= nullptr*/)
+{
+ CDirDoc* pDirDoc = static_cast<CDirDoc*>(theApp.m_pDirTemplate->CreateNewDocument());
+ FileLocation fileloc[3];
+ for (int pane = 0; pane < pFiles->GetSize(); pane++)
+ fileloc[pane].setPath((*pFiles)[pane]);
+ return ShowMergeDoc(nID, pDirDoc, pFiles->GetSize(), fileloc,
+ dwFlags, strDesc);
+}
+
void CMainFrame::UpdateFont(FRAMETYPE frame)
{
if (frame == FRAME_FOLDER)
fileloc[1].encoding.SetCodepage(ucr::getDefaultCodepage());
fileloc[2].encoding.SetCodepage(ucr::getDefaultCodepage());
}
- if (frameType == FRAME_FILE)
+ UINT nID = ID_MERGE_COMPARE_TEXT;
+ switch (frameType)
{
- ShowMergeDoc(pDirDoc, nPanes, fileloc, dwFlags, strDesc);
- if (table)
- PostMessage(WM_COMMAND, ID_MERGE_COMPARE_TABLE);
+ case FRAME_FILE: nID = !table ? ID_MERGE_COMPARE_TEXT : ID_MERGE_COMPARE_TABLE; break;
+ case FRAME_HEXFILE: nID = ID_MERGE_COMPARE_HEX; break;
+ case FRAME_IMGFILE: nID = ID_MERGE_COMPARE_IMAGE; break;
}
- else if (frameType == FRAME_HEXFILE)
- ShowHexMergeDoc(pDirDoc, nPanes, fileloc, dwFlags, strDesc);
- else if (frameType == FRAME_IMGFILE)
- ShowImgMergeDoc(pDirDoc, nPanes, fileloc, dwFlags, strDesc);
+ ShowMergeDoc(nID, pDirDoc, nPanes, fileloc, dwFlags, strDesc);
}
/**
return conflictCompared;
}
-bool CMainFrame::DoSelfCompare(const String& file, const String strDesc[] /*= nullptr*/)
+bool CMainFrame::DoSelfCompare(UINT nID, const String& file, const String strDesc[] /*= nullptr*/)
{
String ext = paths::FindExtension(file);
TempFilePtr wTemp(new TempFile());
(strDesc && !strDesc[1].empty()) ? strDesc[1] : _("") };
DWORD dwFlags[2] = {FFILEOPEN_READONLY | FFILEOPEN_NOMRU, FFILEOPEN_NOMRU};
PathContext tmpPathContext(copiedFile, file);
- return DoFileOpen(&tmpPathContext, dwFlags, strDesc2);
+ return DoFileOpen(nID, &tmpPathContext, dwFlags, strDesc2);
}
/**
#include <vector>
#include <memory>
+#include <optional>
#include "MDITabBar.h"
#include "PathContext.h"
#include "OptionsDef.h"
void FileNew(int nPanes, FRAMETYPE frameType, bool table);
bool DoFileOpen(const PathContext *pFiles = nullptr,
const DWORD dwFlags[] = nullptr, const String strDesc[] = nullptr, const String& sReportFile = _T(""), bool bRecurse = false, CDirDoc *pDirDoc = nullptr, String prediffer = _T(""), const PackingInfo * infoUnpacker = nullptr);
+ bool DoFileOpen(UINT nID, const PathContext *pFiles = nullptr,
+ const DWORD dwFlags[] = nullptr, const String strDesc[] = nullptr);
bool ShowAutoMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
- bool ShowMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
+ bool ShowMergeDoc(UINT nID, CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
- bool ShowMergeDoc(CDirDoc* pDirDoc, int nBuffers, const String text[],
+ bool ShowTextOrTableMergeDoc(std::optional<bool> table, CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
+ bool ShowTextMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
+ bool ShowTextMergeDoc(CDirDoc* pDirDoc, int nBuffers, const String text[],
const String strDesc[], const String& strFileExt);
+ bool ShowTableMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
+ const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
bool ShowHexMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
const DWORD dwFlags[], const String strDesc[], const String& sReportFile = _T(""), const PackingInfo * infoUnpacker = nullptr);
bool ShowImgMergeDoc(CDirDoc * pDirDoc, int nFiles, const FileLocation fileloc[],
void StartFlashing();
bool AskCloseConfirmation();
bool DoOpenConflict(const String& conflictFile, const String strDesc[] = nullptr, bool checked = false);
- bool DoSelfCompare(const String& file, const String strDesc[] = nullptr);
+ bool DoSelfCompare(UINT nID, const String& file, const String strDesc[] = nullptr);
FRAMETYPE GetFrameType(const CFrameWnd * pFrame) const;
void UpdateDocTitle();
void ReloadMenu();
{
strDesc[0] = cmdInfo.m_sLeftDesc;
strDesc[1] = cmdInfo.m_sRightDesc;
- bCompared = pMainFrame->DoSelfCompare(sFilepath, strDesc);
+ bCompared = pMainFrame->DoSelfCompare(IDOK, sFilepath, strDesc);
}
else if (IsProjectFile(sFilepath))
{
BEGIN\r
MENUITEM "&Text", ID_MERGE_COMPARE_TEXT\r
MENUITEM "T&able", ID_MERGE_COMPARE_TABLE\r
- MENUITEM "&XML", ID_MERGE_COMPARE_XML\r
MENUITEM "&Binary", ID_MERGE_COMPARE_HEX\r
MENUITEM "&Image", ID_MERGE_COMPARE_IMAGE\r
+ MENUITEM "&XML", ID_MERGE_COMPARE_XML\r
END\r
MENUITEM SEPARATOR\r
POPUP "Recent F&iles Or Folders"\r
END\r
POPUP "Co&mpare As"\r
BEGIN\r
- MENUITEM "&XML", ID_MERGE_COMPARE_XML\r
+ MENUITEM "&Text", ID_MERGE_COMPARE_TEXT\r
+ MENUITEM "T&able", ID_MERGE_COMPARE_TABLE\r
MENUITEM "&Binary", ID_MERGE_COMPARE_HEX\r
MENUITEM "&Image", ID_MERGE_COMPARE_IMAGE\r
+ MENUITEM "&XML", ID_MERGE_COMPARE_XML\r
END\r
MENUITEM SEPARATOR\r
POPUP "&Copy"\r
END\r
END\r
\r
+IDR_POPUP_COMPARE MENU\r
+BEGIN\r
+ POPUP "_POPUP_"\r
+ BEGIN\r
+ MENUITEM "&Text", ID_MERGE_COMPARE_TEXT\r
+ MENUITEM "T&able", ID_MERGE_COMPARE_TABLE\r
+ MENUITEM "&Binary", ID_MERGE_COMPARE_HEX\r
+ MENUITEM "&Image", ID_MERGE_COMPARE_IMAGE\r
+ END\r
+END\r
+\r
IDR_POPUP_OPEN MENU\r
BEGIN\r
POPUP "_POPUP_"\r
PUSHBUTTON "Se&lect...",IDC_SELECT_UNPACKER,383,209,73,14\r
\r
CONTROL "Sa&ve Project...",ID_SAVE_PROJECT,"Button",BS_SPLITBUTTON | WS_TABSTOP,10,245,100,14\r
- DEFPUSHBUTTON "Co&mpare",IDOK,316,245,70,20\r
+ CONTROL "Co&mpare",IDOK,"Button",BS_SPLITBUTTON | WS_TABSTOP,316,245,70,20\r
PUSHBUTTON "Cancel",IDCANCEL,390,245,70,20\r
LTEXT "Status:",IDC_OPEN_STATUS,6,272,440,12\r
\r
* @param bRO [in] Is left/middle/right file read-only
* @return Success/Failure/Binary (failure) per typedef enum OpenDocsResult_TYPE
* @todo Options are still read from CMainFrame, this will change
- * @sa CMainFrame::ShowMergeDoc()
+ * @sa CMainFrame::ShowTextMergeDoc()
*/
bool CMergeDoc::OpenDocs(int nFiles, const FileLocation ifileloc[],
const bool bRO[], const String strDesc[])
}
if (m_pEncodingErrorBar!=nullptr && 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);
+ GetMainFrame()->ShowMergeDoc(nID, m_pDirDoc, m_nBuffers, fileloc, dwFlags, m_strDesc);
GetParentFrame()->ShowWindow(SW_RESTORE);
GetParentFrame()->DestroyWindow();
}
return true;
return false;
}
+ std::optional<bool> GetEnableTableEditing() const { return m_bEnableTableEditing; }
+ void SetEnableTableEditing(std::optional<bool> bEnableTableEditing) { m_bEnableTableEditing = bEnableTableEditing; }
// implementation methods
private:
ON_COMMAND(ID_LOAD_PROJECT, OnLoadProject)
ON_COMMAND(ID_SAVE_PROJECT, OnSaveProject)
ON_COMMAND(ID_FILE_SAVE, OnSaveProject)
- ON_NOTIFY(BCN_DROPDOWN, ID_SAVE_PROJECT, OnDropDownSaveProject)
+ ON_NOTIFY(BCN_DROPDOWN, ID_SAVE_PROJECT, (OnDropDown<ID_SAVE_PROJECT, IDR_POPUP_PROJECT>))
ON_COMMAND(IDOK, OnOK)
+ ON_NOTIFY(BCN_DROPDOWN, IDOK, (OnDropDown<IDOK, IDR_POPUP_COMPARE>))
ON_COMMAND(IDCANCEL, OnCancel)
ON_COMMAND(ID_HELP, OnHelp)
ON_COMMAND(ID_EDIT_COPY, OnEditAction<WM_COPY>)
ON_COMMAND(ID_EDIT_CUT, OnEditAction<WM_CUT>)
ON_COMMAND(ID_EDIT_UNDO, OnEditAction<WM_UNDO>)
ON_COMMAND(ID_EDIT_SELECT_ALL, (OnEditAction<EM_SETSEL, 0, -1>))
+ ON_COMMAND_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnCompare)
+ ON_UPDATE_COMMAND_UI_RANGE(ID_MERGE_COMPARE_TEXT, ID_MERGE_COMPARE_IMAGE, OnUpdateCompare)
ON_MESSAGE(WM_USER + 1, OnUpdateStatus)
ON_WM_PAINT()
ON_WM_LBUTTONUP()
// fallback for XP
SendDlgItemMessage(IDC_OPTIONS, BM_SETSTYLE, BS_PUSHBUTTON, TRUE);
SendDlgItemMessage(ID_SAVE_PROJECT, BM_SETSTYLE, BS_PUSHBUTTON, TRUE);
+ SendDlgItemMessage(IDOK, BM_SETSTYLE, BS_PUSHBUTTON, TRUE);
}
m_sizeOrig = GetTotalSize();
OnSwapButton(id1, id2);
}
-/**
- * @brief Called when dialog is closed with "OK".
- *
- * Checks that paths are valid and sets filters.
- */
-void COpenView::OnOK()
+void COpenView::OnCompare(UINT nID)
{
int pathsType; // enum from paths::PATH_EXISTENCE in paths.h
const String filterPrefix = _("[F] ");
TrimPaths();
int nFiles = 0;
- for (auto& strPath: m_strPath)
+ for (auto& strPath : m_strPath)
{
if (nFiles >= 1 && strPath.empty())
break;
if (strutils::compare_nocase(ext, ProjectFile::PROJECTFILE_EXT) == 0)
LoadProjectFile(m_strPath[0]);
else
- GetMainFrame()->DoSelfCompare(m_strPath[0], nullptr);
+ GetMainFrame()->DoSelfCompare(nID, m_strPath[0], nullptr);
return;
}
GetParentFrame()->PostMessage(WM_CLOSE);
PathContext tmpPathContext(pDoc->m_files);
- PackingInfo tmpPackingInfo(pDoc->m_infoHandler);
- GetMainFrame()->DoFileOpen(
- &tmpPathContext, std::array<DWORD, 3>(pDoc->m_dwFlags).data(),
- nullptr, _T(""), pDoc->m_bRecurse, nullptr, _T(""), &tmpPackingInfo);
+ if (nID == IDOK)
+ {
+ PackingInfo tmpPackingInfo(pDoc->m_infoHandler);
+ GetMainFrame()->DoFileOpen(
+ &tmpPathContext, std::array<DWORD, 3>(pDoc->m_dwFlags).data(),
+ nullptr, _T(""), pDoc->m_bRecurse, nullptr, _T(""), &tmpPackingInfo);
+ }
+ else
+ {
+ GetMainFrame()->DoFileOpen(nID, &m_files, pDoc->m_dwFlags.data());
+ }
+}
+
+void COpenView::OnUpdateCompare(CCmdUI *pCmdUI)
+{
+ pCmdUI->Enable(GetDlgItem(IDC_UNPACKER_EDIT)->IsWindowEnabled());
+}
+
+/**
+ * @brief Called when dialog is closed with "OK".
+ *
+ * Checks that paths are valid and sets filters.
+ */
+void COpenView::OnOK()
+{
+ OnCompare(IDOK);
}
/**
LangMessageBox(IDS_PROJFILE_SAVE_SUCCESS, MB_ICONINFORMATION);
}
-void COpenView::OnDropDownSaveProject(NMHDR *pNMHDR, LRESULT *pResult)
+void COpenView::DropDown(NMHDR* pNMHDR, LRESULT* pResult, UINT nID, UINT nPopupID)
{
CRect rcButton, rcView;
- GetDlgItem(ID_SAVE_PROJECT)->GetWindowRect(&rcButton);
+ GetDlgItem(nID)->GetWindowRect(&rcButton);
BCMenu menu;
- VERIFY(menu.LoadMenu(IDR_POPUP_PROJECT));
+ VERIFY(menu.LoadMenu(nPopupID));
theApp.TranslateMenu(menu.m_hMenu);
CMenu* pPopup = menu.GetSubMenu(0);
if (pPopup != nullptr)
*pResult = 0;
}
+template<UINT id, UINT popupid>
+void COpenView::OnDropDown(NMHDR *pNMHDR, LRESULT *pResult)
+{
+ DropDown(pNMHDR, pResult, id, popupid);
+}
+
/**
* @brief Allow user to select a file to open/save.
*/
void LoadComboboxStates();
void SaveComboboxStates();
String AskProjectFileName(bool bOpen);
+ void DropDown(NMHDR *pNMHDR, LRESULT *pResult, UINT nID, UINT nPopupID);
// Generated message map functions
protected:
afx_msg void OnPathButton(UINT nID);
afx_msg void OnOK();
afx_msg void OnCancel();
+ afx_msg void OnCompare(UINT nID);
+ afx_msg void OnUpdateCompare(CCmdUI *pCmdUI);
afx_msg void OnLoadProject();
afx_msg void OnSaveProject();
- afx_msg void OnDropDownSaveProject(NMHDR *pNMHDR, LRESULT *pResult);
+ template<UINT id, UINT popupid>
+ afx_msg void OnDropDown(NMHDR *pNMHDR, LRESULT *pResult);
+ afx_msg void OnDropDownOptions(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnSelchangePathCombo(UINT nID);
afx_msg void OnSetfocusPathCombo(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnDragBeginPathCombo(UINT id, NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnSelectUnpacker();
afx_msg void OnSelectFilter();
afx_msg void OnOptions();
- afx_msg void OnDropDownOptions(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized);
afx_msg void OnEditAction(int msg, WPARAM wParam, LPARAM LPARAM);
template <int MSG, int WPARAM = 0, int LPARAM = 0>
#define IDR_POPUP_MERGEEDITFRAME_STATUSBAR_EOL 116\r
#define IDR_POPUP_NEW 117\r
#define IDR_POPUP_OPEN 118\r
+#define IDR_POPUP_COMPARE 119\r
#define IDD_ABOUTBOX 200\r
#define IDD_OPEN 202\r
#define IDD_PROPPAGE_GENERAL 205\r
#define ID_MERGE_COMPARE 32869\r
#define ID_MERGE_COMPARE_TEXT 32870\r
#define ID_MERGE_COMPARE_TABLE 32871\r
-#define ID_MERGE_COMPARE_XML 32872\r
-#define ID_MERGE_COMPARE_HEX 32873\r
-#define ID_MERGE_COMPARE_IMAGE 32874\r
+#define ID_MERGE_COMPARE_HEX 32872\r
+#define ID_MERGE_COMPARE_IMAGE 32873\r
+#define ID_MERGE_COMPARE_XML 32874\r
#define ID_MERGE_COMPARE_LEFT1_LEFT2 32875\r
#define ID_MERGE_COMPARE_RIGHT1_RIGHT2 32876\r
#define ID_MERGE_COMPARE_LEFT1_RIGHT2 32877\r