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.
21 #include "TortoiseProc.h"
22 #include "SetMainPage.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
)
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))
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
)
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
);
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
;
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
);
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
);
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
);
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
)));
260 void CSetDialogs::OnChange()
265 void CSetDialogs::OnCbnSelchangeDefaultlogscale()
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
);
272 m_sDefaultLogs
.Empty();
273 m_DefaultNumberOfCtl
.EnableWindow(sel
> 1);
278 BOOL
CSetDialogs::OnApply()
281 if (m_cFontNames
.GetSelFont())
282 m_sFontName
= m_cFontNames
.GetSelFont()->m_strName
;
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
);
314 return ISettingsPropPage::OnApply();