Drop code that has no effect
[TortoiseGit.git] / src / TortoiseProc / Settings / SettingsBugtraqConfig.cpp
blob6f4397fb597887c3c8a47037c9329cfe89caa251
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2009-2014 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 // settings\SettingsBugtraqConfig.cpp : implementation file
22 #include "stdafx.h"
23 #include "TortoiseProc.h"
24 #include "SettingsBugtraqConfig.h"
25 #include "ProjectProperties.h"
26 #include "Git.h"
27 #include "BugtraqRegexTestDlg.h"
28 #include "BugTraqAssociations.h"
30 // CSettingsBugtraqConfig dialog
32 IMPLEMENT_DYNAMIC(CSettingsBugtraqConfig, ISettingsPropPage)
34 CSettingsBugtraqConfig::CSettingsBugtraqConfig()
35 : ISettingsPropPage(CSettingsBugtraqConfig::IDD)
36 , m_bNeedSave(false)
37 , m_bInheritURL(FALSE)
38 , m_bInheritMessage(FALSE)
39 , m_bInheritLabel(FALSE)
40 , m_bInheritLogregex(FALSE)
41 , m_bInheritUUID32(FALSE)
42 , m_bInheritUUID64(FALSE)
43 , m_bInheritParams(FALSE)
47 CSettingsBugtraqConfig::~CSettingsBugtraqConfig()
51 void CSettingsBugtraqConfig::DoDataExchange(CDataExchange* pDX)
53 CPropertyPage::DoDataExchange(pDX);
54 DDX_Text(pDX, IDC_BUGTRAQ_URL, m_URL);
55 DDX_Control(pDX, IDC_BUGTRAQ_WARNINGIFNOISSUE, m_cWarningifnoissue);
56 DDX_Text(pDX, IDC_BUGTRAQ_MESSAGE, m_Message);
57 DDX_Control(pDX, IDC_BUGTRAQ_APPEND, m_cAppend);
58 DDX_Text(pDX, IDC_BUGTRAQ_LABEL, m_Label);
59 DDX_Control(pDX, IDC_BUGTRAQ_NUMBER, m_cNumber);
60 DDX_Text(pDX, IDC_BUGTRAQ_LOGREGEX, m_Logregex);
61 DDX_Control(pDX, IDC_BUGTRAQ_LOGREGEX, m_BugtraqRegex1);
62 DDX_Check(pDX, IDC_CHECK_INHERIT_BTURL, m_bInheritURL);
63 DDX_Check(pDX, IDC_CHECK_INHERIT_BTMSG, m_bInheritMessage);
64 DDX_Check(pDX, IDC_CHECK_INHERIT_BTLABEL, m_bInheritLabel);
65 DDX_Check(pDX, IDC_CHECK_INHERIT_BTREGEXP, m_bInheritLogregex);
66 DDX_Check(pDX, IDC_CHECK_INHERIT_BTUUID32, m_bInheritUUID32);
67 DDX_Check(pDX, IDC_CHECK_INHERIT_BTUUID64, m_bInheritUUID64);
68 DDX_Check(pDX, IDC_CHECK_INHERIT_BTPARAMS, m_bInheritParams);
69 DDX_Text(pDX, IDC_UUID32, m_UUID32);
70 DDX_Text(pDX, IDC_UUID64, m_UUID64);
71 DDX_Text(pDX, IDC_PARAMS, m_Params);
72 GITSETTINGS_DDX
75 BEGIN_MESSAGE_MAP(CSettingsBugtraqConfig, ISettingsPropPage)
76 GITSETTINGS_RADIO_EVENT
77 ON_EN_CHANGE(IDC_BUGTRAQ_URL, &CSettingsBugtraqConfig::OnChange)
78 ON_CBN_SELCHANGE(IDC_BUGTRAQ_WARNINGIFNOISSUE, &CSettingsBugtraqConfig::OnChange)
79 ON_EN_CHANGE(IDC_BUGTRAQ_MESSAGE, &CSettingsBugtraqConfig::OnChange)
80 ON_CBN_SELCHANGE(IDC_BUGTRAQ_APPEND, &CSettingsBugtraqConfig::OnChange)
81 ON_EN_CHANGE(IDC_BUGTRAQ_LABEL, &CSettingsBugtraqConfig::OnChange)
82 ON_CBN_SELCHANGE(IDC_BUGTRAQ_NUMBER, &CSettingsBugtraqConfig::OnChange)
83 ON_EN_CHANGE(IDC_BUGTRAQ_LOGREGEX, &CSettingsBugtraqConfig::OnChange)
84 ON_EN_CHANGE(IDC_UUID32, &CSettingsBugtraqConfig::OnChange)
85 ON_EN_CHANGE(IDC_UUID64, &CSettingsBugtraqConfig::OnChange)
86 ON_EN_CHANGE(IDC_PARAMS, &CSettingsBugtraqConfig::OnChange)
87 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTURL, &OnChange)
88 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTMSG, &OnChange)
89 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTLABEL, &OnChange)
90 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTREGEXP, &OnChange)
91 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTUUID32, &OnChange)
92 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTUUID64, &OnChange)
93 ON_BN_CLICKED(IDC_CHECK_INHERIT_BTPARAMS, &OnChange)
94 ON_BN_CLICKED(IDC_TESTBUGTRAQREGEXBUTTON, &CSettingsBugtraqConfig::OnBnClickedTestbugtraqregexbutton)
95 END_MESSAGE_MAP()
97 BOOL CSettingsBugtraqConfig::OnInitDialog()
99 ISettingsPropPage::OnInitDialog();
101 AdjustControlSize(IDC_CHECK_INHERIT_BTURL);
102 AdjustControlSize(IDC_CHECK_INHERIT_BTMSG);
103 AdjustControlSize(IDC_CHECK_INHERIT_BTLABEL);
104 AdjustControlSize(IDC_CHECK_INHERIT_BTREGEXP);
105 AdjustControlSize(IDC_CHECK_INHERIT_BTUUID32);
106 AdjustControlSize(IDC_CHECK_INHERIT_BTUUID64);
107 AdjustControlSize(IDC_CHECK_INHERIT_BTPARAMS);
108 GITSETTINGS_ADJUSTCONTROLSIZE
110 AddTrueFalseToComboBox(m_cWarningifnoissue);
111 AddTrueFalseToComboBox(m_cAppend);
112 AddTrueFalseToComboBox(m_cNumber);
114 m_tooltips.Create(this);
116 InitGitSettings(this, true, &m_tooltips);
118 this->UpdateData(FALSE);
119 return TRUE;
122 void CSettingsBugtraqConfig::EnDisableControls()
124 GetDlgItem(IDC_BUGTRAQ_URL)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
125 GetDlgItem(IDC_BUGTRAQ_MESSAGE)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
126 GetDlgItem(IDC_BUGTRAQ_LABEL)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
127 GetDlgItem(IDC_BUGTRAQ_LOGREGEX)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
128 GetDlgItem(IDC_UUID32)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
129 GetDlgItem(IDC_UUID64)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
130 GetDlgItem(IDC_PARAMS)->SendMessage(EM_SETREADONLY, m_iConfigSource == 0, 0);
132 GetDlgItem(IDC_BUGTRAQ_WARNINGIFNOISSUE)->EnableWindow(m_iConfigSource != 0);
133 GetDlgItem(IDC_BUGTRAQ_APPEND)->EnableWindow(m_iConfigSource != 0);
134 GetDlgItem(IDC_BUGTRAQ_NUMBER)->EnableWindow(m_iConfigSource != 0);
135 GetDlgItem(IDC_COMBO_SETTINGS_SAFETO)->EnableWindow(m_iConfigSource != 0);
136 GetDlgItem(IDC_CHECK_INHERIT_BTURL)->EnableWindow(m_iConfigSource != 0);
137 GetDlgItem(IDC_CHECK_INHERIT_BTMSG)->EnableWindow(m_iConfigSource != 0);
138 GetDlgItem(IDC_CHECK_INHERIT_BTLABEL)->EnableWindow(m_iConfigSource != 0);
139 GetDlgItem(IDC_CHECK_INHERIT_BTREGEXP)->EnableWindow(m_iConfigSource != 0);
140 GetDlgItem(IDC_CHECK_INHERIT_BTUUID32)->EnableWindow(m_iConfigSource != 0);
141 GetDlgItem(IDC_CHECK_INHERIT_BTUUID64)->EnableWindow(m_iConfigSource != 0);
142 GetDlgItem(IDC_CHECK_INHERIT_BTPARAMS)->EnableWindow(m_iConfigSource != 0);
143 GetDlgItem(IDC_TESTBUGTRAQREGEXBUTTON)->EnableWindow(m_iConfigSource != 0 && !m_bInheritLogregex);
145 GetDlgItem(IDC_BUGTRAQ_URL)->EnableWindow(!m_bInheritURL);
146 GetDlgItem(IDC_BUGTRAQ_MESSAGE)->EnableWindow(!m_bInheritMessage);
147 GetDlgItem(IDC_BUGTRAQ_LABEL)->EnableWindow(!m_bInheritLabel);
148 GetDlgItem(IDC_BUGTRAQ_LOGREGEX)->EnableWindow(!m_bInheritLogregex);
149 GetDlgItem(IDC_UUID32)->EnableWindow(!m_bInheritUUID32);
150 GetDlgItem(IDC_UUID64)->EnableWindow(!m_bInheritUUID64);
151 GetDlgItem(IDC_PARAMS)->EnableWindow(!m_bInheritParams);
152 UpdateData(FALSE);
155 void CSettingsBugtraqConfig::OnChange()
157 UpdateData();
158 EnDisableControls();
159 m_bNeedSave = true;
160 SetModified();
163 void CSettingsBugtraqConfig::LoadDataImpl(CAutoConfig& config)
165 if (m_iConfigSource == 0)
167 // use project properties here, so that we correctly get the default values
168 ProjectProperties props;
169 props.ReadProps();
170 m_URL = props.sUrl;
171 m_Logregex = props.sCheckRe + _T("\n") + props.sBugIDRe;
172 m_Label = props.sLabel;
173 m_Message = props.sMessage;
174 m_UUID32 = props.sProviderUuid;
175 m_UUID64 = props.sProviderUuid64;
176 m_Params = props.sProviderParams;
177 // read legacy registry values
178 CBugTraqAssociations bugtraq_associations;
179 bugtraq_associations.Load(props.GetProviderUUID(), props.sProviderParams);
180 CBugTraqAssociation bugtraq_association;
181 if (bugtraq_associations.FindProvider(g_Git.m_CurrentDir, &bugtraq_association))
183 #if _WIN64
184 m_UUID64 = bugtraq_association.GetProviderClassAsString();
185 #else
186 m_UUID32 = bugtraq_association.GetProviderClassAsString();
187 if (m_UUID64.IsEmpty())
188 m_UUID64 = m_UUID32;
189 #endif
190 m_Params = bugtraq_association.GetParameters();
193 if (props.bAppend)
194 m_cAppend.SetCurSel(1);
195 else
196 m_cAppend.SetCurSel(2);
198 if (props.bNumber)
199 m_cNumber.SetCurSel(1);
200 else
201 m_cNumber.SetCurSel(2);
203 if (props.bWarnIfNoIssue)
204 m_cWarningifnoissue.SetCurSel(1);
205 else
206 m_cWarningifnoissue.SetCurSel(2);
208 m_bInheritURL = FALSE;
209 m_bInheritMessage = FALSE;
210 m_bInheritLabel = FALSE;
211 m_bInheritLogregex = FALSE;
212 m_bInheritParams = FALSE;
213 m_bInheritUUID32 = FALSE;
214 m_bInheritUUID64 = FALSE;
216 else
218 m_bInheritURL = (config.GetString(BUGTRAQPROPNAME_URL, m_URL) == GIT_ENOTFOUND);
219 m_bInheritMessage = (config.GetString(BUGTRAQPROPNAME_MESSAGE, m_Message) == GIT_ENOTFOUND);
220 m_bInheritLabel = (config.GetString(BUGTRAQPROPNAME_LABEL, m_Label) == GIT_ENOTFOUND);
221 GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_NUMBER, m_cNumber);
222 GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_APPEND, m_cAppend);
223 GetBoolConfigValueComboBox(config, BUGTRAQPROPNAME_WARNIFNOISSUE, m_cWarningifnoissue);
224 m_bInheritLogregex = (config.GetString(BUGTRAQPROPNAME_LOGREGEX, m_Logregex) == GIT_ENOTFOUND);
225 m_bInheritParams = (config.GetString(BUGTRAQPROPNAME_PROVIDERPARAMS, m_Params) == GIT_ENOTFOUND);
226 m_bInheritUUID32 = (config.GetString(BUGTRAQPROPNAME_PROVIDERUUID, m_UUID32) == GIT_ENOTFOUND);
227 m_bInheritUUID64 = (config.GetString(BUGTRAQPROPNAME_PROVIDERUUID64, m_UUID64) == GIT_ENOTFOUND);
230 m_Logregex.Trim();
231 m_Logregex.Replace(_T("\n"), _T("\r\n"));
233 m_bNeedSave = false;
234 SetModified(FALSE);
235 UpdateData(FALSE);
238 BOOL CSettingsBugtraqConfig::SafeDataImpl(CAutoConfig& config)
240 if (!Save(config, BUGTRAQPROPNAME_URL, m_URL, m_bInheritURL == TRUE))
241 return FALSE;
243 if (!Save(config, BUGTRAQPROPNAME_MESSAGE, m_Message, m_bInheritMessage == TRUE))
244 return FALSE;
246 if (!Save(config, BUGTRAQPROPNAME_LABEL, m_Label, m_bInheritLabel == TRUE))
247 return FALSE;
249 if (!Save(config, BUGTRAQPROPNAME_PROVIDERPARAMS, m_Params, m_bInheritParams == TRUE))
250 return FALSE;
252 if (!Save(config, BUGTRAQPROPNAME_PROVIDERUUID, m_UUID32, m_bInheritUUID32 == TRUE))
253 return FALSE;
255 if (!Save(config, BUGTRAQPROPNAME_PROVIDERUUID64, m_UUID64, m_bInheritUUID64 == TRUE))
256 return FALSE;
259 CString value;
260 m_cAppend.GetWindowText(value);
261 if (!Save(config, BUGTRAQPROPNAME_APPEND, value, value.IsEmpty()))
262 return FALSE;
265 CString value;
266 m_cNumber.GetWindowText(value);
267 if (!Save(config, BUGTRAQPROPNAME_NUMBER, value, value.IsEmpty()))
268 return FALSE;
271 CString value;
272 m_cWarningifnoissue.GetWindowText(value);
273 if (!Save(config, BUGTRAQPROPNAME_WARNIFNOISSUE, value, value.IsEmpty()))
274 return FALSE;
277 CString value(m_Logregex);
278 value.Replace(_T("\r\n"),_T("\n"));
279 if (!Save(config, BUGTRAQPROPNAME_LOGREGEX, value, m_bInheritLogregex == TRUE))
280 return FALSE;
283 return TRUE;
286 BOOL CSettingsBugtraqConfig::OnApply()
288 if (!m_bNeedSave)
289 return TRUE;
290 UpdateData();
291 if (!SafeData())
292 return FALSE;
293 m_bNeedSave = false;
294 SetModified(FALSE);
295 return TRUE;
298 BOOL CSettingsBugtraqConfig::PreTranslateMessage(MSG* pMsg)
300 m_tooltips.RelayEvent(pMsg);
301 return ISettingsPropPage::PreTranslateMessage(pMsg);
304 void CSettingsBugtraqConfig::OnBnClickedTestbugtraqregexbutton()
306 m_tooltips.Pop(); // hide the tooltips
307 CBugtraqRegexTestDlg dlg(this);
308 dlg.m_sBugtraqRegex2 = m_Logregex;
309 dlg.m_sBugtraqRegex2.Trim();
310 dlg.m_sBugtraqRegex2.Replace(_T("\r\n"), _T("\n"));
311 if (dlg.m_sBugtraqRegex2.Find('\n') >= 0)
313 dlg.m_sBugtraqRegex1 = dlg.m_sBugtraqRegex2.Mid(dlg.m_sBugtraqRegex2.Find('\n')).Trim();
314 dlg.m_sBugtraqRegex2 = dlg.m_sBugtraqRegex2.Left(dlg.m_sBugtraqRegex2.Find('\n')).Trim();
316 if (dlg.DoModal() == IDOK)
318 m_Logregex = dlg.m_sBugtraqRegex2 + _T("\n") + dlg.m_sBugtraqRegex1;
319 m_Logregex.Trim();
320 m_Logregex.Replace(_T("\n"), _T("\r\n"));
321 UpdateData(FALSE);