1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2012 - 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
)
34 , m_bDiffByDoubleClick(FALSE
)
35 , m_bUseSystemLocaleForDates(FALSE
)
37 , m_bUseRecycleBin(TRUE
)
38 , m_bAbbreviateRenamings(FALSE
)
39 , m_bSymbolizeRefNames(FALSE
)
40 , m_bAutocompletion(FALSE
)
41 , m_dwAutocompletionTimeout(0)
46 m_regAutoClose
= CRegDWORD(_T("Software\\TortoiseGit\\AutoClose"));
47 m_regShortDateFormat
= CRegDWORD(_T("Software\\TortoiseGit\\LogDateFormat"), TRUE
);
48 m_regRelativeTimes
= CRegDWORD(_T("Software\\TortoiseGit\\RelativeTimes"), FALSE
);
49 m_regUseSystemLocaleForDates
= CRegDWORD(_T("Software\\TortoiseGit\\UseSystemLocaleForDates"), TRUE
);
50 m_regFontName
= CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New"));
51 m_regFontSize
= CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8);
52 m_regDiffByDoubleClick
= CRegDWORD(_T("Software\\TortoiseGit\\DiffByDoubleClickInLog"), FALSE
);
53 m_regUseRecycleBin
= CRegDWORD(_T("Software\\TortoiseGit\\RevertWithRecycleBin"), TRUE
);
54 m_regAbbreviateRenamings
= CRegDWORD(_T("Software\\TortoiseGit\\AbbreviateRenamings"), FALSE
);
55 m_regSymbolizeRefNames
= CRegDWORD(_T("Software\\TortoiseGit\\SymbolizeRefNames"), FALSE
);
56 m_regAutocompletion
= CRegDWORD(_T("Software\\TortoiseGit\\Autocompletion"), TRUE
);
57 m_bAutocompletion
= (DWORD
)m_regAutocompletion
;
58 m_regAutocompletionTimeout
= CRegDWORD(_T("Software\\TortoiseGit\\AutocompleteParseTimeout"), 5);
59 m_dwAutocompletionTimeout
= (DWORD
)m_regAutocompletionTimeout
;
60 m_regMaxHistory
= CRegDWORD(_T("Software\\TortoiseGit\\MaxHistoryItems"), 25);
61 m_dwMaxHistory
= (DWORD
)m_regMaxHistory
;
62 m_regAutoSelect
= CRegDWORD(_T("Software\\TortoiseGit\\SelectFilesForCommit"), TRUE
);
63 m_bAutoSelect
= (BOOL
)(DWORD
)m_regAutoSelect
;
64 m_regTopoOrder
= CRegDWORD(_T("Software\\TortoiseGit\\LogTopoOrder"), TRUE
);
65 m_bTopoOrder
= (BOOL
)(DWORD
)m_regTopoOrder
;
68 CSetDialogs::~CSetDialogs()
72 void CSetDialogs::DoDataExchange(CDataExchange
* pDX
)
74 ISettingsPropPage::DoDataExchange(pDX
);
75 DDX_Control(pDX
, IDC_FONTSIZES
, m_cFontSizes
);
76 m_dwFontSize
= (DWORD
)m_cFontSizes
.GetItemData(m_cFontSizes
.GetCurSel());
77 if ((m_dwFontSize
==0)||(m_dwFontSize
== -1))
80 m_cFontSizes
.GetWindowText(t
);
81 m_dwFontSize
= _ttoi(t
);
83 DDX_Control(pDX
, IDC_FONTNAMES
, m_cFontNames
);
84 DDX_Check(pDX
, IDC_SHORTDATEFORMAT
, m_bShortDateFormat
);
85 DDX_Check(pDX
, IDC_RELATIVETIMES
, m_bRelativeTimes
);
86 DDX_Control(pDX
, IDC_AUTOCLOSECOMBO
, m_cAutoClose
);
87 DDX_Check(pDX
, IDC_DIFFBYDOUBLECLICK
, m_bDiffByDoubleClick
);
88 DDX_Check(pDX
, IDC_SYSTEMLOCALEFORDATES
, m_bUseSystemLocaleForDates
);
89 DDX_Check(pDX
, IDC_USERECYCLEBIN
, m_bUseRecycleBin
);
90 DDX_Check(pDX
, IDC_ABBREVIATERENAMINGS
, m_bAbbreviateRenamings
);
91 DDX_Check(pDX
, IDC_SYMBOLIZEREFNAMES
, m_bSymbolizeRefNames
);
92 DDX_Check(pDX
, IDC_AUTOCOMPLETION
, m_bAutocompletion
);
93 DDX_Check(pDX
, IDC_TOPOORDER
, m_bTopoOrder
);
94 DDX_Text(pDX
, IDC_AUTOCOMPLETIONTIMEOUT
, m_dwAutocompletionTimeout
);
95 DDV_MinMaxUInt(pDX
, m_dwAutocompletionTimeout
, 1, 100);
96 DDX_Text(pDX
, IDC_MAXHISTORY
, m_dwMaxHistory
);
97 DDV_MinMaxUInt(pDX
, m_dwMaxHistory
, 1, 100);
98 DDX_Check(pDX
, IDC_SELECTFILESONCOMMIT
, m_bAutoSelect
);
101 BEGIN_MESSAGE_MAP(CSetDialogs
, ISettingsPropPage
)
102 ON_BN_CLICKED(IDC_SHORTDATEFORMAT
, OnChange
)
103 ON_BN_CLICKED(IDC_RELATIVETIMES
, OnChange
)
104 ON_BN_CLICKED(IDC_SYSTEMLOCALEFORDATES
, OnChange
)
105 ON_CBN_SELCHANGE(IDC_FONTSIZES
, OnChange
)
106 ON_CBN_SELCHANGE(IDC_FONTNAMES
, OnChange
)
107 ON_CBN_SELCHANGE(IDC_AUTOCLOSECOMBO
, OnCbnSelchangeAutoclosecombo
)
108 ON_BN_CLICKED(IDC_DIFFBYDOUBLECLICK
, OnChange
)
109 ON_BN_CLICKED(IDC_USERECYCLEBIN
, OnChange
)
110 ON_BN_CLICKED(IDC_ABBREVIATERENAMINGS
, OnChange
)
111 ON_BN_CLICKED(IDC_SYMBOLIZEREFNAMES
, OnChange
)
112 ON_BN_CLICKED(IDC_AUTOCOMPLETION
, OnChange
)
113 ON_BN_CLICKED(IDC_TOPOORDER
, OnChange
)
114 ON_EN_CHANGE(IDC_AUTOCOMPLETIONTIMEOUT
, OnChange
)
115 ON_EN_CHANGE(IDC_MAXHISTORY
, OnChange
)
116 ON_BN_CLICKED(IDC_SELECTFILESONCOMMIT
, OnChange
)
119 // CSetDialogs message handlers
120 BOOL
CSetDialogs::OnInitDialog()
122 CMFCFontComboBox::m_bDrawUsingFont
= true;
124 ISettingsPropPage::OnInitDialog();
128 int ind
= m_cAutoClose
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_MANUAL
)));
129 m_cAutoClose
.SetItemData(ind
, CLOSE_MANUAL
);
130 ind
= m_cAutoClose
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOMERGES
)));
131 m_cAutoClose
.SetItemData(ind
, CLOSE_NOMERGES
);
132 ind
= m_cAutoClose
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOCONFLICTS
)));
133 m_cAutoClose
.SetItemData(ind
, CLOSE_NOCONFLICTS
);
134 ind
= m_cAutoClose
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOERROR
)));
135 m_cAutoClose
.SetItemData(ind
, CLOSE_NOERRORS
);
136 ind
= m_cAutoClose
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_LOCAL
)));
137 m_cAutoClose
.SetItemData(ind
, CLOSE_LOCAL
);
139 m_dwAutoClose
= m_regAutoClose
;
140 m_bShortDateFormat
= m_regShortDateFormat
;
141 m_bRelativeTimes
= m_regRelativeTimes
;
142 m_bUseSystemLocaleForDates
= m_regUseSystemLocaleForDates
;
143 m_sFontName
= m_regFontName
;
144 m_dwFontSize
= m_regFontSize
;
145 m_bDiffByDoubleClick
= m_regDiffByDoubleClick
;
146 m_bUseRecycleBin
= m_regUseRecycleBin
;
147 m_bAbbreviateRenamings
= m_regAbbreviateRenamings
;
148 m_bSymbolizeRefNames
= m_regSymbolizeRefNames
;
149 m_bTopoOrder
= m_regTopoOrder
;
151 for (int i
=0; i
<m_cAutoClose
.GetCount(); ++i
)
152 if (m_cAutoClose
.GetItemData(i
)==m_dwAutoClose
)
153 m_cAutoClose
.SetCurSel(i
);
157 m_tooltips
.Create(this);
158 m_tooltips
.AddTool(IDC_SHORTDATEFORMAT
, IDS_SETTINGS_SHORTDATEFORMAT_TT
);
159 m_tooltips
.AddTool(IDC_RELATIVETIMES
, IDS_SETTINGS_RELATIVETIMES_TT
);
160 m_tooltips
.AddTool(IDC_SYSTEMLOCALEFORDATES
, IDS_SETTINGS_USESYSTEMLOCALEFORDATES_TT
);
161 m_tooltips
.AddTool(IDC_AUTOCLOSECOMBO
, IDS_SETTINGS_AUTOCLOSE_TT
);
162 m_tooltips
.AddTool(IDC_DIFFBYDOUBLECLICK
, IDS_SETTINGS_DIFFBYDOUBLECLICK_TT
);
163 m_tooltips
.AddTool(IDC_USERECYCLEBIN
, IDS_SETTINGS_USERECYCLEBIN_TT
);
164 m_tooltips
.AddTool(IDC_ABBREVIATERENAMINGS
, IDS_SETTINGS_ABBREVIATERENAMINGS_TT
);
165 m_tooltips
.AddTool(IDC_SYMBOLIZEREFNAMES
, IDS_SETTINGS_SYMBOLIZEREFNAMES_TT
);
166 m_tooltips
.AddTool(IDC_AUTOCOMPLETION
, IDS_SETTINGS_AUTOCOMPLETION_TT
);
167 m_tooltips
.AddTool(IDC_AUTOCOMPLETIONTIMEOUT
, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT
);
168 m_tooltips
.AddTool(IDC_AUTOCOMPLETIONTIMEOUTLABEL
, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT
);
169 m_tooltips
.AddTool(IDC_MAXHISTORY
, IDS_SETTINGS_MAXHISTORY_TT
);
170 m_tooltips
.AddTool(IDC_MAXHISTORYLABEL
, IDS_SETTINGS_MAXHISTORY_TT
);
171 m_tooltips
.AddTool(IDC_SELECTFILESONCOMMIT
, IDS_SETTINGS_SELECTFILESONCOMMIT_TT
);
175 for (int i
=6; i
<32; i
=i
+2)
177 temp
.Format(_T("%d"), i
);
178 m_cFontSizes
.AddString(temp
);
179 m_cFontSizes
.SetItemData(count
++, i
);
181 BOOL foundfont
= FALSE
;
182 for (int i
=0; i
<m_cFontSizes
.GetCount(); i
++)
184 if (m_cFontSizes
.GetItemData(i
) == m_dwFontSize
)
186 m_cFontSizes
.SetCurSel(i
);
192 temp
.Format(_T("%d"), m_dwFontSize
);
193 m_cFontSizes
.SetWindowText(temp
);
196 m_cFontNames
.Setup(DEVICE_FONTTYPE
|RASTER_FONTTYPE
|TRUETYPE_FONTTYPE
, 1, FIXED_PITCH
);
197 m_cFontNames
.SelectFont(m_sFontName
);
203 BOOL
CSetDialogs::PreTranslateMessage(MSG
* pMsg
)
205 m_tooltips
.RelayEvent(pMsg
);
206 return ISettingsPropPage::PreTranslateMessage(pMsg
);
209 void CSetDialogs::OnChange()
214 BOOL
CSetDialogs::OnApply()
217 if (m_cFontNames
.GetSelFont())
218 m_sFontName
= m_cFontNames
.GetSelFont()->m_strName
;
220 m_sFontName
= m_regFontName
;
222 Store ((DWORD
)m_dwAutoClose
, m_regAutoClose
);
223 Store (m_bShortDateFormat
, m_regShortDateFormat
);
224 Store (m_bRelativeTimes
, m_regRelativeTimes
);
225 Store (m_bUseSystemLocaleForDates
, m_regUseSystemLocaleForDates
);
227 Store (m_sFontName
, m_regFontName
);
228 Store (m_dwFontSize
, m_regFontSize
);
229 Store (m_bDiffByDoubleClick
, m_regDiffByDoubleClick
);
230 Store (m_bUseRecycleBin
, m_regUseRecycleBin
);
231 Store (m_bAbbreviateRenamings
, m_regAbbreviateRenamings
);
232 Store (m_bSymbolizeRefNames
, m_regSymbolizeRefNames
);
234 Store (m_bAutocompletion
, m_regAutocompletion
);
235 Store (m_dwAutocompletionTimeout
, m_regAutocompletionTimeout
);
236 Store (m_dwMaxHistory
, m_regMaxHistory
);
237 Store (m_bAutoSelect
, m_regAutoSelect
);
238 Store (m_bTopoOrder
, m_regTopoOrder
);
241 return ISettingsPropPage::OnApply();
244 void CSetDialogs::OnCbnSelchangeAutoclosecombo()
246 if (m_cAutoClose
.GetCurSel() != CB_ERR
)
248 m_dwAutoClose
= m_cAutoClose
.GetItemData(m_cAutoClose
.GetCurSel());