From: Takashi Sawanaka Date: Sun, 24 Apr 2016 12:22:01 +0000 (+0900) Subject: Add "Include Subfolders" checkbox in Options dialog X-Git-Tag: 2.16.5~1285 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3ceb9532cb1a5425c8be827853c9e47d8597ac60;p=winmerge-jp%2Fwinmerge-jp.git Add "Include Subfolders" checkbox in Options dialog --- diff --git a/Src/DirDoc.cpp b/Src/DirDoc.cpp index 30577a4f7..bdd7b0727 100644 --- a/Src/DirDoc.cpp +++ b/Src/DirDoc.cpp @@ -466,7 +466,7 @@ void CDirDoc::CompareReady() void CDirDoc::RefreshOptions() { if (m_pCtxt) - m_pCtxt->m_bRecursive = (theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1); + m_pCtxt->m_bRecursive = GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS); if (m_pDirView) m_pDirView->RefreshOptions(); } diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index 31ea6906d..3304d5456 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -872,6 +872,8 @@ void CMainFrame::OnOptions() // Update all dirdoc settings for (auto pDirDoc : GetAllDirDocs()) pDirDoc->RefreshOptions(); + for (auto pOpenDoc : GetAllOpenDocs()) + pOpenDoc->RefreshOptions(); for (auto pMergeDoc : GetAllHexMergeDocs()) pMergeDoc->RefreshOptions(); } @@ -1411,7 +1413,7 @@ void CMainFrame::OnDropFiles(const std::vector& dropped_files) const size_t fileCount = files.GetSize(); // If Ctrl pressed, do recursive compare - bool recurse = !!::GetAsyncKeyState(VK_CONTROL) || !!theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0); + bool recurse = !!::GetAsyncKeyState(VK_CONTROL) || GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS); // If user has pressed with one file selected, // assume it is an archive and set filenames to same @@ -2551,7 +2553,7 @@ void CMainFrame::OnUpdateDiffIgnoreEOL(CCmdUI* pCmdUI) void CMainFrame::OnIncludeSubfolders() { - theApp.WriteProfileInt(_T("Settings"), _T("Recurse"), !(theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1)); + GetOptionsMgr()->SaveOption(OPT_CMP_INCLUDE_SUBDIRS, !GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS)); // Update all dirdoc settings for (auto pDirDoc : GetAllDirDocs()) pDirDoc->RefreshOptions(); @@ -2561,7 +2563,7 @@ void CMainFrame::OnIncludeSubfolders() void CMainFrame::OnUpdateIncludeSubfolders(CCmdUI* pCmdUI) { - pCmdUI->SetCheck(theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1); + pCmdUI->SetCheck(GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS)); pCmdUI->Enable(); } diff --git a/Src/Merge.cpp b/Src/Merge.cpp index 9fad6e587..f669e9f05 100644 --- a/Src/Merge.cpp +++ b/Src/Merge.cpp @@ -1242,7 +1242,7 @@ bool CMergeApp::LoadAndOpenProjectFile(const String& sProject) dwFlags[2] |= FFILEOPEN_READONLY; } - WriteProfileInt(_T("Settings"), _T("Recurse"), bRecursive); + GetOptionsMgr()->SaveOption(OPT_CMP_INCLUDE_SUBDIRS, bRecursive); BOOL rtn = GetMainFrame()->DoFileOpen(&files, dwFlags, bRecursive); diff --git a/Src/Merge.rc b/Src/Merge.rc index 28485a6ce..b7e40271b 100644 --- a/Src/Merge.rc +++ b/Src/Merge.rc @@ -1664,12 +1664,14 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,36,222,10 CONTROL "&Include unique subfolders contents",IDC_COMPARE_WALKSUBDIRS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,48,202,10 - CONTROL "&Automatically expand all subfolders",IDC_EXPAND_SUBDIRS, + CONTROL "&Include Subfolders",IDC_RECURS_CHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,60,202,10 - CONTROL "Ignore &Reparse Points",IDC_IGNORE_REPARSEPOINTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,72,202,10 - LTEXT "&Quick compare limit (MB):",IDC_STATIC,7,84,200,10 - EDITTEXT IDC_COMPARE_QUICKC_LIMIT,7,96,50,14,ES_AUTOHSCROLL,WS_EX_RTLREADING - PUSHBUTTON "Defaults",IDC_COMPAREFOLDER_DEFAULTS,7,198,70,14 + CONTROL "&Automatically expand all subfolders",IDC_EXPAND_SUBDIRS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,72,202,10 + CONTROL "Ignore &Reparse Points",IDC_IGNORE_REPARSEPOINTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,84,202,10 + LTEXT "&Quick compare limit (MB):",IDC_STATIC,7,96,200,10 + EDITTEXT IDC_COMPARE_QUICKC_LIMIT,7,108,50,14,ES_AUTOHSCROLL,WS_EX_RTLREADING + PUSHBUTTON "Defaults",IDC_COMPAREFOLDER_DEFAULTS,7,210,70,14 END IDD_PROPPAGE_COMPARE_BINARY DIALOGEX 0, 0, 235, 205 diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index 0a404a86d..15224e091 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -2980,7 +2980,7 @@ bool CMergeDoc::OpenWithUnpackerDialog() { DWORD dwFlags[3] = {FFILEOPEN_NOMRU, FFILEOPEN_NOMRU, FFILEOPEN_NOMRU}; GetMainFrame()->DoFileOpen(&m_filePaths, dwFlags, - (theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1), NULL, _T(""), &infoUnpacker); + GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS), NULL, _T(""), &infoUnpacker); CloseNow(); } else diff --git a/Src/OpenDoc.cpp b/Src/OpenDoc.cpp index 808578e90..c325f4580 100644 --- a/Src/OpenDoc.cpp +++ b/Src/OpenDoc.cpp @@ -3,6 +3,8 @@ #include "stdafx.h" #include "OpenDoc.h" +#include "OptionsDef.h" +#include "OptionsMgr.h" #include "Merge.h" // COpenDoc @@ -28,7 +30,7 @@ COpenDoc::~COpenDoc() void COpenDoc::RefreshOptions() { - m_bRecurse = (theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1); + m_bRecurse = GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS); UpdateAllViews(NULL); } diff --git a/Src/OpenView.cpp b/Src/OpenView.cpp index 8f7277dad..f573eb2b8 100644 --- a/Src/OpenView.cpp +++ b/Src/OpenView.cpp @@ -278,7 +278,7 @@ void COpenView::OnInitialUpdate() if (m_dwFlags[0] & FFILEOPEN_CMDLINE || m_dwFlags[1] & FFILEOPEN_CMDLINE) bOverwriteRecursive = TRUE; if (!bOverwriteRecursive) - m_bRecurse = theApp.GetProfileInt(_T("Settings"), _T("Recurse"), 0) == 1; + m_bRecurse = GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS); m_strUnpacker = m_infoHandler.pluginName; UpdateData(FALSE); @@ -508,7 +508,7 @@ void COpenView::OnOK() } SaveComboboxStates(); - theApp.WriteProfileInt(_T("Settings"), _T("Recurse"), m_bRecurse); + GetOptionsMgr()->SaveOption(OPT_CMP_INCLUDE_SUBDIRS, m_bRecurse); LoadComboboxStates(); m_constraint.Persist(true, false); diff --git a/Src/OptionsDef.h b/Src/OptionsDef.h index 3965b3304..966947483 100644 --- a/Src/OptionsDef.h +++ b/Src/OptionsDef.h @@ -159,6 +159,7 @@ extern const String OPT_CMP_STOP_AFTER_FIRST OP("Settings/StopAfterFirst"); extern const String OPT_CMP_QUICK_LIMIT OP("Settings/QuickMethodLimit"); extern const String OPT_CMP_WALK_UNIQUE_DIRS OP("Settings/ScanUnpairedDir"); extern const String OPT_CMP_IGNORE_REPARSE_POINTS OP("Settings/IgnoreReparsePoints"); +extern const String OPT_CMP_INCLUDE_SUBDIRS OP("Settings/Recurse"); // Image Compare options extern const String OPT_CMP_IMG_FILEPATTERNS OP("Settings/ImageFilePatterns"); diff --git a/Src/OptionsInit.cpp b/Src/OptionsInit.cpp index 8afcb3899..2cf1ff211 100644 --- a/Src/OptionsInit.cpp +++ b/Src/OptionsInit.cpp @@ -126,6 +126,7 @@ void Init(COptionsMgr *pOptions) pOptions->InitOption(OPT_CMP_WALK_UNIQUE_DIRS, false); pOptions->InitOption(OPT_CMP_IGNORE_REPARSE_POINTS, false); pOptions->InitOption(OPT_CMP_IGNORE_CODEPAGE, true); + pOptions->InitOption(OPT_CMP_INCLUDE_SUBDIRS, true); pOptions->InitOption(OPT_CMP_BIN_FILEPATTERNS, _T("*.bin;*.frx")); diff --git a/Src/PropCompareFolder.cpp b/Src/PropCompareFolder.cpp index 99d8c4bc9..1c204e2ee 100644 --- a/Src/PropCompareFolder.cpp +++ b/Src/PropCompareFolder.cpp @@ -26,6 +26,7 @@ PropCompareFolder::PropCompareFolder(COptionsMgr *optionsMgr) , m_bStopAfterFirst(FALSE) , m_bIgnoreSmallTimeDiff(FALSE) , m_bIncludeUniqFolders(FALSE) + , m_bIncludeSubdirs(FALSE) , m_bExpandSubdirs(FALSE) , m_bIgnoreReparsePoints(FALSE) , m_nQuickCompareLimit(4 * Mega) @@ -40,10 +41,12 @@ void PropCompareFolder::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_COMPARE_STOPFIRST, m_bStopAfterFirst); DDX_Check(pDX, IDC_IGNORE_SMALLTIMEDIFF, m_bIgnoreSmallTimeDiff); DDX_Check(pDX, IDC_COMPARE_WALKSUBDIRS, m_bIncludeUniqFolders); + DDX_Check(pDX, IDC_RECURS_CHECK, m_bIncludeSubdirs); DDX_Check(pDX, IDC_EXPAND_SUBDIRS, m_bExpandSubdirs); DDX_Check(pDX, IDC_IGNORE_REPARSEPOINTS, m_bIgnoreReparsePoints); DDX_Text(pDX, IDC_COMPARE_QUICKC_LIMIT, m_nQuickCompareLimit); //}}AFX_DATA_MAP + UpdateControls(); } @@ -52,6 +55,7 @@ BEGIN_MESSAGE_MAP(PropCompareFolder, CPropertyPage) ON_BN_CLICKED(IDC_COMPAREFOLDER_DEFAULTS, OnDefaults) //}}AFX_MSG_MAP ON_CBN_SELCHANGE(IDC_COMPAREMETHODCOMBO, OnCbnSelchangeComparemethodcombo) + ON_BN_CLICKED(IDC_RECURS_CHECK, OnBnClickedRecursCheck) END_MESSAGE_MAP() /** @@ -65,6 +69,7 @@ void PropCompareFolder::ReadOptions() m_bStopAfterFirst = GetOptionsMgr()->GetBool(OPT_CMP_STOP_AFTER_FIRST); m_bIgnoreSmallTimeDiff = GetOptionsMgr()->GetBool(OPT_IGNORE_SMALL_FILETIME); m_bIncludeUniqFolders = GetOptionsMgr()->GetBool(OPT_CMP_WALK_UNIQUE_DIRS); + m_bIncludeSubdirs = GetOptionsMgr()->GetBool(OPT_CMP_INCLUDE_SUBDIRS); m_bExpandSubdirs = GetOptionsMgr()->GetBool(OPT_DIRVIEW_EXPAND_SUBDIRS); m_bIgnoreReparsePoints = GetOptionsMgr()->GetBool(OPT_CMP_IGNORE_REPARSE_POINTS); m_nQuickCompareLimit = GetOptionsMgr()->GetInt(OPT_CMP_QUICK_LIMIT) / Mega ; @@ -81,6 +86,7 @@ void PropCompareFolder::WriteOptions() GetOptionsMgr()->SaveOption(OPT_CMP_STOP_AFTER_FIRST, m_bStopAfterFirst); GetOptionsMgr()->SaveOption(OPT_IGNORE_SMALL_FILETIME, m_bIgnoreSmallTimeDiff); GetOptionsMgr()->SaveOption(OPT_CMP_WALK_UNIQUE_DIRS, m_bIncludeUniqFolders); + GetOptionsMgr()->SaveOption(OPT_CMP_INCLUDE_SUBDIRS, m_bIncludeSubdirs); GetOptionsMgr()->SaveOption(OPT_DIRVIEW_EXPAND_SUBDIRS, m_bExpandSubdirs); GetOptionsMgr()->SaveOption(OPT_CMP_IGNORE_REPARSE_POINTS, m_bIgnoreReparsePoints); @@ -111,8 +117,6 @@ BOOL PropCompareFolder::OnInitDialog() combo->AddString(item.c_str()); combo->SetCurSel(m_compareMethod); - EnableDlgItem(IDC_COMPARE_STOPFIRST, m_compareMethod == 1); - return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } @@ -125,6 +129,7 @@ void PropCompareFolder::OnDefaults() m_compareMethod = GetOptionsMgr()->GetDefault(OPT_CMP_METHOD); m_bStopAfterFirst = GetOptionsMgr()->GetDefault(OPT_CMP_STOP_AFTER_FIRST); m_bIncludeUniqFolders = GetOptionsMgr()->GetDefault(OPT_CMP_WALK_UNIQUE_DIRS); + m_bIncludeSubdirs = GetOptionsMgr()->GetDefault(OPT_CMP_INCLUDE_SUBDIRS); m_bExpandSubdirs = GetOptionsMgr()->GetDefault(OPT_DIRVIEW_EXPAND_SUBDIRS); m_bIgnoreReparsePoints = GetOptionsMgr()->GetDefault(OPT_CMP_IGNORE_REPARSE_POINTS); m_nQuickCompareLimit = GetOptionsMgr()->GetDefault(OPT_CMP_QUICK_LIMIT) / Mega; @@ -138,6 +143,17 @@ void PropCompareFolder::OnDefaults() */ void PropCompareFolder::OnCbnSelchangeComparemethodcombo() { - CComboBox * pCombo = (CComboBox*) GetDlgItem(IDC_COMPAREMETHODCOMBO); + UpdateControls(); +} + +void PropCompareFolder::OnBnClickedRecursCheck() +{ + UpdateControls(); +} + +void PropCompareFolder::UpdateControls() +{ + CComboBox * pCombo = (CComboBox*)GetDlgItem(IDC_COMPAREMETHODCOMBO); EnableDlgItem(IDC_COMPARE_STOPFIRST, pCombo->GetCurSel() == 1); + EnableDlgItem(IDC_EXPAND_SUBDIRS, IsDlgButtonChecked(IDC_RECURS_CHECK) == 1); } diff --git a/Src/PropCompareFolder.h b/Src/PropCompareFolder.h index d04a864c4..bcd371b7d 100644 --- a/Src/PropCompareFolder.h +++ b/Src/PropCompareFolder.h @@ -39,6 +39,7 @@ public: bool m_bStopAfterFirst; bool m_bIgnoreSmallTimeDiff; bool m_bIncludeUniqFolders; + bool m_bIncludeSubdirs; bool m_bExpandSubdirs; bool m_bIgnoreReparsePoints; unsigned m_nQuickCompareLimit; @@ -59,8 +60,10 @@ protected: afx_msg BOOL OnInitDialog(); afx_msg void OnDefaults(); afx_msg void OnCbnSelchangeComparemethodcombo(); + afx_msg void OnBnClickedRecursCheck(); //}}AFX_MSG DECLARE_MESSAGE_MAP() + void UpdateControls(); }; //{{AFX_INSERT_LOCATION}} diff --git a/Translations/WinMerge/English.pot b/Translations/WinMerge/English.pot index d67fa2754..39abc800f 100644 --- a/Translations/WinMerge/English.pot +++ b/Translations/WinMerge/English.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: WinMerge\n" "Report-Msgid-Bugs-To: http://bugs.winmerge.org/\n" -"POT-Creation-Date: 2016-03-15 00:30+0000\n" +"POT-Creation-Date: 2016-04-24 20:00+0000\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: English \n"