OSDN Git Service

56a04534fdd918df90851a0b0fe9751152615fd3
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Settings / SetDialogs.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-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 "TortoiseProc.h"\r
21 #include "SetMainPage.h"\r
22 #include "AppUtils.h"\r
23 #include "DirFileEnum.h"\r
24 #include "SVNProgressDlg.h"\r
25 #include "..\version.h"\r
26 #include ".\setdialogs.h"\r
27 #include "SVN.h"\r
28 #include "MessageBox.h"\r
29 #include "BrowseFolder.h"\r
30 \r
31 IMPLEMENT_DYNAMIC(CSetDialogs, ISettingsPropPage)\r
32 CSetDialogs::CSetDialogs()\r
33         : ISettingsPropPage(CSetDialogs::IDD)\r
34         , m_sDefaultLogs(_T(""))\r
35         , m_bShortDateFormat(FALSE)\r
36         , m_dwFontSize(0)\r
37         , m_sFontName(_T(""))\r
38         , m_bUseWCURL(FALSE)\r
39         , m_sDefaultCheckoutPath(_T(""))\r
40         , m_sDefaultCheckoutUrl(_T(""))\r
41         , m_bDiffByDoubleClick(FALSE)\r
42         , m_bUseSystemLocaleForDates(FALSE)\r
43         , m_bUseRecycleBin(TRUE)\r
44 {\r
45         m_regAutoClose = CRegDWORD(_T("Software\\TortoiseSVN\\AutoClose"));\r
46         m_regDefaultLogs = CRegDWORD(_T("Software\\TortoiseSVN\\NumberOfLogs"), 100);\r
47         m_regShortDateFormat = CRegDWORD(_T("Software\\TortoiseSVN\\LogDateFormat"), FALSE);\r
48         m_regUseSystemLocaleForDates = CRegDWORD(_T("Software\\TortoiseSVN\\UseSystemLocaleForDates"), TRUE);\r
49         m_regFontName = CRegString(_T("Software\\TortoiseSVN\\LogFontName"), _T("Courier New"));\r
50         m_regFontSize = CRegDWORD(_T("Software\\TortoiseSVN\\LogFontSize"), 8);\r
51         m_regUseWCURL = CRegDWORD(_T("Software\\TortoiseSVN\\MergeWCURL"), FALSE);\r
52         m_regDefaultCheckoutPath = CRegString(_T("Software\\TortoiseSVN\\DefaultCheckoutPath"));\r
53         m_regDefaultCheckoutUrl = CRegString(_T("Software\\TortoiseSVN\\DefaultCheckoutUrl"));\r
54         m_regDiffByDoubleClick = CRegDWORD(_T("Software\\TortoiseSVN\\DiffByDoubleClickInLog"), FALSE);\r
55         m_regUseRecycleBin = CRegDWORD(_T("Software\\TortoiseSVN\\RevertWithRecycleBin"), TRUE);\r
56 }\r
57 \r
58 CSetDialogs::~CSetDialogs()\r
59 {\r
60 }\r
61 \r
62 void CSetDialogs::DoDataExchange(CDataExchange* pDX)\r
63 {\r
64         ISettingsPropPage::DoDataExchange(pDX);\r
65         DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);\r
66         m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());\r
67         if ((m_dwFontSize==0)||(m_dwFontSize == -1))\r
68         {\r
69                 CString t;\r
70                 m_cFontSizes.GetWindowText(t);\r
71                 m_dwFontSize = _ttoi(t);\r
72         }\r
73         DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);\r
74         DDX_Text(pDX, IDC_DEFAULTLOG, m_sDefaultLogs);\r
75         DDX_Check(pDX, IDC_SHORTDATEFORMAT, m_bShortDateFormat);\r
76         DDX_Control(pDX, IDC_AUTOCLOSECOMBO, m_cAutoClose);\r
77         DDX_Check(pDX, IDC_WCURLFROM, m_bUseWCURL);\r
78         DDX_Text(pDX, IDC_CHECKOUTPATH, m_sDefaultCheckoutPath);\r
79         DDX_Text(pDX, IDC_CHECKOUTURL, m_sDefaultCheckoutUrl);\r
80         DDX_Check(pDX, IDC_DIFFBYDOUBLECLICK, m_bDiffByDoubleClick);\r
81         DDX_Check(pDX, IDC_SYSTEMLOCALEFORDATES, m_bUseSystemLocaleForDates);\r
82         DDX_Check(pDX, IDC_USERECYCLEBIN, m_bUseRecycleBin);\r
83 }\r
84 \r
85 \r
86 BEGIN_MESSAGE_MAP(CSetDialogs, ISettingsPropPage)\r
87         ON_EN_CHANGE(IDC_DEFAULTLOG, OnChange)\r
88         ON_BN_CLICKED(IDC_SHORTDATEFORMAT, OnChange)\r
89         ON_BN_CLICKED(IDC_SYSTEMLOCALEFORDATES, OnChange)\r
90         ON_CBN_SELCHANGE(IDC_FONTSIZES, OnChange)\r
91         ON_CBN_SELCHANGE(IDC_FONTNAMES, OnChange)\r
92         ON_CBN_SELCHANGE(IDC_AUTOCLOSECOMBO, OnCbnSelchangeAutoclosecombo)\r
93         ON_BN_CLICKED(IDC_WCURLFROM, OnChange)\r
94         ON_BN_CLICKED(IDC_BROWSECHECKOUTPATH, &CSetDialogs::OnBnClickedBrowsecheckoutpath)\r
95         ON_EN_CHANGE(IDC_CHECKOUTPATH, OnChange)\r
96         ON_EN_CHANGE(IDC_CHECKOUTURL, OnChange)\r
97         ON_BN_CLICKED(IDC_DIFFBYDOUBLECLICK, OnChange)\r
98         ON_BN_CLICKED(IDC_USERECYCLEBIN, OnChange)\r
99 END_MESSAGE_MAP()\r
100 \r
101 \r
102 // CSetDialogs message handlers\r
103 BOOL CSetDialogs::OnInitDialog()\r
104 {\r
105         CMFCFontComboBox::m_bDrawUsingFont = true;\r
106 \r
107         ISettingsPropPage::OnInitDialog();\r
108 \r
109         EnableToolTips();\r
110 \r
111         int ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_MANUAL)));\r
112         m_cAutoClose.SetItemData(ind, CLOSE_MANUAL);\r
113         ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOMERGES)));\r
114         m_cAutoClose.SetItemData(ind, CLOSE_NOMERGES);\r
115         ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOCONFLICTS)));\r
116         m_cAutoClose.SetItemData(ind, CLOSE_NOCONFLICTS);\r
117         ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOERROR)));\r
118         m_cAutoClose.SetItemData(ind, CLOSE_NOERRORS);\r
119         ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_LOCAL)));\r
120         m_cAutoClose.SetItemData(ind, CLOSE_LOCAL);\r
121 \r
122         m_dwAutoClose = m_regAutoClose;\r
123         m_bShortDateFormat = m_regShortDateFormat;\r
124         m_bUseSystemLocaleForDates = m_regUseSystemLocaleForDates;\r
125         m_sFontName = m_regFontName;\r
126         m_dwFontSize = m_regFontSize;\r
127         m_bUseWCURL = m_regUseWCURL;\r
128         m_sDefaultCheckoutPath = m_regDefaultCheckoutPath;\r
129         m_sDefaultCheckoutUrl = m_regDefaultCheckoutUrl;\r
130         m_bDiffByDoubleClick = m_regDiffByDoubleClick;\r
131         m_bUseRecycleBin = m_regUseRecycleBin;\r
132 \r
133         SHAutoComplete(GetDlgItem(IDC_CHECKOUTPATH)->m_hWnd, SHACF_FILESYSTEM);\r
134         SHAutoComplete(GetDlgItem(IDC_CHECKOUTURL)->m_hWnd, SHACF_URLALL);\r
135 \r
136         for (int i=0; i<m_cAutoClose.GetCount(); ++i)\r
137                 if (m_cAutoClose.GetItemData(i)==m_dwAutoClose)\r
138                         m_cAutoClose.SetCurSel(i);\r
139 \r
140         CString temp;\r
141         temp.Format(_T("%ld"), (DWORD)m_regDefaultLogs);\r
142         m_sDefaultLogs = temp;\r
143 \r
144         m_tooltips.Create(this);\r
145         m_tooltips.AddTool(IDC_SHORTDATEFORMAT, IDS_SETTINGS_SHORTDATEFORMAT_TT);\r
146         m_tooltips.AddTool(IDC_SYSTEMLOCALEFORDATES, IDS_SETTINGS_USESYSTEMLOCALEFORDATES_TT);\r
147         m_tooltips.AddTool(IDC_AUTOCLOSECOMBO, IDS_SETTINGS_AUTOCLOSE_TT);\r
148         m_tooltips.AddTool(IDC_WCURLFROM, IDS_SETTINGS_USEWCURL_TT);\r
149         m_tooltips.AddTool(IDC_CHECKOUTPATH, IDS_SETTINGS_CHECKOUTPATH_TT);\r
150         m_tooltips.AddTool(IDC_CHECKOUTURL, IDS_SETTINGS_CHECKOUTURL_TT);\r
151         m_tooltips.AddTool(IDC_DIFFBYDOUBLECLICK, IDS_SETTINGS_DIFFBYDOUBLECLICK_TT);\r
152         m_tooltips.AddTool(IDC_USERECYCLEBIN, IDS_SETTINGS_USERECYCLEBIN_TT);\r
153 \r
154         int count = 0;\r
155         for (int i=6; i<32; i=i+2)\r
156         {\r
157                 temp.Format(_T("%d"), i);\r
158                 m_cFontSizes.AddString(temp);\r
159                 m_cFontSizes.SetItemData(count++, i);\r
160         }\r
161         BOOL foundfont = FALSE;\r
162         for (int i=0; i<m_cFontSizes.GetCount(); i++)\r
163         {\r
164                 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)\r
165                 {\r
166                         m_cFontSizes.SetCurSel(i);\r
167                         foundfont = TRUE;\r
168                 }\r
169         }\r
170         if (!foundfont)\r
171         {\r
172                 temp.Format(_T("%d"), m_dwFontSize);\r
173                 m_cFontSizes.SetWindowText(temp);\r
174         }\r
175 \r
176         m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);\r
177         m_cFontNames.SelectFont(m_sFontName);\r
178         \r
179         UpdateData(FALSE);\r
180         return TRUE;\r
181 }\r
182 \r
183 BOOL CSetDialogs::PreTranslateMessage(MSG* pMsg)\r
184 {\r
185         m_tooltips.RelayEvent(pMsg);\r
186         return ISettingsPropPage::PreTranslateMessage(pMsg);\r
187 }\r
188 \r
189 void CSetDialogs::OnChange()\r
190 {\r
191         SetModified();\r
192 }\r
193 \r
194 BOOL CSetDialogs::OnApply()\r
195 {\r
196         UpdateData();\r
197         if (m_cFontNames.GetSelFont())\r
198                 m_sFontName = m_cFontNames.GetSelFont()->m_strName;\r
199         else\r
200                 m_sFontName = m_regFontName;\r
201 \r
202     Store (m_dwAutoClose, m_regAutoClose);\r
203         Store (m_bShortDateFormat, m_regShortDateFormat);\r
204     Store (m_bUseSystemLocaleForDates, m_regUseSystemLocaleForDates);\r
205 \r
206     long val = _ttol(m_sDefaultLogs);\r
207     Store (val > 0 ? val : 100, m_regDefaultLogs);\r
208 \r
209     Store (m_sFontName, m_regFontName);\r
210     Store (m_dwFontSize, m_regFontSize);\r
211         Store (m_bUseWCURL, m_regUseWCURL);\r
212         Store (m_sDefaultCheckoutPath, m_regDefaultCheckoutPath);\r
213         Store (m_sDefaultCheckoutUrl, m_regDefaultCheckoutUrl);\r
214         Store (m_bDiffByDoubleClick, m_regDiffByDoubleClick);\r
215         Store (m_bUseRecycleBin, m_regUseRecycleBin);\r
216 \r
217     SetModified(FALSE);\r
218         return ISettingsPropPage::OnApply();\r
219 }\r
220 \r
221 void CSetDialogs::OnCbnSelchangeAutoclosecombo()\r
222 {\r
223         if (m_cAutoClose.GetCurSel() != CB_ERR)\r
224         {\r
225                 m_dwAutoClose = m_cAutoClose.GetItemData(m_cAutoClose.GetCurSel());\r
226         }\r
227         SetModified();\r
228 }\r
229 \r
230 void CSetDialogs::OnBnClickedBrowsecheckoutpath()\r
231 {\r
232         CBrowseFolder browser;\r
233         browser.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
234         CString strCheckoutDirectory;\r
235         if (browser.Show(GetSafeHwnd(), strCheckoutDirectory) == CBrowseFolder::OK) \r
236         {\r
237                 UpdateData(TRUE);\r
238                 m_sDefaultCheckoutPath = strCheckoutDirectory;\r
239                 UpdateData(FALSE);\r
240                 SetModified();\r
241         }\r
242 }\r
243 \r
244 \r
245 \r
246 \r
247 \r
248 \r
249 \r
250 \r
251 \r
252 \r
253 \r
254 \r
255 \r
256 \r