Settings dialog can set EnableLogCache
[TortoiseGit.git] / src / TortoiseProc / Settings / SetDialogs.cpp
blob140c852587bd9238605619f11599aeb162f0182a
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2013 - 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_dwFontSize(0)
33 , m_sFontName(_T(""))
34 , m_bDiffByDoubleClick(FALSE)
35 , m_bUseSystemLocaleForDates(FALSE)
36 , m_dwAutoClose(0)
37 , m_bUseRecycleBin(TRUE)
38 , m_bAbbreviateRenamings(FALSE)
39 , m_bSymbolizeRefNames(FALSE)
40 , m_bEnableLogCache(TRUE)
41 , m_bAutocompletion(FALSE)
42 , m_dwAutocompletionTimeout(0)
43 , m_dwMaxHistory(25)
44 , m_bAutoSelect(TRUE)
45 , m_bTopoOrder(FALSE)
47 m_regAutoClose = CRegDWORD(_T("Software\\TortoiseGit\\AutoClose"));
48 m_regShortDateFormat = CRegDWORD(_T("Software\\TortoiseGit\\LogDateFormat"), TRUE);
49 m_regRelativeTimes = CRegDWORD(_T("Software\\TortoiseGit\\RelativeTimes"), FALSE);
50 m_regUseSystemLocaleForDates = CRegDWORD(_T("Software\\TortoiseGit\\UseSystemLocaleForDates"), TRUE);
51 m_regFontName = CRegString(_T("Software\\TortoiseGit\\LogFontName"), _T("Courier New"));
52 m_regFontSize = CRegDWORD(_T("Software\\TortoiseGit\\LogFontSize"), 8);
53 m_regDiffByDoubleClick = CRegDWORD(_T("Software\\TortoiseGit\\DiffByDoubleClickInLog"), FALSE);
54 m_regUseRecycleBin = CRegDWORD(_T("Software\\TortoiseGit\\RevertWithRecycleBin"), TRUE);
55 m_regAbbreviateRenamings = CRegDWORD(_T("Software\\TortoiseGit\\AbbreviateRenamings"), FALSE);
56 m_regSymbolizeRefNames = CRegDWORD(_T("Software\\TortoiseGit\\SymbolizeRefNames"), FALSE);
57 m_regEnableLogCache = CRegDWORD(_T("Software\\TortoiseGit\\EnableLogCache"), TRUE);
58 m_regAutocompletion = CRegDWORD(_T("Software\\TortoiseGit\\Autocompletion"), TRUE);
59 m_bAutocompletion = (DWORD)m_regAutocompletion;
60 m_regAutocompletionTimeout = CRegDWORD(_T("Software\\TortoiseGit\\AutocompleteParseTimeout"), 5);
61 m_dwAutocompletionTimeout = (DWORD)m_regAutocompletionTimeout;
62 m_regMaxHistory = CRegDWORD(_T("Software\\TortoiseGit\\MaxHistoryItems"), 25);
63 m_dwMaxHistory = (DWORD)m_regMaxHistory;
64 m_regAutoSelect = CRegDWORD(_T("Software\\TortoiseGit\\SelectFilesForCommit"), TRUE);
65 m_bAutoSelect = (BOOL)(DWORD)m_regAutoSelect;
66 m_regTopoOrder = CRegDWORD(_T("Software\\TortoiseGit\\LogTopoOrder"), TRUE);
67 m_bTopoOrder = (BOOL)(DWORD)m_regTopoOrder;
70 CSetDialogs::~CSetDialogs()
74 void CSetDialogs::DoDataExchange(CDataExchange* pDX)
76 ISettingsPropPage::DoDataExchange(pDX);
77 DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);
78 m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());
79 if ((m_dwFontSize==0)||(m_dwFontSize == -1))
81 CString t;
82 m_cFontSizes.GetWindowText(t);
83 m_dwFontSize = _ttoi(t);
85 DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);
86 DDX_Check(pDX, IDC_SHORTDATEFORMAT, m_bShortDateFormat);
87 DDX_Check(pDX, IDC_RELATIVETIMES, m_bRelativeTimes);
88 DDX_Control(pDX, IDC_AUTOCLOSECOMBO, m_cAutoClose);
89 DDX_Check(pDX, IDC_DIFFBYDOUBLECLICK, m_bDiffByDoubleClick);
90 DDX_Check(pDX, IDC_SYSTEMLOCALEFORDATES, m_bUseSystemLocaleForDates);
91 DDX_Check(pDX, IDC_USERECYCLEBIN, m_bUseRecycleBin);
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_AUTOCOMPLETION, m_bAutocompletion);
96 DDX_Check(pDX, IDC_TOPOORDER, m_bTopoOrder);
97 DDX_Text(pDX, IDC_AUTOCOMPLETIONTIMEOUT, m_dwAutocompletionTimeout);
98 DDV_MinMaxUInt(pDX, m_dwAutocompletionTimeout, 1, 100);
99 DDX_Text(pDX, IDC_MAXHISTORY, m_dwMaxHistory);
100 DDV_MinMaxUInt(pDX, m_dwMaxHistory, 1, 100);
101 DDX_Check(pDX, IDC_SELECTFILESONCOMMIT, m_bAutoSelect);
104 BEGIN_MESSAGE_MAP(CSetDialogs, ISettingsPropPage)
105 ON_BN_CLICKED(IDC_SHORTDATEFORMAT, OnChange)
106 ON_BN_CLICKED(IDC_RELATIVETIMES, OnChange)
107 ON_BN_CLICKED(IDC_SYSTEMLOCALEFORDATES, OnChange)
108 ON_CBN_SELCHANGE(IDC_FONTSIZES, OnChange)
109 ON_CBN_SELCHANGE(IDC_FONTNAMES, OnChange)
110 ON_CBN_SELCHANGE(IDC_AUTOCLOSECOMBO, OnCbnSelchangeAutoclosecombo)
111 ON_BN_CLICKED(IDC_DIFFBYDOUBLECLICK, OnChange)
112 ON_BN_CLICKED(IDC_USERECYCLEBIN, OnChange)
113 ON_BN_CLICKED(IDC_ABBREVIATERENAMINGS, OnChange)
114 ON_BN_CLICKED(IDC_SYMBOLIZEREFNAMES, OnChange)
115 ON_BN_CLICKED(IDC_ENABLELOGCACHE, OnChange)
116 ON_BN_CLICKED(IDC_AUTOCOMPLETION, OnChange)
117 ON_BN_CLICKED(IDC_TOPOORDER, OnChange)
118 ON_EN_CHANGE(IDC_AUTOCOMPLETIONTIMEOUT, OnChange)
119 ON_EN_CHANGE(IDC_MAXHISTORY, OnChange)
120 ON_BN_CLICKED(IDC_SELECTFILESONCOMMIT, OnChange)
121 END_MESSAGE_MAP()
123 // CSetDialogs message handlers
124 BOOL CSetDialogs::OnInitDialog()
126 CMFCFontComboBox::m_bDrawUsingFont = true;
128 ISettingsPropPage::OnInitDialog();
130 EnableToolTips();
132 int ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_MANUAL)));
133 m_cAutoClose.SetItemData(ind, CLOSE_MANUAL);
134 ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOMERGES)));
135 m_cAutoClose.SetItemData(ind, CLOSE_NOMERGES);
136 ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOCONFLICTS)));
137 m_cAutoClose.SetItemData(ind, CLOSE_NOCONFLICTS);
138 ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOERROR)));
139 m_cAutoClose.SetItemData(ind, CLOSE_NOERRORS);
140 ind = m_cAutoClose.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_LOCAL)));
141 m_cAutoClose.SetItemData(ind, CLOSE_LOCAL);
143 m_dwAutoClose = m_regAutoClose;
144 m_bShortDateFormat = m_regShortDateFormat;
145 m_bRelativeTimes = m_regRelativeTimes;
146 m_bUseSystemLocaleForDates = m_regUseSystemLocaleForDates;
147 m_sFontName = m_regFontName;
148 m_dwFontSize = m_regFontSize;
149 m_bDiffByDoubleClick = m_regDiffByDoubleClick;
150 m_bUseRecycleBin = m_regUseRecycleBin;
151 m_bAbbreviateRenamings = m_regAbbreviateRenamings;
152 m_bSymbolizeRefNames = m_regSymbolizeRefNames;
153 m_bEnableLogCache = m_regEnableLogCache;
154 m_bTopoOrder = m_regTopoOrder;
156 for (int i=0; i<m_cAutoClose.GetCount(); ++i)
157 if (m_cAutoClose.GetItemData(i)==m_dwAutoClose)
158 m_cAutoClose.SetCurSel(i);
160 CString temp;
162 m_tooltips.Create(this);
163 m_tooltips.AddTool(IDC_SHORTDATEFORMAT, IDS_SETTINGS_SHORTDATEFORMAT_TT);
164 m_tooltips.AddTool(IDC_RELATIVETIMES, IDS_SETTINGS_RELATIVETIMES_TT);
165 m_tooltips.AddTool(IDC_SYSTEMLOCALEFORDATES, IDS_SETTINGS_USESYSTEMLOCALEFORDATES_TT);
166 m_tooltips.AddTool(IDC_AUTOCLOSECOMBO, IDS_SETTINGS_AUTOCLOSE_TT);
167 m_tooltips.AddTool(IDC_DIFFBYDOUBLECLICK, IDS_SETTINGS_DIFFBYDOUBLECLICK_TT);
168 m_tooltips.AddTool(IDC_USERECYCLEBIN, IDS_SETTINGS_USERECYCLEBIN_TT);
169 m_tooltips.AddTool(IDC_ABBREVIATERENAMINGS, IDS_SETTINGS_ABBREVIATERENAMINGS_TT);
170 m_tooltips.AddTool(IDC_SYMBOLIZEREFNAMES, IDS_SETTINGS_SYMBOLIZEREFNAMES_TT);
171 m_tooltips.AddTool(IDC_ENABLELOGCACHE, IDS_SETTINGS_ENABLELOGCACHE_TT);
172 m_tooltips.AddTool(IDC_AUTOCOMPLETION, IDS_SETTINGS_AUTOCOMPLETION_TT);
173 m_tooltips.AddTool(IDC_AUTOCOMPLETIONTIMEOUT, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT);
174 m_tooltips.AddTool(IDC_AUTOCOMPLETIONTIMEOUTLABEL, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT);
175 m_tooltips.AddTool(IDC_MAXHISTORY, IDS_SETTINGS_MAXHISTORY_TT);
176 m_tooltips.AddTool(IDC_MAXHISTORYLABEL, IDS_SETTINGS_MAXHISTORY_TT);
177 m_tooltips.AddTool(IDC_SELECTFILESONCOMMIT, IDS_SETTINGS_SELECTFILESONCOMMIT_TT);
180 int count = 0;
181 for (int i=6; i<32; i=i+2)
183 temp.Format(_T("%d"), i);
184 m_cFontSizes.AddString(temp);
185 m_cFontSizes.SetItemData(count++, i);
187 BOOL foundfont = FALSE;
188 for (int i=0; i<m_cFontSizes.GetCount(); i++)
190 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)
192 m_cFontSizes.SetCurSel(i);
193 foundfont = TRUE;
196 if (!foundfont)
198 temp.Format(_T("%d"), m_dwFontSize);
199 m_cFontSizes.SetWindowText(temp);
202 m_cFontNames.Setup(DEVICE_FONTTYPE|RASTER_FONTTYPE|TRUETYPE_FONTTYPE, 1, FIXED_PITCH);
203 m_cFontNames.SelectFont(m_sFontName);
205 UpdateData(FALSE);
206 return TRUE;
209 BOOL CSetDialogs::PreTranslateMessage(MSG* pMsg)
211 m_tooltips.RelayEvent(pMsg);
212 return ISettingsPropPage::PreTranslateMessage(pMsg);
215 void CSetDialogs::OnChange()
217 SetModified();
220 BOOL CSetDialogs::OnApply()
222 UpdateData();
223 if (m_cFontNames.GetSelFont())
224 m_sFontName = m_cFontNames.GetSelFont()->m_strName;
225 else
226 m_sFontName = m_regFontName;
228 Store ((DWORD)m_dwAutoClose, m_regAutoClose);
229 Store (m_bShortDateFormat, m_regShortDateFormat);
230 Store (m_bRelativeTimes, m_regRelativeTimes);
231 Store (m_bUseSystemLocaleForDates, m_regUseSystemLocaleForDates);
233 Store (m_sFontName, m_regFontName);
234 Store (m_dwFontSize, m_regFontSize);
235 Store (m_bDiffByDoubleClick, m_regDiffByDoubleClick);
236 Store (m_bUseRecycleBin, m_regUseRecycleBin);
237 Store (m_bAbbreviateRenamings, m_regAbbreviateRenamings);
238 Store (m_bSymbolizeRefNames, m_regSymbolizeRefNames);
239 Store (m_bEnableLogCache, m_regEnableLogCache);
241 Store (m_bAutocompletion, m_regAutocompletion);
242 Store (m_dwAutocompletionTimeout, m_regAutocompletionTimeout);
243 Store (m_dwMaxHistory, m_regMaxHistory);
244 Store (m_bAutoSelect, m_regAutoSelect);
245 Store (m_bTopoOrder, m_regTopoOrder);
247 SetModified(FALSE);
248 return ISettingsPropPage::OnApply();
251 void CSetDialogs::OnCbnSelchangeAutoclosecombo()
253 if (m_cAutoClose.GetCurSel() != CB_ERR)
255 m_dwAutoClose = m_cAutoClose.GetItemData(m_cAutoClose.GetCurSel());
257 SetModified();