No need to explicitly initialize CString and use Empty() for clearing CString
[TortoiseGit.git] / src / TortoiseProc / Settings / SetDialogs.cpp
blobaf5ae2907325ead5611b6f1946ad8d9956c760f3
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2015 - TortoiseGit
4 // Copyright (C) 2003-2008 - TortoiseSVN
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software Foundation,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include "stdafx.h"
21 #include "TortoiseProc.h"
22 #include "SetMainPage.h"
23 #include "AppUtils.h"
24 #include "GitProgressDlg.h"
25 #include "SetDialogs.h"
27 IMPLEMENT_DYNAMIC(CSetDialogs, ISettingsPropPage)
28 CSetDialogs::CSetDialogs()
29 : ISettingsPropPage(CSetDialogs::IDD)
30 , m_bShortDateFormat(FALSE)
31 , m_bRelativeTimes(FALSE)
32 , m_bAsteriskLogPrefix(TRUE)
33 , m_dwFontSize(0)
34 , m_bDiffByDoubleClick(FALSE)
35 , m_bUseSystemLocaleForDates(FALSE)
36 , m_bAbbreviateRenamings(FALSE)
37 , m_bSymbolizeRefNames(FALSE)
38 , m_bEnableLogCache(TRUE)
39 , m_bDrawBranchesTagsOnRightSide(FALSE)
40 , m_bEnableGravatar(FALSE)
41 , m_bShowDescribe(FALSE)
42 , m_DescribeStrategy(GIT_DESCRIBE_DEFAULT)
43 , m_DescribeAbbreviatedSize(GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE)
44 , m_bDescribeAlwaysLong(FALSE)
45 , m_bFullCommitMessageOnLogLine(FALSE)
47 m_regDefaultLogs = CRegDWORD(_T("Software\\TortoiseGit\\LogDialog\\NumberOfLogs"), 1);
48 m_regDefaultLogsScale = CRegDWORD(_T("Software\\TortoiseGit\\LogDialog\\NumberOfLogsScale"), CFilterData::SHOW_NO_LIMIT);
49 m_regShortDateFormat = CRegDWORD(_T("Software\\TortoiseGit\\LogDateFormat"), TRUE);
50 m_regRelativeTimes = CRegDWORD(_T("Software\\TortoiseGit\\RelativeTimes"), FALSE);
51 m_regAsteriskLogPrefix = CRegDWORD(_T("Software\\TortoiseGit\\AsteriskLogPrefix"), TRUE);
52 m_regUseSystemLocaleForDates = CRegDWORD(_T("Software\\TortoiseGit\\UseSystemLocaleForDates"), TRUE);
53 m_regFontName = CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New"));
54 m_regFontSize = CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8);
55 m_regDiffByDoubleClick = CRegDWORD(_T("Software\\TortoiseGit\\DiffByDoubleClickInLog"), FALSE);
56 m_regAbbreviateRenamings = CRegDWORD(_T("Software\\TortoiseGit\\AbbreviateRenamings"), FALSE);
57 m_regSymbolizeRefNames = CRegDWORD(_T("Software\\TortoiseGit\\SymbolizeRefNames"), FALSE);
58 m_regEnableLogCache = CRegDWORD(_T("Software\\TortoiseGit\\EnableLogCache"), TRUE);
59 m_regEnableGravatar = CRegDWORD(_T("Software\\TortoiseGit\\EnableGravatar"), FALSE);
60 m_regGravatarUrl = CRegString(_T("Software\\TortoiseGit\\GravatarUrl"), _T("http://www.gravatar.com/avatar/%HASH%?d=identicon"));
61 m_regDrawBranchesTagsOnRightSide = CRegDWORD(_T("Software\\TortoiseGit\\DrawTagsBranchesOnRightSide"), FALSE);
62 m_regShowDescribe = CRegDWORD(_T("Software\\TortoiseGit\\ShowDescribe"), FALSE);
63 m_regDescribeStrategy = CRegDWORD(_T("Software\\TortoiseGit\\DescribeStrategy"), GIT_DESCRIBE_DEFAULT);
64 m_regDescribeAbbreviatedSize = CRegDWORD(_T("Software\\TortoiseGit\\DescribeAbbreviatedSize"), GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE);
65 m_regDescribeAlwaysLong = CRegDWORD(_T("Software\\TortoiseGit\\DescribeAlwaysLong"), FALSE);
66 m_regFullCommitMessageOnLogLine = CRegDWORD(_T("Software\\TortoiseGit\\FullCommitMessageOnLogLine"), FALSE);
69 CSetDialogs::~CSetDialogs()
73 void CSetDialogs::DoDataExchange(CDataExchange* pDX)
75 ISettingsPropPage::DoDataExchange(pDX);
76 DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);
77 m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());
78 if ((m_dwFontSize==0)||(m_dwFontSize == -1))
80 CString t;
81 m_cFontSizes.GetWindowText(t);
82 m_dwFontSize = _ttoi(t);
84 DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);
85 DDX_Text(pDX, IDC_DEFAULT_NUMBER_OF, m_sDefaultLogs);
86 DDX_Control(pDX, IDC_DEFAULT_SCALE, m_cDefaultLogsScale);
87 DDX_Check(pDX, IDC_SHORTDATEFORMAT, m_bShortDateFormat);
88 DDX_Check(pDX, IDC_RELATIVETIMES, m_bRelativeTimes);
89 DDX_Check(pDX, IDC_ASTERISKLOGPREFIX, m_bAsteriskLogPrefix);
90 DDX_Check(pDX, IDC_DIFFBYDOUBLECLICK, m_bDiffByDoubleClick);
91 DDX_Check(pDX, IDC_SYSTEMLOCALEFORDATES, m_bUseSystemLocaleForDates);
92 DDX_Check(pDX, IDC_ABBREVIATERENAMINGS, m_bAbbreviateRenamings);
93 DDX_Check(pDX, IDC_SYMBOLIZEREFNAMES, m_bSymbolizeRefNames);
94 DDX_Check(pDX, IDC_ENABLELOGCACHE, m_bEnableLogCache);
95 DDX_Check(pDX, IDC_ENABLEGRAVATAR, m_bEnableGravatar);
96 DDX_Text(pDX, IDC_GRAVATARURL, m_GravatarUrl);
97 DDX_Control(pDX, IDC_GRAVATARURL, m_cGravatarUrl);
98 DDX_Check(pDX, IDC_RIGHTSIDEBRANCHESTAGS, m_bDrawBranchesTagsOnRightSide);
99 DDX_Check(pDX, IDC_SHOWDESCRIBE, m_bShowDescribe);
100 DDX_CBIndex(pDX, IDC_DESCRIBESTRATEGY, m_DescribeStrategy);
101 DDX_Control(pDX, IDC_DESCRIBESTRATEGY, m_cDescribeStrategy);
102 DDX_Text(pDX, IDC_DESCRIBEABBREVIATEDSIZE, m_DescribeAbbreviatedSize);
103 DDX_Check(pDX, IDC_DESCRIBEALWAYSLONG, m_bDescribeAlwaysLong);
104 DDX_Check(pDX, IDC_FULLCOMMITMESSAGEONLOGLINE, m_bFullCommitMessageOnLogLine);
105 DDX_Control(pDX, IDC_DEFAULT_NUMBER_OF, m_DefaultNumberOfCtl);
108 BEGIN_MESSAGE_MAP(CSetDialogs, ISettingsPropPage)
109 ON_EN_CHANGE(IDC_DEFAULT_NUMBER_OF, OnChange)
110 ON_CBN_SELCHANGE(IDC_DEFAULT_SCALE, OnCbnSelchangeDefaultlogscale)
111 ON_BN_CLICKED(IDC_SHORTDATEFORMAT, OnChange)
112 ON_BN_CLICKED(IDC_RELATIVETIMES, OnChange)
113 ON_BN_CLICKED(IDC_ASTERISKLOGPREFIX, OnChange)
114 ON_BN_CLICKED(IDC_SYSTEMLOCALEFORDATES, OnChange)
115 ON_CBN_SELCHANGE(IDC_FONTSIZES, OnChange)
116 ON_CBN_SELCHANGE(IDC_FONTNAMES, OnChange)
117 ON_BN_CLICKED(IDC_DIFFBYDOUBLECLICK, OnChange)
118 ON_BN_CLICKED(IDC_ABBREVIATERENAMINGS, OnChange)
119 ON_BN_CLICKED(IDC_SYMBOLIZEREFNAMES, OnChange)
120 ON_BN_CLICKED(IDC_ENABLELOGCACHE, OnChange)
121 ON_BN_CLICKED(IDC_ENABLEGRAVATAR, OnChange)
122 ON_EN_CHANGE(IDC_GRAVATARURL, OnChange)
123 ON_BN_CLICKED(IDC_RIGHTSIDEBRANCHESTAGS, OnChange)
124 ON_BN_CLICKED(IDC_SHOWDESCRIBE, OnChange)
125 ON_CBN_SELCHANGE(IDC_DESCRIBESTRATEGY, OnChange)
126 ON_EN_CHANGE(IDC_DESCRIBEABBREVIATEDSIZE, OnChange)
127 ON_BN_CLICKED(IDC_DESCRIBEALWAYSLONG, OnChange)
128 ON_BN_CLICKED(IDC_FULLCOMMITMESSAGEONLOGLINE, OnChange)
129 END_MESSAGE_MAP()
131 // CSetDialogs message handlers
132 BOOL CSetDialogs::OnInitDialog()
134 CMFCFontComboBox::m_bDrawUsingFont = true;
136 ISettingsPropPage::OnInitDialog();
138 AdjustControlSize(IDC_SHORTDATEFORMAT);
139 AdjustControlSize(IDC_RELATIVETIMES);
140 AdjustControlSize(IDC_ASTERISKLOGPREFIX);
141 AdjustControlSize(IDC_DIFFBYDOUBLECLICK);
142 AdjustControlSize(IDC_SYSTEMLOCALEFORDATES);
143 AdjustControlSize(IDC_ABBREVIATERENAMINGS);
144 AdjustControlSize(IDC_SYMBOLIZEREFNAMES);
145 AdjustControlSize(IDC_ENABLELOGCACHE);
146 AdjustControlSize(IDC_ENABLEGRAVATAR);
147 AdjustControlSize(IDC_RIGHTSIDEBRANCHESTAGS);
148 AdjustControlSize(IDC_SHOWDESCRIBE);
149 AdjustControlSize(IDC_DESCRIBEALWAYSLONG);
150 AdjustControlSize(IDC_FULLCOMMITMESSAGEONLOGLINE);
152 EnableToolTips();
154 m_bShortDateFormat = m_regShortDateFormat;
155 m_bRelativeTimes = m_regRelativeTimes;
156 m_bAsteriskLogPrefix = m_regAsteriskLogPrefix;
157 m_bUseSystemLocaleForDates = m_regUseSystemLocaleForDates;
158 m_sFontName = m_regFontName;
159 m_dwFontSize = m_regFontSize;
160 m_bDiffByDoubleClick = m_regDiffByDoubleClick;
161 m_bAbbreviateRenamings = m_regAbbreviateRenamings;
162 m_bSymbolizeRefNames = m_regSymbolizeRefNames;
163 m_bEnableLogCache = m_regEnableLogCache;
164 m_bEnableGravatar = m_regEnableGravatar;
165 m_GravatarUrl = m_regGravatarUrl;
166 m_bDrawBranchesTagsOnRightSide = m_regDrawBranchesTagsOnRightSide;
167 m_bShowDescribe = m_regShowDescribe;
168 m_DescribeStrategy = m_regDescribeStrategy;
169 m_DescribeAbbreviatedSize = m_regDescribeAbbreviatedSize;
170 m_bDescribeAlwaysLong = m_regDescribeAlwaysLong;
171 m_bFullCommitMessageOnLogLine = m_regFullCommitMessageOnLogLine;
173 CString temp;
175 m_tooltips.AddTool(IDC_DEFAULT_NUMBER_OF, IDS_DEFAULT_NUMBER_OF_TT);
176 m_tooltips.AddTool(IDC_DEFAULT_SCALE, IDS_DEFAULT_SCALE_TT);
177 m_tooltips.AddTool(IDC_SHORTDATEFORMAT, IDS_SETTINGS_SHORTDATEFORMAT_TT);
178 m_tooltips.AddTool(IDC_RELATIVETIMES, IDS_SETTINGS_RELATIVETIMES_TT);
179 m_tooltips.AddTool(IDC_ASTERISKLOGPREFIX, IDS_SETTINGS_ASTERISKLOGPREFIX_TT);
180 m_tooltips.AddTool(IDC_SYSTEMLOCALEFORDATES, IDS_SETTINGS_USESYSTEMLOCALEFORDATES_TT);
181 m_tooltips.AddTool(IDC_DIFFBYDOUBLECLICK, IDS_SETTINGS_DIFFBYDOUBLECLICK_TT);
182 m_tooltips.AddTool(IDC_ABBREVIATERENAMINGS, IDS_SETTINGS_ABBREVIATERENAMINGS_TT);
183 m_tooltips.AddTool(IDC_SYMBOLIZEREFNAMES, IDS_SETTINGS_SYMBOLIZEREFNAMES_TT);
184 m_tooltips.AddTool(IDC_ENABLELOGCACHE, IDS_SETTINGS_ENABLELOGCACHE_TT);
185 m_tooltips.AddTool(IDC_ENABLEGRAVATAR, IDS_SETTINGS_ENABLEGRAVATAR_TT);
186 m_tooltips.AddTool(IDC_GRAVATARURL, IDS_SETTINGS_GRAVATARURL_TT);
187 m_tooltips.AddTool(IDC_SHOWDESCRIBE, IDS_SETTINGS_SHOWDESCRIBE_TT);
188 m_tooltips.AddTool(IDC_DESCRIBESTRATEGY, IDS_SETTINGS_DESCRIBESTRATEGY_TT);
189 m_tooltips.AddTool(IDC_DESCRIBEABBREVIATEDSIZE, IDS_SETTINGS_DESCRIBEABBREVIATEDSIZE_TT);
190 m_tooltips.AddTool(IDC_DESCRIBEALWAYSLONG, IDS_SETTINGS_DESCRIBEALWAYSLONG_TT);
192 m_cDefaultLogsScale.AddString(CString(MAKEINTRESOURCE(IDS_NO_LIMIT)));
193 m_cDefaultLogsScale.AddString(CString(MAKEINTRESOURCE(IDS_LAST_SEL_DATE)));
194 temp.Format(IDS_LAST_N_COMMITS, _T("N"));
195 m_cDefaultLogsScale.AddString(temp);
196 temp.Format(IDS_LAST_N_YEARS, _T("N"));
197 m_cDefaultLogsScale.AddString(temp);
198 temp.Format(IDS_LAST_N_MONTHS, _T("N"));
199 m_cDefaultLogsScale.AddString(temp);
200 temp.Format(IDS_LAST_N_WEEKS, _T("N"));
201 m_cDefaultLogsScale.AddString(temp);
202 m_cDefaultLogsScale.SetCurSel((DWORD)m_regDefaultLogsScale);
204 switch (m_regDefaultLogsScale)
206 case CFilterData::SHOW_NO_LIMIT:
207 case CFilterData::SHOW_LAST_SEL_DATE:
208 m_sDefaultLogs.Empty();
209 m_DefaultNumberOfCtl.EnableWindow(FALSE);
210 break;
211 case CFilterData::SHOW_LAST_N_COMMITS:
212 case CFilterData::SHOW_LAST_N_YEARS:
213 case CFilterData::SHOW_LAST_N_MONTHS:
214 case CFilterData::SHOW_LAST_N_WEEKS:
215 m_sDefaultLogs.Format(_T("%ld"), (DWORD)m_regDefaultLogs);
216 break;
219 int count = 0;
220 for (int i=6; i<32; i=i+2)
222 temp.Format(_T("%d"), i);
223 m_cFontSizes.AddString(temp);
224 m_cFontSizes.SetItemData(count++, i);
226 BOOL foundfont = FALSE;
227 for (int i=0; i<m_cFontSizes.GetCount(); i++)
229 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)
231 m_cFontSizes.SetCurSel(i);
232 foundfont = TRUE;
235 if (!foundfont)
237 temp.Format(_T("%lu"), m_dwFontSize);
238 m_cFontSizes.SetWindowText(temp);
241 m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);
242 m_cFontNames.SelectFont(m_sFontName);
244 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%"));
245 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=mm"));
246 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=identicon"));
247 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=monsterid"));
248 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=wavatar"));
249 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=retro"));
250 m_cGravatarUrl.AddString(_T("http://www.gravatar.com/avatar/%HASH%?d=blank"));;
252 m_cDescribeStrategy.AddString(CString(MAKEINTRESOURCE(IDS_ANNOTATEDTAGS)));
253 m_cDescribeStrategy.AddString(CString(MAKEINTRESOURCE(IDS_ALLTAGS)));
254 m_cDescribeStrategy.AddString(CString(MAKEINTRESOURCE(IDS_ALLREFS)));
256 UpdateData(FALSE);
257 return TRUE;
260 void CSetDialogs::OnChange()
262 SetModified();
265 void CSetDialogs::OnCbnSelchangeDefaultlogscale()
267 UpdateData();
268 int sel = m_cDefaultLogsScale.GetCurSel();
269 if (sel > 1 && (m_sDefaultLogs.IsEmpty() || _ttol((LPCTSTR)m_sDefaultLogs) == 0))
270 m_sDefaultLogs.Format(_T("%ld"), (DWORD)m_regDefaultLogs);
271 else if (sel <= 1)
272 m_sDefaultLogs.Empty();
273 m_DefaultNumberOfCtl.EnableWindow(sel > 1);
274 UpdateData(FALSE);
275 SetModified();
278 BOOL CSetDialogs::OnApply()
280 UpdateData();
281 if (m_cFontNames.GetSelFont())
282 m_sFontName = m_cFontNames.GetSelFont()->m_strName;
283 else
284 m_sFontName = m_regFontName;
286 Store(m_bShortDateFormat, m_regShortDateFormat);
287 Store(m_bRelativeTimes, m_regRelativeTimes);
288 Store(m_bAsteriskLogPrefix, m_regAsteriskLogPrefix);
289 Store(m_bUseSystemLocaleForDates, m_regUseSystemLocaleForDates);
291 int sel = m_cDefaultLogsScale.GetCurSel();
292 Store(sel > 0 ? sel : 0, m_regDefaultLogsScale);
294 int val = _ttol((LPCTSTR)m_sDefaultLogs);
295 if (sel > 1 && val > 0)
296 Store(val, m_regDefaultLogs);
298 Store(m_sFontName, m_regFontName);
299 Store(m_dwFontSize, m_regFontSize);
300 Store(m_bDiffByDoubleClick, m_regDiffByDoubleClick);
301 Store(m_bAbbreviateRenamings, m_regAbbreviateRenamings);
302 Store(m_bSymbolizeRefNames, m_regSymbolizeRefNames);
303 Store(m_bEnableLogCache, m_regEnableLogCache);
304 Store(m_bEnableGravatar, m_regEnableGravatar);
305 Store(m_GravatarUrl, m_regGravatarUrl);
306 Store(m_bDrawBranchesTagsOnRightSide, m_regDrawBranchesTagsOnRightSide);
307 Store(m_bShowDescribe, m_regShowDescribe);
308 Store(m_DescribeStrategy, m_regDescribeStrategy);
309 Store(m_DescribeAbbreviatedSize, m_regDescribeAbbreviatedSize);
310 Store(m_bDescribeAlwaysLong, m_regDescribeAlwaysLong);
311 Store(m_bFullCommitMessageOnLogLine, m_regFullCommitMessageOnLogLine);
313 SetModified(FALSE);
314 return ISettingsPropPage::OnApply();