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
23 #include "TortoiseProc.h"
24 #include "SettingsBugtraqConfig.h"
25 #include "ProjectProperties.h"
27 #include "BugtraqRegexTestDlg.h"
28 #include "BugTraqAssociations.h"
30 // CSettingsBugtraqConfig dialog
32 IMPLEMENT_DYNAMIC(CSettingsBugtraqConfig
, ISettingsPropPage
)
34 CSettingsBugtraqConfig::CSettingsBugtraqConfig()
35 : ISettingsPropPage(CSettingsBugtraqConfig::IDD
)
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
);
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
)
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
);
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
);
155 void CSettingsBugtraqConfig::OnChange()
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
;
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
))
184 m_UUID64
= bugtraq_association
.GetProviderClassAsString();
186 m_UUID32
= bugtraq_association
.GetProviderClassAsString();
187 if (m_UUID64
.IsEmpty())
190 m_Params
= bugtraq_association
.GetParameters();
194 m_cAppend
.SetCurSel(1);
196 m_cAppend
.SetCurSel(2);
199 m_cNumber
.SetCurSel(1);
201 m_cNumber
.SetCurSel(2);
203 if (props
.bWarnIfNoIssue
)
204 m_cWarningifnoissue
.SetCurSel(1);
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
;
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
);
231 m_Logregex
.Replace(_T("\n"), _T("\r\n"));
238 BOOL
CSettingsBugtraqConfig::SafeDataImpl(CAutoConfig
& config
)
240 if (!Save(config
, BUGTRAQPROPNAME_URL
, m_URL
, m_bInheritURL
== TRUE
))
243 if (!Save(config
, BUGTRAQPROPNAME_MESSAGE
, m_Message
, m_bInheritMessage
== TRUE
))
246 if (!Save(config
, BUGTRAQPROPNAME_LABEL
, m_Label
, m_bInheritLabel
== TRUE
))
249 if (!Save(config
, BUGTRAQPROPNAME_PROVIDERPARAMS
, m_Params
, m_bInheritParams
== TRUE
))
252 if (!Save(config
, BUGTRAQPROPNAME_PROVIDERUUID
, m_UUID32
, m_bInheritUUID32
== TRUE
))
255 if (!Save(config
, BUGTRAQPROPNAME_PROVIDERUUID64
, m_UUID64
, m_bInheritUUID64
== TRUE
))
260 m_cAppend
.GetWindowText(value
);
261 if (!Save(config
, BUGTRAQPROPNAME_APPEND
, value
, value
.IsEmpty()))
266 m_cNumber
.GetWindowText(value
);
267 if (!Save(config
, BUGTRAQPROPNAME_NUMBER
, value
, value
.IsEmpty()))
272 m_cWarningifnoissue
.GetWindowText(value
);
273 if (!Save(config
, BUGTRAQPROPNAME_WARNIFNOISSUE
, value
, value
.IsEmpty()))
277 CString
value(m_Logregex
);
278 value
.Replace(_T("\r\n"),_T("\n"));
279 if (!Save(config
, BUGTRAQPROPNAME_LOGREGEX
, value
, m_bInheritLogregex
== TRUE
))
286 BOOL
CSettingsBugtraqConfig::OnApply()
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
;
320 m_Logregex
.Replace(_T("\n"), _T("\r\n"));