OSDN Git Service

Setting dialog, remote list work.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Settings / SettingsProgsDiff.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2007 - 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 "TortoiseProc.h"\r
21 #include "AppUtils.h"\r
22 #include "StringUtils.h"\r
23 #include ".\settingsprogsdiff.h"\r
24 \r
25 \r
26 IMPLEMENT_DYNAMIC(CSettingsProgsDiff, ISettingsPropPage)\r
27 CSettingsProgsDiff::CSettingsProgsDiff()\r
28         : ISettingsPropPage(CSettingsProgsDiff::IDD)\r
29         , m_dlgAdvDiff(_T("Diff"))\r
30         , m_iExtDiff(0)\r
31         , m_sDiffPath(_T(""))\r
32         , m_iExtDiffProps(0)\r
33         , m_sDiffPropsPath(_T(""))\r
34         , m_regConvertBase(_T("Software\\TortoiseGit\\ConvertBase"), TRUE)\r
35         , m_bConvertBase(false)\r
36 {\r
37         m_regDiffPath = CRegString(_T("Software\\TortoiseGit\\Diff"));\r
38         m_regDiffPropsPath = CRegString(_T("Software\\TortoiseGit\\DiffProps"));\r
39 }\r
40 \r
41 CSettingsProgsDiff::~CSettingsProgsDiff()\r
42 {\r
43 }\r
44 \r
45 void CSettingsProgsDiff::DoDataExchange(CDataExchange* pDX)\r
46 {\r
47         ISettingsPropPage::DoDataExchange(pDX);\r
48         DDX_Text(pDX, IDC_EXTDIFF, m_sDiffPath);\r
49         DDX_Radio(pDX, IDC_EXTDIFF_OFF, m_iExtDiff);\r
50         DDX_Text(pDX, IDC_EXTDIFFPROPS, m_sDiffPropsPath);\r
51         DDX_Radio(pDX, IDC_EXTDIFFPROPS_OFF, m_iExtDiffProps);\r
52         DDX_Check(pDX, IDC_DONTCONVERT, m_bConvertBase);\r
53 \r
54         GetDlgItem(IDC_EXTDIFF)->EnableWindow(m_iExtDiff == 1);\r
55         GetDlgItem(IDC_EXTDIFFBROWSE)->EnableWindow(m_iExtDiff == 1);\r
56         GetDlgItem(IDC_EXTDIFFPROPS)->EnableWindow(m_iExtDiffProps == 1);\r
57         GetDlgItem(IDC_EXTDIFFPROPSBROWSE)->EnableWindow(m_iExtDiffProps == 1);\r
58         DDX_Control(pDX, IDC_EXTDIFF, m_cDiffEdit);\r
59         DDX_Control(pDX, IDC_EXTDIFFPROPS, m_cDiffPropsEdit);\r
60 }\r
61 \r
62 \r
63 BEGIN_MESSAGE_MAP(CSettingsProgsDiff, ISettingsPropPage)\r
64         ON_BN_CLICKED(IDC_EXTDIFF_OFF, OnBnClickedExtdiffOff)\r
65         ON_BN_CLICKED(IDC_EXTDIFF_ON, OnBnClickedExtdiffOn)\r
66         ON_BN_CLICKED(IDC_EXTDIFFBROWSE, OnBnClickedExtdiffbrowse)\r
67         ON_BN_CLICKED(IDC_EXTDIFFADVANCED, OnBnClickedExtdiffadvanced)\r
68         ON_BN_CLICKED(IDC_EXTDIFFPROPS_OFF, OnBnClickedExtdiffpropsOff)\r
69         ON_BN_CLICKED(IDC_EXTDIFFPROPS_ON, OnBnClickedExtdiffpropsOn)\r
70         ON_BN_CLICKED(IDC_EXTDIFFPROPSBROWSE, OnBnClickedExtdiffpropsbrowse)\r
71         ON_BN_CLICKED(IDC_DONTCONVERT, OnBnClickedDontconvert)\r
72         ON_EN_CHANGE(IDC_EXTDIFF, OnEnChangeExtdiff)\r
73         ON_EN_CHANGE(IDC_EXTDIFFPROPS, OnEnChangeExtdiffprops)\r
74 END_MESSAGE_MAP()\r
75 \r
76 \r
77 BOOL CSettingsProgsDiff::OnInitDialog()\r
78 {\r
79         EnableToolTips();\r
80 \r
81         m_sDiffPath = m_regDiffPath;\r
82         m_iExtDiff = IsExternal(m_sDiffPath);\r
83 \r
84         m_sDiffPropsPath = m_regDiffPropsPath;\r
85         m_iExtDiffProps = IsExternal(m_sDiffPropsPath);\r
86 \r
87         SHAutoComplete(::GetDlgItem(m_hWnd, IDC_EXTDIFF), SHACF_FILESYSTEM | SHACF_FILESYS_ONLY);\r
88 \r
89         m_bConvertBase = m_regConvertBase;\r
90 \r
91         m_tooltips.Create(this);\r
92         m_tooltips.AddTool(IDC_EXTDIFF, IDS_SETTINGS_EXTDIFF_TT);\r
93         m_tooltips.AddTool(IDC_DONTCONVERT, IDS_SETTINGS_CONVERTBASE_TT);\r
94 \r
95         UpdateData(FALSE);\r
96         return TRUE;\r
97 }\r
98 \r
99 BOOL CSettingsProgsDiff::PreTranslateMessage(MSG* pMsg)\r
100 {\r
101         m_tooltips.RelayEvent(pMsg);\r
102         return ISettingsPropPage::PreTranslateMessage(pMsg);\r
103 }\r
104 \r
105 BOOL CSettingsProgsDiff::OnApply()\r
106 {\r
107         UpdateData();\r
108         if (m_iExtDiff == 0 && !m_sDiffPath.IsEmpty() && m_sDiffPath.Left(1) != _T("#"))\r
109         {\r
110                 m_sDiffPath = _T("#") + m_sDiffPath;\r
111         }\r
112         m_regDiffPath = m_sDiffPath;\r
113 \r
114         if (m_iExtDiffProps == 0 && !m_sDiffPropsPath.IsEmpty() && m_sDiffPropsPath.Left(1) != _T("#"))\r
115         {\r
116                 m_sDiffPropsPath = _T("#") + m_sDiffPropsPath;\r
117         }\r
118         m_regDiffPropsPath = m_sDiffPropsPath;\r
119 \r
120         m_regConvertBase = m_bConvertBase;\r
121         m_dlgAdvDiff.SaveData();\r
122         SetModified(FALSE);\r
123         return ISettingsPropPage::OnApply();\r
124 }\r
125 \r
126 void CSettingsProgsDiff::OnBnClickedExtdiffOff()\r
127 {\r
128         m_iExtDiff = 0;\r
129         SetModified();\r
130         GetDlgItem(IDC_EXTDIFF)->EnableWindow(false);\r
131         GetDlgItem(IDC_EXTDIFFBROWSE)->EnableWindow(false);\r
132         CheckProgComment();\r
133 }\r
134 \r
135 void CSettingsProgsDiff::OnBnClickedExtdiffpropsOff()\r
136 {\r
137         m_iExtDiffProps = 0;\r
138         SetModified();\r
139         GetDlgItem(IDC_EXTDIFFPROPS)->EnableWindow(false);\r
140         GetDlgItem(IDC_EXTDIFFPROPSBROWSE)->EnableWindow(false);\r
141         CheckProgCommentProps();\r
142 }\r
143 \r
144 void CSettingsProgsDiff::OnBnClickedExtdiffOn()\r
145 {\r
146         m_iExtDiff = 1;\r
147         SetModified();\r
148         GetDlgItem(IDC_EXTDIFF)->EnableWindow(true);\r
149         GetDlgItem(IDC_EXTDIFFBROWSE)->EnableWindow(true);\r
150         GetDlgItem(IDC_EXTDIFF)->SetFocus();\r
151         CheckProgComment();\r
152 }\r
153 \r
154 void CSettingsProgsDiff::OnBnClickedExtdiffpropsOn()\r
155 {\r
156         m_iExtDiffProps = 1;\r
157         SetModified();\r
158         GetDlgItem(IDC_EXTDIFFPROPS)->EnableWindow(true);\r
159         GetDlgItem(IDC_EXTDIFFPROPSBROWSE)->EnableWindow(true);\r
160         GetDlgItem(IDC_EXTDIFFPROPS)->SetFocus();\r
161         CheckProgCommentProps();\r
162 }\r
163 \r
164 void CSettingsProgsDiff::OnBnClickedExtdiffbrowse()\r
165 {\r
166         if (CAppUtils::FileOpenSave(m_sDiffPath, NULL, IDS_SETTINGS_SELECTDIFF, IDS_PROGRAMSFILEFILTER, true, m_hWnd))\r
167         {\r
168                 UpdateData(FALSE);\r
169                 SetModified();\r
170         }\r
171 }\r
172 \r
173 void CSettingsProgsDiff::OnBnClickedExtdiffpropsbrowse()\r
174 {\r
175         if (CAppUtils::FileOpenSave(m_sDiffPropsPath, NULL, IDS_SETTINGS_SELECTDIFF, IDS_PROGRAMSFILEFILTER, true, m_hWnd))\r
176         {\r
177                 UpdateData(FALSE);\r
178                 SetModified();\r
179         }\r
180 }\r
181 \r
182 void CSettingsProgsDiff::OnBnClickedExtdiffadvanced()\r
183 {\r
184         if (m_dlgAdvDiff.DoModal() == IDOK)\r
185                 SetModified();\r
186 }\r
187 \r
188 void CSettingsProgsDiff::OnBnClickedDontconvert()\r
189 {\r
190         SetModified();\r
191 }\r
192 \r
193 void CSettingsProgsDiff::OnEnChangeExtdiff()\r
194 {\r
195         SetModified();\r
196 }\r
197 \r
198 void CSettingsProgsDiff::OnEnChangeExtdiffprops()\r
199 {\r
200         SetModified();\r
201 }\r
202 \r
203 void CSettingsProgsDiff::CheckProgComment()\r
204 {\r
205         UpdateData();\r
206         if (m_iExtDiff == 0 && !m_sDiffPath.IsEmpty() && m_sDiffPath.Left(1) != _T("#"))\r
207                 m_sDiffPath = _T("#") + m_sDiffPath;\r
208         else if (m_iExtDiff == 1)\r
209                 m_sDiffPath.TrimLeft('#');\r
210         UpdateData(FALSE);\r
211 }\r
212 \r
213 void CSettingsProgsDiff::CheckProgCommentProps()\r
214 {\r
215         UpdateData();\r
216         if (m_iExtDiffProps == 0 && !m_sDiffPropsPath.IsEmpty() && m_sDiffPropsPath.Left(1) != _T("#"))\r
217                 m_sDiffPropsPath = _T("#") + m_sDiffPropsPath;\r
218         else if (m_iExtDiffProps == 1)\r
219                 m_sDiffPropsPath.TrimLeft('#');\r
220         UpdateData(FALSE);\r
221 }\r