1 #include "avVersionEditorDlg.h"
2 
3 //(*InternalHeaders(avVersionEditorDlg)
4 #include <wx/string.h>
5 #include <wx/intl.h>
6 #include <wx/font.h>
7 //*)
8 
9 #include <globals.h>
10 #include <wx/dirdlg.h>
11 #include <wx/filedlg.h>
12 #include <wx/filename.h>
13 #include <wx/msgdlg.h>
14 
15 wxTextCtrl* l_FocusedControl = 0;
16 
17 //{ID's
18 
19 //(*IdInit(avVersionEditorDlg)
20 const long avVersionEditorDlg::ID_MAJOR_LABEL = wxNewId();
21 const long avVersionEditorDlg::ID_MAJOR_TEXT = wxNewId();
22 const long avVersionEditorDlg::ID_MINOR_LABEL = wxNewId();
23 const long avVersionEditorDlg::ID_MINOR_TEXT = wxNewId();
24 const long avVersionEditorDlg::ID_BUILD_LABEL = wxNewId();
25 const long avVersionEditorDlg::ID_BUILD_TEXT = wxNewId();
26 const long avVersionEditorDlg::ID_REVISION_LABEL = wxNewId();
27 const long avVersionEditorDlg::ID_REVISION_TEXT = wxNewId();
28 const long avVersionEditorDlg::ID_STATICLINE2 = wxNewId();
29 const long avVersionEditorDlg::ID_COUNT_LABEL = wxNewId();
30 const long avVersionEditorDlg::ID_COUNT_TEXT = wxNewId();
31 const long avVersionEditorDlg::ID_VALUES_PANEL = wxNewId();
32 const long avVersionEditorDlg::ID_SATUS_LABEL = wxNewId();
33 const long avVersionEditorDlg::ID_STATUS_COMBOBOX = wxNewId();
34 const long avVersionEditorDlg::ID_STATICLINE4 = wxNewId();
35 const long avVersionEditorDlg::ID_STATICTEXT1 = wxNewId();
36 const long avVersionEditorDlg::ID_ABBREVIATION_COMBOBOX = wxNewId();
37 const long avVersionEditorDlg::ID_STATUS_PANEL = wxNewId();
38 const long avVersionEditorDlg::ID_MINORMAXIMUN_LABEL = wxNewId();
39 const long avVersionEditorDlg::ID_MINORMAXIMUM_TEXT = wxNewId();
40 const long avVersionEditorDlg::ID_BUILDNUMBERMAX_LABEL = wxNewId();
41 const long avVersionEditorDlg::ID_BUILDNUMBERMAX_TEXT = wxNewId();
42 const long avVersionEditorDlg::ID_REVISIONMAX_LABEL = wxNewId();
43 const long avVersionEditorDlg::ID_REVISIONMAX_TEXT = wxNewId();
44 const long avVersionEditorDlg::ID_REVISIONRANDOM_LABEL = wxNewId();
45 const long avVersionEditorDlg::ID_REVISIONRANDOM_TEXT = wxNewId();
46 const long avVersionEditorDlg::ID_BUILDTIMES_LABEL = wxNewId();
47 const long avVersionEditorDlg::ID_BUILDTIMES_TEXT = wxNewId();
48 const long avVersionEditorDlg::ID_SCHEME_PANEL = wxNewId();
49 const long avVersionEditorDlg::ID_HEADER_GUARD_LABEL = wxNewId();
50 const long avVersionEditorDlg::ID_HEADER_GUARD_TEXT = wxNewId();
51 const long avVersionEditorDlg::ID_NAMESPACE_LABEL = wxNewId();
52 const long avVersionEditorDlg::ID_NAMESPACE_TEXT = wxNewId();
53 const long avVersionEditorDlg::ID_PREFIX_LABEL = wxNewId();
54 const long avVersionEditorDlg::ID_PREFIX_TEXT = wxNewId();
55 const long avVersionEditorDlg::ID_CODE_PANEL = wxNewId();
56 const long avVersionEditorDlg::ID_AUTO_CHECK = wxNewId();
57 const long avVersionEditorDlg::ID_DATES_CHECK = wxNewId();
58 const long avVersionEditorDlg::ID_DEFINE_CHECK = wxNewId();
59 const long avVersionEditorDlg::ID_UPDATE_MANIFEST = wxNewId();
60 const long avVersionEditorDlg::ID_COMMIT_CHECK = wxNewId();
61 const long avVersionEditorDlg::ID_ASKCOMMIT_CHECK = wxNewId();
62 const long avVersionEditorDlg::ID_STATICLINE3 = wxNewId();
63 const long avVersionEditorDlg::ID_HEADERPATH_LABEL = wxNewId();
64 const long avVersionEditorDlg::ID_HEADERPATH_TEXTCTRL = wxNewId();
65 const long avVersionEditorDlg::ID_HEADERPATH_BUTTON = wxNewId();
66 const long avVersionEditorDlg::ID_HEADERLANGUAGE_RADIOBOX = wxNewId();
67 const long avVersionEditorDlg::ID_STATICLINE1 = wxNewId();
68 const long avVersionEditorDlg::ID_SVN_CHECK = wxNewId();
69 const long avVersionEditorDlg::ID_SVNDIR_TEXT = wxNewId();
70 const long avVersionEditorDlg::ID_SVNDIR_BUTTON = wxNewId();
71 const long avVersionEditorDlg::ID_SETTINGS_PANEL = wxNewId();
72 const long avVersionEditorDlg::ID_GENERATECHANGES_CHECKBOX = wxNewId();
73 const long avVersionEditorDlg::ID_CHANGESPATH_STATICTEXT = wxNewId();
74 const long avVersionEditorDlg::ID_CHANGESLOGPATH_TEXTCTRL = wxNewId();
75 const long avVersionEditorDlg::ID_CHANGESLOGPATH_BUTTON = wxNewId();
76 const long avVersionEditorDlg::ID_FORMAT_STATICTEXT = wxNewId();
77 const long avVersionEditorDlg::ID_CHANGESTITLE_TEXTCTRL = wxNewId();
78 const long avVersionEditorDlg::ID_FORMATS_STATICTEXT = wxNewId();
79 const long avVersionEditorDlg::ID_CHANGES_PANEL = wxNewId();
80 const long avVersionEditorDlg::ID_AV_NOTEBOOK = wxNewId();
81 const long avVersionEditorDlg::ID_STATICTEXT2 = wxNewId();
82 const long avVersionEditorDlg::ID_ACCEPT = wxNewId();
83 const long avVersionEditorDlg::ID_CANCEL = wxNewId();
84 const long avVersionEditorDlg::ID_VALIDATE_TIMER = wxNewId();
85 //*)
86 
87 //}
88 
89 //{Events
BEGIN_EVENT_TABLE(avVersionEditorDlg,wxScrollingDialog)90 BEGIN_EVENT_TABLE(avVersionEditorDlg,wxScrollingDialog)
91     //(*EventTable(avVersionEditorDlg)
92     //*)
93 END_EVENT_TABLE()
94 //}
95 
96 //{Constructor and Destructor
97 avVersionEditorDlg::avVersionEditorDlg(wxWindow* parent,wxWindowID /*id*/)
98 {
99     //(*Initialize(avVersionEditorDlg)
100     wxBoxSizer* BoxSizer15;
101     wxBoxSizer* codeSizer;
102     wxBoxSizer* BoxSizer10;
103     wxBoxSizer* BoxSizer11;
104     wxBoxSizer* BoxSizer13;
105     wxBoxSizer* BoxSizer14;
106 
107     Create(parent, wxID_ANY, _("Auto Versioning Editor"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxRESIZE_BORDER, _T("wxID_ANY"));
108     SetClientSize(wxSize(469,364));
109     wxFont thisFont(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,wxEmptyString,wxFONTENCODING_DEFAULT);
110     SetFont(thisFont);
111     mainSizer = new wxBoxSizer(wxVERTICAL);
112     nbAutoVersioning = new wxNotebook(this, ID_AV_NOTEBOOK, wxDefaultPosition, wxSize(456,283), 0, _T("ID_AV_NOTEBOOK"));
113     nbAutoVersioning->SetMaxSize(wxSize(-1,-1));
114     nbAutoVersioning->SetFocus();
115     pnlVersionValues = new wxPanel(nbAutoVersioning, ID_VALUES_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_VALUES_PANEL"));
116     valuesSizer = new wxBoxSizer(wxVERTICAL);
117     BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
118     lblMajor = new wxStaticText(pnlVersionValues, ID_MAJOR_LABEL, _("Major Version"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_MAJOR_LABEL"));
119     BoxSizer3->Add(lblMajor, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
120     txtMajorVersion = new wxTextCtrl(pnlVersionValues, ID_MAJOR_TEXT, _("1"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_MAJOR_TEXT"));
121     txtMajorVersion->SetToolTip(_("Increments by 1 when the \nminor version reaches its\nmaximun value."));
122     BoxSizer3->Add(txtMajorVersion, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
123     valuesSizer->Add(BoxSizer3, 0, wxALL|wxEXPAND, 2);
124     BoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
125     lblMinor = new wxStaticText(pnlVersionValues, ID_MINOR_LABEL, _("Minor Version"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_MINOR_LABEL"));
126     BoxSizer6->Add(lblMinor, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
127     txtMinorVersion = new wxTextCtrl(pnlVersionValues, ID_MINOR_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_MINOR_TEXT"));
128     txtMinorVersion->SetToolTip(_("Increments by one everytime \nthat the build number pass the\nbarrier of build times. The value \nis reset to 0 when it reaches its\nmaximun value."));
129     BoxSizer6->Add(txtMinorVersion, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
130     valuesSizer->Add(BoxSizer6, 0, wxALL|wxEXPAND, 2);
131     BoxSizer9 = new wxBoxSizer(wxHORIZONTAL);
132     lblBuild = new wxStaticText(pnlVersionValues, ID_BUILD_LABEL, _("Build Number"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_BUILD_LABEL"));
133     BoxSizer9->Add(lblBuild, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
134     txtBuildNumber = new wxTextCtrl(pnlVersionValues, ID_BUILD_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUILD_TEXT"));
135     txtBuildNumber->SetToolTip(_("Increments by 1 everytime \nthat the revision number is\nincremented.\n\nEquivalent to \"Release\" on\nunix systems."));
136     BoxSizer9->Add(txtBuildNumber, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
137     valuesSizer->Add(BoxSizer9, 0, wxALL|wxEXPAND, 2);
138     BoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
139     lblRevision = new wxStaticText(pnlVersionValues, ID_REVISION_LABEL, _("Revision"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_REVISION_LABEL"));
140     BoxSizer12->Add(lblRevision, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
141     txtRevisionNumber = new wxTextCtrl(pnlVersionValues, ID_REVISION_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_REVISION_TEXT"));
142     txtRevisionNumber->SetToolTip(_("Increments randomly when\nsome file is modified."));
143     BoxSizer12->Add(txtRevisionNumber, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
144     valuesSizer->Add(BoxSizer12, 0, wxALL|wxEXPAND, 2);
145     StaticLine2 = new wxStaticLine(pnlVersionValues, ID_STATICLINE2, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE2"));
146     valuesSizer->Add(StaticLine2, 0, wxALL|wxEXPAND, 5);
147     BoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
148     lblCount = new wxStaticText(pnlVersionValues, ID_COUNT_LABEL, _("Build Count"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_COUNT_LABEL"));
149     BoxSizer19->Add(lblCount, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
150     txtBuildCount = new wxTextCtrl(pnlVersionValues, ID_COUNT_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COUNT_TEXT"));
151     txtBuildCount->SetToolTip(_("Increments every time the\nprogram is compiled. Also if \nno changes has been made."));
152     BoxSizer19->Add(txtBuildCount, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
153     valuesSizer->Add(BoxSizer19, 0, wxALL|wxEXPAND, 2);
154     pnlVersionValues->SetSizer(valuesSizer);
155     valuesSizer->Fit(pnlVersionValues);
156     valuesSizer->SetSizeHints(pnlVersionValues);
157     pnlStatus = new wxPanel(nbAutoVersioning, ID_STATUS_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_STATUS_PANEL"));
158     statusSizer = new wxBoxSizer(wxVERTICAL);
159     statusSizer->Add(-1,-1,1, wxALL|wxALIGN_CENTER_HORIZONTAL, 5);
160     lblStatus = new wxStaticText(pnlStatus, ID_SATUS_LABEL, _("Software Status:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_SATUS_LABEL"));
161     statusSizer->Add(lblStatus, 0, wxALL|wxEXPAND, 5);
162     cmbStatus = new wxComboBox(pnlStatus, ID_STATUS_COMBOBOX, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_STATUS_COMBOBOX"));
163     cmbStatus->Append(_("Alpha"));
164     cmbStatus->Append(_("Beta"));
165     cmbStatus->Append(_("Release"));
166     cmbStatus->Append(_("Release Candidate"));
167     cmbStatus->Append(_("Custom"));
168     cmbStatus->SetToolTip(_("Example: 1.0 Alpha"));
169     statusSizer->Add(cmbStatus, 0, wxALL|wxEXPAND, 5);
170     StaticLine4 = new wxStaticLine(pnlStatus, ID_STATICLINE4, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE4"));
171     statusSizer->Add(StaticLine4, 0, wxALL|wxEXPAND, 5);
172     StaticText1 = new wxStaticText(pnlStatus, ID_STATICTEXT1, _("Abbreviation:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
173     statusSizer->Add(StaticText1, 0, wxALL|wxEXPAND, 5);
174     cmbAbbreviation = new wxComboBox(pnlStatus, ID_ABBREVIATION_COMBOBOX, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, 0, 0, wxDefaultValidator, _T("ID_ABBREVIATION_COMBOBOX"));
175     cmbAbbreviation->Append(_("a"));
176     cmbAbbreviation->Append(_("b"));
177     cmbAbbreviation->Append(_("r"));
178     cmbAbbreviation->Append(_("rc"));
179     cmbAbbreviation->SetToolTip(_("Example 1.0a"));
180     statusSizer->Add(cmbAbbreviation, 0, wxALL|wxEXPAND, 5);
181     statusSizer->Add(-1,-1,1, wxALL|wxALIGN_CENTER_HORIZONTAL, 5);
182     pnlStatus->SetSizer(statusSizer);
183     statusSizer->Fit(pnlStatus);
184     statusSizer->SetSizeHints(pnlStatus);
185     pnlScheme = new wxPanel(nbAutoVersioning, ID_SCHEME_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_SCHEME_PANEL"));
186     schemeSizer = new wxBoxSizer(wxVERTICAL);
187     minorMaxSizer = new wxBoxSizer(wxHORIZONTAL);
188     lblMinorMaximum = new wxStaticText(pnlScheme, ID_MINORMAXIMUN_LABEL, _("Minor maximum:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_MINORMAXIMUN_LABEL"));
189     minorMaxSizer->Add(lblMinorMaximum, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
190     txtMinorMaximun = new wxTextCtrl(pnlScheme, ID_MINORMAXIMUM_TEXT, _("10"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_MINORMAXIMUM_TEXT"));
191     txtMinorMaximun->SetToolTip(_("Resets the minor to\nzero when the specified\nvalue is reached."));
192     minorMaxSizer->Add(txtMinorMaximun, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
193     schemeSizer->Add(minorMaxSizer, 0, wxALL|wxEXPAND, 0);
194     buildNumberMaxSizer = new wxBoxSizer(wxHORIZONTAL);
195     lblBuildNumberMaximun = new wxStaticText(pnlScheme, ID_BUILDNUMBERMAX_LABEL, _("Build Number maximum:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_BUILDNUMBERMAX_LABEL"));
196     buildNumberMaxSizer->Add(lblBuildNumberMaximun, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
197     txtBuildNumberMaximun = new wxTextCtrl(pnlScheme, ID_BUILDNUMBERMAX_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUILDNUMBERMAX_TEXT"));
198     txtBuildNumberMaximun->SetToolTip(_("Reset the build number\nto zero when the specified\nvalue is reached.\n\n0 equals to unlimited."));
199     buildNumberMaxSizer->Add(txtBuildNumberMaximun, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
200     schemeSizer->Add(buildNumberMaxSizer, 0, wxALL|wxEXPAND, 0);
201     BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
202     lblRevisionMax = new wxStaticText(pnlScheme, ID_REVISIONMAX_LABEL, _("Revision maximum:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_REVISIONMAX_LABEL"));
203     BoxSizer1->Add(lblRevisionMax, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
204     txtRevisionMax = new wxTextCtrl(pnlScheme, ID_REVISIONMAX_TEXT, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_REVISIONMAX_TEXT"));
205     txtRevisionMax->SetToolTip(_("Reset the revision to zero\nwhen the specified value \nis reached.\n\n0 equals to unlimited."));
206     BoxSizer1->Add(txtRevisionMax, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
207     schemeSizer->Add(BoxSizer1, 0, wxALL|wxEXPAND, 0);
208     BoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
209     lblRevisionRandom = new wxStaticText(pnlScheme, ID_REVISIONRANDOM_LABEL, _("Revision random maximum:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_REVISIONRANDOM_LABEL"));
210     BoxSizer2->Add(lblRevisionRandom, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
211     txtRevisionRandom = new wxTextCtrl(pnlScheme, ID_REVISIONRANDOM_TEXT, _("10"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_REVISIONRANDOM_TEXT"));
212     txtRevisionRandom->SetToolTip(_("Maximun number value\nused for the random\nincrementation of the\nrevision."));
213     BoxSizer2->Add(txtRevisionRandom, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
214     schemeSizer->Add(BoxSizer2, 0, wxALL|wxEXPAND, 0);
215     lblBuildTimes = new wxStaticText(pnlScheme, ID_BUILDTIMES_LABEL, _("Build times before incrementing Minor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_BUILDTIMES_LABEL"));
216     schemeSizer->Add(lblBuildTimes, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 5);
217     txtBuildTimes = new wxTextCtrl(pnlScheme, ID_BUILDTIMES_TEXT, _("100"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUILDTIMES_TEXT"));
218     txtBuildTimes->SetToolTip(_("Indicates the times\nthat the project have\nto be build before\nincrementing the minor."));
219     schemeSizer->Add(txtBuildTimes, 0, wxALL|wxEXPAND, 5);
220     pnlScheme->SetSizer(schemeSizer);
221     schemeSizer->Fit(pnlScheme);
222     schemeSizer->SetSizeHints(pnlScheme);
223     pnlCode = new wxPanel(nbAutoVersioning, ID_CODE_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_CODE_PANEL"));
224     codeSizer = new wxBoxSizer(wxVERTICAL);
225     lblHeaderGuard = new wxStaticText(pnlCode, ID_HEADER_GUARD_LABEL, _("Header guard:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_HEADER_GUARD_LABEL"));
226     codeSizer->Add(lblHeaderGuard, 0, wxALL|wxALIGN_LEFT, 5);
227     txtHeaderGuard = new wxTextCtrl(pnlCode, ID_HEADER_GUARD_TEXT, _("VERSION_H"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_HEADER_GUARD_TEXT"));
228     codeSizer->Add(txtHeaderGuard, 0, wxALL|wxEXPAND, 5);
229     lblNamespace = new wxStaticText(pnlCode, ID_NAMESPACE_LABEL, _("Namespace:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_NAMESPACE_LABEL"));
230     codeSizer->Add(lblNamespace, 0, wxALL|wxALIGN_LEFT, 5);
231     txtNameSpace = new wxTextCtrl(pnlCode, ID_NAMESPACE_TEXT, _("AutoVersion"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_NAMESPACE_TEXT"));
232     codeSizer->Add(txtNameSpace, 0, wxALL|wxEXPAND, 5);
233     lblPrefix = new wxStaticText(pnlCode, ID_PREFIX_LABEL, _("Variables prefix:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_PREFIX_LABEL"));
234     codeSizer->Add(lblPrefix, 0, wxALL|wxALIGN_LEFT, 5);
235     txtPrefix = new wxTextCtrl(pnlCode, ID_PREFIX_TEXT, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_PREFIX_TEXT"));
236     codeSizer->Add(txtPrefix, 0, wxALL|wxEXPAND, 5);
237     pnlCode->SetSizer(codeSizer);
238     codeSizer->Fit(pnlCode);
239     codeSizer->SetSizeHints(pnlCode);
240     pnlSettings = new wxPanel(nbAutoVersioning, ID_SETTINGS_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_SETTINGS_PANEL"));
241     settingsSizer = new wxBoxSizer(wxVERTICAL);
242     BoxSizer11 = new wxBoxSizer(wxHORIZONTAL);
243     BoxSizer13 = new wxBoxSizer(wxVERTICAL);
244     chkAutoIncrement = new wxCheckBox(pnlSettings, ID_AUTO_CHECK, _("Autoincrement Major and Minor"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_AUTO_CHECK"));
245     chkAutoIncrement->SetValue(true);
246     chkAutoIncrement->SetToolTip(_("Use the default scheme for \nautoincrementing the major \nand minor versions."));
247     BoxSizer13->Add(chkAutoIncrement, 0, wxALL|wxEXPAND, 5);
248     chkDates = new wxCheckBox(pnlSettings, ID_DATES_CHECK, _("Create date declarations"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_DATES_CHECK"));
249     chkDates->SetValue(true);
250     chkDates->SetToolTip(_("Create variable declarations\nfor date, month and year. And \nalso an ubuntu version style."));
251     BoxSizer13->Add(chkDates, 0, wxALL|wxEXPAND, 5);
252     chkDefine = new wxCheckBox(pnlSettings, ID_DEFINE_CHECK, _("Use #define"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_DEFINE_CHECK"));
253     chkDefine->SetValue(false);
254     chkDefine->SetToolTip(_("Use #define declaration instead of static variables"));
255     BoxSizer13->Add(chkDefine, 0, wxALL|wxEXPAND, 5);
256     chkUpdateManifest = new wxCheckBox(pnlSettings, ID_UPDATE_MANIFEST, _("Update manifest.xml"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_UPDATE_MANIFEST"));
257     chkUpdateManifest->SetValue(false);
258     chkUpdateManifest->SetToolTip(_("Update manifest.xml\'s version field with AutoVersion\'s\nvalues using the format MAJOR.MINOR.BUILD.\nThis setting is mainly useful for plugin developers."));
259     BoxSizer13->Add(chkUpdateManifest, 0, wxALL|wxALIGN_LEFT, 5);
260     BoxSizer11->Add(BoxSizer13, 1, wxALL|wxEXPAND, 5);
261     BoxSizer14 = new wxBoxSizer(wxVERTICAL);
262     chkCommit = new wxCheckBox(pnlSettings, ID_COMMIT_CHECK, _("Do Autoincrement"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_COMMIT_CHECK"));
263     chkCommit->SetValue(false);
264     chkCommit->SetToolTip(_("If you check this the version\ninfo will increment when files have\nbeen modified every time before\ncompilation takes effect."));
265     BoxSizer14->Add(chkCommit, 0, wxALL|wxEXPAND, 5);
266     chkAskCommit = new wxCheckBox(pnlSettings, ID_ASKCOMMIT_CHECK, _("Ask to Increment"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_ASKCOMMIT_CHECK"));
267     chkAskCommit->SetValue(false);
268     chkAskCommit->Disable();
269     chkAskCommit->SetToolTip(_("Ask you to increment every time\na change has been made to the \nsource code, before the compilation\ntakes effect."));
270     BoxSizer14->Add(chkAskCommit, 0, wxALL|wxEXPAND, 5);
271     BoxSizer14->Add(-1,-1,1, wxALL|wxALIGN_LEFT, 5);
272     BoxSizer11->Add(BoxSizer14, 0, wxALL|wxEXPAND, 5);
273     settingsSizer->Add(BoxSizer11, 1, wxALL|wxEXPAND, 5);
274     StaticLine3 = new wxStaticLine(pnlSettings, ID_STATICLINE3, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE3"));
275     settingsSizer->Add(StaticLine3, 0, wxALL|wxEXPAND, 1);
276     BoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
277     BoxSizer7 = new wxBoxSizer(wxVERTICAL);
278     lblHeaderPath = new wxStaticText(pnlSettings, ID_HEADERPATH_LABEL, _("Header Path:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_HEADERPATH_LABEL"));
279     BoxSizer7->Add(lblHeaderPath, 0, wxALL|wxEXPAND, 5);
280     BoxSizer15 = new wxBoxSizer(wxHORIZONTAL);
281     txtHeaderPath = new wxTextCtrl(pnlSettings, ID_HEADERPATH_TEXTCTRL, _("version.h"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_HEADERPATH_TEXTCTRL"));
282     txtHeaderPath->SetToolTip(_("Header path"));
283     BoxSizer15->Add(txtHeaderPath, 1, wxALIGN_CENTER_VERTICAL, 5);
284     btnHeaderPath = new wxButton(pnlSettings, ID_HEADERPATH_BUTTON, _("..."), wxDefaultPosition, wxSize(23,26), 0, wxDefaultValidator, _T("ID_HEADERPATH_BUTTON"));
285     btnHeaderPath->SetToolTip(_("Select header path and filename"));
286     BoxSizer15->Add(btnHeaderPath, 0, wxALIGN_CENTER_VERTICAL, 0);
287     BoxSizer7->Add(BoxSizer15, 0, wxTOP|wxLEFT|wxEXPAND, 5);
288     BoxSizer5->Add(BoxSizer7, 1, wxALL|wxEXPAND, 5);
289     BoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
290     wxString __wxRadioBoxChoices_1[2] =
291     {
292     	_("C"),
293     	_("C++")
294     };
295     rbHeaderLanguage = new wxRadioBox(pnlSettings, ID_HEADERLANGUAGE_RADIOBOX, _("Header language"), wxDefaultPosition, wxDefaultSize, 2, __wxRadioBoxChoices_1, 2, wxRA_VERTICAL, wxDefaultValidator, _T("ID_HEADERLANGUAGE_RADIOBOX"));
296     rbHeaderLanguage->SetSelection(1);
297     rbHeaderLanguage->SetToolTip(_("Sets the language output."));
298     BoxSizer8->Add(rbHeaderLanguage, 1, wxALIGN_LEFT, 5);
299     BoxSizer5->Add(BoxSizer8, 0, wxEXPAND, 5);
300     settingsSizer->Add(BoxSizer5, 0, wxALL|wxEXPAND, 5);
301     StaticLine1 = new wxStaticLine(pnlSettings, ID_STATICLINE1, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE1"));
302     settingsSizer->Add(StaticLine1, 0, wxALL|wxEXPAND, 5);
303     chkSvn = new wxCheckBox(pnlSettings, ID_SVN_CHECK, _("SVN enabled"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_SVN_CHECK"));
304     chkSvn->SetValue(false);
305     chkSvn->SetToolTip(_("Check this if your project is controlled by svn\nto generate an SVN_REVISION declaration."));
306     settingsSizer->Add(chkSvn, 0, wxALL|wxEXPAND, 2);
307     svnSizer = new wxBoxSizer(wxHORIZONTAL);
308     txtSvnDir = new wxTextCtrl(pnlSettings, ID_SVNDIR_TEXT, wxEmptyString, wxDefaultPosition, wxSize(236,26), 0, wxDefaultValidator, _T("ID_SVNDIR_TEXT"));
309     txtSvnDir->Disable();
310     txtSvnDir->SetToolTip(_("Current SVN directory."));
311     svnSizer->Add(txtSvnDir, 1, wxALL|wxEXPAND, 2);
312     btnSvnDir = new wxButton(pnlSettings, ID_SVNDIR_BUTTON, _("..."), wxDefaultPosition, wxSize(23,26), 0, wxDefaultValidator, _T("ID_SVNDIR_BUTTON"));
313     btnSvnDir->Disable();
314     btnSvnDir->SetToolTip(_("Choose current svn directory project\nif diffrent from the project default."));
315     svnSizer->Add(btnSvnDir, 0, wxALL|wxALIGN_CENTER_VERTICAL, 2);
316     settingsSizer->Add(svnSizer, 0, wxALL|wxEXPAND, 2);
317     pnlSettings->SetSizer(settingsSizer);
318     settingsSizer->Fit(pnlSettings);
319     settingsSizer->SetSizeHints(pnlSettings);
320     pnlChanges = new wxPanel(nbAutoVersioning, ID_CHANGES_PANEL, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_CHANGES_PANEL"));
321     changesSizer = new wxBoxSizer(wxVERTICAL);
322     chkChanges = new wxCheckBox(pnlChanges, ID_GENERATECHANGES_CHECKBOX, _("Show changes editor when incrementing version"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_GENERATECHANGES_CHECKBOX"));
323     chkChanges->SetValue(false);
324     chkChanges->SetToolTip(_("This will open a window\neverytime you commit or\nthe project version increments.\n\nThen you can enter the\nchanges made to the project."));
325     changesSizer->Add(chkChanges, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5);
326     lblChangesPath = new wxStaticText(pnlChanges, ID_CHANGESPATH_STATICTEXT, _("File path;"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_CHANGESPATH_STATICTEXT"));
327     changesSizer->Add(lblChangesPath, 0, wxALL|wxEXPAND, 5);
328     BoxSizer10 = new wxBoxSizer(wxHORIZONTAL);
329     txtChangesLogPath = new wxTextCtrl(pnlChanges, ID_CHANGESLOGPATH_TEXTCTRL, _("ChangesLog.txt"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHANGESLOGPATH_TEXTCTRL"));
330     txtChangesLogPath->SetToolTip(_("ChangesLog Path"));
331     BoxSizer10->Add(txtChangesLogPath, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
332     btnChangesLogPath = new wxButton(pnlChanges, ID_CHANGESLOGPATH_BUTTON, _("..."), wxDefaultPosition, wxSize(23,26), 0, wxDefaultValidator, _T("ID_CHANGESLOGPATH_BUTTON"));
333     btnChangesLogPath->SetToolTip(_("Select ChangesLog path and filename"));
334     BoxSizer10->Add(btnChangesLogPath, 0, wxALL|wxALIGN_CENTER_VERTICAL, 0);
335     changesSizer->Add(BoxSizer10, 0, wxALL|wxEXPAND, 5);
336     BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
337     lblChangesTitle = new wxStaticText(pnlChanges, ID_FORMAT_STATICTEXT, _("Title Format:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_FORMAT_STATICTEXT"));
338     BoxSizer4->Add(lblChangesTitle, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
339     txtChangesTitle = new wxTextCtrl(pnlChanges, ID_CHANGESTITLE_TEXTCTRL, _("released version %M.%m.%b of %p"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CHANGESTITLE_TEXTCTRL"));
340     BoxSizer4->Add(txtChangesTitle, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
341     changesSizer->Add(BoxSizer4, 0, wxALL|wxEXPAND, 5);
342     lblChangesFormats = new wxStaticText(pnlChanges, ID_FORMATS_STATICTEXT, _("Major: %M, Minor: %m, Build: %b, Revision: %r, SVN Revision: %s, Date: %d, Month: %o, Year: %y, Ubuntu Style Version: %u, Status: %T, Status Short: %t, Project title: %p"), wxDefaultPosition, wxSize(413,80), 0, _T("ID_FORMATS_STATICTEXT"));
343     changesSizer->Add(lblChangesFormats, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5);
344     pnlChanges->SetSizer(changesSizer);
345     changesSizer->Fit(pnlChanges);
346     changesSizer->SetSizeHints(pnlChanges);
347     nbAutoVersioning->AddPage(pnlVersionValues, _("Version Values"), true);
348     nbAutoVersioning->AddPage(pnlStatus, _("Status"), false);
349     nbAutoVersioning->AddPage(pnlScheme, _("Scheme"), false);
350     nbAutoVersioning->AddPage(pnlCode, _("Code"), false);
351     nbAutoVersioning->AddPage(pnlSettings, _("Settings"), false);
352     nbAutoVersioning->AddPage(pnlChanges, _("Changes Log"), false);
353     mainSizer->Add(nbAutoVersioning, 1, wxALL|wxEXPAND, 5);
354     lblCurrentProject = new wxStaticText(this, ID_STATICTEXT2, _("Current Project:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_STATICTEXT2"));
355     mainSizer->Add(lblCurrentProject, 0, wxALL|wxEXPAND, 5);
356     buttonsSizer = new wxBoxSizer(wxHORIZONTAL);
357     btnAccept = new wxButton(this, ID_ACCEPT, _("&Accept"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_ACCEPT"));
358     btnAccept->SetDefault();
359     btnAccept->SetToolTip(_("Accept changes made."));
360     buttonsSizer->Add(btnAccept, 1, wxALL|wxEXPAND, 5);
361     buttonsSizer->Add(-1,-1,0, wxALL|wxALIGN_CENTER_VERTICAL, 2);
362     btnCancel = new wxButton(this, ID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_CANCEL"));
363     btnCancel->SetToolTip(_("Cancel changes made\nto the values in the editor."));
364     buttonsSizer->Add(btnCancel, 1, wxALL|wxEXPAND, 5);
365     mainSizer->Add(buttonsSizer, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 1);
366     SetSizer(mainSizer);
367     tmrValidateInput.SetOwner(this, ID_VALIDATE_TIMER);
368     tmrValidateInput.Start(500, false);
369     SetSizer(mainSizer);
370     Layout();
371     Center();
372 
373     Connect(ID_STATUS_COMBOBOX,wxEVT_COMMAND_COMBOBOX_SELECTED,(wxObjectEventFunction)&avVersionEditorDlg::OnCmbStatusSelect);
374     Connect(ID_COMMIT_CHECK,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnChkCommitClick);
375     Connect(ID_HEADERPATH_BUTTON,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnHeaderPathClick);
376     Connect(ID_SVN_CHECK,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnSvnCheck);
377     Connect(ID_SVNDIR_BUTTON,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnSvnDirectoryClick);
378     Connect(ID_CHANGESLOGPATH_BUTTON,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnChangesLogPathClick);
379     Connect(ID_ACCEPT,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnAcceptClick);
380     Connect(ID_CANCEL,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&avVersionEditorDlg::OnCancelClick);
381     Connect(ID_VALIDATE_TIMER,wxEVT_TIMER,(wxObjectEventFunction)&avVersionEditorDlg::OnTmrValidateInputTrigger);
382     Connect(wxEVT_ENTER_WINDOW,(wxObjectEventFunction)&avVersionEditorDlg::OnMouseEnter);
383     //*)
384 
385     tmrValidateInput.Stop();
386 }
387 
~avVersionEditorDlg()388 avVersionEditorDlg::~avVersionEditorDlg()
389 {
390     //(*Destroy(avVersionEditorDlg)
391     //*)
392 }
393 //}
394 
395 
396 //{Version Values
SetMajor(long value)397 void avVersionEditorDlg::SetMajor(long value)
398 {
399     m_major = value;
400     wxString strValue;
401     strValue.Printf(_T("%ld"),value);
402     txtMajorVersion->SetValue(strValue);
403 }
404 
SetMinor(long value)405 void avVersionEditorDlg::SetMinor(long value)
406 {
407     m_minor = value;
408     wxString strValue;
409     strValue.Printf(_T("%ld"),value);
410     txtMinorVersion->SetValue(strValue);
411 }
412 
SetBuild(long value)413 void avVersionEditorDlg::SetBuild(long value)
414 {
415     m_build = value;
416     wxString strValue;
417     strValue.Printf(_T("%ld"),value);
418     txtBuildNumber->SetValue(strValue);
419 }
420 
SetRevision(long value)421 void avVersionEditorDlg::SetRevision(long value)
422 {
423     m_revision = value;
424     wxString strValue;
425     strValue.Printf(_T("%ld"),value);
426     txtRevisionNumber->SetValue(strValue);
427 }
428 
SetCount(long value)429 void avVersionEditorDlg::SetCount(long value)
430 {
431     m_count = value;
432     wxString strValue;
433     strValue.Printf(_T("%ld"),value);
434     txtBuildCount->SetValue(strValue);
435 }
436 //}
437 
438 //{Settings
SetAuto(bool value)439 void avVersionEditorDlg::SetAuto(bool value)
440 {
441 	m_autoMajorMinor = value;
442 	chkAutoIncrement->SetValue(value);
443 }
444 
SetDates(bool value)445 void avVersionEditorDlg::SetDates(bool value)
446 {
447 	m_dates = value;
448 	chkDates->SetValue(value);
449 }
450 
SetDefine(bool value)451 void avVersionEditorDlg::SetDefine(bool value)
452 {
453 	m_useDefine = value;
454 	chkDefine->SetValue(value);
455 }
456 
457 // GJH 03/03/10 Added manifest updating.
SetManifest(bool value)458 void avVersionEditorDlg::SetManifest(bool value)
459 {
460 	m_updateManifest = value;
461 	chkUpdateManifest->SetValue(value);
462 }
463 
SetSvn(bool value)464 void avVersionEditorDlg::SetSvn(bool value)
465 {
466 	m_svn = value;
467 	chkSvn->SetValue(value);
468     if(!value)
469     {
470         txtSvnDir->Disable();
471         btnSvnDir->Disable();
472     }
473     else
474     {
475         txtSvnDir->Enable();
476         btnSvnDir->Enable();
477     }
478 }
479 
SetSvnDirectory(const wxString & value)480 void avVersionEditorDlg::SetSvnDirectory(const wxString& value)
481 {
482     if (!value.IsEmpty())
483     {
484         m_svnDirectory = value;
485         txtSvnDir->SetValue(m_svnDirectory);
486     }
487 }
488 
SetCommit(bool value)489 void avVersionEditorDlg::SetCommit(bool value)
490 {
491 	m_commit = value;
492 	chkCommit->SetValue(value);
493     if(!value)
494     {
495         chkAskCommit->Disable();
496     }
497     else
498     {
499         chkAskCommit->Enable();
500     }
501 }
502 
SetCommitAsk(bool value)503 void avVersionEditorDlg::SetCommitAsk(bool value)
504 {
505 	m_askCommit = value;
506 	chkAskCommit->SetValue(value);
507 }
508 
SetLanguage(const wxString & value)509 void avVersionEditorDlg::SetLanguage(const wxString& value)
510 {
511     if (!value.IsEmpty())
512     {
513         m_language = value;
514         rbHeaderLanguage->SetStringSelection(value);
515     }
516 }
517 
SetHeaderPath(const wxString & value)518 void avVersionEditorDlg::SetHeaderPath(const wxString& value)
519 {
520     m_headerPath = value;
521     txtHeaderPath->SetValue(value);
522 }
523 //}
524 
525 //{Software Status
SetStatus(const wxString & value)526 void avVersionEditorDlg::SetStatus(const wxString& value)
527 {
528     if (!value.IsEmpty())
529     {
530         m_status = value;
531         cmbStatus->SetValue(value);
532     }
533 }
534 
SetStatusAbbreviation(const wxString & value)535 void avVersionEditorDlg::SetStatusAbbreviation(const wxString& value)
536 {
537     if (!value.IsEmpty())
538     {
539         m_statusAbbreviation = value;
540         cmbAbbreviation->SetValue(value);
541     }
542 }
543 //}
544 
545 //{Scheme
SetMinorMaximum(long value)546 void avVersionEditorDlg::SetMinorMaximum(long value)
547 {
548 	m_minorMaximun = value;
549 	wxString strValue;
550 	strValue.Printf(_T("%ld"),value);
551 	txtMinorMaximun->SetValue(strValue);
552 }
553 
SetBuildMaximum(long value)554 void avVersionEditorDlg::SetBuildMaximum(long value)
555 {
556 	m_buildMaximun = value;
557 	wxString strValue;
558 	strValue.Printf(_T("%ld"),value);
559 	txtBuildNumberMaximun->SetValue(strValue);
560 }
561 
SetRevisionMaximum(long value)562 void avVersionEditorDlg::SetRevisionMaximum(long value)
563 {
564 	m_revisionMaximun = value;
565 	wxString strValue;
566 	strValue.Printf(_T("%ld"),value);
567 	txtRevisionMax->SetValue(strValue);
568 }
569 
SetRevisionRandomMaximum(long value)570 void avVersionEditorDlg::SetRevisionRandomMaximum(long value)
571 {
572 	m_revisionRandomMaximun = value;
573 	wxString strValue;
574 	strValue.Printf(_T("%ld"),value);
575 	txtRevisionRandom->SetValue(strValue);
576 }
577 
SetBuildTimesToMinorIncrement(long value)578 void avVersionEditorDlg::SetBuildTimesToMinorIncrement(long value)
579 {
580 	m_buildTimesToMinorIncrement = value;
581 	wxString strValue;
582 	strValue.Printf(_T("%ld"),value);
583 	txtBuildTimes->SetValue(strValue);
584 }
585 //}
586 
587 //{Changes Log
SetChanges(bool value)588 void avVersionEditorDlg::SetChanges(bool value)
589 {
590     m_changes = value;
591 	chkChanges->SetValue(value);
592 }
593 
SetChangesLogPath(const wxString & value)594 void avVersionEditorDlg::SetChangesLogPath(const wxString& value)
595 {
596     m_changesLogPath = value;
597     txtChangesLogPath->SetValue(value);
598 }
599 
SetChangesTitle(const wxString & value)600 void avVersionEditorDlg::SetChangesTitle(const wxString& value)
601 {
602     if (!value.IsEmpty())
603     {
604         m_changesTitle = value;
605         txtChangesTitle->SetValue(value);
606     }
607 }
608 //}
609 
610 //{Code
SetHeaderGuard(const wxString & value)611 void avVersionEditorDlg::SetHeaderGuard(const wxString& value)
612 {
613     m_headerGuard = value;
614     txtHeaderGuard->SetValue(value);
615 }
616 
SetNamespace(const wxString & value)617 void avVersionEditorDlg::SetNamespace(const wxString& value)
618 {
619     m_namespace = value;
620     txtNameSpace->SetValue(value);
621 }
622 
SetPrefix(const wxString & value)623 void avVersionEditorDlg::SetPrefix(const wxString& value)
624 {
625     m_prefix = value;
626     txtPrefix->SetValue(value);
627 }
628 //}
629 
SetCurrentProject(const wxString & projectName)630 void avVersionEditorDlg::SetCurrentProject(const wxString& projectName)
631 {
632     lblCurrentProject->SetLabel(lblCurrentProject->GetLabel() + projectName);
633 }
634 
635 //{Events
OnAcceptClick(wxCommandEvent &)636 void avVersionEditorDlg::OnAcceptClick(wxCommandEvent&)
637 {
638     tmrValidateInput.Stop();
639     ValidateInput();
640 
641     txtMajorVersion->GetValue().ToLong(&m_major);
642     txtMinorVersion->GetValue().ToLong(&m_minor);
643     txtBuildNumber->GetValue().ToLong(&m_build);
644     txtRevisionNumber->GetValue().ToLong(&m_revision);
645     txtBuildCount->GetValue().ToLong(&m_count);
646 
647     m_autoMajorMinor = chkAutoIncrement->IsChecked();
648     m_dates = chkDates->IsChecked();
649     m_useDefine = chkDefine->IsChecked();
650 	// GJH 03/03/10 Added manifest updating.
651 	m_updateManifest = chkUpdateManifest->IsChecked();
652     m_svn = chkSvn->IsChecked();
653     m_svnDirectory = txtSvnDir->GetValue();
654     m_commit = chkCommit->IsChecked();
655     m_askCommit = chkAskCommit->IsChecked();
656     m_language = rbHeaderLanguage->GetStringSelection();
657     m_headerPath = txtHeaderPath->GetValue();
658 
659     m_status = cmbStatus->GetValue();
660     m_statusAbbreviation = cmbAbbreviation->GetValue();
661 
662     txtMinorMaximun->GetValue().ToLong(&m_minorMaximun);
663     txtBuildNumberMaximun->GetValue().ToLong(&m_buildMaximun);
664     txtRevisionMax->GetValue().ToLong(&m_revisionMaximun);
665     txtRevisionRandom->GetValue().ToLong(&m_revisionRandomMaximun);
666     txtBuildTimes->GetValue().ToLong(&m_buildTimesToMinorIncrement);
667 
668     m_changes = chkChanges->IsChecked();
669     m_changesTitle = txtChangesTitle->GetValue();
670     m_changesLogPath = txtChangesLogPath->GetValue();
671 
672     m_headerGuard = txtHeaderGuard->GetValue();
673     m_namespace = txtNameSpace->GetValue();
674     m_prefix = txtPrefix->GetValue();
675 
676     EndModal(0);
677 }
678 
OnCancelClick(wxCommandEvent &)679 void avVersionEditorDlg::OnCancelClick(wxCommandEvent&)
680 {
681     tmrValidateInput.Stop();
682     EndModal(0);
683 }
684 
OnSvnCheck(wxCommandEvent &)685 void avVersionEditorDlg::OnSvnCheck(wxCommandEvent&)
686 {
687     if (chkSvn->IsChecked())
688     {
689         txtSvnDir->Enable();
690         txtSvnDir->SetValue(m_svnDirectory);
691         btnSvnDir->Enable();
692     }
693     else
694     {
695         txtSvnDir->Disable();
696         btnSvnDir->Disable();
697     }
698 }
699 
OnSvnDirectoryClick(wxCommandEvent &)700 void avVersionEditorDlg::OnSvnDirectoryClick(wxCommandEvent&)
701 {
702     wxString dir = wxDirSelector(wxDirSelectorPromptStr, m_svnDirectory, 0, wxDefaultPosition, this);
703     if (!dir.IsEmpty())
704     {
705         txtSvnDir->SetValue(dir);
706         m_svnDirectory = txtSvnDir->GetValue();
707     }
708 }
709 
OnChkCommitClick(wxCommandEvent &)710 void avVersionEditorDlg::OnChkCommitClick(wxCommandEvent&)
711 {
712     if (chkCommit->IsChecked())
713     {
714         chkAskCommit->Enable();
715     }
716     else
717     {
718         chkAskCommit->Disable();
719     }
720 }
721 
OnCmbStatusSelect(wxCommandEvent &)722 void avVersionEditorDlg::OnCmbStatusSelect(wxCommandEvent&)
723 {
724     int status = cmbStatus->GetCurrentSelection();
725     if (status != 4)
726     {
727         cmbAbbreviation->SetSelection(status);
728     }
729     else
730     {
731         cmbAbbreviation->SetValue(_T(""));
732         cmbStatus->SetValue(_T(""));
733     }
734 }
735 
ValidateInput()736 void avVersionEditorDlg::ValidateInput()
737 {
738     wxString type = _T("");
739 
740     if(this->FindFocus())
741     {
742         type = cbC2U(typeid(*(this->FindFocus())).name());
743     }
744 
745     if (type.Find(_T("wxTextCtrl")) != wxNOT_FOUND)
746     {
747         ForceValidation:; //To force validation when the user clicks the Accept buttom or other control not of type wxTexCtrl
748 
749         if (l_FocusedControl != this->FindFocus() && l_FocusedControl != 0)
750         {
751             wxString ifBlank;
752             wxString ifZero;
753 
754             if (l_FocusedControl->GetName() == _T("ID_MINORMAXIMUM_TEXT"))
755             {
756                 ifBlank = _T("10");
757                 ifZero = _T("1");
758             }
759             else if(l_FocusedControl->GetName() == _T("ID_BUILDNUMBERMAX_TEXT"))
760             {
761                 ifBlank = _T("0");
762                 ifZero = _T("0");
763             }
764             else if(l_FocusedControl->GetName() == _T("ID_REVISIONMAX_TEXT"))
765             {
766                 ifBlank = _T("0");
767                 ifZero = _T("0");
768             }
769             else if(l_FocusedControl->GetName() == _T("ID_BUILDTIMES_TEXT"))
770             {
771                 ifBlank = _T("100");
772                 ifZero = _T("1");
773             }
774             else if(l_FocusedControl->GetName() == _T("ID_REVISIONRANDOM_TEXT"))
775             {
776                 ifBlank = _T("10");
777                 ifZero = _T("1");
778             }
779 
780             if(l_FocusedControl->GetValue() == _T("0"))
781             {
782                 l_FocusedControl->SetValue(ifZero);
783             }
784             else if(l_FocusedControl->GetValue().Trim() == _T(""))
785             {
786                 l_FocusedControl->SetValue(ifBlank);
787             }
788 
789             l_FocusedControl = 0;
790         }
791 
792         if (this->FindFocus() == txtRevisionRandom)
793         {
794             l_FocusedControl = txtRevisionRandom;
795         }
796         else if (this->FindFocus() == txtMinorMaximun)
797         {
798             l_FocusedControl = txtMinorMaximun;
799         }
800         else if (this->FindFocus() == txtBuildNumberMaximun)
801         {
802             l_FocusedControl = txtBuildNumberMaximun;
803         }
804         else if (this->FindFocus() == txtRevisionMax)
805         {
806             l_FocusedControl = txtRevisionMax;
807         }
808         else if (this->FindFocus() == txtBuildTimes)
809         {
810             l_FocusedControl = txtBuildTimes;
811         }
812 
813     }
814     else
815     {
816         goto ForceValidation; // KILLERBOT : can we do without ugly goto : normal C++ rule : sure we can --> investigate and solve
817         // weird / the goto target is the first part of the if clause of the else part, so that means that in both situations (if/else)
818         // the smae thing should happen ==> either this is an error , or we can do without the if test and as such without the goto
819         //  bye bye goto :-) :-) :-)
820     }
821 }
822 
OnTmrValidateInputTrigger(wxTimerEvent &)823 void avVersionEditorDlg::OnTmrValidateInputTrigger(wxTimerEvent& /*event*/)
824 {
825     ValidateInput();
826 }
827 
OnMouseEnter(wxMouseEvent &)828 void avVersionEditorDlg::OnMouseEnter(wxMouseEvent& /*event*/)
829 {
830     tmrValidateInput.Start(250, false);
831 }
832 
OnHeaderPathClick(wxCommandEvent &)833 void avVersionEditorDlg::OnHeaderPathClick(wxCommandEvent& /*event*/)
834 {
835     wxString path, filename, extension;
836     wxFileName::SplitPath(m_headerPath, &path, &filename, &extension);
837 
838     wxString fullpath;
839     fullpath = wxFileSelector(_("Select the header path and filename:"), path, filename, extension, _T("C/C++ Header (*.h)|*.h|All Files (*.*)|*.*"));
840 
841     if(!fullpath.IsEmpty())
842     {
843         wxFileName relativeFile(fullpath);
844         relativeFile.MakeRelativeTo();
845 
846         txtHeaderPath->SetValue(relativeFile.GetFullPath());
847     }
848 }
849 
OnChangesLogPathClick(wxCommandEvent &)850 void avVersionEditorDlg::OnChangesLogPathClick(wxCommandEvent& /*event*/)
851 {
852     wxString path, filename, extension;
853     wxFileName::SplitPath(m_changesLogPath, &path, &filename, &extension);
854 
855     wxString fullpath;
856     fullpath = wxFileSelector(_("Select the changeslog path and filename:"), path, filename, extension, _T("Text File (*.txt)|*.txt"));
857 
858     if(!fullpath.IsEmpty()){
859         wxFileName relativeFile(fullpath);
860         relativeFile.MakeRelativeTo();
861 
862         txtChangesLogPath->SetValue(relativeFile.GetFullPath());
863     }
864 }
865 //}
866