Added wxEVT_WIZARD_BEFORE_PAGE_CHANGED event to allow the application to influence

the return value of GetNext after Next is clicked.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2012-02-20 11:38:52 +00:00
parent 9362d82351
commit c9f18835ab
3 changed files with 21 additions and 0 deletions

View File

@ -291,6 +291,7 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_WIZARD_CANCEL, wxWizardEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_WIZARD_HELP, wxWizardEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_WIZARD_FINISHED, wxWizardEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_WIZARD_PAGE_SHOWN, wxWizardEvent );
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_WIZARD_BEFORE_PAGE_CHANGED, wxWizardEvent );
typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&);
@ -307,6 +308,10 @@ typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&);
// changed - unless the event handler vetoes the event
#define EVT_WIZARD_PAGE_CHANGING(id, fn) wx__DECLARE_WIZARDEVT(PAGE_CHANGING, id, fn)
// Called before GetNext/GetPrev is called, so that the handler can change state that will be
// used when GetNext/GetPrev is called. PAGE_CHANGING is called too late to influence GetNext/GetPrev.
#define EVT_WIZARD_BEFORE_PAGE_CHANGED(id, fn) wx__DECLARE_WIZARDEVT(BEFORE_PAGE_CHANGED, id, fn)
// the user pressed "Cancel" button and the wizard is going to be dismissed -
// unless the event handler vetoes the event
#define EVT_WIZARD_CANCEL(id, fn) wx__DECLARE_WIZARDEVT(CANCEL, id, fn)

View File

@ -98,6 +98,10 @@ public:
The page has been just changed (this event cannot be vetoed).
@event{EVT_WIZARD_PAGE_CHANGING(id, func)}
The page is being changed (this event can be vetoed).
@event{EVT_WIZARD_BEFORE_PAGE_CHANGED(id, func)}
Called after Next is clicked but before GetNext is called. Unlike EVT_WIZARD_CHANGING,
the handler for this function can change state that might affect the return value of
GetNext. This event can be vetoed.
@event{EVT_WIZARD_PAGE_SHOWN(id, func)}
The page was shown and laid out (this event cannot be vetoed).
@event{EVT_WIZARD_CANCEL(id, func)}
@ -231,6 +235,10 @@ public:
The page has just been changed (this event cannot be vetoed).
@event{EVT_WIZARD_PAGE_CHANGING(id, func)}
The page is being changed (this event can be vetoed).
@event{EVT_WIZARD_BEFORE_PAGE_CHANGED(id, func)}
Called after Next is clicked but before GetNext is called. Unlike EVT_WIZARD_CHANGING,
the handler for this function can change state that might affect the return value of
GetNext. This event can be vetoed.
@event{EVT_WIZARD_PAGE_SHOWN(id, func)}
The page was shown and laid out (this event cannot be vetoed).
@event{EVT_WIZARD_CANCEL(id, func)}

View File

@ -83,6 +83,7 @@ private:
wxDEFINE_EVENT( wxEVT_WIZARD_PAGE_CHANGED, wxWizardEvent );
wxDEFINE_EVENT( wxEVT_WIZARD_PAGE_CHANGING, wxWizardEvent );
wxDEFINE_EVENT( wxEVT_WIZARD_BEFORE_PAGE_CHANGED, wxWizardEvent );
wxDEFINE_EVENT( wxEVT_WIZARD_CANCEL, wxWizardEvent );
wxDEFINE_EVENT( wxEVT_WIZARD_FINISHED, wxWizardEvent );
wxDEFINE_EVENT( wxEVT_WIZARD_HELP, wxWizardEvent );
@ -792,6 +793,13 @@ void wxWizard::OnBackOrNext(wxCommandEvent& event)
bool forward = event.GetEventObject() == m_btnNext;
// Give the application a chance to set state which may influence GetNext()/GetPrev()
wxWizardEvent eventPreChanged(wxEVT_WIZARD_BEFORE_PAGE_CHANGED, GetId(), forward, m_page);
(void)m_page->GetEventHandler()->ProcessEvent(eventPreChanged);
if (!eventPreChanged.IsAllowed())
return;
wxWizardPage *page;
if ( forward )
{