--- /dev/null
+// 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