// 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 "wxPython.h"
+#include "wx/wxPython/wxPython.h"
+#include "wx/wxPython/pyclasses.h"
+#include "wx/wxPython/printfw.h"
+
#include <wx/wizard.h>
+
%}
//----------------------------------------------------------------------
-%include typemaps.i
-%include my_typemaps.i
-
-// Import some definitions of other classes, etc.
-%import _defs.i
%import windows.i
-%import frames.i
-%import misc.i
-%import controls.i
+%pythoncode { wx = _core }
+%pythoncode { __docfilter__ = wx.__DocFilter(globals()) }
+MAKE_CONST_WXSTRING_NOSWIG(EmptyString);
//----------------------------------------------------------------------
enum {
wxWIZARD_EX_HELPBUTTON,
-
- wxEVT_WIZARD_PAGE_CHANGED,
- wxEVT_WIZARD_PAGE_CHANGING,
- wxEVT_WIZARD_CANCEL,
- wxEVT_WIZARD_HELP
};
+%constant wxEventType wxEVT_WIZARD_PAGE_CHANGED;
+%constant wxEventType wxEVT_WIZARD_PAGE_CHANGING;
+%constant wxEventType wxEVT_WIZARD_CANCEL;
+%constant wxEventType wxEVT_WIZARD_HELP;
+%constant wxEventType wxEVT_WIZARD_FINISHED;
-%pragma(python) code = "
-# wizard events
-def EVT_WIZARD_PAGE_CHANGED(win, id, func):
- win.Connect(id, -1, wxEVT_WIZARD_PAGE_CHANGED, func)
-
-def EVT_WIZARD_PAGE_CHANGING(win, id, func):
- win.Connect(id, -1, wxEVT_WIZARD_PAGE_CHANGING, func)
-def EVT_WIZARD_CANCEL(win, id, func):
- win.Connect(id, -1, wxEVT_WIZARD_CANCEL, func)
-def EVT_WIZARD_HELP(win, id, func):
- win.Connect(id, -1, wxEVT_WIZARD_HELP, func)
-
-"
+%pythoncode {
+EVT_WIZARD_PAGE_CHANGED = wx.PyEventBinder( wxEVT_WIZARD_PAGE_CHANGED, 1)
+EVT_WIZARD_PAGE_CHANGING = wx.PyEventBinder( wxEVT_WIZARD_PAGE_CHANGING, 1)
+EVT_WIZARD_CANCEL = wx.PyEventBinder( wxEVT_WIZARD_CANCEL, 1)
+EVT_WIZARD_HELP = wx.PyEventBinder( wxEVT_WIZARD_HELP, 1)
+EVT_WIZARD_FINISHED = wx.PyEventBinder( wxEVT_WIZARD_FINISHED, 1)
+}
//----------------------------------------------------------------------
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; }
+ bool GetDirection() const;
+
+ wxWizardPage* GetPage() const;
- wxWizardPage* GetPage() const { return m_page; }
+ %property(Direction, GetDirection, doc="See `GetDirection`");
+ %property(Page, GetPage, doc="See `GetPage`");
};
//
// 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:
// wxWizardPage(wxWizard *parent,
// const wxBitmap& bitmap = wxNullBitmap,
// const char* resource = NULL);
-// %name(wxPreWizardPage)wxWizardPage();
+// %RenameCtor(PreWizardPage, wxWizardPage());
- bool Create(wxWizard *parent,
- const wxBitmap& bitmap = wxNullBitmap,
- const char* resource = NULL);
+ %extend {
+ bool Create(wxWizard *parent,
+ const wxBitmap& bitmap = wxNullBitmap,
+ const wxString& resource = wxPyEmptyString) {
+ wxChar* res = NULL;
+ if (resource.length())
+ res = (wxChar*)resource.c_str();
+ return self->Create(parent, bitmap, res);
+ }
+ }
- // common part of ctors:
- void Init();
// these functions are used by the wizard to show another page when the
// user chooses "Back" or "Next" button
// dynamically or to do something even more fancy. It's ok to return
// wxNullBitmap from here - the default one will be used then.
virtual wxBitmap GetBitmap() const;
+
+ %property(Bitmap, GetBitmap, doc="See `GetBitmap`");
+ %property(Next, GetNext, doc="See `GetNext`");
+ %property(Prev, GetPrev, doc="See `GetPrev`");
};
%{ // 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,
+MustHaveApp(wxPyWizardPage);
+
class wxPyWizardPage : public wxWizardPage {
public:
+
+ %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
// that no other parameters are needed because the wizard will resize and
// reposition the page anyhow
- wxPyWizardPage(wxWizard *parent,
- const wxBitmap& bitmap = wxNullBitmap,
- const char* resource = NULL);
- %name(wxPrePyWizardPage)wxPyWizardPage();
-
- bool Create(wxWizard *parent,
- const wxBitmap& bitmap = wxNullBitmap,
- const char* resource = NULL);
+ %extend {
+ wxPyWizardPage(wxWizard *parent,
+ const wxBitmap* bitmap = &wxNullBitmap,
+ const wxString* resource = &wxPyEmptyString) {
+ wxChar* res = NULL;
+ if (resource->length())
+ res = (wxChar*)resource->c_str();
+ return new wxPyWizardPage(parent, *bitmap, res);
+ }
+ }
+
+ %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())
+ res = (wxChar*)resource.c_str();
+ return self->Create(parent, bitmap, res);
+ }
+ }
void _setCallbackInfo(PyObject* self, PyObject* _class);
- %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyWizardPage)"
- %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
- %pragma(python) addtomethod = "wxPrePyWizardPage:val._setOORInfo(val)"
-
- 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);
+
};
//----------------------------------------------------------------------
// 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:
+
+ %pythonAppend wxWizardPageSimple "self._setOORInfo(self)"
+ %pythonAppend wxWizardPageSimple() ""
+
// ctor takes the previous and next pages
wxWizardPageSimple(wxWizard *parent,
wxWizardPage *prev = NULL,
wxWizardPage *next = NULL,
const wxBitmap& bitmap = wxNullBitmap,
const wxChar* resource = NULL);
- %name(wxPreWizardPageSimple)wxWizardPageSimple();
+ %RenameCtor(PreWizardPageSimple, wxWizardPageSimple());
bool Create(wxWizard *parent = NULL,
wxWizardPage *prev = NULL,
const wxBitmap& bitmap = wxNullBitmap,
const wxChar* resource = NULL);
- %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
- %pragma(python) addtomethod = "wxPreWizardPageSimple:val._setOORInfo(val)"
-
- // common part of ctors:
- void Init();
-
// the pointers may be also set later - but before starting the wizard
void SetPrev(wxWizardPage *prev);
void SetNext(wxWizardPage *next);
//----------------------------------------------------------------------
+MustHaveApp(wxWizard);
+
class wxWizard : public wxDialog
{
public:
+ %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);
- %name(wxPreWizard)wxWizard();
-
- %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
- %pragma(python) addtomethod = "wxPreWizard:val._setOORInfo(val)"
+ const wxPoint& pos = wxDefaultPosition,
+ long style = wxDEFAULT_DIALOG_STYLE);
+ %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)
// default)
virtual void FitToPage(const wxWizardPage *firstPage);
+ // Adding pages to page area sizer enlarges wizard
+ virtual wxSizer *GetPageAreaSizer() const;
+
+ // 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);
+
// 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);
+
+ %property(CurrentPage, GetCurrentPage, doc="See `GetCurrentPage`");
+ %property(PageAreaSizer, GetPageAreaSizer, doc="See `GetPageAreaSizer`");
+ %property(PageSize, GetPageSize, SetPageSize, doc="See `GetPageSize` and `SetPageSize`");
};
-//----------------------------------------------------------------------
-//----------------------------------------------------------------------
-// This file gets appended to the shadow class file.
//----------------------------------------------------------------------
-%pragma(python) include="_wizardextras.py";
+%init %{
+%}
//---------------------------------------------------------------------------