OSDN Git Service

Save and restore column widths for log and blame in registry.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseMerge / SetMainPage.cpp
1 // TortoiseMerge - a Diff/Patch program\r
2 \r
3 // Copyright (C) 2006-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #include "stdafx.h"\r
20 #include "TortoiseMerge.h"\r
21 #include "DirFileEnum.h"\r
22 #include "..\\version.h"\r
23 #include "AppUtils.h"\r
24 #include "PathUtils.h"\r
25 #include "SetMainPage.h"\r
26 #include ".\setmainpage.h"\r
27 \r
28 \r
29 // CSetMainPage dialog\r
30 \r
31 IMPLEMENT_DYNAMIC(CSetMainPage, CPropertyPage)\r
32 CSetMainPage::CSetMainPage()\r
33         : CPropertyPage(CSetMainPage::IDD)\r
34         , m_bBackup(FALSE)\r
35         , m_bFirstDiffOnLoad(FALSE)\r
36         , m_nTabSize(0)\r
37         , m_bIgnoreEOL(FALSE)\r
38         , m_bOnePane(FALSE)\r
39         , m_bViewLinenumbers(FALSE)\r
40         , m_bStrikeout(FALSE)\r
41         , m_bReloadNeeded(FALSE)\r
42         , m_bDisplayBinDiff(TRUE)\r
43         , m_bCaseInsensitive(FALSE)\r
44         , m_bUTF8Default(FALSE)\r
45 {\r
46         m_regBackup = CRegDWORD(_T("Software\\TortoiseMerge\\Backup"));\r
47         m_regFirstDiffOnLoad = CRegDWORD(_T("Software\\TortoiseMerge\\FirstDiffOnLoad"), TRUE);\r
48         m_regTabSize = CRegDWORD(_T("Software\\TortoiseMerge\\TabSize"), 4);\r
49         m_regIgnoreEOL = CRegDWORD(_T("Software\\TortoiseMerge\\IgnoreEOL"), TRUE);     \r
50         m_regOnePane = CRegDWORD(_T("Software\\TortoiseMerge\\OnePane"));\r
51         m_regIgnoreWS = CRegDWORD(_T("Software\\TortoiseMerge\\IgnoreWS"));\r
52         m_regViewLinenumbers = CRegDWORD(_T("Software\\TortoiseMerge\\ViewLinenumbers"), 1);\r
53         m_regStrikeout = CRegDWORD(_T("Software\\TortoiseMerge\\StrikeOut"), TRUE);\r
54         m_regFontName = CRegString(_T("Software\\TortoiseMerge\\LogFontName"), _T("Courier New"));\r
55         m_regFontSize = CRegDWORD(_T("Software\\TortoiseMerge\\LogFontSize"), 10);\r
56         m_regDisplayBinDiff = CRegDWORD(_T("Software\\TortoiseMerge\\DisplayBinDiff"), TRUE);\r
57         m_regCaseInsensitive = CRegDWORD(_T("Software\\TortoiseMerge\\CaseInsensitive"), FALSE);\r
58         m_regUTF8Default = CRegDWORD(_T("Software\\TortoiseMerge\\UseUTF8"), FALSE);\r
59 \r
60         m_bBackup = m_regBackup;\r
61         m_bFirstDiffOnLoad = m_regFirstDiffOnLoad;\r
62         m_nTabSize = m_regTabSize;\r
63         m_bIgnoreEOL = m_regIgnoreEOL;\r
64         m_bOnePane = m_regOnePane;\r
65         m_nIgnoreWS = m_regIgnoreWS;\r
66         m_bViewLinenumbers = m_regViewLinenumbers;\r
67         m_bStrikeout = m_regStrikeout;\r
68         m_bDisplayBinDiff = m_regDisplayBinDiff;\r
69         m_bCaseInsensitive = m_regCaseInsensitive;\r
70         m_bUTF8Default = m_regUTF8Default;\r
71 }\r
72 \r
73 CSetMainPage::~CSetMainPage()\r
74 {\r
75 }\r
76 \r
77 void CSetMainPage::DoDataExchange(CDataExchange* pDX)\r
78 {\r
79         CPropertyPage::DoDataExchange(pDX);\r
80         DDX_Check(pDX, IDC_BACKUP, m_bBackup);\r
81         DDX_Check(pDX, IDC_FIRSTDIFFONLOAD, m_bFirstDiffOnLoad);\r
82         DDX_Text(pDX, IDC_TABSIZE, m_nTabSize);\r
83         DDV_MinMaxInt(pDX, m_nTabSize, 1, 1000);\r
84         DDX_Check(pDX, IDC_IGNORELF, m_bIgnoreEOL);\r
85         DDX_Check(pDX, IDC_ONEPANE, m_bOnePane);\r
86         DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);\r
87         m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());\r
88         if ((m_dwFontSize==0)||(m_dwFontSize == -1))\r
89         {\r
90                 CString t;\r
91                 m_cFontSizes.GetWindowText(t);\r
92                 m_dwFontSize = _ttoi(t);\r
93         }\r
94         DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);\r
95         DDX_Check(pDX, IDC_LINENUMBERS, m_bViewLinenumbers);\r
96         DDX_Check(pDX, IDC_STRIKEOUT, m_bStrikeout);\r
97         DDX_Check(pDX, IDC_USEBDIFF, m_bDisplayBinDiff);\r
98         DDX_Check(pDX, IDC_CASEINSENSITIVE, m_bCaseInsensitive);\r
99         DDX_Check(pDX, IDC_UTF8DEFAULT, m_bUTF8Default);\r
100 }\r
101 \r
102 void CSetMainPage::SaveData()\r
103 {\r
104         m_regBackup = m_bBackup;\r
105         m_regFirstDiffOnLoad = m_bFirstDiffOnLoad;\r
106         m_regTabSize = m_nTabSize;\r
107         m_regIgnoreEOL = m_bIgnoreEOL;\r
108         m_regOnePane = m_bOnePane;\r
109         m_regIgnoreWS = m_nIgnoreWS;\r
110         m_regFontName = m_sFontName;\r
111         m_regFontSize = m_dwFontSize;\r
112         m_regViewLinenumbers = m_bViewLinenumbers;\r
113         m_regStrikeout = m_bStrikeout;\r
114         m_regDisplayBinDiff = m_bDisplayBinDiff;\r
115         m_regCaseInsensitive = m_bCaseInsensitive;\r
116         m_regUTF8Default = m_bUTF8Default;\r
117 }\r
118 \r
119 BOOL CSetMainPage::OnApply()\r
120 {\r
121         UpdateData();\r
122         if (m_cFontNames.GetSelFont())\r
123                 m_sFontName = m_cFontNames.GetSelFont()->m_strName;\r
124         else\r
125                 m_sFontName = m_regFontName;\r
126         SaveData();\r
127         SetModified(FALSE);\r
128         return CPropertyPage::OnApply();\r
129 }\r
130 \r
131 BOOL CSetMainPage::OnInitDialog()\r
132 {\r
133         CMFCFontComboBox::m_bDrawUsingFont = true;\r
134 \r
135         CPropertyPage::OnInitDialog();\r
136 \r
137         m_bBackup = m_regBackup;\r
138         m_bFirstDiffOnLoad = m_regFirstDiffOnLoad;\r
139         m_nTabSize = m_regTabSize;\r
140         m_bIgnoreEOL = m_regIgnoreEOL;\r
141         m_bOnePane = m_regOnePane;\r
142         m_nIgnoreWS = m_regIgnoreWS;\r
143         m_bDisplayBinDiff = m_regDisplayBinDiff;\r
144         m_sFontName = m_regFontName;\r
145         m_dwFontSize = m_regFontSize;\r
146         m_bViewLinenumbers = m_regViewLinenumbers;\r
147         m_bStrikeout = m_regStrikeout;\r
148         m_bCaseInsensitive = m_regCaseInsensitive;\r
149         m_bUTF8Default = m_regUTF8Default;\r
150 \r
151         UINT uRadio = IDC_WSCOMPARE;\r
152         switch (m_nIgnoreWS)\r
153         {\r
154         case 0:\r
155                 uRadio = IDC_WSCOMPARE;\r
156                 break;\r
157         case 1:\r
158                 uRadio = IDC_WSIGNOREALL;\r
159                 break;\r
160         case 2:\r
161                 uRadio = IDC_WSIGNORECHANGED;\r
162                 break;  \r
163         default:\r
164                 break;  \r
165         }\r
166 \r
167         CheckRadioButton(IDC_WSCOMPARE, IDC_WSIGNORECHANGED, uRadio);\r
168 \r
169         CString temp;\r
170         int count = 0;\r
171         for (int i=6; i<32; i=i+2)\r
172         {\r
173                 temp.Format(_T("%d"), i);\r
174                 m_cFontSizes.AddString(temp);\r
175                 m_cFontSizes.SetItemData(count++, i);\r
176         }\r
177         BOOL foundfont = FALSE;\r
178         for (int i=0; i<m_cFontSizes.GetCount(); i++)\r
179         {\r
180                 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)\r
181                 {\r
182                         m_cFontSizes.SetCurSel(i);\r
183                         foundfont = TRUE;\r
184                 }\r
185         }\r
186         if (!foundfont)\r
187         {\r
188                 temp.Format(_T("%d"), m_dwFontSize);\r
189                 m_cFontSizes.SetWindowText(temp);\r
190         }\r
191         m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);\r
192         m_cFontNames.SelectFont(m_sFontName);\r
193 \r
194         UpdateData(FALSE);\r
195         return TRUE;  // return TRUE unless you set the focus to a control\r
196         // EXCEPTION: OCX Property Pages should return FALSE\r
197 }\r
198 \r
199 BEGIN_MESSAGE_MAP(CSetMainPage, CPropertyPage)\r
200         ON_BN_CLICKED(IDC_BACKUP, &CSetMainPage::OnModified)\r
201         ON_BN_CLICKED(IDC_IGNORELF, &CSetMainPage::OnModifiedWithReload)\r
202         ON_BN_CLICKED(IDC_ONEPANE, &CSetMainPage::OnModified)\r
203         ON_BN_CLICKED(IDC_FIRSTDIFFONLOAD, &CSetMainPage::OnModified)\r
204         ON_BN_CLICKED(IDC_WSCOMPARE, &CSetMainPage::OnBnClickedWhitespace)\r
205         ON_BN_CLICKED(IDC_WSIGNORECHANGED, &CSetMainPage::OnBnClickedWhitespace)\r
206         ON_BN_CLICKED(IDC_WSIGNOREALL, &CSetMainPage::OnBnClickedWhitespace)\r
207         ON_BN_CLICKED(IDC_LINENUMBERS, &CSetMainPage::OnModified)\r
208         ON_BN_CLICKED(IDC_STRIKEOUT, &CSetMainPage::OnModified)\r
209         ON_EN_CHANGE(IDC_TABSIZE, &CSetMainPage::OnModified)\r
210         ON_CBN_SELCHANGE(IDC_FONTSIZES, &CSetMainPage::OnModified)\r
211         ON_CBN_SELCHANGE(IDC_FONTNAMES, &CSetMainPage::OnModified)\r
212         ON_BN_CLICKED(IDC_USEBDIFF, &CSetMainPage::OnModifiedWithReload)\r
213         ON_BN_CLICKED(IDC_CASEINSENSITIVE, &CSetMainPage::OnModified)\r
214         ON_BN_CLICKED(IDC_UTF8DEFAULT, &CSetMainPage::OnModified)\r
215 END_MESSAGE_MAP()\r
216 \r
217 \r
218 // CSetMainPage message handlers\r
219 \r
220 void CSetMainPage::OnModified()\r
221 {\r
222         SetModified();\r
223 }\r
224 \r
225 void CSetMainPage::OnModifiedWithReload()\r
226 {\r
227         m_bReloadNeeded = TRUE;\r
228         SetModified();\r
229 }\r
230 \r
231 void CSetMainPage::OnBnClickedWhitespace()\r
232 {\r
233         m_bReloadNeeded = TRUE;\r
234         SetModified();\r
235         UINT uRadio = GetCheckedRadioButton(IDC_WSCOMPARE, IDC_WSIGNORECHANGED);\r
236         switch (uRadio)\r
237         {\r
238         case IDC_WSCOMPARE:\r
239                 m_nIgnoreWS = 0;\r
240                 break;\r
241         case IDC_WSIGNOREALL:\r
242                 m_nIgnoreWS = 1;\r
243                 break;\r
244         case IDC_WSIGNORECHANGED:\r
245                 m_nIgnoreWS = 2;\r
246                 break;  \r
247         default:\r
248                 break;  \r
249         }\r
250 }\r
251 \r