]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/wizard.h
Move code removing "-psn_xxx" command line arguments to common code.
[wxWidgets.git] / interface / wx / wizard.h
index 17a1f30944daa1a6a64a2c0088602c6e0310667d..6ad183e372073fe88454b7c3f1ed1ee7cd63730b 100644 (file)
@@ -2,10 +2,23 @@
 // Name:        wizard.h
 // Purpose:     interface of wxWizardPage, wxWizardEvent,
 // Author:      wxWidgets team
-// RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+
+// Extended style to specify a help button
+#define wxWIZARD_EX_HELPBUTTON   0x00000010
+
+// Bitmap placement flags
+#define wxWIZARD_VALIGN_TOP       0x01
+#define wxWIZARD_VALIGN_CENTRE    0x02
+#define wxWIZARD_VALIGN_BOTTOM    0x04
+#define wxWIZARD_HALIGN_LEFT      0x08
+#define wxWIZARD_HALIGN_CENTRE    0x10
+#define wxWIZARD_HALIGN_RIGHT     0x20
+#define wxWIZARD_TILE             0x40
+
+
 /**
     @class wxWizardPage
 
 class wxWizardPage : public wxPanel
 {
 public:
+    /**
+       Default constructor.
+    */
+    wxWizardPage();
+    
     /**
         Constructor accepts an optional bitmap which will be used for this page
         instead of the default one for this wizard (note that all bitmaps used should
@@ -50,6 +68,18 @@ public:
     wxWizardPage(wxWizard* parent,
                  const wxBitmap& bitmap = wxNullBitmap);
 
+    /**
+       Creates the wizard page.
+       Must be called if the default constructor had been used to create the object.
+
+        @param parent
+            The parent wizard
+        @param bitmap
+            The page-specific bitmap if different from the global one
+    */
+    bool Create(wxWizard *parent,
+                const wxBitmap& bitmap = wxNullBitmap);
+
     /**
         This method is called by wxWizard to get the bitmap to display alongside the page.
         By default, @c m_bitmap member variable which was set in the
@@ -61,7 +91,7 @@ public:
         The only cases when you would want to override this function is if the page
         bitmap depends dynamically on the user choices, i.e. almost never.
     */
-    wxBitmap GetBitmap() const;
+    virtual wxBitmap GetBitmap() const;
 
     /**
         Get the page which should be shown when the user chooses the @c "Next"
@@ -71,7 +101,7 @@ public:
 
         @see GetPrev()
     */
-    wxWizardPage* GetNext() const;
+    virtual wxWizardPage* GetNext() const = 0;
 
     /**
         Get the page which should be shown when the user chooses the @c "Back"
@@ -81,7 +111,7 @@ public:
 
         @see GetNext()
     */
-    wxWizardPage* GetPrev() const;
+    virtual wxWizardPage* GetPrev() const = 0;
 };
 
 
@@ -95,9 +125,15 @@ public:
 
     @beginEventTable{wxWizardEvent}
     @event{EVT_WIZARD_PAGE_CHANGED(id, func)}
-        The page has been just changed (this event can not be vetoed).
+        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)}
         The user attempted to cancel the wizard (this event may also be vetoed).
     @event{EVT_WIZARD_HELP(id, func)}
@@ -120,8 +156,8 @@ public:
         It is not normally used by the user code as the objects of this
         type are constructed by wxWizard.
     */
-    wxWizardEvent(wxEventType type = wxEVT_NULL, int id = -1,
-                  bool direction = true);
+    wxWizardEvent(wxEventType type = wxEVT_NULL, int id = wxID_ANY,
+                  bool direction = true, wxWizardPage* page = 0);
 
     /**
         Return the direction in which the page is changing: for
@@ -138,6 +174,14 @@ public:
 };
 
 
+wxEventType wxEVT_WIZARD_PAGE_CHANGED;
+wxEventType wxEVT_WIZARD_PAGE_CHANGING;
+wxEventType wxEVT_WIZARD_CANCEL;
+wxEventType wxEVT_WIZARD_HELP;
+wxEventType wxEVT_WIZARD_FINISHED;
+wxEventType wxEVT_WIZARD_PAGE_SHOWN;
+wxEventType wxEVT_WIZARD_BEFORE_PAGE_CHANGED;
+
 
 /**
     @class wxWizardPageSimple
@@ -158,15 +202,53 @@ public:
 class wxWizardPageSimple : public wxWizardPage
 {
 public:
+    /**
+       Default constructor.
+    */
+    wxWizardPageSimple();
+    
     /**
         Constructor takes the previous and next pages.
         They may be modified later by SetPrev() or SetNext().
     */
-    wxWizardPageSimple(wxWizard* parent = NULL,
+    wxWizardPageSimple(wxWizard* parent,
                        wxWizardPage* prev = NULL,
                        wxWizardPage* next = NULL,
                        const wxBitmap& bitmap = wxNullBitmap);
 
+    /**
+       Creates the wizard page.
+       Must be called if the default constructor had been used to create the object.
+    */
+    bool Create(wxWizard *parent = NULL, 
+                wxWizardPage *prev = NULL,
+                wxWizardPage *next = NULL,
+                const wxBitmap& bitmap = wxNullBitmap);
+
+    /**
+        A helper chaining this page with the next one.
+
+        Notice that this method returns a reference to the next page, so the
+        calls to it can, in turn, be chained:
+
+        @code
+        wxWizardPageSimple* firstPage = new FirstPage;
+        (*firstPage).Chain(new SecondPage)
+                    .Chain(new ThirdPage)
+                    .Chain(new LastPage);
+        @endcode
+
+        This makes this method the simplest way to define the order of changes
+        in fully static wizards, i.e. in those where the order doesn't depend
+        on the choices made by the user in the wizard pages during run-time.
+
+        @param next A non-@NULL pointer to the next page.
+        @return Reference to @a next on which Chain() can be called again.
+
+        @since 2.9.5
+     */
+    wxWizardPageSimple& Chain(wxWizardPageSimple* next);
+
     /**
         A convenience function to make the pages follow each other.
         Example:
@@ -223,12 +305,18 @@ public:
     wxDialog::EnableLayoutAdaptation() or per dialog with wxDialog::SetLayoutAdaptationMode().
     For more about layout adaptation, see @ref overview_dialog_autoscrolling.
 
-    @beginEventTable{wxWizardEvent}
+    @beginEventEmissionTable{wxWizardEvent}
     For some events, Veto() can be called to prevent the event from happening.
     @event{EVT_WIZARD_PAGE_CHANGED(id, func)}
         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)}
         The user attempted to cancel the wizard (this event may also be vetoed).
     @event{EVT_WIZARD_HELP(id, func)}
@@ -280,7 +368,7 @@ public:
         @param parent
             The parent window, may be @NULL.
         @param id
-            The id of the dialog, will usually be just -1.
+            The id of the dialog, will usually be just wxID_ANY.
         @param title
             The title of the dialog.
         @param bitmap
@@ -290,7 +378,7 @@ public:
         @param style
             Window style is passed to wxDialog.
     */
-    wxWizard(wxWindow* parent, int id = -1,
+    wxWizard(wxWindow* parent, int id = wxID_ANY,
              const wxString& title = wxEmptyString,
              const wxBitmap& bitmap = wxNullBitmap,
              const wxPoint& pos = wxDefaultPosition,
@@ -318,11 +406,10 @@ public:
         @param style
             Window style is passed to wxDialog.
     */
-    bool Create(wxWindow* parent, int id = -1,
+    bool Create(wxWindow* parent, int id = wxID_ANY,
                 const wxString& title = wxEmptyString,
                 const wxBitmap& bitmap = wxNullBitmap,
-                const wxPoint& pos = wxDefaultPosition,
-                long style = wxDEFAULT_DIALOG_STYLE);
+                const wxPoint& pos = wxDefaultPosition, long style = wxDEFAULT_DIALOG_STYLE);
 
     /**
         This method is obsolete, use GetPageAreaSizer() instead.
@@ -336,7 +423,7 @@ public:
         run-time, as in this case, the wizard won't be able to get to all pages starting
         from a single one and you should call @e Fit separately for the others.
     */
-    void FitToPage(const wxWizardPage* firstPage);
+    virtual void FitToPage(const wxWizardPage* firstPage);
 
     /**
         Returns the bitmap used for the wizard.
@@ -357,13 +444,13 @@ public:
 
         See also SetBitmapPlacement() for the possible values.
     */
-    int GetBitmapPlacement();
+    int GetBitmapPlacement() const;
 
     /**
         Get the current page while the wizard is running.
         @NULL is returned if RunWizard() is not being executed now.
     */
-    wxWizardPage* GetCurrentPage() const;
+    virtual wxWizardPage* GetCurrentPage() const;
 
     /**
         Returns the minimum width for the bitmap that will be constructed to contain
@@ -404,7 +491,7 @@ public:
     /**
         Returns the size available for the pages.
     */
-    wxSize GetPageSize() const;
+    virtual wxSize GetPageSize() const;
 
     /**
         Return @true if this page is not the last one in the wizard.
@@ -429,9 +516,9 @@ public:
     /**
         Executes the wizard starting from the given page, returning @true if it was
         successfully finished or @false if user cancelled it.
-        The @a firstPage can not be @NULL.
+        The @a firstPage cannot be @NULL.
     */
-    bool RunWizard(wxWizardPage* firstPage);
+    virtual bool RunWizard(wxWizardPage* firstPage);
 
     /**
         Sets the bitmap used for the wizard.
@@ -475,7 +562,7 @@ public:
         will be added to the control border in order to space page controls ten points
         from the dialog border and non-page controls.
     */
-    void SetBorder(int border);
+    virtual void SetBorder(int border);
 
     /**
         Sets the minimum width for the bitmap that will be constructed to contain the
@@ -492,13 +579,10 @@ public:
         Also, the wizard will never be smaller than the default size.
 
         The recommended way to use this function is to lay out all wizard pages
-        using the sizers (even though the wizard is not resizeable) and then use
+        using the sizers (even though the wizard is not resizable) and then use
         wxSizer::CalcMin() in a loop to calculate the maximum of minimal sizes of
         the pages and pass it to SetPageSize().
-
-        @deprecated
-        This method is obsolete, use GetPageAreaSizer() instead.
     */
-    void SetPageSize(const wxSize& sizePage);
+    virtual void SetPageSize(const wxSize& sizePage);
 };