1
// TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2008-2016, 2019-2020 - 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 "ProgressDlg.h"
25 #include "SetDialogs2.h"
27 IMPLEMENT_DYNAMIC(CSetDialogs2
, ISettingsPropPage
)
28 CSetDialogs2::CSetDialogs2()
29 : ISettingsPropPage(CSetDialogs2::IDD
)
30 , m_dwAutoCloseGitProgress(AUTOCLOSE_NO
)
31 , m_bUseRecycleBin(TRUE
)
32 , m_bConfirmKillProcess(FALSE
)
33 , m_bSyncDialogRandomPos(FALSE
)
34 , m_bRefCompareHideUnchanged(FALSE
)
35 , m_bSortTagsReversed(FALSE
)
36 , m_bAutocompletion(FALSE
)
37 , m_dwAutocompletionTimeout(0)
40 , m_bShowGitexeTimings(TRUE
)
42 , m_bBranchesIncludeFetchHead(TRUE
)
43 , m_bNoAutoselectMissing(FALSE
)
46 m_regAutoCloseGitProgress
= CRegDWORD(L
"Software\\TortoiseGit\\AutoCloseGitProgress");
47 m_regUseRecycleBin
= CRegDWORD(L
"Software\\TortoiseGit\\RevertWithRecycleBin", TRUE
);
48 m_regConfirmKillProcess
= CRegDWORD(L
"Software\\TortoiseGit\\ConfirmKillProcess", FALSE
);
49 m_bConfirmKillProcess
= m_regConfirmKillProcess
;
50 m_regSyncDialogRandomPos
= CRegDWORD(L
"Software\\TortoiseGit\\SyncDialogRandomPos", FALSE
);
51 m_bSyncDialogRandomPos
= m_regSyncDialogRandomPos
;
52 m_regRefCompareHideUnchanged
= CRegDWORD(L
"Software\\TortoiseGit\\RefCompareHideUnchanged", FALSE
);
53 m_bRefCompareHideUnchanged
= m_regRefCompareHideUnchanged
;
54 m_regSortTagsReversed
= CRegDWORD(L
"Software\\TortoiseGit\\SortTagsReversed", FALSE
);
55 m_bSortTagsReversed
= m_regSortTagsReversed
;
56 m_regAutocompletion
= CRegDWORD(L
"Software\\TortoiseGit\\Autocompletion", TRUE
);
57 m_bAutocompletion
= m_regAutocompletion
;
58 m_regAutocompletionTimeout
= CRegDWORD(L
"Software\\TortoiseGit\\AutocompleteParseTimeout", 5);
59 m_dwAutocompletionTimeout
= m_regAutocompletionTimeout
;
60 m_regMaxHistory
= CRegDWORD(L
"Software\\TortoiseGit\\MaxHistoryItems", 25);
61 m_dwMaxHistory
= m_regMaxHistory
;
62 m_regAutoSelect
= CRegDWORD(L
"Software\\TortoiseGit\\SelectFilesForCommit", TRUE
);
63 m_bAutoSelect
= m_regAutoSelect
;
64 m_regStripCommentedLines
= CRegDWORD(L
"Software\\TortoiseGit\\StripCommentedLines", FALSE
);
65 m_bStripCommentedLines
= m_regStripCommentedLines
;
66 m_regShowGitexeTimings
= CRegDWORD(L
"Software\\TortoiseGit\\ShowGitexeTimings", TRUE
);
67 m_bShowGitexeTimings
= m_regShowGitexeTimings
;
68 m_regNoSounds
= CRegDWORD(L
"Software\\TortoiseGit\\NoSounds", FALSE
);
69 m_bNoSounds
= m_regNoSounds
;
70 m_regBranchesIncludeFetchHead
= CRegDWORD(L
"Software\\TortoiseGit\\BranchesIncludeFetchHead", TRUE
);
71 m_bBranchesIncludeFetchHead
= m_regBranchesIncludeFetchHead
;
72 m_regNoAutoselectMissing
= CRegDWORD(L
"Software\\TortoiseGit\\AutoselectMissingFiles", FALSE
);
73 m_bNoAutoselectMissing
= m_regNoAutoselectMissing
;
74 m_regMailmap
= CRegDWORD(L
"Software\\TortoiseGit\\UseMailmap", TRUE
);
77 CSetDialogs2::~CSetDialogs2()
81 void CSetDialogs2::DoDataExchange(CDataExchange
* pDX
)
83 ISettingsPropPage::DoDataExchange(pDX
);
84 DDX_Control(pDX
, IDC_AUTOCLOSECOMBO
, m_cAutoCloseGitProgress
);
85 DDX_Check(pDX
, IDC_USERECYCLEBIN
, m_bUseRecycleBin
);
86 DDX_Check(pDX
, IDC_CONFIRMKILLPROCESS
, m_bConfirmKillProcess
);
87 DDX_Check(pDX
, IDC_SYNCDIALOGRANDOMPOS
, m_bSyncDialogRandomPos
);
88 DDX_Check(pDX
, IDC_REFCOMPAREHIDEUNCHANGED
, m_bRefCompareHideUnchanged
);
89 DDX_Check(pDX
, IDC_SORTTAGSREVERSED
, m_bSortTagsReversed
);
90 DDX_Check(pDX
, IDC_AUTOCOMPLETION
, m_bAutocompletion
);
91 DDX_Text(pDX
, IDC_AUTOCOMPLETIONTIMEOUT
, m_dwAutocompletionTimeout
);
92 DDV_MinMaxUInt(pDX
, m_dwAutocompletionTimeout
, 1, 100);
93 DDX_Text(pDX
, IDC_MAXHISTORY
, m_dwMaxHistory
);
94 DDV_MinMaxUInt(pDX
, m_dwMaxHistory
, 1, 100);
95 DDX_Check(pDX
, IDC_SELECTFILESONCOMMIT
, m_bAutoSelect
);
96 DDX_Check(pDX
, IDC_STRIPCOMMENTEDLINES
, m_bStripCommentedLines
);
97 DDX_Check(pDX
, IDC_PROGRESSDLG_SHOW_TIMES
, m_bShowGitexeTimings
);
98 DDX_Check(pDX
, IDC_NOSOUNDS
, m_bNoSounds
);
99 DDX_Check(pDX
, IDC_BRANCHESINCLUDEFETCHHEAD
, m_bBranchesIncludeFetchHead
);
100 DDX_Check(pDX
, IDC_NOAUTOSELECTMISSING
, m_bNoAutoselectMissing
);
101 DDX_Check(pDX
, IDC_USEMAILMAP
, m_bMailmap
);
104 BEGIN_MESSAGE_MAP(CSetDialogs2
, ISettingsPropPage
)
105 ON_CBN_SELCHANGE(IDC_AUTOCLOSECOMBO
, OnCbnSelchangeAutoclosecombo
)
106 ON_BN_CLICKED(IDC_USERECYCLEBIN
, OnChange
)
107 ON_BN_CLICKED(IDC_CONFIRMKILLPROCESS
, OnChange
)
108 ON_BN_CLICKED(IDC_SYNCDIALOGRANDOMPOS
, OnChange
)
109 ON_BN_CLICKED(IDC_REFCOMPAREHIDEUNCHANGED
, OnChange
)
110 ON_BN_CLICKED(IDC_SORTTAGSREVERSED
, OnChange
)
111 ON_BN_CLICKED(IDC_AUTOCOMPLETION
, OnChange
)
112 ON_EN_CHANGE(IDC_AUTOCOMPLETIONTIMEOUT
, OnChange
)
113 ON_EN_CHANGE(IDC_MAXHISTORY
, OnChange
)
114 ON_BN_CLICKED(IDC_SELECTFILESONCOMMIT
, OnChange
)
115 ON_BN_CLICKED(IDC_STRIPCOMMENTEDLINES
, OnChange
)
116 ON_BN_CLICKED(IDC_PROGRESSDLG_SHOW_TIMES
, OnChange
)
117 ON_BN_CLICKED(IDC_NOSOUNDS
, OnChange
)
118 ON_BN_CLICKED(IDC_BRANCHESINCLUDEFETCHHEAD
, OnChange
)
119 ON_BN_CLICKED(IDC_NOAUTOSELECTMISSING
, OnChange
)
120 ON_BN_CLICKED(IDC_USEMAILMAP
, OnChange
)
123 // CSetDialogs2 message handlers
124 BOOL
CSetDialogs2::OnInitDialog()
126 ISettingsPropPage::OnInitDialog();
128 AdjustControlSize(IDC_USERECYCLEBIN
);
129 AdjustControlSize(IDC_CONFIRMKILLPROCESS
);
130 AdjustControlSize(IDC_SYNCDIALOGRANDOMPOS
);
131 AdjustControlSize(IDC_REFCOMPAREHIDEUNCHANGED
);
132 AdjustControlSize(IDC_SORTTAGSREVERSED
);
133 AdjustControlSize(IDC_AUTOCOMPLETION
);
134 AdjustControlSize(IDC_SELECTFILESONCOMMIT
);
135 AdjustControlSize(IDC_STRIPCOMMENTEDLINES
);
136 AdjustControlSize(IDC_PROGRESSDLG_SHOW_TIMES
);
137 AdjustControlSize(IDC_NOSOUNDS
);
138 AdjustControlSize(IDC_BRANCHESINCLUDEFETCHHEAD
);
139 AdjustControlSize(IDC_NOAUTOSELECTMISSING
);
140 AdjustControlSize(IDC_USEMAILMAP
);
144 int ind
= m_cAutoCloseGitProgress
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_MANUAL
)));
145 m_cAutoCloseGitProgress
.SetItemData(ind
, AUTOCLOSE_NO
);
146 ind
= m_cAutoCloseGitProgress
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOPTIONS
)));
147 m_cAutoCloseGitProgress
.SetItemData(ind
, AUTOCLOSE_IF_NO_OPTIONS
);
148 ind
= m_cAutoCloseGitProgress
.AddString(CString(MAKEINTRESOURCE(IDS_PROGRS_CLOSE_NOERROR
)));
149 m_cAutoCloseGitProgress
.SetItemData(ind
, AUTOCLOSE_IF_NO_ERRORS
);
151 m_dwAutoCloseGitProgress
= m_regAutoCloseGitProgress
;
152 m_bUseRecycleBin
= m_regUseRecycleBin
;
153 m_bMailmap
= m_regMailmap
;
155 for (int i
= 0; i
< m_cAutoCloseGitProgress
.GetCount(); ++i
)
156 if (m_cAutoCloseGitProgress
.GetItemData(i
) == m_dwAutoCloseGitProgress
)
157 m_cAutoCloseGitProgress
.SetCurSel(i
);
161 m_tooltips
.AddTool(IDC_AUTOCLOSECOMBO
, IDS_SETTINGS_AUTOCLOSE_TT
);
162 m_tooltips
.AddTool(IDC_USERECYCLEBIN
, IDS_SETTINGS_USERECYCLEBIN_TT
);
163 m_tooltips
.AddTool(IDC_CONFIRMKILLPROCESS
, IDS_SETTINGS_CONFIRMKILLPROCESS_TT
);
164 m_tooltips
.AddTool(IDC_SYNCDIALOGRANDOMPOS
, IDS_SYNCDIALOGRANDOMPOS_TT
);
165 m_tooltips
.AddTool(IDC_REFCOMPAREHIDEUNCHANGED
, IDS_REFCOMPAREHIDEUNCHANGED_TT
);
166 m_tooltips
.AddTool(IDC_SORTTAGSREVERSED
, IDS_SORTTAGSREVERSED_TT
);
167 m_tooltips
.AddTool(IDC_AUTOCOMPLETION
, IDS_SETTINGS_AUTOCOMPLETION_TT
);
168 m_tooltips
.AddTool(IDC_AUTOCOMPLETIONTIMEOUT
, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT
);
169 m_tooltips
.AddTool(IDC_AUTOCOMPLETIONTIMEOUTLABEL
, IDS_SETTINGS_AUTOCOMPLETIONTIMEOUT_TT
);
170 m_tooltips
.AddTool(IDC_MAXHISTORY
, IDS_SETTINGS_MAXHISTORY_TT
);
171 m_tooltips
.AddTool(IDC_MAXHISTORYLABEL
, IDS_SETTINGS_MAXHISTORY_TT
);
172 m_tooltips
.AddTool(IDC_SELECTFILESONCOMMIT
, IDS_SETTINGS_SELECTFILESONCOMMIT_TT
);
178 void CSetDialogs2::OnChange()
183 BOOL
CSetDialogs2::OnApply()
187 Store(static_cast<DWORD
>(m_dwAutoCloseGitProgress
), m_regAutoCloseGitProgress
);
188 Store(m_bUseRecycleBin
, m_regUseRecycleBin
);
189 Store(m_bConfirmKillProcess
, m_regConfirmKillProcess
);
190 Store(m_bSyncDialogRandomPos
, m_regSyncDialogRandomPos
);
191 Store(m_bRefCompareHideUnchanged
, m_regRefCompareHideUnchanged
);
192 Store(m_bSortTagsReversed
, m_regSortTagsReversed
);
193 Store(m_bMailmap
, m_regMailmap
);
195 Store(m_bAutocompletion
, m_regAutocompletion
);
196 Store(m_dwAutocompletionTimeout
, m_regAutocompletionTimeout
);
197 Store(m_dwMaxHistory
, m_regMaxHistory
);
198 Store(m_bAutoSelect
, m_regAutoSelect
);
199 Store(m_bStripCommentedLines
, m_regStripCommentedLines
);
200 Store(m_bShowGitexeTimings
, m_regShowGitexeTimings
);
201 Store(m_bNoSounds
, m_regNoSounds
);
202 Store(m_bBranchesIncludeFetchHead
, m_regBranchesIncludeFetchHead
);
203 Store(m_bNoAutoselectMissing
, m_regNoAutoselectMissing
);
206 return ISettingsPropPage::OnApply();
209 void CSetDialogs2::OnCbnSelchangeAutoclosecombo()
211 if (m_cAutoCloseGitProgress
.GetCurSel() != CB_ERR
)
213 m_dwAutoCloseGitProgress
= m_cAutoCloseGitProgress
.GetItemData(m_cAutoCloseGitProgress
.GetCurSel());