Added wxPropertySheetDialog demo

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2005-04-01 14:27:55 +00:00
parent 8b36c71c6e
commit 0f5d8ecf34
2 changed files with 172 additions and 2 deletions

View File

@ -25,6 +25,8 @@
#include "wx/wx.h"
#endif
#include "../sample.xpm"
#include "wx/datetime.h"
#include "wx/image.h"
@ -72,6 +74,9 @@
#include "wx/fdrepdlg.h"
#endif // wxUSE_FINDREPLDLG
#include "wx/spinctrl.h"
#include "wx/propdlg.h"
#include "dialogs.h"
#if USE_COLOURDLG_GENERIC
@ -185,7 +190,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_FIND_CLOSE(wxID_ANY, MyFrame::OnFindDialog)
#endif // wxUSE_FINDREPLDLG
EVT_MENU(DIALOGS_REQUEST, MyFrame::OnRequestUserAttention)
EVT_MENU(DIALOGS_PROPERTY_SHEET, MyFrame::OnPropertySheet)
EVT_MENU(DIALOGS_REQUEST, MyFrame::OnRequestUserAttention)
EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()
@ -348,6 +354,7 @@ bool MyApp::OnInit()
file_menu->Append(wxID_ANY,_T("&Modal/Modeless"),modal_menu);
#endif // USE_MODAL_PRESENTATION
file_menu->Append(DIALOGS_PROPERTY_SHEET, _T("&Property Sheet Dialog\tCtrl-P"));
file_menu->Append(DIALOGS_REQUEST, _T("&Request user attention\tCtrl-R"));
file_menu->AppendSeparator();
@ -375,6 +382,8 @@ MyFrame::MyFrame(wxWindow *parent,
const wxString& title)
: wxFrame(parent, wxID_ANY, title)
{
SetIcon(sample_xpm);
#if USE_MODAL_PRESENTATION
m_dialog = (MyModelessDialog *)NULL;
#endif // USE_MODAL_PRESENTATION
@ -956,6 +965,12 @@ void MyFrame::ShowTip(wxCommandEvent& WXUNUSED(event))
}
#endif // wxUSE_STARTUP_TIPS
void MyFrame::OnPropertySheet(wxCommandEvent& WXUNUSED(event))
{
SettingsDialog dialog(this);
dialog.ShowModal();
}
void MyFrame::OnRequestUserAttention(wxCommandEvent& WXUNUSED(event))
{
wxLogStatus(_T("Sleeping for 3 seconds to allow you to switch to another window"));
@ -1342,3 +1357,130 @@ void MyModalDialog::OnButton(wxCommandEvent& event)
#endif // USE_MODAL_PRESENTATION
// ----------------------------------------------------------------------------
// SettingsDialog
// ----------------------------------------------------------------------------
IMPLEMENT_CLASS(SettingsDialog, wxPropertySheetDialog)
BEGIN_EVENT_TABLE(SettingsDialog, wxPropertySheetDialog)
END_EVENT_TABLE()
SettingsDialog::SettingsDialog(wxWindow* win)
{
SetExtraStyle(wxDIALOG_EX_CONTEXTHELP);
Create(win, -1, _("Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
CreateButtons(wxOK|wxCANCEL|wxHELP);
wxBookCtrlBase* notebook = GetBookCtrl();
wxPanel* generalSettings = CreateGeneralSettingsPage(notebook);
wxPanel* aestheticSettings = CreateAestheticSettingsPage(notebook);
notebook->AddPage(generalSettings, _("General"));
notebook->AddPage(aestheticSettings, _("Aesthetics"));
LayoutDialog();
}
wxPanel* SettingsDialog::CreateGeneralSettingsPage(wxWindow* parent)
{
wxPanel* panel = new wxPanel(parent, wxID_ANY);
wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
//// LOAD LAST FILE
wxBoxSizer* itemSizer3 = new wxBoxSizer( wxHORIZONTAL );
wxCheckBox* checkBox3 = new wxCheckBox(panel, ID_LOAD_LAST_PROJECT, _("&Load last project on startup"), wxDefaultPosition, wxDefaultSize);
itemSizer3->Add(checkBox3, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
item0->Add(itemSizer3, 0, wxGROW|wxALL, 0);
//// AUTOSAVE
wxString autoSaveLabel = _("&Auto-save every");
wxString minsLabel = _("mins");
wxBoxSizer* itemSizer12 = new wxBoxSizer( wxHORIZONTAL );
wxCheckBox* checkBox12 = new wxCheckBox(panel, ID_AUTO_SAVE, autoSaveLabel, wxDefaultPosition, wxDefaultSize);
wxSpinCtrl* spinCtrl12 = new wxSpinCtrl(panel, ID_AUTO_SAVE_MINS, wxEmptyString,
wxDefaultPosition, wxSize(40, -1), wxSP_ARROW_KEYS, 1, 60, 1);
itemSizer12->Add(checkBox12, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
itemSizer12->Add(spinCtrl12, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
itemSizer12->Add(new wxStaticText(panel, wxID_STATIC, minsLabel), 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
item0->Add(itemSizer12, 0, wxGROW|wxALL, 0);
//// TOOLTIPS
wxBoxSizer* itemSizer8 = new wxBoxSizer( wxHORIZONTAL );
wxCheckBox* checkBox6 = new wxCheckBox(panel, ID_SHOW_TOOLTIPS, _("Show &tooltips"), wxDefaultPosition, wxDefaultSize);
itemSizer8->Add(checkBox6, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
item0->Add(itemSizer8, 0, wxGROW|wxALL, 0);
topSizer->Add( item0, 1, wxGROW|wxALIGN_CENTRE|wxALL, 5 );
panel->SetSizer(topSizer);
topSizer->Fit(panel);
return panel;
}
wxPanel* SettingsDialog::CreateAestheticSettingsPage(wxWindow* parent)
{
wxPanel* panel = new wxPanel(parent, wxID_ANY);
wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
//// PROJECT OR GLOBAL
wxString globalOrProjectChoices[2];
globalOrProjectChoices[0] = _("&New projects");
globalOrProjectChoices[1] = _("&This project");
wxRadioBox* projectOrGlobal = new wxRadioBox(panel, ID_APPLY_SETTINGS_TO, _("&Apply settings to:"),
wxDefaultPosition, wxDefaultSize, 2, globalOrProjectChoices);
item0->Add(projectOrGlobal, 0, wxGROW|wxALL, 5);
projectOrGlobal->SetSelection(0);
//// BACKGROUND STYLE
wxArrayString backgroundStyleChoices;
backgroundStyleChoices.Add(wxT("Colour"));
backgroundStyleChoices.Add(wxT("Image"));
wxStaticBox* staticBox3 = new wxStaticBox(panel, -1, _("Background style:"));
wxBoxSizer* styleSizer = new wxStaticBoxSizer( staticBox3, wxVERTICAL );
item0->Add(styleSizer, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemSizer2 = new wxBoxSizer( wxHORIZONTAL );
wxChoice* choice2 = new wxChoice(panel, ID_BACKGROUND_STYLE, wxDefaultPosition, wxDefaultSize, backgroundStyleChoices);
itemSizer2->Add(new wxStaticText(panel, wxID_ANY, _("&Window:")), 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
itemSizer2->Add(5, 5, 1, wxALL, 0);
itemSizer2->Add(choice2, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
styleSizer->Add(itemSizer2, 0, wxGROW|wxALL, 5);
//// FONT SIZE SELECTION
wxStaticBox* staticBox1 = new wxStaticBox(panel, -1, _("Tile font size:"));
wxBoxSizer* itemSizer5 = new wxStaticBoxSizer( staticBox1, wxHORIZONTAL );
wxSpinCtrl* spinCtrl = new wxSpinCtrl(panel, ID_FONT_SIZE, wxEmptyString, wxDefaultPosition,
wxSize(80, -1));
itemSizer5->Add(spinCtrl, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
item0->Add(itemSizer5, 0, wxGROW|wxLEFT|wxRIGHT, 5);
topSizer->Add( item0, 1, wxGROW|wxALIGN_CENTRE|wxALL, 5 );
panel->SetSizer(topSizer);
topSizer->Fit(panel);
return panel;
}

View File

@ -128,6 +128,32 @@ private:
#endif // USE_MODAL_PRESENTATION
// Property sheet dialog
class SettingsDialog: public wxPropertySheetDialog
{
DECLARE_CLASS(SettingsDialog)
public:
SettingsDialog(wxWindow* parent);
wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
protected:
enum {
ID_SHOW_TOOLTIPS = 100,
ID_AUTO_SAVE,
ID_AUTO_SAVE_MINS,
ID_LOAD_LAST_PROJECT,
ID_APPLY_SETTINGS_TO,
ID_BACKGROUND_STYLE,
ID_FONT_SIZE
};
DECLARE_EVENT_TABLE()
};
// Define a new frame type
class MyFrame: public wxFrame
{
@ -215,6 +241,7 @@ public:
void ChooseFontGeneric(wxCommandEvent& event);
#endif // USE_FONTDLG_GENERIC
void OnPropertySheet(wxCommandEvent& event);
void OnRequestUserAttention(wxCommandEvent& event);
void OnExit(wxCommandEvent& event);
@ -283,7 +310,8 @@ enum
DIALOGS_BUSYINFO,
DIALOGS_FIND,
DIALOGS_REPLACE,
DIALOGS_REQUEST
DIALOGS_REQUEST,
DIALOGS_PROPERTY_SHEET
};
#endif