1 // TortoiseSVN - a Windows shell extension for easy version control
\r
3 // Copyright (C) 2003-2008 - TortoiseSVN
\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
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
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
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
28 #include "MessageBox.h"
\r
29 #include "BrowseFolder.h"
\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
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
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
58 CSetDialogs::~CSetDialogs()
\r
62 void CSetDialogs::DoDataExchange(CDataExchange* pDX)
\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
70 m_cFontSizes.GetWindowText(t);
\r
71 m_dwFontSize = _ttoi(t);
\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
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
102 // CSetDialogs message handlers
\r
103 BOOL CSetDialogs::OnInitDialog()
\r
105 CMFCFontComboBox::m_bDrawUsingFont = true;
\r
107 ISettingsPropPage::OnInitDialog();
\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
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
133 SHAutoComplete(GetDlgItem(IDC_CHECKOUTPATH)->m_hWnd, SHACF_FILESYSTEM);
\r
134 SHAutoComplete(GetDlgItem(IDC_CHECKOUTURL)->m_hWnd, SHACF_URLALL);
\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
141 temp.Format(_T("%ld"), (DWORD)m_regDefaultLogs);
\r
142 m_sDefaultLogs = temp;
\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
155 for (int i=6; i<32; i=i+2)
\r
157 temp.Format(_T("%d"), i);
\r
158 m_cFontSizes.AddString(temp);
\r
159 m_cFontSizes.SetItemData(count++, i);
\r
161 BOOL foundfont = FALSE;
\r
162 for (int i=0; i<m_cFontSizes.GetCount(); i++)
\r
164 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)
\r
166 m_cFontSizes.SetCurSel(i);
\r
172 temp.Format(_T("%d"), m_dwFontSize);
\r
173 m_cFontSizes.SetWindowText(temp);
\r
176 m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);
\r
177 m_cFontNames.SelectFont(m_sFontName);
\r
183 BOOL CSetDialogs::PreTranslateMessage(MSG* pMsg)
\r
185 m_tooltips.RelayEvent(pMsg);
\r
186 return ISettingsPropPage::PreTranslateMessage(pMsg);
\r
189 void CSetDialogs::OnChange()
\r
194 BOOL CSetDialogs::OnApply()
\r
197 if (m_cFontNames.GetSelFont())
\r
198 m_sFontName = m_cFontNames.GetSelFont()->m_strName;
\r
200 m_sFontName = m_regFontName;
\r
202 Store (m_dwAutoClose, m_regAutoClose);
\r
203 Store (m_bShortDateFormat, m_regShortDateFormat);
\r
204 Store (m_bUseSystemLocaleForDates, m_regUseSystemLocaleForDates);
\r
206 long val = _ttol(m_sDefaultLogs);
\r
207 Store (val > 0 ? val : 100, m_regDefaultLogs);
\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
217 SetModified(FALSE);
\r
218 return ISettingsPropPage::OnApply();
\r
221 void CSetDialogs::OnCbnSelchangeAutoclosecombo()
\r
223 if (m_cAutoClose.GetCurSel() != CB_ERR)
\r
225 m_dwAutoClose = m_cAutoClose.GetItemData(m_cAutoClose.GetCurSel());
\r
230 void CSetDialogs::OnBnClickedBrowsecheckoutpath()
\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
238 m_sDefaultCheckoutPath = strCheckoutDirectory;
\r