1 /////////////////////////////////////////////////////////////////////////////
2 // Name: settingsdialog.cpp
10 /////////////////////////////////////////////////////////////////////////////
12 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "settingsdialog.h"
17 #include "wx/cshelp.h"
18 #include "wx/statline.h"
19 #include "wx/splitter.h"
20 #include "wx/scrolwin.h"
21 #include "wx/spinctrl.h"
22 #include "wx/spinbutt.h"
23 #include "wx/valgen.h"
24 #include "wx/notebook.h"
26 #include "wxconfigtool.h"
27 #include "settingsdialog.h"
33 * ctSettingsDialog type definition
36 IMPLEMENT_CLASS( ctSettingsDialog
, wxDialog
)
39 * ctSettingsDialog event table definition
42 BEGIN_EVENT_TABLE( ctSettingsDialog
, wxDialog
)
44 ////@begin ctSettingsDialog event table entries
45 EVT_BUTTON( wxID_OK
, ctSettingsDialog::OnOk
)
47 EVT_BUTTON( wxID_CANCEL
, ctSettingsDialog::OnCancel
)
49 EVT_BUTTON( wxID_HELP
, ctSettingsDialog::OnHelp
)
51 ////@end ctSettingsDialog event table entries
56 * ctSettingsDialog constructor
59 ctSettingsDialog::ctSettingsDialog( wxWindow
* parent
, wxWindowID id
, const wxString
& caption
, const wxPoint
& pos
, const wxSize
& size
, long style
)
61 SetExtraStyle(wxDIALOG_EX_CONTEXTHELP
|wxWS_EX_VALIDATE_RECURSIVELY
);
62 wxDialog::Create( parent
, id
, caption
, pos
, size
, style
);
68 * Control creation for ctSettingsDialog
71 void ctSettingsDialog::CreateControls()
73 ////@begin ctSettingsDialog content construction
75 ctSettingsDialog
* item1
= this;
77 wxBoxSizer
* item2
= new wxBoxSizer(wxVERTICAL
);
78 item1
->SetSizer(item2
);
80 wxNotebook
* item3
= new wxNotebook(item1
, ID_NOTEBOOK
, wxDefaultPosition
, wxSize(200, 200), wxNB_TOP
);
81 wxNotebookSizer
* item3Sizer
= new wxNotebookSizer(item3
);
82 ctGeneralSettingsDialog
* item4
= new ctGeneralSettingsDialog(item3
, ID_GENERAL_SETTINGS_DIALOG
, wxDefaultPosition
, wxSize(100, 80), 0);
83 item3
->AddPage(item4
, _("General"));
84 ctLocationSettingsDialog
* item11
= new ctLocationSettingsDialog(item3
, ID_LOCATION_SETTINGS_DIALOG
, wxDefaultPosition
, wxSize(100, 80), 0);
85 item3
->AddPage(item11
, _("Locations"));
86 item2
->Add(item3Sizer
, 0, wxGROW
|wxALL
, 5);
88 wxBoxSizer
* item21
= new wxBoxSizer(wxHORIZONTAL
);
89 item2
->Add(item21
, 0, wxGROW
|wxALL
, 5);
91 item21
->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
93 wxButton
* item23
= new wxButton(item1
, wxID_OK
, _("&OK"), wxDefaultPosition
, wxDefaultSize
, 0);
95 item21
->Add(item23
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
97 wxButton
* item24
= new wxButton(item1
, wxID_CANCEL
, _("&Cancel"), wxDefaultPosition
, wxDefaultSize
, 0);
98 item21
->Add(item24
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
100 wxButton
* item25
= new wxButton(item1
, wxID_HELP
, _("&Help"), wxDefaultPosition
, wxDefaultSize
, 0);
101 item21
->Add(item25
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
103 #if defined(__WXGTK__) || defined(__WXMAC__)
104 wxContextHelpButton
* item26
= new wxContextHelpButton(item1
, wxID_CONTEXT_HELP
, wxDefaultPosition
, wxSize(20, wxDefaultSize
.y
), wxBU_AUTODRAW
);
105 item21
->Add(item26
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
108 GetSizer()->Fit(this);
109 GetSizer()->SetSizeHints(this);
111 ////@end ctSettingsDialog content construction
115 * Event handler for wxID_OK
118 void ctSettingsDialog::OnOk( wxCommandEvent
& event
)
120 // Replace with custom code
125 * Event handler for wxID_CANCEL
128 void ctSettingsDialog::OnCancel( wxCommandEvent
& event
)
130 // Replace with custom code
135 * Event handler for wxID_HELP
138 void ctSettingsDialog::OnHelp( wxCommandEvent
& WXUNUSED(event
) )
140 wxNotebook
* notebook
= (wxNotebook
*) FindWindow(ID_NOTEBOOK
);
142 int sel
= notebook
->GetSelection();
144 wxASSERT_MSG( (sel
!= -1), wxT("A notebook tab should always be selected."));
146 wxWindow
* page
= (wxWindow
*) notebook
->GetPage(sel
);
149 if (page
->GetId() == ID_GENERAL_SETTINGS_DIALOG
)
151 helpTopic
= wxT("General settings dialog");
153 else if (page
->GetId() == ID_LOCATION_SETTINGS_DIALOG
)
155 helpTopic
= wxT("Location settings dialog");
158 if (!helpTopic
.IsEmpty())
160 wxGetApp().GetHelpController().DisplaySection(helpTopic
);
165 * Should we show tooltips?
168 bool ctSettingsDialog::ShowToolTips()
174 * ctGeneralSettingsDialog type definition
177 IMPLEMENT_CLASS( ctGeneralSettingsDialog
, wxPanel
)
180 * ctGeneralSettingsDialog event table definition
183 BEGIN_EVENT_TABLE( ctGeneralSettingsDialog
, wxPanel
)
185 ////@begin ctGeneralSettingsDialog event table entries
186 ////@end ctGeneralSettingsDialog event table entries
191 * ctGeneralSettingsDialog constructor
194 ctGeneralSettingsDialog::ctGeneralSettingsDialog( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
196 wxPanel::Create( parent
, id
, pos
, size
, style
);
202 * Control creation for ctGeneralSettingsDialog
205 void ctGeneralSettingsDialog::CreateControls()
207 ////@begin ctGeneralSettingsDialog content construction
209 ctGeneralSettingsDialog
* item4
= this;
211 wxBoxSizer
* item5
= new wxBoxSizer(wxVERTICAL
);
212 item4
->SetSizer(item5
);
214 wxStaticBox
* item6Static
= new wxStaticBox(item4
, wxID_ANY
, _("General settings"));
215 wxStaticBoxSizer
* item6
= new wxStaticBoxSizer(item6Static
, wxVERTICAL
);
216 item5
->Add(item6
, 1, wxGROW
|wxALL
, 5);
218 wxCheckBox
* item7
= new wxCheckBox(item4
, ID_LOAD_LAST_DOCUMENT
, _("&Load last document"), wxDefaultPosition
, wxDefaultSize
, 0);
219 item7
->SetValue(false);
220 item7
->SetHelpText(_("Check to load the last document on startup"));
223 item7
->SetToolTip(_("Check to load the last document on startup"));
225 item6
->Add(item7
, 0, wxALIGN_LEFT
|wxALL
, 5);
227 wxCheckBox
* item8
= new wxCheckBox(item4
, ID_SHOW_TOOLTIPS
, _("&Show tooltips"), wxDefaultPosition
, wxDefaultSize
, 0);
228 item8
->SetValue(false);
229 item8
->SetHelpText(_("Check to show tooltips"));
232 item8
->SetToolTip(_("Check to show tooltips"));
234 item6
->Add(item8
, 0, wxALIGN_LEFT
|wxALL
, 5);
236 wxStaticText
* item9
= new wxStaticText(item4
, wxID_STATIC
, _("&Default file kind to save when using the Go command:"), wxDefaultPosition
, wxDefaultSize
, 0);
237 item6
->Add(item9
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
|wxADJUST_MINSIZE
, 5);
239 wxString item10Strings
[] = {
241 _("Configure script")
243 wxChoice
* item10
= new wxChoice(item4
, ID_DEFAULT_FILE_KIND
, wxDefaultPosition
, wxSize(200, wxDefaultSize
.y
), 2, item10Strings
, 0);
244 item10
->SetStringSelection(_("Setup file"));
245 item10
->SetHelpText(_("Select the default kind of file to save using Go"));
248 item10
->SetToolTip(_("Select the default kind of file to save using Go"));
250 item6
->Add(item10
, 0, wxGROW
|wxALL
, 5);
252 GetSizer()->Fit(this);
253 ////@end ctGeneralSettingsDialog content construction
255 FindWindow(ID_LOAD_LAST_DOCUMENT
)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_loadLastDocument
));
256 FindWindow(ID_SHOW_TOOLTIPS
)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useToolTips
));
257 FindWindow(ID_DEFAULT_FILE_KIND
)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_defaultFileKind
));
261 * Should we show tooltips?
264 bool ctGeneralSettingsDialog::ShowToolTips()
270 * ctLocationSettingsDialog type definition
273 IMPLEMENT_CLASS( ctLocationSettingsDialog
, wxPanel
)
276 * ctLocationSettingsDialog event table definition
279 BEGIN_EVENT_TABLE( ctLocationSettingsDialog
, wxPanel
)
281 ////@begin ctLocationSettingsDialog event table entries
282 EVT_UPDATE_UI( ID_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnUpdateWxwinHierarchy
)
284 EVT_BUTTON( ID_CHOOSE_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnChooseWxwinHierarchy
)
285 EVT_UPDATE_UI( ID_CHOOSE_WXWIN_HIERARCHY
, ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy
)
287 ////@end ctLocationSettingsDialog event table entries
292 * ctLocationSettingsDialog constructor
295 ctLocationSettingsDialog::ctLocationSettingsDialog( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
297 wxPanel::Create( parent
, id
, pos
, size
, style
);
303 * Control creation for ctLocationSettingsDialog
306 void ctLocationSettingsDialog::CreateControls()
308 ////@begin ctLocationSettingsDialog content construction
310 ctLocationSettingsDialog
* item11
= this;
312 wxBoxSizer
* item12
= new wxBoxSizer(wxVERTICAL
);
313 item11
->SetSizer(item12
);
315 wxStaticBox
* item13Static
= new wxStaticBox(item11
, wxID_ANY
, _("Locations"));
316 wxStaticBoxSizer
* item13
= new wxStaticBoxSizer(item13Static
, wxVERTICAL
);
317 item12
->Add(item13
, 1, wxGROW
|wxALL
, 5);
319 wxStaticText
* item14
= new wxStaticText(item11
, wxID_STATIC
, _("&wxWidgets hierarchy:"), wxDefaultPosition
, wxDefaultSize
, 0);
320 item13
->Add(item14
, 0, wxALIGN_LEFT
|wxALL
|wxADJUST_MINSIZE
, 5);
322 wxBoxSizer
* item15
= new wxBoxSizer(wxHORIZONTAL
);
323 item13
->Add(item15
, 0, wxGROW
, 5);
325 wxTextCtrl
* item16
= new wxTextCtrl(item11
, ID_WXWIN_HIERARCHY
, wxEmptyString
, wxDefaultPosition
, wxSize(200, wxDefaultSize
.y
), 0);
326 item16
->SetHelpText(_("Enter the root path of the wxWidgets hierarchy"));
329 item16
->SetToolTip(_("Enter the root path of the wxWidgets hierarchy"));
331 item15
->Add(item16
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
333 wxButton
* item17
= new wxButton(item11
, ID_CHOOSE_WXWIN_HIERARCHY
, _("&Choose..."), wxDefaultPosition
, wxDefaultSize
, 0);
334 item17
->SetHelpText(_("Click to choose the root path of the wxWidgets hierarchy\\n"));
337 item17
->SetToolTip(_("Click to choose the root path of the wxWidgets hierarchy\\n"));
339 item15
->Add(item17
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
341 wxBoxSizer
* item18
= new wxBoxSizer(wxHORIZONTAL
);
342 item13
->Add(item18
, 0, wxGROW
, 5);
344 item18
->Add(60, 5, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
346 wxCheckBox
* item20
= new wxCheckBox(item11
, ID_USE_WXWIN
, _("&Use WXWIN environment variable"), wxDefaultPosition
, wxDefaultSize
, 0);
347 item20
->SetValue(false);
348 item20
->SetHelpText(_("Check to use the value of WXWIN instead"));
351 item20
->SetToolTip(_("Check to use the value of WXWIN instead"));
353 item18
->Add(item20
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
355 GetSizer()->Fit(this);
356 ////@end ctLocationSettingsDialog content construction
358 FindWindow(ID_WXWIN_HIERARCHY
)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_frameworkDir
));
359 FindWindow(ID_USE_WXWIN
)->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useEnvironmentVariable
));
363 * Update event handler for ID_WXWIN_HIERARCHY
366 void ctLocationSettingsDialog::OnUpdateWxwinHierarchy( wxUpdateUIEvent
& event
)
368 wxCheckBox
* checkbox
= (wxCheckBox
*) FindWindow(ID_USE_WXWIN
);
369 event
.Enable(!checkbox
->GetValue());
373 * Event handler for ID_CHOOSE_WXWIN_HIERARCHY
376 void ctLocationSettingsDialog::OnChooseWxwinHierarchy( wxCommandEvent
& WXUNUSED(event
) )
378 wxTextCtrl
* textCtrl
= (wxTextCtrl
*) FindWindow( ID_WXWIN_HIERARCHY
);
379 wxASSERT( textCtrl
!= NULL
);
380 wxString defaultPath
= textCtrl
->GetValue();
382 wxDirDialog
dialog(this, _("Choose the location of the wxWidgets hierarchy"),
384 if (dialog
.ShowModal() == wxID_OK
)
386 textCtrl
->SetValue(dialog
.GetPath());
391 * Update event handler for ID_CHOOSE_WXWIN_HIERARCHY
394 void ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy( wxUpdateUIEvent
& event
)
396 wxCheckBox
* checkbox
= (wxCheckBox
*) FindWindow(ID_USE_WXWIN
);
397 event
.Enable(!checkbox
->GetValue());
401 * Should we show tooltips?
404 bool ctLocationSettingsDialog::ShowToolTips()
406 return wxGetApp().GetSettings().m_useToolTips
;