X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc7a2a602b4bd9308be21bc07e40a680f483438e..855f31ebe72bef834a32df2c274b41fb282ad265:/include/wx/wizard.h diff --git a/include/wx/wizard.h b/include/wx/wizard.h index d1747e8fa2..3674896fa4 100644 --- a/include/wx/wizard.h +++ b/include/wx/wizard.h @@ -17,26 +17,24 @@ #ifndef _WX_WIZARD_H_ #define _WX_WIZARD_H_ +#include "wx/defs.h" + #if wxUSE_WIZARDDLG // ---------------------------------------------------------------------------- // headers and other simple declarations // ---------------------------------------------------------------------------- -#ifndef WX_PRECOMP - #include "wx/dialog.h" // the base class - #include "wx/panel.h" // ditto - - #include "wx/event.h" // wxEVT_XXX constants -#endif // WX_PRECOMP - +#include "wx/dialog.h" // the base class +#include "wx/panel.h" // ditto +#include "wx/event.h" // wxEVT_XXX constants #include "wx/bitmap.h" // Extended style to specify a help button #define wxWIZARD_EX_HELPBUTTON 0x00000010 // forward declarations -class WXDLLEXPORT wxWizard; +class WXDLLIMPEXP_ADV wxWizard; // ---------------------------------------------------------------------------- // wxWizardPage is one of the wizards screen: it must know what are the @@ -46,7 +44,7 @@ class WXDLLEXPORT wxWizard; // used as such (i.e. controls may be placed directly on it &c). // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxWizardPage : public wxPanel +class WXDLLIMPEXP_ADV wxWizardPage : public wxPanel { public: wxWizardPage() { Init(); } @@ -74,6 +72,27 @@ public: // wxNullBitmap from here - the default one will be used then. virtual wxBitmap GetBitmap() const { return m_bitmap; } +#if wxUSE_VALIDATORS + // Override the base functions to allow a validator to be assigned to this page. + virtual bool TransferDataToWindow() + { + return GetValidator() ? GetValidator()->TransferToWindow() + : wxPanel::TransferDataToWindow(); + } + + virtual bool TransferDataFromWindow() + { + return GetValidator() ? GetValidator()->TransferFromWindow() + : wxPanel::TransferDataFromWindow(); + } + + virtual bool Validate() + { + return GetValidator() ? GetValidator()->Validate(this) + : wxPanel::Validate(); + } +#endif // wxUSE_VALIDATORS + protected: // common part of ctors: void Init(); @@ -93,7 +112,7 @@ private: // this, you must derive from wxWizardPage directly. // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxWizardPageSimple : public wxWizardPage +class WXDLLIMPEXP_ADV wxWizardPageSimple : public wxWizardPage { public: wxWizardPageSimple() { Init(); } @@ -156,7 +175,7 @@ private: // wxWizard // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxWizardBase : public wxDialog +class WXDLLIMPEXP_ADV wxWizardBase : public wxDialog { public: /* @@ -164,7 +183,7 @@ public: function taking the following arguments: wxWizard(wxWindow *parent, - int id = -1, + int id = wxID_ANY, const wxString& title = wxEmptyString, const wxBitmap& bitmap = wxNullBitmap, const wxPoint& pos = wxDefaultPosition, @@ -172,8 +191,8 @@ public: */ wxWizardBase() { } - // executes the wizard starting from the given page, returns TRUE if it was - // successfully finished, FALSE if user cancelled it + // executes the wizard starting from the given page, returns true if it was + // successfully finished, false if user cancelled it virtual bool RunWizard(wxWizardPage *firstPage) = 0; // get the current page (NULL if RunWizard() isn't running) @@ -198,20 +217,10 @@ public: // Adding pages to page area sizer enlarges wizard virtual wxSizer *GetPageAreaSizer() const = 0; - + // Set border around page area. Default is 0 if you add at least one // page to GetPageAreaSizer and 5 if you don't. virtual void SetBorder(int border) = 0; - - // wxWizard should be created using "new wxWizard" now, not with Create() -#ifdef WXWIN_COMPATIBILITY_2_2 - static wxWizard *Create(wxWindow *parent, - int id = -1, - const wxString& title = wxEmptyString, - const wxBitmap& bitmap = wxNullBitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize); -#endif // WXWIN_COMPATIBILITY_2_2 // the methods below may be overridden by the derived classes to provide // custom logic for determining the pages order @@ -222,6 +231,13 @@ public: virtual bool HasPrevPage(wxWizardPage *page) { return page->GetPrev() != NULL; } + /// Override these functions to stop InitDialog from calling TransferDataToWindow + /// for _all_ pages when the wizard starts. Instead 'ShowPage' will call + /// TransferDataToWindow for the first page only. + bool TransferDataToWindow() { return true; } + bool TransferDataFromWindow() { return true; } + bool Validate() { return true; } + private: DECLARE_NO_COPY_CLASS(wxWizardBase) }; @@ -235,17 +251,17 @@ private: // window hierarchy as usual // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxWizardEvent : public wxNotifyEvent +class WXDLLIMPEXP_ADV wxWizardEvent : public wxNotifyEvent { public: wxWizardEvent(wxEventType type = wxEVT_NULL, - int id = -1, - bool direction = TRUE, + int id = wxID_ANY, + 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 - // from the previous page and FALSE if we returned from the next one + // 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 + // from the previous page and false if we returned from the next one // (this function doesn't make sense for CANCEL events) bool GetDirection() const { return m_direction; } @@ -264,31 +280,37 @@ private: // ---------------------------------------------------------------------------- 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) - DECLARE_EVENT_TYPE(wxEVT_WIZARD_FINISHED, 903) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_WIZARD_PAGE_CHANGED, 900) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_WIZARD_PAGE_CHANGING, 901) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_WIZARD_CANCEL, 902) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_WIZARD_HELP, 903) + DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_ADV, wxEVT_WIZARD_FINISHED, 903) END_DECLARE_EVENT_TYPES() typedef void (wxEvtHandler::*wxWizardEventFunction)(wxWizardEvent&); +#define wxWizardEventHandler(func) \ + (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxWizardEventFunction, &func) + +#define wx__DECLARE_WIZARDEVT(evt, id, fn) \ + wx__DECLARE_EVT1(wxEVT_WIZARD_ ## evt, id, wxWizardEventHandler(fn)) + // notifies that the page has just been changed (can't be vetoed) -#define EVT_WIZARD_PAGE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_PAGE_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +#define EVT_WIZARD_PAGE_CHANGED(id, fn) wx__DECLARE_WIZARDEVT(PAGE_CHANGED, id, fn) // the user pressed "" button and the page is going to be // changed - unless the event handler vetoes the event -#define EVT_WIZARD_PAGE_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_PAGE_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +#define EVT_WIZARD_PAGE_CHANGING(id, fn) wx__DECLARE_WIZARDEVT(PAGE_CHANGING, 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) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_CANCEL, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +#define EVT_WIZARD_CANCEL(id, fn) wx__DECLARE_WIZARDEVT(CANCEL, id, fn) // the user pressed "Finish" button and the wizard is going to be dismissed - -#define EVT_WIZARD_FINISHED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_WIZARD_FINISHED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxWizardEventFunction) & fn, (wxObject *)NULL), +#define EVT_WIZARD_FINISHED(id, fn) wx__DECLARE_WIZARDEVT(FINISHED, id, fn) -// 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), +// the user pressed "Help" button +#define EVT_WIZARD_HELP(id, fn) wx__DECLARE_WIZARDEVT(HELP, id, fn) #endif // wxUSE_WIZARDDLG