OSDN Git Service

Remove MergeApp.h dependency from some source files
authorsdottaka <sdottaka@users.sourceforge.net>
Sun, 19 Jul 2015 12:39:00 +0000 (21:39 +0900)
committersdottaka <sdottaka@users.sourceforge.net>
Sun, 19 Jul 2015 12:39:00 +0000 (21:39 +0900)
--HG--
branch : stable

30 files changed:
Src/DirDoc.cpp
Src/DirView.cpp
Src/FileActionScript.cpp
Src/ImgMergeFrm.cpp
Src/MainFrm.cpp
Src/Merge.cpp
Src/Merge.h
Src/Merge.vcxproj
Src/Merge.vcxproj.filters
Src/MergeDoc.cpp
Src/MergeEditView.cpp
Src/OptionsCustomColors.cpp
Src/OptionsCustomColors.h
Src/OptionsDiffColors.cpp
Src/OptionsDiffColors.h
Src/OptionsDiffOptions.cpp
Src/OptionsDiffOptions.h
Src/OptionsFont.cpp
Src/OptionsFont.h
Src/OptionsInit.cpp
Src/OptionsInit.h [new file with mode: 0644]
Src/OptionsSyntaxColors.cpp
Src/OptionsSyntaxColors.h
Src/PropColors.cpp
Src/PropRegistry.cpp
Src/PropSyntaxColors.cpp
Src/PropTextColors.cpp
Src/PropVss.cpp
Src/SourceControl.cpp
Src/SourceControl.h [new file with mode: 0644]

index a4cef8f..f8064e2 100644 (file)
@@ -320,7 +320,7 @@ void CDirDoc::Rescan()
        LoadLineFilterList();
 
        DIFFOPTIONS options = {0};
-       Options::DiffOptions::Load(options);
+       Options::DiffOptions::Load(GetOptionsMgr(), options);
 
        m_pCtxt->CreateCompareOptions(GetOptionsMgr()->GetInt(OPT_CMP_METHOD), options);
 
index 016ffb7..ee7ba4a 100644 (file)
@@ -166,7 +166,7 @@ CDirView::CDirView()
        m_bShowSkipped =  GetOptionsMgr()->GetBool(OPT_SHOW_SKIPPED);
        m_bExpandSubdirs = GetOptionsMgr()->GetBool(OPT_DIRVIEW_EXPAND_SUBDIRS);
        m_bEscCloses = GetOptionsMgr()->GetBool(OPT_CLOSE_WITH_ESC);
-       Options::DiffColors::Load(m_cachedColors);
+       Options::DiffColors::Load(GetOptionsMgr(), m_cachedColors);
 }
 
 CDirView::~CDirView()
@@ -3666,7 +3666,7 @@ void CDirView::RefreshOptions()
 {
        m_bEscCloses = GetOptionsMgr()->GetBool(OPT_CLOSE_WITH_ESC);
        m_bExpandSubdirs = GetOptionsMgr()->GetBool(OPT_DIRVIEW_EXPAND_SUBDIRS);
-       Options::DiffColors::Load(m_cachedColors);
+       Options::DiffColors::Load(GetOptionsMgr(), m_cachedColors);
 }
 
 /**
index 4f320f7..f31139e 100644 (file)
@@ -29,6 +29,7 @@
 #include "OptionsMgr.h"
 #include "ShellFileOperations.h"
 #include "paths.h"
+#include "SourceControl.h"
 
 using std::vector;
 
@@ -103,7 +104,7 @@ int FileActionScript::VCSCheckOut(const String &path, BOOL &bApplyToAll)
        String strErr;
        int retVal = SCRIPT_SUCCESS;
 
-       if (GetOptionsMgr()->GetInt(OPT_VCS_SYSTEM) == VCS_NONE)
+       if (GetOptionsMgr()->GetInt(OPT_VCS_SYSTEM) == SourceControl::VCS_NONE)
                return retVal;
 
        // TODO: First param is not used!
@@ -157,7 +158,7 @@ int FileActionScript::CreateOperationsScripts()
                        // Before we can write over destination file, we must unlock
                        // (checkout) it. This also notifies VCS system that the file
                        // has been modified.
-                       if (GetOptionsMgr()->GetInt(OPT_VCS_SYSTEM) != VCS_NONE)
+                       if (GetOptionsMgr()->GetInt(OPT_VCS_SYSTEM) != SourceControl::VCS_NONE)
                        {
                                int retVal = VCSCheckOut((*iter).dest, bApplyToAll);
                                if (retVal == SCRIPT_USERCANCEL)
index 663a061..051d474 100644 (file)
@@ -366,7 +366,7 @@ BOOL CImgMergeFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
        }
 
        COLORSETTINGS colors;
-       Options::DiffColors::Load(colors);
+       Options::DiffColors::Load(GetOptionsMgr(), colors);
        m_pImgMergeWindow->SetDiffColor(colors.clrDiff);
        m_pImgMergeWindow->SetSelDiffColor(colors.clrSelDiff);
        m_pImgMergeWindow->AddEventListener(OnChildPaneEvent, this);
@@ -1708,7 +1708,7 @@ void CImgMergeFrame::OnImgUseBackColor()
                RGBQUAD backColor = m_pImgMergeWindow->GetBackColor();
                CColorDialog dialog(RGB(backColor.rgbRed, backColor.rgbGreen, backColor.rgbBlue));
                static DWORD dwCustColors[16];
-               Options::CustomColors::Load(dwCustColors);
+               Options::CustomColors::Load(GetOptionsMgr(), dwCustColors);
                dialog.m_cc.lpCustColors = dwCustColors;
                if (dialog.DoModal() == IDOK)
                {
index 67558b9..ce6c040 100644 (file)
@@ -325,8 +325,8 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
        if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
                return -1;
 
-       m_lfDiff = Options::Font::Load(OPT_FONT_FILECMP);
-       m_lfDir = Options::Font::Load(OPT_FONT_DIRCMP);
+       m_lfDiff = Options::Font::Load(GetOptionsMgr(), OPT_FONT_FILECMP);
+       m_lfDir = Options::Font::Load(GetOptionsMgr(), OPT_FONT_DIRCMP);
        
        if (!CreateToolbar())
        {
@@ -1121,7 +1121,7 @@ void CMainFrame::OnViewSelectfont()
 
        if (ChooseFont(&cf))
        {
-               Options::Font::Save(frame == FRAME_FOLDER ? OPT_FONT_DIRCMP : OPT_FONT_FILECMP, lf, true);
+               Options::Font::Save(GetOptionsMgr(), frame == FRAME_FOLDER ? OPT_FONT_DIRCMP : OPT_FONT_FILECMP, lf, true);
                UpdateFont(frame);
        }
 }
@@ -1146,15 +1146,15 @@ void CMainFrame::OnViewUsedefaultfont()
 
        if (frame == FRAME_FOLDER)
        {
-               Options::Font::Reset(OPT_FONT_DIRCMP);
-               m_lfDir = Options::Font::Load(OPT_FONT_DIRCMP);
-               Options::Font::Save(OPT_FONT_DIRCMP, &m_lfDir, false);
+               Options::Font::Reset(GetOptionsMgr(), OPT_FONT_DIRCMP);
+               m_lfDir = Options::Font::Load(GetOptionsMgr(), OPT_FONT_DIRCMP);
+               Options::Font::Save(GetOptionsMgr(), OPT_FONT_DIRCMP, &m_lfDir, false);
        }
        else
        {
-               Options::Font::Reset(OPT_FONT_FILECMP);
-               m_lfDiff = Options::Font::Load(OPT_FONT_FILECMP);
-               Options::Font::Save(OPT_FONT_FILECMP, &m_lfDiff, false);
+               Options::Font::Reset(GetOptionsMgr(), OPT_FONT_FILECMP);
+               m_lfDiff = Options::Font::Load(GetOptionsMgr(), OPT_FONT_FILECMP);
+               Options::Font::Save(GetOptionsMgr(), OPT_FONT_FILECMP, &m_lfDiff, false);
        }
 
        UpdateFont(frame);
index 2368db7..f814321 100644 (file)
@@ -32,6 +32,7 @@
 #include "unicoder.h"
 #include "Environment.h"
 #include "OptionsMgr.h"
+#include "OptionsInit.h"
 #include "RegOptionsMgr.h"
 #include "OpenDoc.h"
 #include "OpenFrm.h"
@@ -66,6 +67,7 @@
 #include "stringdiffs.h"
 #include "TFile.h"
 #include "VSSHelper.h"
+#include "SourceControl.h"
 
 // For shutdown cleanup
 #include "charsets.h"
@@ -285,7 +287,7 @@ BOOL CMergeApp::InitInstance()
        // Load registry keys from WinMerge.reg if existing WinMerge.reg
        env_LoadRegistryFromFile(paths_ConcatPath(env_GetProgPath(), _T("WinMerge.reg")));
 
-       OptionsInit(); // Implementation in OptionsInit.cpp
+       Options::Init(m_pOptions.get()); // Implementation in OptionsInit.cpp
 
        // Initialize temp folder
        SetupTempPath();
@@ -376,7 +378,7 @@ BOOL CMergeApp::InitInstance()
        }
 
        if (m_pSyntaxColors)
-               Options::SyntaxColors::Load(m_pSyntaxColors.get());
+               Options::SyntaxColors::Load(GetOptionsMgr(), m_pSyntaxColors.get());
 
        if (m_pLineFilters)
                m_pLineFilters->Initialize(GetOptionsMgr());
@@ -395,9 +397,22 @@ BOOL CMergeApp::InitInstance()
        if (pathMyFolders.empty())
        {
                // No filter path, set it to default and make sure it exists.
-               String pathFilters = GetDefaultFilterUserPath(TRUE);
-               GetOptionsMgr()->SaveOption(OPT_FILTER_USERPATH, pathFilters);
-               theApp.m_pGlobalFileFilter->SetFileFilterPath(pathFilters.c_str());
+               pathMyFolders = GetOptionsMgr()->GetDefault<String>(OPT_FILTER_USERPATH);
+               GetOptionsMgr()->SaveOption(OPT_FILTER_USERPATH, pathMyFolders);
+               theApp.m_pGlobalFileFilter->SetUserFilterPath(pathMyFolders.c_str());
+       }
+       if (!paths_CreateIfNeeded(pathMyFolders))
+       {
+               // Failed to create a folder, check it didn't already
+               // exist.
+               DWORD errCode = GetLastError();
+               if (errCode != ERROR_ALREADY_EXISTS)
+               {
+                       // Failed to create a folder for filters, fallback to
+                       // "My Documents"-folder. It is not worth the trouble to
+                       // bother user about this or user more clever solutions.
+                       GetOptionsMgr()->SaveOption(OPT_FILTER_USERPATH, env_GetMyDocuments());
+               }
        }
 
        sd_Init(); // String diff init
@@ -999,7 +1014,7 @@ int CMergeApp::SyncFileToVCS(const String& pszDest, BOOL &bApplyToAll,
                return nRetVal;
        
        // If VC project opened from VSS sync and version control used
-       if ((nVerSys == VCS_VSS4 || nVerSys == VCS_VSS5) && m_bVCProjSync)
+       if ((nVerSys == SourceControl::VCS_VSS4 || nVerSys == SourceControl::VCS_VSS5) && m_bVCProjSync)
        {
                if (!m_pVssHelper->ReLinkVCProj(strSavePath, sError))
                        nRetVal = -1;
@@ -1051,7 +1066,7 @@ int CMergeApp::HandleReadonlySave(String& strSavePath, BOOL bMultiFile,
                // Version control system used?
                // Checkout file from VCS and modify, don't ask about overwriting
                // RO files etc.
-               if (nVerSys != VCS_NONE)
+               if (nVerSys != SourceControl::VCS_NONE)
                {
                        BOOL bRetVal = SaveToVersionControl(strSavePath);
                        if (bRetVal)
@@ -1316,48 +1331,6 @@ std::wstring CMergeApp::LoadDialogCaption(LPCTSTR lpDialogTemplateID) const
 }
 
 /**
- * @brief Get default editor path.
- * @return full path to the editor program executable.
- */
-String CMergeApp::GetDefaultEditor() const
-{
-       return paths_ConcatPath(env_GetWindowsDirectory(), _T("NOTEPAD.EXE"));
-}
-
-/**
- * @brief Get default user filter folder path.
- * This function returns the default filter path for user filters.
- * If wanted so (@p bCreate) path can be created if it does not
- * exist yet. But you really want to create the patch only when
- * there is no user path defined.
- * @param [in] bCreate If TRUE filter path is created if it does
- *  not exist.
- * @return Default folder for user filters.
- */
-String CMergeApp::GetDefaultFilterUserPath(BOOL bCreate /*=FALSE*/) const
-{
-       String pathMyFolders = env_GetMyDocuments();
-       String pathFilters(pathMyFolders);
-       pathFilters = paths_ConcatPath(pathFilters, DefaultRelativeFilterPath);
-
-       if (bCreate && !paths_CreateIfNeeded(pathFilters))
-       {
-               // Failed to create a folder, check it didn't already
-               // exist.
-               DWORD errCode = GetLastError();
-               if (errCode != ERROR_ALREADY_EXISTS)
-               {
-                       // Failed to create a folder for filters, fallback to
-                       // "My Documents"-folder. It is not worth the trouble to
-                       // bother user about this or user more clever solutions.
-                       pathFilters = pathMyFolders;
-               }
-       }
-       return pathFilters;
-}
-
-
-/**
  * @brief Adds specified file to the recent projects list.
  * @param [in] sPathName Path to project file
  */
index 9ac5e3f..178df60 100644 (file)
@@ -52,17 +52,6 @@ class VSSHelper;
 
 enum { IDLE_TIMER = 9754 };
 
-/**
- * @brief Supported versioncontrol systems.
- */
-enum
-{
-       VCS_NONE = 0,
-       VCS_VSS4,
-       VCS_VSS5,
-       VCS_CLEARCASE,
-};
-
 /** 
  * @brief WinMerge application class
  */
@@ -126,13 +115,9 @@ public:
        void AddToRecentProjectsMRU(LPCTSTR sPathName);
        void SetNeedIdleTimer();
        void SetLastCompareResult(int nResult) { m_nLastCompareResult = nResult; }
-       String GetDefaultEditor() const;
-       String GetDefaultFilterUserPath(BOOL bCreate = FALSE) const;
 
        COptionsMgr * GetMergeOptionsMgr() { return static_cast<COptionsMgr *> (m_pOptions.get()); }
        FileFilterHelper * GetGlobalFileFilter() { return m_pGlobalFileFilter.get(); }
-       void OptionsInit();
-       void ResetOptions() { OptionsInit(); }
        void SetFontDefaults();
        void ShowHelp(LPCTSTR helpLocation = NULL);
        void OpenFileToExternalEditor(const String& file, int nLineNumber = 1);
index c77ea8b..1f92c9a 100644 (file)
     <ClInclude Include="OptionsDiffColors.h" />\r
     <ClInclude Include="OptionsDiffOptions.h" />\r
     <ClInclude Include="OptionsFont.h" />\r
+    <ClInclude Include="OptionsInit.h" />\r
     <ClInclude Include="OptionsPanel.h" />\r
     <ClInclude Include="OptionsSyntaxColors.h" />\r
     <ClInclude Include="PatchDlg.h" />\r
     <ClInclude Include="Common\sizecbar.h" />\r
     <ClInclude Include="Common\SortHeaderCtrl.h" />\r
     <ClInclude Include="Common\SplitterWndEx.h" />\r
+    <ClInclude Include="SourceControl.h" />\r
     <ClInclude Include="ssapi.h" />\r
     <ClInclude Include="StdAfx.h" />\r
     <ClInclude Include="stringdiffs.h" />\r
index 22f409c..e73f8c6 100644 (file)
     <ClInclude Include="Constants.h">\r
       <Filter>Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="SourceControl.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
+    <ClInclude Include="OptionsInit.h">\r
+      <Filter>Header Files</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="res\binarydiff.ico">\r
index d2d12da..cc80a77 100644 (file)
@@ -167,7 +167,7 @@ CMergeDoc::CMergeDoc()
        m_nDiffContext = GetOptionsMgr()->GetInt(OPT_DIFF_CONTEXT);
 
        m_diffWrapper.SetDetectMovedBlocks(GetOptionsMgr()->GetBool(OPT_CMP_MOVED_BLOCKS));
-       Options::DiffOptions::Load(options);
+       Options::DiffOptions::Load(GetOptionsMgr(), options);
 
        m_diffWrapper.SetOptions(&options);
        m_diffWrapper.SetPrediffer(NULL);
@@ -2749,7 +2749,7 @@ void CMergeDoc::RefreshOptions()
        DIFFOPTIONS options = {0};
        
        m_diffWrapper.SetDetectMovedBlocks(GetOptionsMgr()->GetBool(OPT_CMP_MOVED_BLOCKS));
-       Options::DiffOptions::Load(options);
+       Options::DiffOptions::Load(GetOptionsMgr(), options);
 
        m_diffWrapper.SetOptions(&options);
 
index 5f1b677..39a4e2f 100644 (file)
@@ -74,7 +74,7 @@ CMergeEditView::CMergeEditView()
 {
        SetParser(&m_xParser);
        
-       Options::DiffColors::Load(m_cachedColors);
+       Options::DiffColors::Load(GetOptionsMgr(), m_cachedColors);
 }
 
 CMergeEditView::~CMergeEditView()
@@ -2917,7 +2917,7 @@ void CMergeEditView::RefreshOptions()
                GetOptionsMgr()->GetBool(OPT_ALLOW_MIXED_EOL) ||
                GetDocument()->IsMixedEOL(m_nThisPane));
 
-       Options::DiffColors::Load(m_cachedColors);
+       Options::DiffColors::Load(GetOptionsMgr(), m_cachedColors);
 }
 
 /**
index 1ac5d06..bd363c6 100644 (file)
@@ -1,6 +1,5 @@
 #include "OptionsCustomColors.h"
 #include "OptionsMgr.h"
-#include "MergeApp.h"
 
 namespace Options { namespace CustomColors
 {
@@ -8,9 +7,8 @@ namespace Options { namespace CustomColors
 /** @brief Setting name for user-defined custom colors. */
 const TCHAR Section[] = _T("Custom Colors");
 
-void Load(COLORREF * colors)
+void Load(COptionsMgr *pOptionsMgr, COLORREF * colors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        for (int i = 0; i < 16; i++)
        {
                String valuename = string_format(_T("%s/%d"), Section, i);
@@ -19,9 +17,8 @@ void Load(COLORREF * colors)
        }
 }
 
-void Save(const COLORREF * colors)
+void Save(COptionsMgr *pOptionsMgr, const COLORREF * colors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        for (int i = 0; i < 16; i++)
        {
                String valuename = string_format(_T("%s/%d"), Section, i);
index afaa7d5..f374050 100644 (file)
@@ -2,9 +2,11 @@
 
 #include <windows.h>
 
+class COptionsMgr;
+
 namespace Options { namespace CustomColors {
 
-void Load(COLORREF * colors);
-void Save(const COLORREF * colors);
+void Load(COptionsMgr *pOptionsMgr, COLORREF * colors);
+void Save(COptionsMgr *pOptionsMgr, const COLORREF * colors);
 
 }}
index ea7a4c1..3177372 100644 (file)
@@ -4,15 +4,13 @@
  * @brief Implementation for OptionsDiffColors class.
  */
 #include "OptionsDiffColors.h"
-#include "MergeApp.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 
 namespace Options { namespace DiffColors {
 
-void SetDefaults()
+void SetDefaults(COptionsMgr *pOptionsMgr)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->InitOption(OPT_CLR_DIFF, (int)RGB(239,203,5));
        pOptionsMgr->InitOption(OPT_CLR_DIFF_DELETED, (int)RGB(192, 192, 192));
        pOptionsMgr->InitOption(OPT_CLR_DIFF_TEXT, (int)RGB(0,0,0));
@@ -43,9 +41,8 @@ void SetDefaults()
        pOptionsMgr->InitOption(OPT_CLR_DEFAULT_TEXT_COLORING, true);
 }
 
-void Load(COLORSETTINGS& colors)
+void Load(const COptionsMgr *pOptionsMgr, COLORSETTINGS& colors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        colors.clrDiff = pOptionsMgr->GetInt(OPT_CLR_DIFF);
        colors.clrSelDiff = pOptionsMgr->GetInt(OPT_CLR_SELECTED_DIFF);
        colors.clrDiffDeleted = pOptionsMgr->GetInt(OPT_CLR_DIFF_DELETED);
@@ -75,9 +72,8 @@ void Load(COLORSETTINGS& colors)
        colors.clrSelWordDiffText = pOptionsMgr->GetInt(OPT_CLR_SELECTED_WORDDIFF_TEXT);
 }
 
-void Save(const COLORSETTINGS& colors)
+void Save(COptionsMgr *pOptionsMgr, const COLORSETTINGS& colors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->SaveOption(OPT_CLR_DIFF, (int)colors.clrDiff);
        pOptionsMgr->SaveOption(OPT_CLR_SELECTED_DIFF, (int)colors.clrSelDiff);
        pOptionsMgr->SaveOption(OPT_CLR_DIFF_DELETED, (int)colors.clrDiffDeleted);
index 5364962..73325be 100644 (file)
@@ -36,10 +36,12 @@ struct COLORSETTINGS
        COLORREF        clrSelWordDiffText;     /**< Selected word difference text color */
 };
 
+class COptionsMgr;
+
 namespace Options { namespace DiffColors {
 
-void SetDefaults();
-void Load(COLORSETTINGS& colors);
-void Save(const COLORSETTINGS& colors);
+void SetDefaults(COptionsMgr *pOptionsMgr);
+void Load(const COptionsMgr *pOptionsMgr, COLORSETTINGS& colors);
+void Save(COptionsMgr *pOptionsMgr, const COLORSETTINGS& colors);
 
 }}
index a616bf7..a4819aa 100644 (file)
@@ -5,8 +5,6 @@
  */
 #include "OptionsDiffOptions.h"
 #include "CompareOptions.h"
-#include "unicoder.h"
-#include "MergeApp.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 
@@ -15,9 +13,8 @@ namespace Options { namespace DiffOptions {
 /**
  * @brief Set default diff option values.
  */
-void SetDefaults()
+void SetDefaults(COptionsMgr *pOptionsMgr)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->InitOption(OPT_CMP_IGNORE_WHITESPACE, (int)0);
        pOptionsMgr->InitOption(OPT_CMP_IGNORE_BLANKLINES, false);
        pOptionsMgr->InitOption(OPT_CMP_FILTER_COMMENTLINES, false);
@@ -25,9 +22,8 @@ void SetDefaults()
        pOptionsMgr->InitOption(OPT_CMP_IGNORE_EOL, false);
 }
 
-void Load(DIFFOPTIONS& options)
+void Load(const COptionsMgr *pOptionsMgr, DIFFOPTIONS& options)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        options.nIgnoreWhitespace = pOptionsMgr->GetInt(OPT_CMP_IGNORE_WHITESPACE);
        options.bIgnoreBlankLines = pOptionsMgr->GetBool(OPT_CMP_IGNORE_BLANKLINES);
        options.bFilterCommentsLines = pOptionsMgr->GetBool(OPT_CMP_FILTER_COMMENTLINES);
@@ -35,9 +31,8 @@ void Load(DIFFOPTIONS& options)
        options.bIgnoreEol = pOptionsMgr->GetBool(OPT_CMP_IGNORE_EOL);
 }
 
-void Save(const DIFFOPTIONS& options)
+void Save(COptionsMgr *pOptionsMgr, const DIFFOPTIONS& options)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->SaveOption(OPT_CMP_IGNORE_WHITESPACE, options.nIgnoreWhitespace);
        pOptionsMgr->SaveOption(OPT_CMP_IGNORE_BLANKLINES, options.bIgnoreBlankLines);
        pOptionsMgr->SaveOption(OPT_CMP_FILTER_COMMENTLINES, options.bFilterCommentsLines);
index 53b4ddd..fe55726 100644 (file)
@@ -1,11 +1,12 @@
 #pragma once\r
 \r
 struct DIFFOPTIONS;\r
+class COptionsMgr;\r
 \r
 namespace Options { namespace DiffOptions {\r
 \r
-void SetDefaults();\r
-void Load(DIFFOPTIONS& options);\r
-void Save(const DIFFOPTIONS& options);\r
+void SetDefaults(COptionsMgr *pOptionsMgr);\r
+void Load(const COptionsMgr *pOptionsMgr, DIFFOPTIONS& options);\r
+void Save(COptionsMgr *pOptionsMgr, const DIFFOPTIONS& options);\r
 \r
 }}\r
index 26ffb16..2d2ec9c 100644 (file)
@@ -6,7 +6,6 @@
 #include "OptionsFont.h"
 #include "unicoder.h"
 #include "ExConverter.h"
-#include "MergeApp.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 
@@ -15,9 +14,8 @@ namespace Options { namespace Font {
 /**
  * @brief Set default font values.
  */
-void SetDefaults()
+void SetDefaults(COptionsMgr *pOptionsMgr)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        LOGFONT lfDefault;
        ZeroMemory(&lfDefault, sizeof(LOGFONT));
 
@@ -50,9 +48,8 @@ void SetDefaults()
        }
 }
 
-LOGFONT Load(const String& name)
+LOGFONT Load(const COptionsMgr *pOptionsMgr, const String& name)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        LOGFONT lfnew;
        ZeroMemory(&lfnew, sizeof(LOGFONT));
 
@@ -74,9 +71,8 @@ LOGFONT Load(const String& name)
        return lfnew;
 }
 
-void Save(const String& name, const LOGFONT* lf, bool bUseCustom)
+void Save(COptionsMgr *pOptionsMgr, const String& name, const LOGFONT* lf, bool bUseCustom)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->SaveOption(name + OPT_FONT_USECUSTOM, bUseCustom);
        pOptionsMgr->SaveOption(name + OPT_FONT_HEIGHT, lf->lfHeight);
        pOptionsMgr->SaveOption(name + OPT_FONT_WIDTH, lf->lfWidth);
@@ -94,9 +90,8 @@ void Save(const String& name, const LOGFONT* lf, bool bUseCustom)
        pOptionsMgr->SaveOption(name + OPT_FONT_FACENAME, lf->lfFaceName);
 }
 
-void Reset(const String& name)
+void Reset(COptionsMgr *pOptionsMgr, const String& name)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        pOptionsMgr->SaveOption(name + OPT_FONT_USECUSTOM, false);
        pOptionsMgr->Reset(name + OPT_FONT_HEIGHT);
        pOptionsMgr->Reset(name + OPT_FONT_WIDTH);
index d510ed6..f695549 100644 (file)
@@ -3,11 +3,13 @@
 #include <windows.h>\r
 #include "UnicodeString.h"\r
 \r
+class COptionsMgr;\r
+\r
 namespace Options { namespace Font {\r
 \r
-void SetDefaults();\r
-LOGFONT Load(const String& name);\r
-void Save(const String& name, const LOGFONT* lf, bool bUseCustom);\r
-void Reset(const String& name);\r
+void SetDefaults(COptionsMgr *pOptionsMgr);\r
+LOGFONT Load(const COptionsMgr *pOptionsMgr, const String& name);\r
+void Save(COptionsMgr *pOptionsMgr, const String& name, const LOGFONT* lf, bool bUseCustom);\r
+void Reset(COptionsMgr *pOptionsMgr, const String& name);\r
 \r
 }}\r
index e10111b..e8269d0 100644 (file)
@@ -4,9 +4,7 @@
  * @brief Options initialisation.
  */
 
-#include "stdafx.h"
 #include <vector>
-#include "Merge.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 #include "RegOptionsMgr.h"
 #include "OptionsFont.h"
 #include "DiffWrapper.h" // CMP_CONTENT
 #include "unicoder.h"
+#include "SourceControl.h"
+#include "paths.h"
+#include "Environment.h"
+#include "Constants.h"
 
 // Functions to copy values set by installer from HKLM to HKCU.
 static void CopyHKLMValues();
@@ -24,6 +26,9 @@ static bool IsFirstRun(HKEY key);
 static void CopyFromLMtoCU(HKEY lmKey, HKEY cuKey, LPCTSTR valname);
 static void ResetFirstRun(HKEY key);
 
+namespace Options
+{
+
 /**
  * @brief Initialise options and set default values.
  *
@@ -31,144 +36,146 @@ static void ResetFirstRun(HKEY key);
  * using WinMerge and many users never change them. So pick
  * default values carefully!
  */
-void CMergeApp::OptionsInit()
+void Init(COptionsMgr *pOptions)
 {
        // Copy some values from HKLM to HKCU
        CopyHKLMValues();
 
-       static_cast<CRegOptionsMgr *>(m_pOptions.get())->SetRegRootKey(_T("Thingamahoochie\\WinMerge\\"));
+       static_cast<CRegOptionsMgr *>(pOptions)->SetRegRootKey(_T("Thingamahoochie\\WinMerge\\"));
 
        LANGID LangId = GetUserDefaultLangID();
        if (PRIMARYLANGID(LangId) == LANG_JAPANESE)
        {
                // Default language to Japanese unless installer set it otherwise
-               m_pOptions->InitOption(OPT_SELECTED_LANGUAGE, 0x411);
+               pOptions->InitOption(OPT_SELECTED_LANGUAGE, 0x411);
        }
        else
        {
                // Default language to English unless installer set it otherwise
-               m_pOptions->InitOption(OPT_SELECTED_LANGUAGE, 0x409);
+               pOptions->InitOption(OPT_SELECTED_LANGUAGE, 0x409);
        }
 
        // Initialise options (name, default value)
-       m_pOptions->InitOption(OPT_SHOW_UNIQUE_LEFT, true);
-       m_pOptions->InitOption(OPT_SHOW_UNIQUE_RIGHT, true);
-       m_pOptions->InitOption(OPT_SHOW_DIFFERENT, true);
-       m_pOptions->InitOption(OPT_SHOW_IDENTICAL, true);
-       m_pOptions->InitOption(OPT_SHOW_BINARIES, true);
-       m_pOptions->InitOption(OPT_SHOW_SKIPPED, false);
-
-       m_pOptions->InitOption(OPT_SHOW_TOOLBAR, true);
-       m_pOptions->InitOption(OPT_SHOW_STATUSBAR, true);
-       m_pOptions->InitOption(OPT_SHOW_TABBAR, true);
-       m_pOptions->InitOption(OPT_TOOLBAR_SIZE, 0);
-       m_pOptions->InitOption(OPT_RESIZE_PANES, false);
-
-       m_pOptions->InitOption(OPT_SYNTAX_HIGHLIGHT, true);
-       m_pOptions->InitOption(OPT_WORDWRAP, false);
-       m_pOptions->InitOption(OPT_VIEW_LINENUMBERS, false);
-       m_pOptions->InitOption(OPT_VIEW_WHITESPACE, false);
-       m_pOptions->InitOption(OPT_CONNECT_MOVED_BLOCKS, 0);
-       m_pOptions->InitOption(OPT_SCROLL_TO_FIRST, false);
-       m_pOptions->InitOption(OPT_VERIFY_OPEN_PATHS, true);
-       m_pOptions->InitOption(OPT_AUTO_COMPLETE_SOURCE, (int)1);
-       m_pOptions->InitOption(OPT_VIEW_FILEMARGIN, false);
-       m_pOptions->InitOption(OPT_DIFF_CONTEXT, (int)-1);
-       m_pOptions->InitOption(OPT_SPLIT_HORIZONTALLY, false);
-
-       m_pOptions->InitOption(OPT_WORDDIFF_HIGHLIGHT, true);
-       m_pOptions->InitOption(OPT_BREAK_SEPARATORS, _T(".,:;?[](){}<>`'!\"#$%&^~\\|@+-*/"));
-
-       m_pOptions->InitOption(OPT_BACKUP_FOLDERCMP, false);
-       m_pOptions->InitOption(OPT_BACKUP_FILECMP, true);
-       m_pOptions->InitOption(OPT_BACKUP_LOCATION, (int)0);
-       m_pOptions->InitOption(OPT_BACKUP_GLOBALFOLDER, _T(""));
-       m_pOptions->InitOption(OPT_BACKUP_ADD_BAK, true);
-       m_pOptions->InitOption(OPT_BACKUP_ADD_TIME, false);
-
-       m_pOptions->InitOption(OPT_DIRVIEW_SORT_COLUMN, (int)-1);
-       m_pOptions->InitOption(OPT_DIRVIEW_SORT_COLUMN3, (int)-1);
-       m_pOptions->InitOption(OPT_DIRVIEW_SORT_ASCENDING, true);
-       m_pOptions->InitOption(OPT_SHOW_SELECT_FILES_AT_STARTUP, false);
-       m_pOptions->InitOption(OPT_DIRVIEW_EXPAND_SUBDIRS, false);
-
-       m_pOptions->InitOption(OPT_AUTOMATIC_RESCAN, false);
-       m_pOptions->InitOption(OPT_ALLOW_MIXED_EOL, false);
-       m_pOptions->InitOption(OPT_TAB_SIZE, (int)4);
-       m_pOptions->InitOption(OPT_TAB_TYPE, (int)0);   // 0 means tabs inserted
-
-       m_pOptions->InitOption(OPT_EXT_EDITOR_CMD, GetDefaultEditor());
-       m_pOptions->InitOption(OPT_USE_RECYCLE_BIN, true);
-       m_pOptions->InitOption(OPT_SINGLE_INSTANCE, false);
-       m_pOptions->InitOption(OPT_MERGE_MODE, false);
+       pOptions->InitOption(OPT_SHOW_UNIQUE_LEFT, true);
+       pOptions->InitOption(OPT_SHOW_UNIQUE_RIGHT, true);
+       pOptions->InitOption(OPT_SHOW_DIFFERENT, true);
+       pOptions->InitOption(OPT_SHOW_IDENTICAL, true);
+       pOptions->InitOption(OPT_SHOW_BINARIES, true);
+       pOptions->InitOption(OPT_SHOW_SKIPPED, false);
+
+       pOptions->InitOption(OPT_SHOW_TOOLBAR, true);
+       pOptions->InitOption(OPT_SHOW_STATUSBAR, true);
+       pOptions->InitOption(OPT_SHOW_TABBAR, true);
+       pOptions->InitOption(OPT_TOOLBAR_SIZE, 0);
+       pOptions->InitOption(OPT_RESIZE_PANES, false);
+
+       pOptions->InitOption(OPT_SYNTAX_HIGHLIGHT, true);
+       pOptions->InitOption(OPT_WORDWRAP, false);
+       pOptions->InitOption(OPT_VIEW_LINENUMBERS, false);
+       pOptions->InitOption(OPT_VIEW_WHITESPACE, false);
+       pOptions->InitOption(OPT_CONNECT_MOVED_BLOCKS, 0);
+       pOptions->InitOption(OPT_SCROLL_TO_FIRST, false);
+       pOptions->InitOption(OPT_VERIFY_OPEN_PATHS, true);
+       pOptions->InitOption(OPT_AUTO_COMPLETE_SOURCE, (int)1);
+       pOptions->InitOption(OPT_VIEW_FILEMARGIN, false);
+       pOptions->InitOption(OPT_DIFF_CONTEXT, (int)-1);
+       pOptions->InitOption(OPT_SPLIT_HORIZONTALLY, false);
+
+       pOptions->InitOption(OPT_WORDDIFF_HIGHLIGHT, true);
+       pOptions->InitOption(OPT_BREAK_SEPARATORS, _T(".,:;?[](){}<>`'!\"#$%&^~\\|@+-*/"));
+
+       pOptions->InitOption(OPT_BACKUP_FOLDERCMP, false);
+       pOptions->InitOption(OPT_BACKUP_FILECMP, true);
+       pOptions->InitOption(OPT_BACKUP_LOCATION, (int)0);
+       pOptions->InitOption(OPT_BACKUP_GLOBALFOLDER, _T(""));
+       pOptions->InitOption(OPT_BACKUP_ADD_BAK, true);
+       pOptions->InitOption(OPT_BACKUP_ADD_TIME, false);
+
+       pOptions->InitOption(OPT_DIRVIEW_SORT_COLUMN, (int)-1);
+       pOptions->InitOption(OPT_DIRVIEW_SORT_COLUMN3, (int)-1);
+       pOptions->InitOption(OPT_DIRVIEW_SORT_ASCENDING, true);
+       pOptions->InitOption(OPT_SHOW_SELECT_FILES_AT_STARTUP, false);
+       pOptions->InitOption(OPT_DIRVIEW_EXPAND_SUBDIRS, false);
+
+       pOptions->InitOption(OPT_AUTOMATIC_RESCAN, false);
+       pOptions->InitOption(OPT_ALLOW_MIXED_EOL, false);
+       pOptions->InitOption(OPT_TAB_SIZE, (int)4);
+       pOptions->InitOption(OPT_TAB_TYPE, (int)0);     // 0 means tabs inserted
+
+       pOptions->InitOption(OPT_EXT_EDITOR_CMD, paths_ConcatPath(env_GetWindowsDirectory(), _T("NOTEPAD.EXE")));
+       pOptions->InitOption(OPT_USE_RECYCLE_BIN, true);
+       pOptions->InitOption(OPT_SINGLE_INSTANCE, false);
+       pOptions->InitOption(OPT_MERGE_MODE, false);
        // OPT_WORDDIFF_HIGHLIGHT is initialized above
-       m_pOptions->InitOption(OPT_BREAK_ON_WORDS, false);
-       m_pOptions->InitOption(OPT_BREAK_TYPE, 1);
-
-       m_pOptions->InitOption(OPT_CLOSE_WITH_ESC, true);
-       m_pOptions->InitOption(OPT_CLOSE_WITH_OK, false);
-       m_pOptions->InitOption(OPT_IGNORE_SMALL_FILETIME, false);
-       m_pOptions->InitOption(OPT_ASK_MULTIWINDOW_CLOSE, false);
-       m_pOptions->InitOption(OPT_PRESERVE_FILETIMES, false);
-       m_pOptions->InitOption(OPT_TREE_MODE, false);
-
-       m_pOptions->InitOption(OPT_CMP_METHOD, (int)CMP_CONTENT);
-       m_pOptions->InitOption(OPT_CMP_MOVED_BLOCKS, false);
-       m_pOptions->InitOption(OPT_CMP_MATCH_SIMILAR_LINES, false);
-       m_pOptions->InitOption(OPT_CMP_STOP_AFTER_FIRST, false);
-       m_pOptions->InitOption(OPT_CMP_QUICK_LIMIT, 4 * 1024 * 1024); // 4 Megs
-       m_pOptions->InitOption(OPT_CMP_WALK_UNIQUE_DIRS, false);
-       m_pOptions->InitOption(OPT_CMP_IGNORE_REPARSE_POINTS, false);
-
-       m_pOptions->InitOption(OPT_CMP_BIN_FILEPATTERNS, _T("*.bin;*.frx"));
-
-       m_pOptions->InitOption(OPT_CMP_IMG_FILEPATTERNS, _T("*.bmp;*.cut;*.dds;*.exr;*.g3;*.gif;*.hdr;*.ico;*.iff;*.lbm;*.j2k;*.j2c;*.jng;*.jp2;*.jpg;*.jif;*.jpeg;*.jpe;*.jxr;*.wdp;*.hdp;*.koa;*.mng;*.pcd;*.pcx;*.pfm;*.pct;*.pict;*.pic;*.png;*.pbm;*.pgm;*.ppm;*.psd;*.ras;*.sgi;*.rgb;*.rgba;*.bw;*.tga;*.targa;*.tif;*.tiff;*.wap;*.wbmp;*.wbm;*.webp;*.xbm;*.xpm"));
-       m_pOptions->InitOption(OPT_CMP_IMG_SHOWDIFFERENCES, true);
-       m_pOptions->InitOption(OPT_CMP_IMG_OVERLAYMOVE, 0);
-       m_pOptions->InitOption(OPT_CMP_IMG_ZOOM, 1000);
-       m_pOptions->InitOption(OPT_CMP_IMG_USEBACKCOLOR, true);
-       m_pOptions->InitOption(OPT_CMP_IMG_BACKCOLOR, 0xFFFFFF);
-       m_pOptions->InitOption(OPT_CMP_IMG_DIFFBLOCKSIZE, 8);
-       m_pOptions->InitOption(OPT_CMP_IMG_THRESHOLD, 0);
-
-       m_pOptions->InitOption(OPT_PROJECTS_PATH, _T(""));
-       m_pOptions->InitOption(OPT_USE_SYSTEM_TEMP_PATH, true);
-       m_pOptions->InitOption(OPT_CUSTOM_TEMP_PATH, _T(""));
-
-       m_pOptions->InitOption(OPT_LINEFILTER_ENABLED, false);
-       m_pOptions->InitOption(OPT_FILEFILTER_CURRENT, _T("*.*"));
+       pOptions->InitOption(OPT_BREAK_ON_WORDS, false);
+       pOptions->InitOption(OPT_BREAK_TYPE, 1);
+
+       pOptions->InitOption(OPT_CLOSE_WITH_ESC, true);
+       pOptions->InitOption(OPT_CLOSE_WITH_OK, false);
+       pOptions->InitOption(OPT_IGNORE_SMALL_FILETIME, false);
+       pOptions->InitOption(OPT_ASK_MULTIWINDOW_CLOSE, false);
+       pOptions->InitOption(OPT_PRESERVE_FILETIMES, false);
+       pOptions->InitOption(OPT_TREE_MODE, false);
+
+       pOptions->InitOption(OPT_CMP_METHOD, (int)CMP_CONTENT);
+       pOptions->InitOption(OPT_CMP_MOVED_BLOCKS, false);
+       pOptions->InitOption(OPT_CMP_MATCH_SIMILAR_LINES, false);
+       pOptions->InitOption(OPT_CMP_STOP_AFTER_FIRST, false);
+       pOptions->InitOption(OPT_CMP_QUICK_LIMIT, 4 * 1024 * 1024); // 4 Megs
+       pOptions->InitOption(OPT_CMP_WALK_UNIQUE_DIRS, false);
+       pOptions->InitOption(OPT_CMP_IGNORE_REPARSE_POINTS, false);
+
+       pOptions->InitOption(OPT_CMP_BIN_FILEPATTERNS, _T("*.bin;*.frx"));
+
+       pOptions->InitOption(OPT_CMP_IMG_FILEPATTERNS, _T("*.bmp;*.cut;*.dds;*.exr;*.g3;*.gif;*.hdr;*.ico;*.iff;*.lbm;*.j2k;*.j2c;*.jng;*.jp2;*.jpg;*.jif;*.jpeg;*.jpe;*.jxr;*.wdp;*.hdp;*.koa;*.mng;*.pcd;*.pcx;*.pfm;*.pct;*.pict;*.pic;*.png;*.pbm;*.pgm;*.ppm;*.psd;*.ras;*.sgi;*.rgb;*.rgba;*.bw;*.tga;*.targa;*.tif;*.tiff;*.wap;*.wbmp;*.wbm;*.webp;*.xbm;*.xpm"));
+       pOptions->InitOption(OPT_CMP_IMG_SHOWDIFFERENCES, true);
+       pOptions->InitOption(OPT_CMP_IMG_OVERLAYMOVE, 0);
+       pOptions->InitOption(OPT_CMP_IMG_ZOOM, 1000);
+       pOptions->InitOption(OPT_CMP_IMG_USEBACKCOLOR, true);
+       pOptions->InitOption(OPT_CMP_IMG_BACKCOLOR, 0xFFFFFF);
+       pOptions->InitOption(OPT_CMP_IMG_DIFFBLOCKSIZE, 8);
+       pOptions->InitOption(OPT_CMP_IMG_THRESHOLD, 0);
+
+       pOptions->InitOption(OPT_PROJECTS_PATH, _T(""));
+       pOptions->InitOption(OPT_USE_SYSTEM_TEMP_PATH, true);
+       pOptions->InitOption(OPT_CUSTOM_TEMP_PATH, _T(""));
+
+       pOptions->InitOption(OPT_LINEFILTER_ENABLED, false);
+       pOptions->InitOption(OPT_FILEFILTER_CURRENT, _T("*.*"));
        // CMainFrame initializes this when it is empty.
-       m_pOptions->InitOption(OPT_FILTER_USERPATH, GetDefaultFilterUserPath());
-       m_pOptions->InitOption(OPT_FILEFILTER_SHARED, false);
+       pOptions->InitOption(OPT_FILTER_USERPATH, paths_ConcatPath(env_GetMyDocuments(), DefaultRelativeFilterPath));
+       pOptions->InitOption(OPT_FILEFILTER_SHARED, false);
 
-       m_pOptions->InitOption(OPT_CP_DEFAULT_MODE, (int)0);
-       m_pOptions->InitOption(OPT_CP_DEFAULT_CUSTOM, (int)GetACP());
+       pOptions->InitOption(OPT_CP_DEFAULT_MODE, (int)0);
+       pOptions->InitOption(OPT_CP_DEFAULT_CUSTOM, (int)GetACP());
 
        if (PRIMARYLANGID(LangId) == LANG_JAPANESE)
-               m_pOptions->InitOption(OPT_CP_DETECT, (int)(50932 << 16) | 3);
+               pOptions->InitOption(OPT_CP_DETECT, (int)(50932 << 16) | 3);
        else if (LangId == MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED))
-               m_pOptions->InitOption(OPT_CP_DETECT, (int)(50936 << 16) | 3);
+               pOptions->InitOption(OPT_CP_DETECT, (int)(50936 << 16) | 3);
        else if (PRIMARYLANGID(LangId) == LANG_KOREAN)
-               m_pOptions->InitOption(OPT_CP_DETECT, (int)(50949 << 16) | 3);
+               pOptions->InitOption(OPT_CP_DETECT, (int)(50949 << 16) | 3);
        else if (LangId == MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL))
-               m_pOptions->InitOption(OPT_CP_DETECT, (int)(50950 << 16) | 3);
+               pOptions->InitOption(OPT_CP_DETECT, (int)(50950 << 16) | 3);
        else
-               m_pOptions->InitOption(OPT_CP_DETECT, (int)(50001 << 16) | 3);
+               pOptions->InitOption(OPT_CP_DETECT, (int)(50001 << 16) | 3);
 
-       m_pOptions->InitOption(OPT_VCS_SYSTEM, VCS_NONE);
-       m_pOptions->InitOption(OPT_VSS_PATH, _T(""));
+       pOptions->InitOption(OPT_VCS_SYSTEM, SourceControl::VCS_NONE);
+       pOptions->InitOption(OPT_VSS_PATH, _T(""));
 
-       m_pOptions->InitOption(OPT_ARCHIVE_ENABLE, 1); // Enable by default
-       m_pOptions->InitOption(OPT_ARCHIVE_PROBETYPE, false);
+       pOptions->InitOption(OPT_ARCHIVE_ENABLE, 1); // Enable by default
+       pOptions->InitOption(OPT_ARCHIVE_PROBETYPE, false);
 
-       m_pOptions->InitOption(OPT_PLUGINS_ENABLED, true);
-       m_pOptions->InitOption(OPT_PLUGINS_DISABLED_LIST, _T(""));
+       pOptions->InitOption(OPT_PLUGINS_ENABLED, true);
+       pOptions->InitOption(OPT_PLUGINS_DISABLED_LIST, _T(""));
 
-       m_pOptions->InitOption(OPT_TABBAR_AUTO_MAXWIDTH, true);
+       pOptions->InitOption(OPT_TABBAR_AUTO_MAXWIDTH, true);
+
+       Options::DiffOptions::SetDefaults(pOptions);
+       Options::DiffColors::SetDefaults(pOptions);
+       Options::Font::SetDefaults(pOptions);
+}
 
-       Options::DiffOptions::SetDefaults();
-       Options::DiffColors::SetDefaults();
-       Options::Font::SetDefaults();
 }
 
 /**
diff --git a/Src/OptionsInit.h b/Src/OptionsInit.h
new file mode 100644 (file)
index 0000000..33a3e4b
--- /dev/null
@@ -0,0 +1,7 @@
+class COptionsMgr;\r
+\r
+namespace Options {\r
+\r
+void Init(COptionsMgr *pOptions);\r
+\r
+}\r
index 4bc8a9a..b6550a9 100644 (file)
@@ -7,7 +7,6 @@
 #include "OptionsSyntaxColors.h"
 #include <vector>
 #include "SyntaxColors.h"
-#include "MergeApp.h"
 #include "UnicodeString.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
@@ -23,9 +22,8 @@ namespace Options { namespace SyntaxColors {
  * @brief Load color values from storage
  * @param [out] pSyntaxColors pointer to SyntaxColors
  */
-void Load(::SyntaxColors *pSyntaxColors)
+void Load(COptionsMgr *pOptionsMgr, ::SyntaxColors *pSyntaxColors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        String valuename(DefColorsPath);
 
        int count = COLORINDEX_COUNT;
@@ -70,9 +68,8 @@ void Load(::SyntaxColors *pSyntaxColors)
  * @brief Save color values to storage
  * @param [in] pSyntaxColors pointer to SyntaxColors
  */
-void Save(const ::SyntaxColors *pSyntaxColors)
+void Save(COptionsMgr *pOptionsMgr, const ::SyntaxColors *pSyntaxColors)
 {
-       COptionsMgr *pOptionsMgr = GetOptionsMgr();
        String valuename(DefColorsPath);
 
        int count = COLORINDEX_COUNT;
index 7e50440..085fb75 100644 (file)
@@ -6,10 +6,11 @@
 #pragma once
 
 class SyntaxColors;
+class COptionsMgr;
 
 namespace Options { namespace SyntaxColors {
 
-void Load(::SyntaxColors *pSyntaxColors);
-void Save(const ::SyntaxColors *pSyntaxColors);
+void Load(COptionsMgr *pOptionsMgr, ::SyntaxColors *pSyntaxColors);
+void Save(COptionsMgr *pOptionsMgr, const ::SyntaxColors *pSyntaxColors);
 
 }}
index 347f0c7..e802e46 100644 (file)
@@ -140,12 +140,12 @@ void PropMergeColors::WriteOptions()
 void PropMergeColors::BrowseColor(CColorButton & colorButton)
 {
        CColorDialog dialog(colorButton.GetColor());
-       Options::CustomColors::Load(m_cCustColors);
+       Options::CustomColors::Load(GetOptionsMgr(), m_cCustColors);
        dialog.m_cc.lpCustColors = m_cCustColors;
        
        if (dialog.DoModal() == IDOK)
                colorButton.SetColor(dialog.GetColor());
-       Options::CustomColors::Save(m_cCustColors);
+       Options::CustomColors::Save(GetOptionsMgr(), m_cCustColors);
 }
 
 void PropMergeColors::UpdateTextColorButtonState(int checkboxId, CColorButton &btn)
index 9d2e878..31f59a3 100644 (file)
@@ -25,7 +25,7 @@
 #include "RegKey.h"
 #include "coretools.h"
 #include "FileOrFolderSelect.h"
-#include "Merge.h" // GetDefaultEditor()
+#include "Merge.h"
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 #include "OptionsPanel.h"
@@ -87,14 +87,11 @@ void PropRegistry::ReadOptions()
  */
 void PropRegistry::WriteOptions()
 {
-       CMergeApp *app = static_cast<CMergeApp*>(AfxGetApp());
-       String sDefaultEditor = app->GetDefaultEditor();
-
        GetOptionsMgr()->SaveOption(OPT_USE_RECYCLE_BIN, m_bUseRecycleBin == TRUE);
 
        String sExtEditor = string_trim_ws((LPCTSTR)m_strEditorPath);
        if (sExtEditor.empty())
-               sExtEditor = sDefaultEditor;
+               sExtEditor = GetOptionsMgr()->GetDefault<String>(OPT_EXT_EDITOR_CMD);
        GetOptionsMgr()->SaveOption(OPT_EXT_EDITOR_CMD, sExtEditor);
 
        String sFilterPath = string_trim_ws((LPCTSTR)m_strUserFilterPath);
index 6a68c22..85d4908 100644 (file)
@@ -140,7 +140,7 @@ void PropSyntaxColors::WriteOptions()
        // which writes to m_pTempColors
        // so user's latest choices are in m_pTempColors
        // (we don't have to read them from screen)
-       Options::SyntaxColors::Save(m_pTempColors);
+       Options::SyntaxColors::Save(GetOptionsMgr(), m_pTempColors);
 }
 
 /** 
@@ -150,7 +150,7 @@ void PropSyntaxColors::BrowseColorAndSave(CColorButton & colorButton, int colorI
 {
        COLORREF currentColor = m_pTempColors->GetColor(colorIndex);
        CColorDialog dialog(currentColor);
-       Options::CustomColors::Load(m_cCustColors);
+       Options::CustomColors::Load(GetOptionsMgr(), m_cCustColors);
        dialog.m_cc.lpCustColors = m_cCustColors;
        
        if (dialog.DoModal() == IDOK)
@@ -159,7 +159,7 @@ void PropSyntaxColors::BrowseColorAndSave(CColorButton & colorButton, int colorI
                colorButton.SetColor(currentColor);
                m_pTempColors->SetColor(colorIndex, currentColor);
        }
-       Options::CustomColors::Save(m_cCustColors);
+       Options::CustomColors::Save(GetOptionsMgr(), m_cCustColors);
 }
 
 void PropSyntaxColors::OnBnClickedEcolorKeywords()
index 731f0c9..f2db946 100644 (file)
@@ -114,7 +114,7 @@ void PropTextColors::BrowseColorAndSave(CColorButton & colorButton, int colorInd
 
        COLORREF currentColor = m_pTempColors->GetColor(colorIndex);
        CColorDialog dialog(currentColor);
-       Options::CustomColors::Load(m_cCustColors);
+       Options::CustomColors::Load(GetOptionsMgr(), m_cCustColors);
        dialog.m_cc.lpCustColors = m_cCustColors;
        
        if (dialog.DoModal() == IDOK)
@@ -123,7 +123,7 @@ void PropTextColors::BrowseColorAndSave(CColorButton & colorButton, int colorInd
                colorButton.SetColor(currentColor);
                m_pTempColors->SetColor(colorIndex, currentColor);
        }
-       Options::CustomColors::Save(m_cCustColors);
+       Options::CustomColors::Save(GetOptionsMgr(), m_cCustColors);
 }
 
 /** 
index 47454af..12c538f 100644 (file)
@@ -31,6 +31,7 @@
 #include "OptionsDef.h"
 #include "OptionsMgr.h"
 #include "OptionsPanel.h"
+#include "SourceControl.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -122,11 +123,11 @@ BOOL PropVss::OnInitDialog()
 void PropVss::OnSelendokVerSys() 
 {
        UpdateData(TRUE);
-       String tempStr = theApp.LoadString(m_nVerSys == VCS_CLEARCASE ? IDS_CC_CMD : IDS_VSS_CMD);
+       String tempStr = theApp.LoadString(m_nVerSys == SourceControl::VCS_CLEARCASE ? IDS_CC_CMD : IDS_VSS_CMD);
        m_ctlVssL1.SetWindowText(tempStr.c_str());
-       m_ctlPath.EnableWindow(m_nVerSys == VCS_VSS4 || m_nVerSys == VCS_CLEARCASE);
-       m_ctlVssL1.EnableWindow(m_nVerSys == VCS_VSS4 || m_nVerSys == VCS_CLEARCASE);
-       m_ctlBrowse.EnableWindow(m_nVerSys == VCS_VSS4 || m_nVerSys == VCS_CLEARCASE);
+       m_ctlPath.EnableWindow(m_nVerSys == SourceControl::VCS_VSS4 || m_nVerSys == SourceControl::VCS_CLEARCASE);
+       m_ctlVssL1.EnableWindow(m_nVerSys == SourceControl::VCS_VSS4 || m_nVerSys == SourceControl::VCS_CLEARCASE);
+       m_ctlBrowse.EnableWindow(m_nVerSys == SourceControl::VCS_VSS4 || m_nVerSys == SourceControl::VCS_CLEARCASE);
 }
 
 /**
index f7347a2..aa37c66 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 #include "StdAfx.h"
+#include "SourceControl.h"
 #define POCO_NO_UNWINDOWS 1
 #include <Poco/Process.h>
 #include <Poco/Format.h>
@@ -67,10 +68,10 @@ BOOL CMergeApp::SaveToVersionControl(const String& strSavePath)
 
        switch(nVerSys)
        {
-       case VCS_NONE:  //no versioning system
+       case SourceControl::VCS_NONE:   //no versioning system
                // Already handled in CheckSavePath()
                break;
-       case VCS_VSS4:  // Visual Source Safe
+       case SourceControl::VCS_VSS4:   // Visual Source Safe
        {
                // Prompt for user choice
                CVssPromptDlg dlg;
@@ -130,7 +131,7 @@ BOOL CMergeApp::SaveToVersionControl(const String& strSavePath)
                        return FALSE; // User selected cancel
        }
        break;
-       case VCS_VSS5: // CVisual SourceSafe 5.0+ (COM)
+       case SourceControl::VCS_VSS5: // CVisual SourceSafe 5.0+ (COM)
        {
                // prompt for user choice
                CVssPromptDlg dlg;
@@ -315,7 +316,7 @@ BOOL CMergeApp::SaveToVersionControl(const String& strSavePath)
                        return FALSE; // User selected cancel
        }
        break;
-       case VCS_CLEARCASE:
+       case SourceControl::VCS_CLEARCASE:
        {
                // prompt for user choice
                CCCPromptDlg dlg;
diff --git a/Src/SourceControl.h b/Src/SourceControl.h
new file mode 100644 (file)
index 0000000..55426f1
--- /dev/null
@@ -0,0 +1,23 @@
+/** \r
+ * @file  SourceControl.h\r
+ *\r
+ * @brief Declaration file for SourceControl\r
+ */\r
+\r
+#pragma once\r
+\r
+class SourceControl\r
+{\r
+public:\r
+       /**\r
+        * @brief Supported versioncontrol systems.\r
+        */\r
+       enum\r
+       {\r
+               VCS_NONE = 0,\r
+               VCS_VSS4,\r
+               VCS_VSS5,\r
+               VCS_CLEARCASE,\r
+       };\r
+};\r
+\r