1 /////////////////////////////////////////////////////////////////////////////
2 // Name: settingsdialog.cpp
3 // Purpose: Settings dialog
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
10 /////////////////////////////////////////////////////////////////////////////
12 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "settingsdialog.h"
16 // For compilers that support precompilation, includes "wx/wx.h".
17 #include "wx/wxprec.h"
25 #include "wx/statline.h"
26 #include "wx/splitter.h"
27 #include "wx/scrolwin.h"
28 #include "wx/spinctrl.h"
29 #include "wx/spinbutt.h"
33 #include "wx/cshelp.h"
34 #include "wx/notebook.h"
35 #include "wx/valgen.h"
36 #include "wxconfigtool.h"
37 #include "settingsdialog.h"
43 * ctSettingsDialog type definition
46 IMPLEMENT_CLASS( ctSettingsDialog
, wxDialog
)
49 * ctSettingsDialog event table definition
52 BEGIN_EVENT_TABLE( ctSettingsDialog
, wxDialog
)
54 ////@begin ctSettingsDialog event table entries
55 EVT_BUTTON( wxID_OK
, ctSettingsDialog::OnOk
)
57 EVT_BUTTON( wxID_CANCEL
, ctSettingsDialog::OnCancel
)
59 EVT_BUTTON( wxID_HELP
, ctSettingsDialog::OnHelp
)
61 ////@end ctSettingsDialog event table entries
66 * ctSettingsDialog constructor
69 ctSettingsDialog::ctSettingsDialog( wxWindow
* parent
)
71 SetExtraStyle(wxDIALOG_EX_CONTEXTHELP
|wxWS_EX_VALIDATE_RECURSIVELY
);
72 wxDialog::Create( parent
, wxID_ANY
, _("Configuration Settings"));
77 * Control creation for ctSettingsDialog
80 void ctSettingsDialog::CreateControls()
82 ////@begin ctSettingsDialog content construction
84 ctSettingsDialog
* item1
= this;
86 wxBoxSizer
* item2
= new wxBoxSizer(wxVERTICAL
);
87 item1
->SetSizer(item2
);
89 m_notebook
= new wxNotebook(item1
, wxID_ANY
, wxDefaultPosition
, wxSize(200, 200), wxNB_TOP
);
90 ctGeneralSettingsDialog
* item4
= new ctGeneralSettingsDialog(m_notebook
, ID_GENERAL_SETTINGS_DIALOG
, wxDefaultPosition
, wxSize(100, 80), 0);
91 m_notebook
->AddPage(item4
, _("General"));
92 ctLocationSettingsDialog
* item11
= new ctLocationSettingsDialog(m_notebook
, ID_LOCATION_SETTINGS_DIALOG
, wxDefaultPosition
, wxSize(100, 80), 0);
93 m_notebook
->AddPage(item11
, _("Locations"));
94 item2
->Add(m_notebook
, 0, wxGROW
|wxALL
, 5);
96 wxBoxSizer
* item21
= new wxBoxSizer(wxHORIZONTAL
);
97 item2
->Add(item21
, 0, wxGROW
|wxALL
, 5);
99 item21
->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
101 wxButton
* item23
= new wxButton(item1
, wxID_OK
, _("&OK"), wxDefaultPosition
, wxDefaultSize
, 0);
102 item23
->SetDefault();
103 item21
->Add(item23
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
105 wxButton
* item24
= new wxButton(item1
, wxID_CANCEL
, _("&Cancel"), wxDefaultPosition
, wxDefaultSize
, 0);
106 item21
->Add(item24
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
108 wxButton
* item25
= new wxButton(item1
, wxID_HELP
, _("&Help"), wxDefaultPosition
, wxDefaultSize
, 0);
109 item21
->Add(item25
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
111 #if defined(__WXGTK__) || defined(__WXMAC__)
112 wxContextHelpButton
* item26
= new wxContextHelpButton(item1
, wxID_CONTEXT_HELP
, wxDefaultPosition
, wxSize(20, wxDefaultCoord
), wxBU_AUTODRAW
);
113 item21
->Add(item26
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
116 GetSizer()->Fit(this);
117 GetSizer()->SetSizeHints(this);
119 ////@end ctSettingsDialog content construction
123 * Event handler for wxID_OK
126 void ctSettingsDialog::OnOk( wxCommandEvent
& event
)
128 // Replace with custom code
133 * Event handler for wxID_CANCEL
136 void ctSettingsDialog::OnCancel( wxCommandEvent
& event
)
138 // Replace with custom code
143 * Event handler for wxID_HELP
146 void ctSettingsDialog::OnHelp( wxCommandEvent
& WXUNUSED(event
) )
150 int sel
= m_notebook
->GetSelection();
152 wxASSERT_MSG( (sel
!= -1), wxT("A notebook tab should always be selected."));
154 wxWindow
* page
= (wxWindow
*) m_notebook
->GetPage(sel
);
157 if (page
->GetId() == ID_GENERAL_SETTINGS_DIALOG
)
159 helpTopic
= wxT("General settings dialog");
161 else if (page
->GetId() == ID_LOCATION_SETTINGS_DIALOG
)
163 helpTopic
= wxT("Location settings dialog");
166 if (!helpTopic
.IsEmpty())
168 wxGetApp().GetHelpController().DisplaySection(helpTopic
);
174 * Should we show tooltips?
177 bool ctSettingsDialog::ShowToolTips()
183 * ctGeneralSettingsDialog type definition
186 IMPLEMENT_CLASS( ctGeneralSettingsDialog
, wxPanel
)
189 * ctGeneralSettingsDialog event table definition
192 BEGIN_EVENT_TABLE( ctGeneralSettingsDialog
, wxPanel
)
194 ////@begin ctGeneralSettingsDialog event table entries
195 ////@end ctGeneralSettingsDialog event table entries
200 * ctGeneralSettingsDialog constructor
203 ctGeneralSettingsDialog::ctGeneralSettingsDialog( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
205 wxPanel::Create( parent
, id
, pos
, size
, style
);
211 * Control creation for ctGeneralSettingsDialog
214 void ctGeneralSettingsDialog::CreateControls()
216 ////@begin ctGeneralSettingsDialog content construction
218 ctGeneralSettingsDialog
* item4
= this;
220 wxBoxSizer
* item5
= new wxBoxSizer(wxVERTICAL
);
221 item4
->SetSizer(item5
);
223 wxStaticBox
* item6Static
= new wxStaticBox(item4
, wxID_ANY
, _("General settings"));
224 wxStaticBoxSizer
* item6
= new wxStaticBoxSizer(item6Static
, wxVERTICAL
);
225 item5
->Add(item6
, 1, wxGROW
|wxALL
, 5);
227 wxCheckBox
* item7
= new wxCheckBox(item4
, ID_LOAD_LAST_DOCUMENT
, _("&Load last document"), wxDefaultPosition
, wxDefaultSize
, 0);
228 item7
->SetValue(false);
229 item7
->SetHelpText(_("Check to load the last document on startup"));
232 item7
->SetToolTip(_("Check to load the last document on startup"));
234 item6
->Add(item7
, 0, wxALIGN_LEFT
|wxALL
, 5);
236 wxCheckBox
* item8
= new wxCheckBox(item4
, ID_SHOW_TOOLTIPS
, _("&Show tooltips"), wxDefaultPosition
, wxDefaultSize
, 0);
237 item8
->SetValue(false);
238 item8
->SetHelpText(_("Check to show tooltips"));
241 item8
->SetToolTip(_("Check to show tooltips"));
243 item6
->Add(item8
, 0, wxALIGN_LEFT
|wxALL
, 5);
245 wxStaticText
* item9
= new wxStaticText(item4
, wxID_STATIC
, _("&Default file kind to save when using the Go command:"), wxDefaultPosition
, wxDefaultSize
, 0);
246 item6
->Add(item9
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
248 wxString item10Strings
[] = {
250 _("Configure script")
252 wxChoice
* item10
= new wxChoice(item4
, ID_DEFAULT_FILE_KIND
, wxDefaultPosition
, wxSize(200, wxDefaultCoord
), 2, item10Strings
, 0);
253 item10
->SetStringSelection(_("Setup file"));
254 item10
->SetHelpText(_("Select the default kind of file to save using Go"));
257 item10
->SetToolTip(_("Select the default kind of file to save using Go"));
259 item6
->Add(item10
, 0, wxGROW
|wxALL
, 5);
261 GetSizer()->Fit(this);
262 ////@end ctGeneralSettingsDialog content construction
264 item7
->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_loadLastDocument
));
265 item8
->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useToolTips
));
266 item10
->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_defaultFileKind
));
270 * Should we show tooltips?
273 bool ctGeneralSettingsDialog::ShowToolTips()
279 * ctLocationSettingsDialog type definition
282 IMPLEMENT_CLASS( ctLocationSettingsDialog
, wxPanel
)
285 * ctLocationSettingsDialog event table definition
288 BEGIN_EVENT_TABLE( ctLocationSettingsDialog
, wxPanel
)
290 ////@begin ctLocationSettingsDialog event table entries
291 EVT_UPDATE_UI( ID_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnUpdateWxwinHierarchy
)
293 EVT_BUTTON( ID_CHOOSE_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnChooseWxwinHierarchy
)
294 EVT_UPDATE_UI( ID_CHOOSE_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy
)
296 ////@end ctLocationSettingsDialog event table entries
301 * ctLocationSettingsDialog constructor
304 ctLocationSettingsDialog::ctLocationSettingsDialog( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
306 wxPanel::Create( parent
, id
, pos
, size
, style
);
312 * Control creation for ctLocationSettingsDialog
315 void ctLocationSettingsDialog::CreateControls()
317 ////@begin ctLocationSettingsDialog content construction
319 ctLocationSettingsDialog
* item11
= this;
321 wxBoxSizer
* item12
= new wxBoxSizer(wxVERTICAL
);
322 item11
->SetSizer(item12
);
324 wxStaticBox
* item13Static
= new wxStaticBox(item11
, wxID_ANY
, _("Locations"));
325 wxStaticBoxSizer
* item13
= new wxStaticBoxSizer(item13Static
, wxVERTICAL
);
326 item12
->Add(item13
, 1, wxGROW
|wxALL
, 5);
328 wxStaticText
* item14
= new wxStaticText(item11
, wxID_STATIC
, _("&wxWidgets hierarchy:"), wxDefaultPosition
, wxDefaultSize
, 0);
329 item13
->Add(item14
, 0, wxALIGN_LEFT
|wxALL
|wxADJUST_MINSIZE
, 5);
331 wxBoxSizer
* item15
= new wxBoxSizer(wxHORIZONTAL
);
332 item13
->Add(item15
, 0, wxGROW
, 5);
334 m_wxWinHierarchy
= new wxTextCtrl(item11
, ID_WXWIN_HIERARCHY
, wxEmptyString
, wxDefaultPosition
, wxSize(200, wxDefaultCoord
), 0);
335 m_wxWinHierarchy
->SetHelpText(_("Enter the root path of the wxWidgets hierarchy"));
338 m_wxWinHierarchy
->SetToolTip(_("Enter the root path of the wxWidgets hierarchy"));
340 item15
->Add(m_wxWinHierarchy
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
342 wxButton
* item17
= new wxButton(item11
, ID_CHOOSE_WXWIN_HIERARCHY
, _("&Choose..."), wxDefaultPosition
, wxDefaultSize
, 0);
343 item17
->SetHelpText(_("Click to choose the root path of the wxWidgets hierarchy\\n"));
346 item17
->SetToolTip(_("Click to choose the root path of the wxWidgets hierarchy\\n"));
348 item15
->Add(item17
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
350 wxBoxSizer
* item18
= new wxBoxSizer(wxHORIZONTAL
);
351 item13
->Add(item18
, 0, wxGROW
, 5);
353 item18
->Add(60, 5, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
355 m_wxWinUse
= new wxCheckBox(item11
, ID_USE_WXWIN
, _("&Use WXWIN environment variable"));
356 m_wxWinUse
->SetValue(false);
357 m_wxWinUse
->SetHelpText(_("Check to use the value of WXWIN instead"));
360 m_wxWinUse
->SetToolTip(_("Check to use the value of WXWIN instead"));
362 item18
->Add(m_wxWinUse
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
364 GetSizer()->Fit(this);
365 ////@end ctLocationSettingsDialog content construction
367 m_wxWinHierarchy
->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_frameworkDir
));
368 m_wxWinUse
->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useEnvironmentVariable
));
372 * Update event handler for ID_WXWIN_HIERARCHY
375 void ctLocationSettingsDialog::OnUpdateWxwinHierarchy( wxUpdateUIEvent
& event
)
378 event
.Enable(!m_wxWinUse
->GetValue());
382 * Event handler for ID_CHOOSE_WXWIN_HIERARCHY
385 void ctLocationSettingsDialog::OnChooseWxwinHierarchy( wxCommandEvent
& WXUNUSED(event
) )
387 if (m_wxWinHierarchy
)
389 wxString defaultPath
= m_wxWinHierarchy
->GetValue();
391 wxDirDialog
dialog(this, _("Choose the location of the wxWidgets hierarchy"),
393 if (dialog
.ShowModal() == wxID_OK
)
395 m_wxWinHierarchy
->SetValue(dialog
.GetPath());
401 * Update event handler for ID_CHOOSE_WXWIN_HIERARCHY
404 void ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy( wxUpdateUIEvent
& event
)
407 event
.Enable(!m_wxWinUse
->GetValue());
411 * Should we show tooltips?
414 bool ctLocationSettingsDialog::ShowToolTips()
416 return wxGetApp().GetSettings().m_useToolTips
;