From f80bf901946b8b8013b98b51c2c2fd2bd195fe80 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin <vadim@wxwidgets.org> Date: Fri, 2 Nov 2001 17:29:38 +0000 Subject: [PATCH] wxWizard help patch (474974) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 2 +- docs/latex/wx/wizard.tex | 1 + docs/latex/wx/wizevt.tex | 8 ++++++++ include/wx/generic/wizard.h | 1 + include/wx/wizard.h | 10 +++++++++- src/generic/wizard.cpp | 25 +++++++++++++++++++++++-- 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 4575772d37..41eb52d4e7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -46,7 +46,7 @@ All (GUI): - wxStreamToTextRedirector to allow easily redirect cout to wxTextCtrl added - fixed bug with using wxExecute() to capture huge amounts of output - new wxCalendarCtrl styles added (Søren Erland Vestø) -- wxWizardPage can be loaded from WXR (Robert Cavanaugh) +- wxWizard changes: loading from WXR support, help button (Robert Cavanaugh) - wxDirSelector() added (Paul A. Thiessen) wxHTML: diff --git a/docs/latex/wx/wizard.tex b/docs/latex/wx/wizard.tex index d564956088..f3b09b3b31 100644 --- a/docs/latex/wx/wizard.tex +++ b/docs/latex/wx/wizard.tex @@ -53,6 +53,7 @@ changed (this event can not be vetoed).} changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} +\twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} \end{twocollist}% \wxheading{Extended styles} diff --git a/docs/latex/wx/wizevt.tex b/docs/latex/wx/wizevt.tex index e62e8667a3..78d27fc08f 100644 --- a/docs/latex/wx/wizevt.tex +++ b/docs/latex/wx/wizevt.tex @@ -39,6 +39,7 @@ changed (this event can not be vetoed).} changed (this event can be vetoed).} \twocolitem{{\bf EVT\_WIZARD\_CANCEL(id, func)}}{The user attempted to cancel the wizard (this event may also be vetoed).} +\twocolitem{{\bf EVT\_WIZARD\_HELP(id, func)}}{The wizard help button was pressed.} \end{twocollist}% \wxheading{See also} @@ -64,3 +65,10 @@ FALSE otherwise and for {\tt EVT\_WIZARD\_PAGE\_CHANGED} return {\tt TRUE} if we came from the previous page and {\tt FALSE} if we returned from the next one. +\membersection{wxWizardEvent::GetPage}\label{wxwizardeventgetpage} + +\constfunc{wxWizardPage}{GetPage}{\void} + +Returns the \helpref{wxWizardPage}{wxwizardpage} which was active when this +event was generated. + diff --git a/include/wx/generic/wizard.h b/include/wx/generic/wizard.h index ee25a60400..11da00ceb4 100644 --- a/include/wx/generic/wizard.h +++ b/include/wx/generic/wizard.h @@ -65,6 +65,7 @@ private: // event handlers void OnCancel(wxCommandEvent& event); void OnBackOrNext(wxCommandEvent& event); + void OnHelp(wxCommandEvent& event); // the page size requested by user wxSize m_sizePage; diff --git a/include/wx/wizard.h b/include/wx/wizard.h index 65e7d18ec4..05c3842f1b 100644 --- a/include/wx/wizard.h +++ b/include/wx/wizard.h @@ -169,7 +169,8 @@ class WXDLLEXPORT wxWizardEvent : public wxNotifyEvent public: wxWizardEvent(wxEventType type = wxEVT_NULL, int id = -1, - bool direction = TRUE); + bool direction = TRUE, + wxWizardPage* page = NULL); // for EVT_WIZARD_PAGE_CHANGING, return TRUE if we're going forward or // FALSE otherwise and for EVT_WIZARD_PAGE_CHANGED return TRUE if we came @@ -177,8 +178,11 @@ public: // (this function doesn't make sense for CANCEL events) bool GetDirection() const { return m_direction; } + wxWizardPage* GetPage() const { return m_page; } + private: bool m_direction; + wxWizardPage* m_page; DECLARE_DYNAMIC_CLASS(wxWizardEvent) }; @@ -191,6 +195,7 @@ BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGED, 900) DECLARE_EVENT_TYPE(wxEVT_WIZARD_PAGE_CHANGING, 901) DECLARE_EVENT_TYPE(wxEVT_WIZARD_CANCEL, 902) + DECLARE_EVENT_TYPE(wxEVT_WIZARD_HELP, 903) END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); @@ -206,6 +211,9 @@ typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); // unless the event handler vetoes the event #define EVT_WIZARD_CANCEL(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_CANCEL, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +// the user pressed "Help" button +#define EVT_WIZARD_HELP(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_HELP, id, -1, (wxObjectEventFunction) (wxEventFunction) wxWizardEventFunction) & fn, (wxObject *)NULL), + #endif // wxUSE_WIZARDDLG #endif // _WX_WIZARD_H_ diff --git a/src/generic/wizard.cpp b/src/generic/wizard.cpp index fba5373b09..4192ced088 100644 --- a/src/generic/wizard.cpp +++ b/src/generic/wizard.cpp @@ -57,10 +57,13 @@ 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_HELP) BEGIN_EVENT_TABLE(wxWizard, wxDialog) EVT_BUTTON(wxID_CANCEL, wxWizard::OnCancel) - EVT_BUTTON(-1, wxWizard::OnBackOrNext) + EVT_BUTTON(wxID_BACKWARD, wxWizard::OnBackOrNext) + EVT_BUTTON(wxID_FORWARD, wxWizard::OnBackOrNext) + EVT_BUTTON(wxID_HELP, wxWizard::OnHelp) END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxWizard, wxDialog) @@ -410,6 +413,21 @@ void wxWizard::OnBackOrNext(wxCommandEvent& event) (void)ShowPage(page, forward); } +void wxWizard::OnHelp(wxCommandEvent& WXUNUSED(event)) +{ + // this function probably can never be called when we don't have an active + // page, but a small extra check won't hurt + if(m_page != NULL) + { + // Create and send the help event to the specific page handler + // event data contains the active page so that context-sensitive + // help is possible + wxWizardEvent eventHelp(wxEVT_WIZARD_HELP, GetId(), TRUE, m_page); + (void)m_page->GetEventHandler()->ProcessEvent(eventHelp); + } +} + + // ---------------------------------------------------------------------------- // our public interface // ---------------------------------------------------------------------------- @@ -429,10 +447,13 @@ wxWizard *wxWizardBase::Create(wxWindow *parent, // wxWizardEvent // ---------------------------------------------------------------------------- -wxWizardEvent::wxWizardEvent(wxEventType type, int id, bool direction) +wxWizardEvent::wxWizardEvent(wxEventType type, int id, bool direction, wxWizardPage* page) : wxNotifyEvent(type, id) { + // Modified 10-20-2001 Robert Cavanaugh + // add the active page to the event data m_direction = direction; + m_page = page; } #endif // wxUSE_WIZARDDLG -- 2.47.2