X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be604faa7b2134e60a1e12d74c9c62b946a259ac..7052b16dedae79bec878ce41e4607a39a969610c:/src/generic/wizard.cpp diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index 0b99d25e0c..91a35840b3 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -9,7 +9,7 @@ // Created: 15.08.99 // RCS-ID: $Id$ // Copyright: (c) 1999 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -44,12 +44,6 @@ #include "wx/wizard.h" -// ---------------------------------------------------------------------------- -// simple types -// ---------------------------------------------------------------------------- - -WX_DEFINE_ARRAY(wxPanel *, wxArrayPages); - // ---------------------------------------------------------------------------- // event tables and such // ---------------------------------------------------------------------------- @@ -57,6 +51,7 @@ WX_DEFINE_ARRAY(wxPanel *, wxArrayPages); DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING) DEFINE_EVENT_TYPE(wxEVT_WIZARD_CANCEL) +DEFINE_EVENT_TYPE(wxEVT_WIZARD_FINISHED) DEFINE_EVENT_TYPE(wxEVT_WIZARD_HELP) BEGIN_EVENT_TABLE(wxWizard, wxDialog) @@ -68,6 +63,7 @@ BEGIN_EVENT_TABLE(wxWizard, wxDialog) EVT_WIZARD_PAGE_CHANGED(-1, wxWizard::OnWizEvent) EVT_WIZARD_PAGE_CHANGING(-1, wxWizard::OnWizEvent) EVT_WIZARD_CANCEL(-1, wxWizard::OnWizEvent) + EVT_WIZARD_FINISHED(-1, wxWizard::OnWizEvent) EVT_WIZARD_HELP(-1, wxWizard::OnWizEvent) END_EVENT_TABLE() @@ -106,10 +102,12 @@ bool wxWizardPage::Create(wxWizard *parent, if ( resource != NULL ) { #if wxUSE_WX_RESOURCES - if ( !LoadFromResource(this, resource) ) +#if 0 + if ( !LoadFromResource(this, resource) ) { wxFAIL_MSG(wxT("wxWizardPage LoadFromResource failed!!!!")); } +#endif #endif // wxUSE_RESOURCES } @@ -348,7 +346,7 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) m_page->Hide(); - btnLabelWasNext = m_page->GetNext() != (wxWizardPage *)NULL; + btnLabelWasNext = HasNextPage(m_page); // Get the bitmap of the previous page (if it exists) if ( m_page->GetBitmap().Ok() ) @@ -365,6 +363,11 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) { // terminate successfully EndModal(wxID_OK); + if ( !IsModal() ) + { + wxWizardEvent event(wxEVT_WIZARD_FINISHED, GetId(),FALSE, 0); + (void)GetEventHandler()->ProcessEvent(event); + } return TRUE; } @@ -395,9 +398,9 @@ bool wxWizard::ShowPage(wxWizardPage *page, bool goingForward) } // and update the buttons state - m_btnPrev->Enable(m_page->GetPrev() != (wxWizardPage *)NULL); + m_btnPrev->Enable(HasPrevPage(m_page)); - bool hasNext = m_page->GetNext() != (wxWizardPage *)NULL; + bool hasNext = HasNextPage(m_page); if ( btnLabelWasNext != hasNext ) { // need to update @@ -445,7 +448,7 @@ wxSize wxWizard::GetPageSize() const return wxSize(m_width, m_height); } -void wxWizard::OnCancel(wxCommandEvent& WXUNUSED(event)) +void wxWizard::OnCancel(wxCommandEvent& WXUNUSED(eventUnused)) { // this function probably can never be called when we don't have an active // page, but a small extra check won't hurt @@ -469,7 +472,7 @@ void wxWizard::OnBackOrNext(wxCommandEvent& event) // ask the current page first: notice that we do it before calling // GetNext/Prev() because the data transfered from the controls of the page // may change the value returned by these methods - if ( m_page && !m_page->TransferDataFromWindow() ) + if ( m_page && (!m_page->Validate() || !m_page->TransferDataFromWindow()) ) { // the page data is incorrect, don't do anything return;