X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/13f5935c36a2b387591cc4b788a8cc2d07363c56..c4e2838090992384911a6a6aa44cac985d79a555:/samples/wizard/wizard.cpp diff --git a/samples/wizard/wizard.cpp b/samples/wizard/wizard.cpp index 52cd493983..5145957729 100644 --- a/samples/wizard/wizard.cpp +++ b/samples/wizard/wizard.cpp @@ -1,8 +1,8 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wizard.cpp -// Purpose: wxWindows sample demonstrating wxWizard control +// Purpose: wxWidgets sample demonstrating wxWizard control // Author: Vadim Zeitlin -// Modified by: +// Modified by: Robert Vazan (sizers) // Created: 15.08.99 // RCS-ID: $Id$ // Copyright: (c) Vadim Zeitlin @@ -17,11 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "wizard.cpp" - #pragma interface "wizard.cpp" -#endif - // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" @@ -29,16 +24,24 @@ #pragma hdrstop #endif -// for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers +// for all others, include the necessary headers #ifndef WX_PRECOMP - #include "wx/wx.h" + #include "wx/stattext.h" + #include "wx/log.h" + #include "wx/app.h" + #include "wx/checkbox.h" + #include "wx/checklst.h" + #include "wx/msgdlg.h" + #include "wx/radiobox.h" + #include "wx/menu.h" + #include "wx/sizer.h" #endif #include "wx/wizard.h" #ifndef __WXMSW__ #include "wiztest.xpm" + #include "wiztest2.xpm" #endif // ---------------------------------------------------------------------------- @@ -53,18 +56,6 @@ enum Wizard_About = 1000 }; -// ---------------------------------------------------------------------------- -// ressources -// ---------------------------------------------------------------------------- - -#ifdef __WXMSW__ - #define BMP_WIZARD_1 wxBitmap("wiztest.bmp", wxBITMAP_TYPE_BMP) - #define BMP_WIZARD_2 wxBitmap("wiztest2.bmp", wxBITMAP_TYPE_BMP) -#else - #define BMP_WIZARD_1 wxBitmap(wizimage) - #define BMP_WIZARD_2 wxBitmap(wizimage) -#endif - // ---------------------------------------------------------------------------- // private classes // ---------------------------------------------------------------------------- @@ -88,9 +79,10 @@ public: void OnAbout(wxCommandEvent& event); void OnRunWizard(wxCommandEvent& event); void OnWizardCancel(wxWizardEvent& event); + void OnWizardFinished(wxWizardEvent& event); private: - // any class wishing to process wxWindows events must use this macro + // any class wishing to process wxWidgets events must use this macro DECLARE_EVENT_TABLE() }; @@ -109,22 +101,41 @@ class wxValidationPage : public wxWizardPageSimple public: wxValidationPage(wxWizard *parent) : wxWizardPageSimple(parent) { - m_bitmap = BMP_WIZARD_2; - - m_checkbox = new wxCheckBox(this, -1, "&Check me"); + m_bitmap = wxBITMAP(wiztest2); + + m_checkbox = new wxCheckBox(this, wxID_ANY, _T("&Check me")); + + wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL); + mainSizer->Add( + new wxStaticText(this, wxID_ANY, + _T("You need to check the checkbox\n") + _T("below before going to the next page\n")), + 0, + wxALL, + 5 + ); + + mainSizer->Add( + m_checkbox, + 0, // No stretching + wxALL, + 5 // Border + ); + SetSizer(mainSizer); + mainSizer->Fit(this); } virtual bool TransferDataFromWindow() { if ( !m_checkbox->GetValue() ) { - wxMessageBox("Check the checkbox first!", "No way", + wxMessageBox(_T("Check the checkbox first!"), _T("No way"), wxICON_WARNING | wxOK, this); - return FALSE; + return false; } - return TRUE; + return true; } private: @@ -149,22 +160,33 @@ public: // static wxString choices[] = { "forward", "backward", "both", "neither" }; // The above syntax can cause an internal compiler error with gcc. wxString choices[4]; - choices[0] = "forward"; - choices[1] = "backward"; - choices[2] = "both"; - choices[3] = "neither"; + choices[0] = _T("forward"); + choices[1] = _T("backward"); + choices[2] = _T("both"); + choices[3] = _T("neither"); - m_radio = new wxRadioBox(this, -1, "Allow to proceed:", - wxPoint(5, 5), wxDefaultSize, + m_radio = new wxRadioBox(this, wxID_ANY, _T("Allow to proceed:"), + wxDefaultPosition, wxDefaultSize, WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS); m_radio->SetSelection(Both); + + wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL); + mainSizer->Add( + m_radio, + 0, // No stretching + wxALL, + 5 // Border + ); + + SetSizer(mainSizer); + mainSizer->Fit(this); } // wizard event handlers void OnWizardCancel(wxWizardEvent& event) { - if ( wxMessageBox("Do you really want to cancel?", "Question", + if ( wxMessageBox(_T("Do you really want to cancel?"), _T("Question"), wxICON_QUESTION | wxYES_NO, this) != wxYES ) { // not confirmed @@ -185,7 +207,7 @@ public: if ( !event.GetDirection() && sel == Backward ) return; - wxMessageBox("You can't go there", "Not allowed", + wxMessageBox(_T("You can't go there"), _T("Not allowed"), wxICON_WARNING | wxOK, this); event.Veto(); @@ -208,12 +230,44 @@ public: { m_prev = prev; m_next = next; - - (void)new wxStaticText(this, -1, "Try checking the box below and\n" - "then going back and clearing it"); - - m_checkbox = new wxCheckBox(this, -1, "&Skip the next page", - wxPoint(5, 30)); + + wxBoxSizer *mainSizer = new wxBoxSizer(wxVERTICAL); + + mainSizer->Add( + new wxStaticText(this, wxID_ANY, _T("Try checking the box below and\n") + _T("then going back and clearing it")), + 0, // No vertical stretching + wxALL, + 5 // Border width + ); + + m_checkbox = new wxCheckBox(this, wxID_ANY, _T("&Skip the next page")); + mainSizer->Add( + m_checkbox, + 0, // No vertical stretching + wxALL, + 5 // Border width + ); + + 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); + + mainSizer->Add( + m_checklistbox, + 0, // No vertical stretching + wxALL, + 5 // Border width + ); + + + SetSizer(mainSizer); + mainSizer->Fit(this); } // implement wxWizardPage functions @@ -228,6 +282,7 @@ private: *m_next; wxCheckBox *m_checkbox; + wxCheckListBox *m_checklistbox; }; // ============================================================================ @@ -243,12 +298,13 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Wizard_About, MyFrame::OnAbout) EVT_MENU(Wizard_Run, MyFrame::OnRunWizard) - EVT_WIZARD_CANCEL(-1, MyFrame::OnWizardCancel) + EVT_WIZARD_CANCEL(wxID_ANY, MyFrame::OnWizardCancel) + EVT_WIZARD_FINISHED(wxID_ANY, MyFrame::OnWizardFinished) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxRadioboxPage, wxWizardPageSimple) - EVT_WIZARD_PAGE_CHANGING(-1, wxRadioboxPage::OnWizardPageChanging) - EVT_WIZARD_CANCEL(-1, wxRadioboxPage::OnWizardCancel) + EVT_WIZARD_PAGE_CHANGING(wxID_ANY, wxRadioboxPage::OnWizardPageChanging) + EVT_WIZARD_CANCEL(wxID_ANY, wxRadioboxPage::OnWizardCancel) END_EVENT_TABLE() IMPLEMENT_APP(MyApp) @@ -260,14 +316,14 @@ IMPLEMENT_APP(MyApp) // `Main program' equivalent: the program execution "starts" here bool MyApp::OnInit() { - MyFrame *frame = new MyFrame("wxWizard Sample"); + MyFrame *frame = new MyFrame(_T("wxWizard Sample")); // and show it (the frames, unlike simple controls, are not shown when // created initially) - frame->Show(TRUE); + frame->Show(true); // we're done - return TRUE; + return true; } // ---------------------------------------------------------------------------- @@ -275,56 +331,61 @@ bool MyApp::OnInit() // ---------------------------------------------------------------------------- MyFrame::MyFrame(const wxString& title) - : wxFrame((wxFrame *)NULL, -1, title, + : wxFrame((wxFrame *)NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150)) // small frame { wxMenu *menuFile = new wxMenu; - menuFile->Append(Wizard_Run, "&Run wizard...\tCtrl-R"); + menuFile->Append(Wizard_Run, _T("&Run wizard...\tCtrl-R")); menuFile->AppendSeparator(); - menuFile->Append(Wizard_Quit, "E&xit\tAlt-X", "Quit this program"); + menuFile->Append(Wizard_Quit, _T("E&xit\tAlt-X"), _T("Quit this program")); wxMenu *helpMenu = new wxMenu; - helpMenu->Append(Wizard_About, "&About...\tF1", "Show about dialog"); + helpMenu->Append(Wizard_About, _T("&About...\tF1"), _T("Show about dialog")); // now append the freshly created menu to the menu bar... wxMenuBar *menuBar = new wxMenuBar(); - menuBar->Append(menuFile, "&File"); - menuBar->Append(helpMenu, "&Help"); + menuBar->Append(menuFile, _T("&File")); + menuBar->Append(helpMenu, _T("&Help")); // ... and attach this menu bar to the frame SetMenuBar(menuBar); // also create status bar which we use in OnWizardCancel +#if wxUSE_STATUSBAR CreateStatusBar(); +#endif // wxUSE_STATUSBAR } void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) { - // TRUE is to force the frame to close - Close(TRUE); + // true is to force the frame to close + Close(true); } void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) { - wxMessageBox("Demo of wxWizard class\n" - "© 1999, 2000 Vadim Zeitlin", - "About wxWizard sample", wxOK | wxICON_INFORMATION, this); + wxMessageBox(_T("Demo of wxWizard class\n") + _T("(c) 1999, 2000 Vadim Zeitlin"), + _T("About wxWizard sample"), wxOK | wxICON_INFORMATION, this); } void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event)) { - wxWizard *wizard = wxWizard::Create(this, -1, - "Absolutely Useless Wizard", - BMP_WIZARD_1); + wxWizard *wizard = new wxWizard(this, wxID_ANY, + _T("Absolutely Useless Wizard"), + wxBITMAP(wiztest), + wxDefaultPosition, + wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER); // a wizard page may be either an object of predefined class wxWizardPageSimple *page1 = new wxWizardPageSimple(wizard); - (void)new wxStaticText(page1, -1, - "This wizard doesn't help you to do anything at " - "all.\n" - "\n" - "The next pages will present you with more useless " - "controls."); + wxStaticText *text = new wxStaticText(page1, wxID_ANY, + _T("This wizard doesn't help you\nto do anything at all.\n") + _T("\n") + _T("The next pages will present you\nwith more useless controls."), + wxPoint(5,5) + ); + wxSize size = text->GetBestSize(); // ... or a derived class wxRadioboxPage *page3 = new wxRadioboxPage(wizard); @@ -340,16 +401,24 @@ void MyFrame::OnRunWizard(wxCommandEvent& WXUNUSED(event)) page1->SetNext(page2); page3->SetPrev(page2); + wizard->SetPageSize(size); + wizard->GetPageAreaSizer()->Add(page1); + if ( wizard->RunWizard(page1) ) { - wxMessageBox("The wizard successfully completed", "That's all", + wxMessageBox(_T("The wizard successfully completed"), _T("That's all"), wxICON_INFORMATION | wxOK); } wizard->Destroy(); } +void MyFrame::OnWizardFinished(wxWizardEvent& WXUNUSED(event)) +{ + wxLogStatus(this, wxT("The wizard finished successfully.")); +} + void MyFrame::OnWizardCancel(wxWizardEvent& WXUNUSED(event)) { - wxLogStatus(this, "The wizard was cancelled."); + wxLogStatus(this, wxT("The wizard was cancelled.")); }