X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b85cc38e225fbde542282220d769d3414fca4de..371fd015a7c7bd9aeaaccb05b19d07b69740755c:/wxPython/src/windows2.i diff --git a/wxPython/src/windows2.i b/wxPython/src/windows2.i index ba38a8a43a..045654592e 100644 --- a/wxPython/src/windows2.i +++ b/wxPython/src/windows2.i @@ -31,6 +31,7 @@ // Put some wx default wxChar* values into wxStrings. DECLARE_DEF_STRING(NOTEBOOK_NAME); DECLARE_DEF_STRING(PanelNameStr); + DECLARE_DEF_STRING(ControlNameStr); static const wxChar* wxSplitterNameStr = wxT("splitter"); DECLARE_DEF_STRING(SplitterNameStr); @@ -158,7 +159,7 @@ enum }; -class wxSplitterEvent : public wxCommandEvent { +class wxSplitterEvent : public wxNotifyEvent { public: wxSplitterEvent(wxEventType type = wxEVT_NULL, wxSplitterWindow *splitter = NULL); @@ -304,69 +305,371 @@ public: // wxPyWindow derives from wxWindow and adds support for overriding many of // the virtual methods in Python derived classes. -// Do wxPyControl too. - -// %{ -// class wxPyWindow : public wxWindow -// { -// DECLARE_DYNAMIC_CLASS(wxPyWindow) -// public: -// wxPyWindow(wxWindow* parent, const wxWindowID id, -// const wxPoint& pos = wxDefaultPosition, -// const wxSize& size = wxDefaultSize, -// long style = 0, -// const wxString& name = wxPyPanelNameStr) -// : wxWindow(parent, id, pos, size, style, name) {} - - -// // Which of these should be done??? -// DoSetSize -// DoGetSize -// DoSetClientSize -// DoGetClientSize -// DoGetPosition -// DoSetVirtualSize -// DoGetVirtualSize - -// GetClientAreaOrigin -// Fit -// SetSizeHints -// SetVirtualSizeHints -// GetMaxSize -// Show +// Which (any?) of these should be done also??? +// Destroy +// DoCaptureMouse +// DoClientToScreen +// DoHitTest +// DoMoveWindow +// DoPopupMenu +// DoReleaseMouse +// DoScreenToClient +// DoSetToolTip // Enable -// SetFocus -// SetFocusFromKbd -// AcceptsFocus -// AcceptsFocusFromKeyboard +// Fit +// GetCharHeight +// GetCharWidth +// GetClientAreaOrigin // GetDefaultItem -// SetDefaultItem // IsTopLevel -// AddChild -// RemoveChild -// Validate -// TransferDataToWindow -// TransferDataFromWindow -// InitDialog // SetBackgroundColour +// SetDefaultItem +// SetFocus +// SetFocusFromKbd // SetForegroundColour -// GetCharHeight -// GetCharWidth -// DoClientToScreen -// DoScreenToClient -// DoHitTest -// DoPopupMenu -// DoSetToolTip -// DoCaptureMouse -// DoReleaseMouse -// DoMoveWindow +// SetSizeHints +// SetVirtualSizeHints +// Show + + +%{ // C++ version of Python aware wxWindow +class wxPyWindow : public wxWindow +{ + DECLARE_DYNAMIC_CLASS(wxPyWindow) +public: + wxPyWindow() : wxWindow() {} + wxPyWindow(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyPanelNameStr) + : wxWindow(parent, id, pos, size, style, name) {} + + + DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); + DEC_PYCALLBACK_VOID_INT5(DoSetSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetClientSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetVirtualSize); + + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetClientSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetPosition); + + DEC_PYCALLBACK_SIZE_const(DoGetVirtualSize); + DEC_PYCALLBACK_SIZE_const(DoGetBestSize); + + DEC_PYCALLBACK__(InitDialog); + DEC_PYCALLBACK_BOOL_(TransferDataFromWindow); + DEC_PYCALLBACK_BOOL_(TransferDataToWindow); + DEC_PYCALLBACK_BOOL_(Validate); + + DEC_PYCALLBACK_BOOL_const(AcceptsFocus); + DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard); + DEC_PYCALLBACK_SIZE_const(GetMaxSize); + + DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); + DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); + + PYPRIVATE; +}; + +IMPLEMENT_DYNAMIC_CLASS(wxPyWindow, wxWindow); + +IMP_PYCALLBACK_VOID_INT4(wxPyWindow, wxWindow, DoMoveWindow); +IMP_PYCALLBACK_VOID_INT5(wxPyWindow, wxWindow, DoSetSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyWindow, wxWindow, DoSetClientSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyWindow, wxWindow, DoSetVirtualSize); + +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyWindow, wxWindow, DoGetSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyWindow, wxWindow, DoGetClientSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyWindow, wxWindow, DoGetPosition); + +IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, DoGetVirtualSize); +IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, DoGetBestSize); + +IMP_PYCALLBACK__(wxPyWindow, wxWindow, InitDialog); +IMP_PYCALLBACK_BOOL_(wxPyWindow, wxWindow, TransferDataFromWindow); +IMP_PYCALLBACK_BOOL_(wxPyWindow, wxWindow, TransferDataToWindow); +IMP_PYCALLBACK_BOOL_(wxPyWindow, wxWindow, Validate); + +IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocus); +IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, AcceptsFocusFromKeyboard); +IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, GetMaxSize); +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, AddChild); +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, RemoveChild); -// PYPRIVATE; -// }; +%} + +// And now the one for SWIG to see +class wxPyWindow : public wxWindow +{ +public: + wxPyWindow(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyPanelNameStr); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyWindow)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + + + void base_DoMoveWindow(int x, int y, int width, int height); + void base_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); +} + +//--------------------------------------------------------------------------- +// Do the same thing for wxControl -// %} +%{ // C++ version of Python aware wxControl +class wxPyControl : public wxControl +{ + DECLARE_DYNAMIC_CLASS(wxPyControl) +public: + wxPyControl() : wxControl() {} + wxPyControl(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxValidator& validator=wxDefaultValidator, + const wxString& name = wxPyControlNameStr) + : wxControl(parent, id, pos, size, style, validator, name) {} + + + DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); + DEC_PYCALLBACK_VOID_INT5(DoSetSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetClientSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetVirtualSize); + + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetClientSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetPosition); + + DEC_PYCALLBACK_SIZE_const(DoGetVirtualSize); + DEC_PYCALLBACK_SIZE_const(DoGetBestSize); + + DEC_PYCALLBACK__(InitDialog); + DEC_PYCALLBACK_BOOL_(TransferDataFromWindow); + DEC_PYCALLBACK_BOOL_(TransferDataToWindow); + DEC_PYCALLBACK_BOOL_(Validate); + + DEC_PYCALLBACK_BOOL_const(AcceptsFocus); + DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard); + DEC_PYCALLBACK_SIZE_const(GetMaxSize); + + DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); + DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); + + PYPRIVATE; +}; + +IMPLEMENT_DYNAMIC_CLASS(wxPyControl, wxControl); + +IMP_PYCALLBACK_VOID_INT4(wxPyControl, wxControl, DoMoveWindow); +IMP_PYCALLBACK_VOID_INT5(wxPyControl, wxControl, DoSetSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyControl, wxControl, DoSetClientSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyControl, wxControl, DoSetVirtualSize); + +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyControl, wxControl, DoGetSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyControl, wxControl, DoGetClientSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyControl, wxControl, DoGetPosition); + +IMP_PYCALLBACK_SIZE_const(wxPyControl, wxControl, DoGetVirtualSize); +IMP_PYCALLBACK_SIZE_const(wxPyControl, wxControl, DoGetBestSize); + +IMP_PYCALLBACK__(wxPyControl, wxControl, InitDialog); +IMP_PYCALLBACK_BOOL_(wxPyControl, wxControl, TransferDataFromWindow); +IMP_PYCALLBACK_BOOL_(wxPyControl, wxControl, TransferDataToWindow); +IMP_PYCALLBACK_BOOL_(wxPyControl, wxControl, Validate); + +IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocus); +IMP_PYCALLBACK_BOOL_const(wxPyControl, wxControl, AcceptsFocusFromKeyboard); +IMP_PYCALLBACK_SIZE_const(wxPyControl, wxControl, GetMaxSize); + +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, AddChild); +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyControl, wxControl, RemoveChild); + +%} + +// And now the one for SWIG to see +class wxPyControl : public wxControl +{ +public: + wxPyControl(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxValidator& validator=wxDefaultValidator, + const wxString& name = wxPyControlNameStr); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyControl)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + + + void base_DoMoveWindow(int x, int y, int width, int height); + void base_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); +} + +//--------------------------------------------------------------------------- +// and for wxPanel + +%{ // C++ version of Python aware wxPanel +class wxPyPanel : public wxPanel +{ + DECLARE_DYNAMIC_CLASS(wxPyPanel) +public: + wxPyPanel() : wxPanel() {} + wxPyPanel(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyPanelNameStr) + : wxPanel(parent, id, pos, size, style, name) {} + + + DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); + DEC_PYCALLBACK_VOID_INT5(DoSetSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetClientSize); + DEC_PYCALLBACK_VOID_INTINT(DoSetVirtualSize); + + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetClientSize); + DEC_PYCALLBACK_VOID_INTPINTP_const(DoGetPosition); + + DEC_PYCALLBACK_SIZE_const(DoGetVirtualSize); + DEC_PYCALLBACK_SIZE_const(DoGetBestSize); + + DEC_PYCALLBACK__(InitDialog); + DEC_PYCALLBACK_BOOL_(TransferDataFromWindow); + DEC_PYCALLBACK_BOOL_(TransferDataToWindow); + DEC_PYCALLBACK_BOOL_(Validate); + + DEC_PYCALLBACK_BOOL_const(AcceptsFocus); + DEC_PYCALLBACK_BOOL_const(AcceptsFocusFromKeyboard); + DEC_PYCALLBACK_SIZE_const(GetMaxSize); + + DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); + DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); + + PYPRIVATE; +}; + +IMPLEMENT_DYNAMIC_CLASS(wxPyPanel, wxPanel); + +IMP_PYCALLBACK_VOID_INT4(wxPyPanel, wxPanel, DoMoveWindow); +IMP_PYCALLBACK_VOID_INT5(wxPyPanel, wxPanel, DoSetSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyPanel, wxPanel, DoSetClientSize); +IMP_PYCALLBACK_VOID_INTINT(wxPyPanel, wxPanel, DoSetVirtualSize); + +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyPanel, wxPanel, DoGetSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyPanel, wxPanel, DoGetClientSize); +IMP_PYCALLBACK_VOID_INTPINTP_const(wxPyPanel, wxPanel, DoGetPosition); + +IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, DoGetVirtualSize); +IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, DoGetBestSize); + +IMP_PYCALLBACK__(wxPyPanel, wxPanel, InitDialog); +IMP_PYCALLBACK_BOOL_(wxPyPanel, wxPanel, TransferDataFromWindow); +IMP_PYCALLBACK_BOOL_(wxPyPanel, wxPanel, TransferDataToWindow); +IMP_PYCALLBACK_BOOL_(wxPyPanel, wxPanel, Validate); + +IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocus); +IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, AcceptsFocusFromKeyboard); +IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, GetMaxSize); + +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, AddChild); +IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, RemoveChild); + +%} + +// And now the one for SWIG to see +class wxPyPanel : public wxPanel +{ +public: + wxPyPanel(wxWindow* parent, const wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPyPanelNameStr); + + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyPanel)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + + + void base_DoMoveWindow(int x, int y, int width, int height); + void base_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); +}; //---------------------------------------------------------------------------