]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/wizard.i
Avoid crash in SelectAll if there are no nodes besides the root
[wxWidgets.git] / wxPython / src / wizard.i
index d6913b4e3452ac23bef13b6796055d49948a6fac..992b4af0bf862a4d7df56fbbd6bfb3ce9584539b 100644 (file)
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
-%module wizard
+%define DOCSTRING
+"`Wizard` is a dialog class that guides the user through a sequence of steps,
+or pages."
+%enddef
+
+%module(package="wx", docstring=DOCSTRING) wizard
 
 %{
 #include "wx/wxPython/wxPython.h"
 
 #include <wx/wizard.h>
     
-    static const wxString wxPyEmptyString(wxT(""));
 %}
 
 //----------------------------------------------------------------------
 
 %import windows.i
-%pythoncode { wx = core }
+%pythoncode { wx = _core }
+%pythoncode { __docfilter__ = wx.__DocFilter(globals()) }
 
-%include _wizard_rename.i
+MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
 
 //----------------------------------------------------------------------
 
@@ -58,12 +63,12 @@ class 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
-    // 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; }
 
@@ -78,6 +83,7 @@ public:
 //
 // Other than GetNext/Prev() functions, wxWizardPage is just a panel and may be
 // used as such (i.e. controls may be placed directly on it &c).
+MustHaveApp(wxWizardPage);
 class wxWizardPage : public wxPanel
 {
 public:
@@ -88,14 +94,14 @@ public:
 //     wxWizardPage(wxWizard *parent,
 //                  const wxBitmap& bitmap = wxNullBitmap,
 //                  const char* resource = NULL);
-//     %name(PreWizardPage)wxWizardPage();
+//     %RenameCtor(PreWizardPage, wxWizardPage());
 
     %extend {
         bool Create(wxWizard *parent,
                     const wxBitmap& bitmap = wxNullBitmap,
                     const wxString& resource = wxPyEmptyString) {
             wxChar* res = NULL;
-            if (resource.Length())
+            if (resource.length())
                 res = (wxChar*)resource.c_str();
             return self->Create(parent, bitmap, res);
         }
@@ -118,7 +124,7 @@ public:
 
 %{  // C++ Version of a Python aware class
 class wxPyWizardPage : public wxWizardPage {
-    DECLARE_ABSTRACT_CLASS(wxPyWizardPage);
+    DECLARE_ABSTRACT_CLASS(wxPyWizardPage)
 public:
     wxPyWizardPage() : wxWizardPage() {}
     wxPyWizardPage(wxWizard *parent,
@@ -192,11 +198,14 @@ IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWizardPage, wxWizardPage, RemoveChild);
 
 
 
+MustHaveApp(wxPyWizardPage);
+
 class wxPyWizardPage : public wxWizardPage {
 public:
 
-    %addtofunc wxPyWizardPage   "self._setCallbackInfo(self, PyWizardPage);self._setOORInfo(self)"
-    %addtofunc wxPyWizardPage() ""
+    %pythonAppend wxPyWizardPage   "self._setCallbackInfo(self, PyWizardPage);self._setOORInfo(self)"
+    %pythonAppend wxPyWizardPage() ""
+    %typemap(out) wxPyWizardPage*;    // turn off this typemap
     
     // ctor accepts an optional bitmap which will be used for this page instead
     // of the default one for this wizard (should be of the same size). Notice
@@ -207,20 +216,23 @@ public:
                        const wxBitmap* bitmap = &wxNullBitmap,
                        const wxString* resource = &wxPyEmptyString) {
             wxChar* res = NULL;
-            if (resource->Length())
+            if (resource->length())
                 res = (wxChar*)resource->c_str();
             return new wxPyWizardPage(parent, *bitmap, res);
         }
     }
 
-    %name(PrePyWizardPage)wxPyWizardPage();
+    %RenameCtor(PrePyWizardPage, wxPyWizardPage());
+
+    // Turn it back on again
+    %typemap(out) wxPyWizardPage* { $result = wxPyMake_wxObject($1, $owner); }
 
     %extend {
         bool Create(wxWizard *parent,
                     const wxBitmap& bitmap = wxNullBitmap,
                     const wxString& resource = wxPyEmptyString) {
             wxChar* res = NULL;
-            if (resource.Length())
+            if (resource.length())
                 res = (wxChar*)resource.c_str();
             return self->Create(parent, bitmap, res);
         }
@@ -228,30 +240,64 @@ public:
 
     void _setCallbackInfo(PyObject* self, PyObject* _class);
 
-    void base_DoMoveWindow(int x, int y, int width, int height);
-    void base_DoSetSize(int x, int y, int width, int height,
+    void DoMoveWindow(int x, int y, int width, int height);
+    void DoSetSize(int x, int y, int width, int height,
                         int sizeFlags = wxSIZE_AUTO);
-    void base_DoSetClientSize(int width, int height);
-    void base_DoSetVirtualSize( int x, int y );
-
-    void base_DoGetSize( int *OUTPUT, int *OUTPUT ) const;
-    void base_DoGetClientSize( int *OUTPUT, int *OUTPUT ) const;
-    void base_DoGetPosition( int *OUTPUT, int *OUTPUT ) const;
-
-    wxSize base_DoGetVirtualSize() const;
-    wxSize base_DoGetBestSize() const;
-
-    void base_InitDialog();
-    bool base_TransferDataToWindow();
-    bool base_TransferDataFromWindow();
-    bool base_Validate();
-
-    bool base_AcceptsFocus() const;
-    bool base_AcceptsFocusFromKeyboard() const;
-    wxSize base_GetMaxSize() const;
-
-    void base_AddChild(wxWindow* child);
-    void base_RemoveChild(wxWindow* child);
+    void DoSetClientSize(int width, int height);
+    void DoSetVirtualSize( int x, int y );
+
+    DocDeclA(
+        void, DoGetSize( int *OUTPUT, int *OUTPUT ) const,
+        "DoGetSize() -> (width, height)");
+    DocDeclA(
+        void, DoGetClientSize( int *OUTPUT, int *OUTPUT ) const,
+        "DoGetClientSize() -> (width, height)");
+    DocDeclA(
+        void, DoGetPosition( int *OUTPUT, int *OUTPUT ) const,
+        "DoGetPosition() -> (x,y)");
+
+    wxSize DoGetVirtualSize() const;
+    wxSize DoGetBestSize() const;
+
+    void InitDialog();
+    bool TransferDataToWindow();
+    bool TransferDataFromWindow();
+    bool Validate();
+
+    bool AcceptsFocus() const;
+    bool AcceptsFocusFromKeyboard() const;
+    wxSize GetMaxSize() const;
+
+    void AddChild(wxWindow* child);
+    void RemoveChild(wxWindow* child);
+
+    bool ShouldInheritColours() const;
+    wxVisualAttributes GetDefaultAttributes();
+
+    void OnInternalIdle();
+
+    %MAKE_BASE_FUNC(PyWizardPage, DoMoveWindow);
+    %MAKE_BASE_FUNC(PyWizardPage, DoSetSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoSetClientSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoSetVirtualSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoGetSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoGetClientSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoGetPosition);
+    %MAKE_BASE_FUNC(PyWizardPage, DoGetVirtualSize);
+    %MAKE_BASE_FUNC(PyWizardPage, DoGetBestSize);
+    %MAKE_BASE_FUNC(PyWizardPage, InitDialog);
+    %MAKE_BASE_FUNC(PyWizardPage, TransferDataToWindow);
+    %MAKE_BASE_FUNC(PyWizardPage, TransferDataFromWindow);
+    %MAKE_BASE_FUNC(PyWizardPage, Validate);
+    %MAKE_BASE_FUNC(PyWizardPage, AcceptsFocus);
+    %MAKE_BASE_FUNC(PyWizardPage, AcceptsFocusFromKeyboard);
+    %MAKE_BASE_FUNC(PyWizardPage, GetMaxSize);
+    %MAKE_BASE_FUNC(PyWizardPage, AddChild);
+    %MAKE_BASE_FUNC(PyWizardPage, RemoveChild);
+    %MAKE_BASE_FUNC(PyWizardPage, ShouldInheritColours);
+    %MAKE_BASE_FUNC(PyWizardPage, GetDefaultAttributes);
+    %MAKE_BASE_FUNC(PyWizardPage, OnInternalIdle);
+    
 };
 
 //----------------------------------------------------------------------
@@ -263,12 +309,13 @@ public:
 // OTOH, it is also possible to dynamicly decide which page to return (i.e.
 // depending on the user's choices) as the wizard sample shows - in order to do
 // this, you must derive from wxWizardPage directly.
+MustHaveApp(wxWizardPageSimple);
 class wxWizardPageSimple : public wxWizardPage
 {
 public:
 
-    %addtofunc wxWizardPageSimple   "self._setOORInfo(self)"
-    %addtofunc wxWizardPageSimple() ""
+    %pythonAppend wxWizardPageSimple   "self._setOORInfo(self)"
+    %pythonAppend wxWizardPageSimple() ""
     
     // ctor takes the previous and next pages
     wxWizardPageSimple(wxWizard *parent,
@@ -276,7 +323,7 @@ public:
                        wxWizardPage *next = NULL,
                        const wxBitmap& bitmap = wxNullBitmap,
                        const wxChar* resource = NULL);
-    %name(PreWizardPageSimple)wxWizardPageSimple();
+    %RenameCtor(PreWizardPageSimple, wxWizardPageSimple());
 
     bool Create(wxWizard *parent = NULL,
                 wxWizardPage *prev = NULL,
@@ -295,32 +342,34 @@ public:
 
 //----------------------------------------------------------------------
 
+MustHaveApp(wxWizard);
+
 class  wxWizard : public wxDialog
 {
 public:
-    %addtofunc wxWizard   "self._setOORInfo(self)"
-    %addtofunc wxWizard() ""
+    %pythonAppend wxWizard   "self._setOORInfo(self)"
+    %pythonAppend wxWizard() ""
     
     // ctor
     wxWizard(wxWindow *parent,
              int id = -1,
-             const wxString& title = wxEmptyString,
+             const wxString& title = wxPyEmptyString,
              const wxBitmap& bitmap = wxNullBitmap,
              const wxPoint& pos = wxDefaultPosition,
              long style = wxDEFAULT_DIALOG_STYLE);
-    %name(PreWizard)wxWizard();
+    %RenameCtor(PreWizard, wxWizard());
 
     bool Create(wxWindow *parent,
              int id = -1,
-             const wxString& title = wxEmptyString,
+             const wxString& title = wxPyEmptyString,
              const wxBitmap& bitmap = wxNullBitmap,
              const wxPoint& pos = wxDefaultPosition);
 
     void Init();
 
 
-    // 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);
 
     // get the current page (NULL if RunWizard() isn't running)
@@ -352,12 +401,12 @@ public:
     virtual void SetBorder(int border);
 
     // is the wizard running?
-    bool IsRunning() const { return m_page != NULL; }
+    bool IsRunning() const;
 
     // show the prev/next page, but call TransferDataFromWindow on the current
-    // page first and return FALSE without changing the page if
-    // TransferDataFromWindow() returns FALSE - otherwise, returns TRUE
-    bool ShowPage(wxWizardPage *page, bool goingForward = TRUE);
+    // page first and return False without changing the page if
+    // TransferDataFromWindow() returns False - otherwise, returns True
+    bool ShowPage(wxWizardPage *page, bool goingForward = true);
 
     bool HasNextPage(wxWizardPage* page);
     bool HasPrevPage(wxWizardPage* page);