X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/37f6a080f43058b4575bece0eb11ad99fa63287d..81f5836b8953c11551767e7bf16467824432c0a3:/samples/wizard/wizard.cpp diff --git a/samples/wizard/wizard.cpp b/samples/wizard/wizard.cpp index 7a96e19214..01917769a8 100644 --- a/samples/wizard/wizard.cpp +++ b/samples/wizard/wizard.cpp @@ -51,6 +51,7 @@ enum { Wizard_Quit = wxID_EXIT, Wizard_RunModal = wxID_HIGHEST, + Wizard_RunNoSizer, Wizard_RunModeless, Wizard_About = wxID_ABOUT }; @@ -77,6 +78,8 @@ public: void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnRunWizard(wxCommandEvent& event); + void OnRunWizardNoSizer(wxCommandEvent& event); + void OnRunWizardModeless(wxCommandEvent& event); void OnWizardCancel(wxWizardEvent& event); void OnWizardFinished(wxWizardEvent& event); @@ -92,8 +95,9 @@ private: class MyWizard : public wxWizard { public: - MyWizard(wxFrame *frame); - void RunIt(bool modal); + MyWizard(wxFrame *frame, bool useSizer = true); + + wxWizardPage *GetFirstPage() const { return m_page1; } private: wxWizardPageSimple *m_page1; @@ -264,14 +268,27 @@ public: #if wxUSE_CHECKLISTBOX static const wxChar *aszChoices[] = - { _T("Zeroth"), _T("First"), _T("Second"), _T("Third"), _T("Fourth"), _T("Fifth"), _T("Sixth"), _T("Seventh"), _T("Eighth"), _T("Nineth") }; - wxString *astrChoices = new wxString[WXSIZEOF(aszChoices)]; - unsigned int ui; - for ( ui = 0; ui < WXSIZEOF(aszChoices); ui++ ) - astrChoices[ui] = aszChoices[ui]; - - m_checklistbox = new wxCheckListBox(this, wxID_ANY, wxDefaultPosition, wxSize(100,100), - WXSIZEOF(aszChoices), astrChoices); + { + _T("Zeroth"), + _T("First"), + _T("Second"), + _T("Third"), + _T("Fourth"), + _T("Fifth"), + _T("Sixth"), + _T("Seventh"), + _T("Eighth"), + _T("Nineth") + }; + + m_checklistbox = new wxCheckListBox + ( + this, + wxID_ANY, + wxDefaultPosition, + wxSize(100,100), + wxArrayString(WXSIZEOF(aszChoices), aszChoices) + ); mainSizer->Add( m_checklistbox, @@ -314,7 +331,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Wizard_Quit, MyFrame::OnQuit) EVT_MENU(Wizard_About, MyFrame::OnAbout) EVT_MENU(Wizard_RunModal, MyFrame::OnRunWizard) - EVT_MENU(Wizard_RunModeless, MyFrame::OnRunWizard) + EVT_MENU(Wizard_RunNoSizer, MyFrame::OnRunWizardNoSizer) + EVT_MENU(Wizard_RunModeless, MyFrame::OnRunWizardModeless) EVT_WIZARD_CANCEL(wxID_ANY, MyFrame::OnWizardCancel) EVT_WIZARD_FINISHED(wxID_ANY, MyFrame::OnWizardFinished) @@ -348,8 +366,8 @@ bool MyApp::OnInit() // MyWizard // ---------------------------------------------------------------------------- -MyWizard::MyWizard(wxFrame *frame) - :wxWizard(frame,wxID_ANY,_T("Absolutely Useless Wizard"), +MyWizard::MyWizard(wxFrame *frame, bool useSizer) + : wxWizard(frame,wxID_ANY,_T("Absolutely Useless Wizard"), wxBitmap(wiztest_xpm),wxDefaultPosition, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { @@ -377,26 +395,10 @@ MyWizard::MyWizard(wxFrame *frame) m_page1->SetNext(page2); page3->SetPrev(page2); - // allow the wizard to size itself around the pages - GetPageAreaSizer()->Add(m_page1); -} - -void MyWizard::RunIt(bool modal) -{ - if ( modal ) - { - if ( RunWizard(m_page1) ) - { - // Success - } - - Destroy(); - } - else + if ( useSizer ) { - FinishLayout(); - ShowPage(m_page1); - Show(true); + // allow the wizard to size itself around the pages + GetPageAreaSizer()->Add(m_page1); } } @@ -410,7 +412,8 @@ MyFrame::MyFrame(const wxString& title) { wxMenu *menuFile = new wxMenu; menuFile->Append(Wizard_RunModal, _T("&Run wizard modal...\tCtrl-R")); - menuFile->Append(Wizard_RunModeless, _T("&Run wizard modeless...")); + menuFile->Append(Wizard_RunNoSizer, _T("Run wizard &without sizer...")); + menuFile->Append(Wizard_RunModeless, _T("Run wizard &modeless...")); menuFile->AppendSeparator(); menuFile->Append(Wizard_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); @@ -444,11 +447,25 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) _T("About wxWizard sample"), wxOK | wxICON_INFORMATION, this); } -void MyFrame::OnRunWizard(wxCommandEvent& event) +void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event)) { - MyWizard *wizard = new MyWizard(this); + MyWizard wizard(this); + + wizard.RunWizard(wizard.GetFirstPage()); +} + +void MyFrame::OnRunWizardNoSizer(wxCommandEvent& WXUNUSED(event)) +{ + MyWizard wizard(this, false); + + wizard.RunWizard(wizard.GetFirstPage()); +} - wizard->RunIt( event.GetId() == Wizard_RunModal ); +void MyFrame::OnRunWizardModeless(wxCommandEvent& WXUNUSED(event)) +{ + MyWizard *wizard = new MyWizard(this); + wizard->ShowPage(wizard->GetFirstPage()); + wizard->Show(true); } void MyFrame::OnWizardFinished(wxWizardEvent& WXUNUSED(event))