///////////////////////////////////////////////////////////////////////////// // Name: utils/configtool/src/settingsdialog.cpp // Purpose: Settings dialog // Author: Julian Smart // Modified by: // Created: 2003-06-12 // RCS-ID: $Id$ // Copyright: (c) Julian Smart // Licence: ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/statline.h" #include "wx/splitter.h" #include "wx/scrolwin.h" #include "wx/spinctrl.h" #include "wx/spinbutt.h" #include "wx/sizer.h" #include "wx/statbox.h" #include "wx/dirdlg.h" #include "wx/stattext.h" #include "wx/choice.h" #endif #include "wx/cshelp.h" #include "wx/notebook.h" #include "wx/valgen.h" #include "wxconfigtool.h" #include "settingsdialog.h" ////@begin XPM images ////@end XPM images /*! * ctSettingsDialog type definition */ IMPLEMENT_CLASS( ctSettingsDialog, wxDialog ) /*! * ctSettingsDialog event table definition */ BEGIN_EVENT_TABLE( ctSettingsDialog, wxDialog ) ////@begin ctSettingsDialog event table entries EVT_BUTTON( wxID_OK, ctSettingsDialog::OnOk ) EVT_BUTTON( wxID_CANCEL, ctSettingsDialog::OnCancel ) EVT_BUTTON( wxID_HELP, ctSettingsDialog::OnHelp ) ////@end ctSettingsDialog event table entries END_EVENT_TABLE() /*! * ctSettingsDialog constructor */ ctSettingsDialog::ctSettingsDialog( wxWindow* parent ) { SetExtraStyle(wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY); wxDialog::Create( parent, wxID_ANY, _("Configuration Settings")); CreateControls(); } /*! * Control creation for ctSettingsDialog */ void ctSettingsDialog::CreateControls() { ////@begin ctSettingsDialog content construction ctSettingsDialog* item1 = this; wxBoxSizer* item2 = new wxBoxSizer(wxVERTICAL); item1->SetSizer(item2); m_notebook = new wxNotebook(item1, wxID_ANY, wxDefaultPosition, wxSize(200, 200), wxBK_TOP); ctGeneralSettingsDialog* item4 = new ctGeneralSettingsDialog(m_notebook, ID_GENERAL_SETTINGS_DIALOG, wxDefaultPosition, wxSize(100, 80), 0); m_notebook->AddPage(item4, _("General")); ctLocationSettingsDialog* item11 = new ctLocationSettingsDialog(m_notebook, ID_LOCATION_SETTINGS_DIALOG, wxDefaultPosition, wxSize(100, 80), 0); m_notebook->AddPage(item11, _("Locations")); item2->Add(m_notebook, 0, wxGROW|wxALL, 5); wxBoxSizer* item21 = new wxBoxSizer(wxHORIZONTAL); item2->Add(item21, 0, wxGROW|wxALL, 5); item21->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* item23 = new wxButton(item1, wxID_OK); item23->SetDefault(); item21->Add(item23, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* item24 = new wxButton(item1, wxID_CANCEL); item21->Add(item24, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* item25 = new wxButton(item1, wxID_HELP); item21->Add(item25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #if defined(__WXGTK__) || defined(__WXMAC__) wxContextHelpButton* item26 = new wxContextHelpButton(item1, wxID_CONTEXT_HELP, wxDefaultPosition, wxSize(20, wxDefaultCoord), wxBU_AUTODRAW); item21->Add(item26, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); #endif GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Centre(); ////@end ctSettingsDialog content construction } /*! * Event handler for wxID_OK */ void ctSettingsDialog::OnOk( wxCommandEvent& event ) { // Replace with custom code event.Skip(); } /*! * Event handler for wxID_CANCEL */ void ctSettingsDialog::OnCancel( wxCommandEvent& event ) { // Replace with custom code event.Skip(); } /*! * Event handler for wxID_HELP */ void ctSettingsDialog::OnHelp( wxCommandEvent& WXUNUSED(event) ) { if(m_notebook) { int sel = m_notebook->GetSelection(); wxASSERT_MSG( (sel != -1), wxT("A notebook tab should always be selected.")); wxWindow* page = (wxWindow*) m_notebook->GetPage(sel); wxString helpTopic; if (page->GetId() == ID_GENERAL_SETTINGS_DIALOG) { helpTopic = wxT("General settings dialog"); } else if (page->GetId() == ID_LOCATION_SETTINGS_DIALOG) { helpTopic = wxT("Location settings dialog"); } if (!helpTopic.empty()) { wxGetApp().GetHelpController().DisplaySection(helpTopic); } } } /*! * Should we show tooltips? */ bool ctSettingsDialog::ShowToolTips() { return true; } /*! * ctGeneralSettingsDialog type definition */ IMPLEMENT_CLASS( ctGeneralSettingsDialog, wxPanel ) /*! * ctGeneralSettingsDialog event table definition */ BEGIN_EVENT_TABLE( ctGeneralSettingsDialog, wxPanel ) ////@begin ctGeneralSettingsDialog event table entries ////@end ctGeneralSettingsDialog event table entries END_EVENT_TABLE() /*! * ctGeneralSettingsDialog constructor */ ctGeneralSettingsDialog::ctGeneralSettingsDialog( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) { wxPanel::Create( parent, id, pos, size, style ); CreateControls(); } /*! * Control creation for ctGeneralSettingsDialog */ void ctGeneralSettingsDialog::CreateControls() { ////@begin ctGeneralSettingsDialog content construction ctGeneralSettingsDialog* item4 = this; wxBoxSizer* item5 = new wxBoxSizer(wxVERTICAL); item4->SetSizer(item5); wxStaticBox* item6Static = new wxStaticBox(item4, wxID_ANY, _("General settings")); wxStaticBoxSizer* item6 = new wxStaticBoxSizer(item6Static, wxVERTICAL); item5->Add(item6, 1, wxGROW|wxALL, 5); wxCheckBox* item7 = new wxCheckBox(item4, ID_LOAD_LAST_DOCUMENT, _("&Load last document"), wxDefaultPosition, wxDefaultSize, 0); item7->SetValue(false); item7->SetHelpText(_("Check to load the last document on startup")); #if wxUSE_TOOLTIPS if (ShowToolTips()) item7->SetToolTip(_("Check to load the last document on startup")); #endif item6->Add(item7, 0, wxALIGN_LEFT|wxALL, 5); wxCheckBox* item8 = new wxCheckBox(item4, ID_SHOW_TOOLTIPS, _("&Show tooltips"), wxDefaultPosition, wxDefaultSize, 0); item8->SetValue(false); item8->SetHelpText(_("Check to show tooltips")); #if wxUSE_TOOLTIPS if (ShowToolTips()) item8->SetToolTip(_("Check to show tooltips")); #endif item6->Add(item8, 0, wxALIGN_LEFT|wxALL, 5); wxStaticText* item9 = new wxStaticText(item4, wxID_STATIC, _("&Default file kind to save when using the Go command:"), wxDefaultPosition, wxDefaultSize, 0); item6->Add(item9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); wxString item10Strings[] = { _("Setup file"), _("Configure script") }; wxChoice* item10 = new wxChoice(item4, ID_DEFAULT_FILE_KIND, wxDefaultPosition, wxSize(200, wxDefaultCoord), 2, item10Strings, 0); item10->SetStringSelection(_("Setup file")); item10->SetHelpText(_("Select the default kind of file to save using Go")); #if wxUSE_TOOLTIPS if (ShowToolTips()) item10->SetToolTip(_("Select the default kind of file to save using Go")); #endif item6->Add(item10, 0, wxGROW|wxALL, 5); GetSizer()->Fit(this); ////@end ctGeneralSettingsDialog content construction item7->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_loadLastDocument)); item8->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useToolTips)); item10->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_defaultFileKind)); } /*! * Should we show tooltips? */ bool ctGeneralSettingsDialog::ShowToolTips() { return true; } /*! * ctLocationSettingsDialog type definition */ IMPLEMENT_CLASS( ctLocationSettingsDialog, wxPanel ) /*! * ctLocationSettingsDialog event table definition */ BEGIN_EVENT_TABLE( ctLocationSettingsDialog, wxPanel ) ////@begin ctLocationSettingsDialog event table entries EVT_UPDATE_UI( ID_WXWIN_HIERARCHY, ctLocationSettingsDialog::OnUpdateWxwinHierarchy ) EVT_BUTTON( ID_CHOOSE_WXWIN_HIERARCHY, ctLocationSettingsDialog::OnChooseWxwinHierarchy ) EVT_UPDATE_UI( ID_CHOOSE_WXWIN_HIERARCHY, ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy ) ////@end ctLocationSettingsDialog event table entries END_EVENT_TABLE() /*! * ctLocationSettingsDialog constructor */ ctLocationSettingsDialog::ctLocationSettingsDialog( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) { wxPanel::Create( parent, id, pos, size, style ); CreateControls(); } /*! * Control creation for ctLocationSettingsDialog */ void ctLocationSettingsDialog::CreateControls() { ////@begin ctLocationSettingsDialog content construction ctLocationSettingsDialog* item11 = this; wxBoxSizer* item12 = new wxBoxSizer(wxVERTICAL); item11->SetSizer(item12); wxStaticBox* item13Static = new wxStaticBox(item11, wxID_ANY, _("Locations")); wxStaticBoxSizer* item13 = new wxStaticBoxSizer(item13Static, wxVERTICAL); item12->Add(item13, 1, wxGROW|wxALL, 5); wxStaticText* item14 = new wxStaticText(item11, wxID_STATIC, _("&wxWidgets hierarchy:"), wxDefaultPosition, wxDefaultSize, 0); item13->Add(item14, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 5); wxBoxSizer* item15 = new wxBoxSizer(wxHORIZONTAL); item13->Add(item15, 0, wxGROW, 5); m_wxWinHierarchy = new wxTextCtrl(item11, ID_WXWIN_HIERARCHY, wxEmptyString, wxDefaultPosition, wxSize(200, wxDefaultCoord), 0); m_wxWinHierarchy->SetHelpText(_("Enter the root path of the wxWidgets hierarchy")); #if wxUSE_TOOLTIPS if (ShowToolTips()) m_wxWinHierarchy->SetToolTip(_("Enter the root path of the wxWidgets hierarchy")); #endif item15->Add(m_wxWinHierarchy, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxButton* item17 = new wxButton(item11, ID_CHOOSE_WXWIN_HIERARCHY, _("&Choose..."), wxDefaultPosition, wxDefaultSize, 0); item17->SetHelpText(_("Click to choose the root path of the wxWidgets hierarchy\\n")); #if wxUSE_TOOLTIPS if (ShowToolTips()) item17->SetToolTip(_("Click to choose the root path of the wxWidgets hierarchy\\n")); #endif item15->Add(item17, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); wxBoxSizer* item18 = new wxBoxSizer(wxHORIZONTAL); item13->Add(item18, 0, wxGROW, 5); item18->Add(60, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); m_wxWinUse = new wxCheckBox(item11, ID_USE_WXWIN, _("&Use WXWIN environment variable")); m_wxWinUse->SetValue(false); m_wxWinUse->SetHelpText(_("Check to use the value of WXWIN instead")); #if wxUSE_TOOLTIPS if (ShowToolTips()) m_wxWinUse->SetToolTip(_("Check to use the value of WXWIN instead")); #endif item18->Add(m_wxWinUse, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5); GetSizer()->Fit(this); ////@end ctLocationSettingsDialog content construction m_wxWinHierarchy->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_frameworkDir)); m_wxWinUse->SetValidator(wxGenericValidator(& wxGetApp().GetSettings().m_useEnvironmentVariable)); } /*! * Update event handler for ID_WXWIN_HIERARCHY */ void ctLocationSettingsDialog::OnUpdateWxwinHierarchy( wxUpdateUIEvent& event ) { if(m_wxWinUse) event.Enable(!m_wxWinUse->GetValue()); } /*! * Event handler for ID_CHOOSE_WXWIN_HIERARCHY */ void ctLocationSettingsDialog::OnChooseWxwinHierarchy( wxCommandEvent& WXUNUSED(event) ) { if (m_wxWinHierarchy) { wxString defaultPath = m_wxWinHierarchy->GetValue(); wxDirDialog dialog(this, _("Choose the location of the wxWidgets hierarchy"), defaultPath); if (dialog.ShowModal() == wxID_OK) { m_wxWinHierarchy->SetValue(dialog.GetPath()); } } } /*! * Update event handler for ID_CHOOSE_WXWIN_HIERARCHY */ void ctLocationSettingsDialog::OnUpdateChooseWxwinHierarchy( wxUpdateUIEvent& event ) { if (m_wxWinUse) event.Enable(!m_wxWinUse->GetValue()); } /*! * Should we show tooltips? */ bool ctLocationSettingsDialog::ShowToolTips() { return wxGetApp().GetSettings().m_useToolTips; }