OSDN Git Service

Change Dir Structure to be same as TortoiseSVN'
[tortoisegit/TortoiseGitJp.git] / src / TortoiseMerge / SetMainPage.cpp
diff --git a/src/TortoiseMerge/SetMainPage.cpp b/src/TortoiseMerge/SetMainPage.cpp
new file mode 100644 (file)
index 0000000..1541657
--- /dev/null
@@ -0,0 +1,251 @@
+// TortoiseMerge - a Diff/Patch program\r
+\r
+// Copyright (C) 2006-2008 - TortoiseSVN\r
+\r
+// This program is free software; you can redistribute it and/or\r
+// modify it under the terms of the GNU General Public License\r
+// as published by the Free Software Foundation; either version 2\r
+// of the License, or (at your option) any later version.\r
+\r
+// This program is distributed in the hope that it will be useful,\r
+// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+// GNU General Public License for more details.\r
+\r
+// You should have received a copy of the GNU General Public License\r
+// along with this program; if not, write to the Free Software Foundation,\r
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
+//\r
+#include "stdafx.h"\r
+#include "TortoiseMerge.h"\r
+#include "DirFileEnum.h"\r
+#include "version.h"\r
+#include "AppUtils.h"\r
+#include "PathUtils.h"\r
+#include "SetMainPage.h"\r
+#include ".\setmainpage.h"\r
+\r
+\r
+// CSetMainPage dialog\r
+\r
+IMPLEMENT_DYNAMIC(CSetMainPage, CPropertyPage)\r
+CSetMainPage::CSetMainPage()\r
+       : CPropertyPage(CSetMainPage::IDD)\r
+       , m_bBackup(FALSE)\r
+       , m_bFirstDiffOnLoad(FALSE)\r
+       , m_nTabSize(0)\r
+       , m_bIgnoreEOL(FALSE)\r
+       , m_bOnePane(FALSE)\r
+       , m_bViewLinenumbers(FALSE)\r
+       , m_bStrikeout(FALSE)\r
+       , m_bReloadNeeded(FALSE)\r
+       , m_bDisplayBinDiff(TRUE)\r
+       , m_bCaseInsensitive(FALSE)\r
+       , m_bUTF8Default(FALSE)\r
+{\r
+       m_regBackup = CRegDWORD(_T("Software\\TortoiseMerge\\Backup"));\r
+       m_regFirstDiffOnLoad = CRegDWORD(_T("Software\\TortoiseMerge\\FirstDiffOnLoad"), TRUE);\r
+       m_regTabSize = CRegDWORD(_T("Software\\TortoiseMerge\\TabSize"), 4);\r
+       m_regIgnoreEOL = CRegDWORD(_T("Software\\TortoiseMerge\\IgnoreEOL"), TRUE);     \r
+       m_regOnePane = CRegDWORD(_T("Software\\TortoiseMerge\\OnePane"));\r
+       m_regIgnoreWS = CRegDWORD(_T("Software\\TortoiseMerge\\IgnoreWS"));\r
+       m_regViewLinenumbers = CRegDWORD(_T("Software\\TortoiseMerge\\ViewLinenumbers"), 1);\r
+       m_regStrikeout = CRegDWORD(_T("Software\\TortoiseMerge\\StrikeOut"), TRUE);\r
+       m_regFontName = CRegString(_T("Software\\TortoiseMerge\\LogFontName"), _T("Courier New"));\r
+       m_regFontSize = CRegDWORD(_T("Software\\TortoiseMerge\\LogFontSize"), 10);\r
+       m_regDisplayBinDiff = CRegDWORD(_T("Software\\TortoiseMerge\\DisplayBinDiff"), TRUE);\r
+       m_regCaseInsensitive = CRegDWORD(_T("Software\\TortoiseMerge\\CaseInsensitive"), FALSE);\r
+       m_regUTF8Default = CRegDWORD(_T("Software\\TortoiseMerge\\UseUTF8"), FALSE);\r
+\r
+       m_bBackup = m_regBackup;\r
+       m_bFirstDiffOnLoad = m_regFirstDiffOnLoad;\r
+       m_nTabSize = m_regTabSize;\r
+       m_bIgnoreEOL = m_regIgnoreEOL;\r
+       m_bOnePane = m_regOnePane;\r
+       m_nIgnoreWS = m_regIgnoreWS;\r
+       m_bViewLinenumbers = m_regViewLinenumbers;\r
+       m_bStrikeout = m_regStrikeout;\r
+       m_bDisplayBinDiff = m_regDisplayBinDiff;\r
+       m_bCaseInsensitive = m_regCaseInsensitive;\r
+       m_bUTF8Default = m_regUTF8Default;\r
+}\r
+\r
+CSetMainPage::~CSetMainPage()\r
+{\r
+}\r
+\r
+void CSetMainPage::DoDataExchange(CDataExchange* pDX)\r
+{\r
+       CPropertyPage::DoDataExchange(pDX);\r
+       DDX_Check(pDX, IDC_BACKUP, m_bBackup);\r
+       DDX_Check(pDX, IDC_FIRSTDIFFONLOAD, m_bFirstDiffOnLoad);\r
+       DDX_Text(pDX, IDC_TABSIZE, m_nTabSize);\r
+       DDV_MinMaxInt(pDX, m_nTabSize, 1, 1000);\r
+       DDX_Check(pDX, IDC_IGNORELF, m_bIgnoreEOL);\r
+       DDX_Check(pDX, IDC_ONEPANE, m_bOnePane);\r
+       DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);\r
+       m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());\r
+       if ((m_dwFontSize==0)||(m_dwFontSize == -1))\r
+       {\r
+               CString t;\r
+               m_cFontSizes.GetWindowText(t);\r
+               m_dwFontSize = _ttoi(t);\r
+       }\r
+       DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);\r
+       DDX_Check(pDX, IDC_LINENUMBERS, m_bViewLinenumbers);\r
+       DDX_Check(pDX, IDC_STRIKEOUT, m_bStrikeout);\r
+       DDX_Check(pDX, IDC_USEBDIFF, m_bDisplayBinDiff);\r
+       DDX_Check(pDX, IDC_CASEINSENSITIVE, m_bCaseInsensitive);\r
+       DDX_Check(pDX, IDC_UTF8DEFAULT, m_bUTF8Default);\r
+}\r
+\r
+void CSetMainPage::SaveData()\r
+{\r
+       m_regBackup = m_bBackup;\r
+       m_regFirstDiffOnLoad = m_bFirstDiffOnLoad;\r
+       m_regTabSize = m_nTabSize;\r
+       m_regIgnoreEOL = m_bIgnoreEOL;\r
+       m_regOnePane = m_bOnePane;\r
+       m_regIgnoreWS = m_nIgnoreWS;\r
+       m_regFontName = m_sFontName;\r
+       m_regFontSize = m_dwFontSize;\r
+       m_regViewLinenumbers = m_bViewLinenumbers;\r
+       m_regStrikeout = m_bStrikeout;\r
+       m_regDisplayBinDiff = m_bDisplayBinDiff;\r
+       m_regCaseInsensitive = m_bCaseInsensitive;\r
+       m_regUTF8Default = m_bUTF8Default;\r
+}\r
+\r
+BOOL CSetMainPage::OnApply()\r
+{\r
+       UpdateData();\r
+       if (m_cFontNames.GetSelFont())\r
+               m_sFontName = m_cFontNames.GetSelFont()->m_strName;\r
+       else\r
+               m_sFontName = m_regFontName;\r
+       SaveData();\r
+       SetModified(FALSE);\r
+       return CPropertyPage::OnApply();\r
+}\r
+\r
+BOOL CSetMainPage::OnInitDialog()\r
+{\r
+       CMFCFontComboBox::m_bDrawUsingFont = true;\r
+\r
+       CPropertyPage::OnInitDialog();\r
+\r
+       m_bBackup = m_regBackup;\r
+       m_bFirstDiffOnLoad = m_regFirstDiffOnLoad;\r
+       m_nTabSize = m_regTabSize;\r
+       m_bIgnoreEOL = m_regIgnoreEOL;\r
+       m_bOnePane = m_regOnePane;\r
+       m_nIgnoreWS = m_regIgnoreWS;\r
+       m_bDisplayBinDiff = m_regDisplayBinDiff;\r
+       m_sFontName = m_regFontName;\r
+       m_dwFontSize = m_regFontSize;\r
+       m_bViewLinenumbers = m_regViewLinenumbers;\r
+       m_bStrikeout = m_regStrikeout;\r
+       m_bCaseInsensitive = m_regCaseInsensitive;\r
+       m_bUTF8Default = m_regUTF8Default;\r
+\r
+       UINT uRadio = IDC_WSCOMPARE;\r
+       switch (m_nIgnoreWS)\r
+       {\r
+       case 0:\r
+               uRadio = IDC_WSCOMPARE;\r
+               break;\r
+       case 1:\r
+               uRadio = IDC_WSIGNOREALL;\r
+               break;\r
+       case 2:\r
+               uRadio = IDC_WSIGNORECHANGED;\r
+               break;  \r
+       default:\r
+               break;  \r
+       }\r
+\r
+       CheckRadioButton(IDC_WSCOMPARE, IDC_WSIGNORECHANGED, uRadio);\r
+\r
+       CString temp;\r
+       int count = 0;\r
+       for (int i=6; i<32; i=i+2)\r
+       {\r
+               temp.Format(_T("%d"), i);\r
+               m_cFontSizes.AddString(temp);\r
+               m_cFontSizes.SetItemData(count++, i);\r
+       }\r
+       BOOL foundfont = FALSE;\r
+       for (int i=0; i<m_cFontSizes.GetCount(); i++)\r
+       {\r
+               if (m_cFontSizes.GetItemData(i) == m_dwFontSize)\r
+               {\r
+                       m_cFontSizes.SetCurSel(i);\r
+                       foundfont = TRUE;\r
+               }\r
+       }\r
+       if (!foundfont)\r
+       {\r
+               temp.Format(_T("%d"), m_dwFontSize);\r
+               m_cFontSizes.SetWindowText(temp);\r
+       }\r
+       m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);\r
+       m_cFontNames.SelectFont(m_sFontName);\r
+\r
+       UpdateData(FALSE);\r
+       return TRUE;  // return TRUE unless you set the focus to a control\r
+       // EXCEPTION: OCX Property Pages should return FALSE\r
+}\r
+\r
+BEGIN_MESSAGE_MAP(CSetMainPage, CPropertyPage)\r
+       ON_BN_CLICKED(IDC_BACKUP, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_IGNORELF, &CSetMainPage::OnModifiedWithReload)\r
+       ON_BN_CLICKED(IDC_ONEPANE, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_FIRSTDIFFONLOAD, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_WSCOMPARE, &CSetMainPage::OnBnClickedWhitespace)\r
+       ON_BN_CLICKED(IDC_WSIGNORECHANGED, &CSetMainPage::OnBnClickedWhitespace)\r
+       ON_BN_CLICKED(IDC_WSIGNOREALL, &CSetMainPage::OnBnClickedWhitespace)\r
+       ON_BN_CLICKED(IDC_LINENUMBERS, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_STRIKEOUT, &CSetMainPage::OnModified)\r
+       ON_EN_CHANGE(IDC_TABSIZE, &CSetMainPage::OnModified)\r
+       ON_CBN_SELCHANGE(IDC_FONTSIZES, &CSetMainPage::OnModified)\r
+       ON_CBN_SELCHANGE(IDC_FONTNAMES, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_USEBDIFF, &CSetMainPage::OnModifiedWithReload)\r
+       ON_BN_CLICKED(IDC_CASEINSENSITIVE, &CSetMainPage::OnModified)\r
+       ON_BN_CLICKED(IDC_UTF8DEFAULT, &CSetMainPage::OnModified)\r
+END_MESSAGE_MAP()\r
+\r
+\r
+// CSetMainPage message handlers\r
+\r
+void CSetMainPage::OnModified()\r
+{\r
+       SetModified();\r
+}\r
+\r
+void CSetMainPage::OnModifiedWithReload()\r
+{\r
+       m_bReloadNeeded = TRUE;\r
+       SetModified();\r
+}\r
+\r
+void CSetMainPage::OnBnClickedWhitespace()\r
+{\r
+       m_bReloadNeeded = TRUE;\r
+       SetModified();\r
+       UINT uRadio = GetCheckedRadioButton(IDC_WSCOMPARE, IDC_WSIGNORECHANGED);\r
+       switch (uRadio)\r
+       {\r
+       case IDC_WSCOMPARE:\r
+               m_nIgnoreWS = 0;\r
+               break;\r
+       case IDC_WSIGNOREALL:\r
+               m_nIgnoreWS = 1;\r
+               break;\r
+       case IDC_WSIGNORECHANGED:\r
+               m_nIgnoreWS = 2;\r
+               break;  \r
+       default:\r
+               break;  \r
+       }\r
+}\r
+\r