X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d43da706022922ceb9535b638d4cd9d06cc8a388..41e155b43e45b056738bfd7e25c8c7fe261243f3:/wxPython/src/_pywindows.i diff --git a/wxPython/src/_pywindows.i b/wxPython/src/_pywindows.i index d6c60712df..00d753c045 100644 --- a/wxPython/src/_pywindows.i +++ b/wxPython/src/_pywindows.i @@ -47,11 +47,8 @@ // Show -// TODO: Virtualize ShouldInheritColours - //--------------------------------------------------------------------------- - %{ // C++ version of Python aware wxWindow class wxPyWindow : public wxWindow { @@ -65,7 +62,18 @@ public: const wxString& name = wxPyPanelNameStr) : wxWindow(parent, id, pos, size, style, name) {} - + void SetBestSize(const wxSize& size) { wxWindow::SetBestSize(size); } + + bool DoEraseBackground(wxDC* dc) { +#ifdef __WXMSW__ + return wxWindow::DoEraseBackground(dc->GetHDC()); +#else + dc->SetBackground(wxBrush(GetBackgroundColour())); + dc->Clear(); + return true; +#endif + } + DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); DEC_PYCALLBACK_VOID_INT5(DoSetSize); DEC_PYCALLBACK_VOID_INTINT(DoSetClientSize); @@ -90,8 +98,12 @@ public: DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); - DEC_PYCALLBACK_BOOL_(ShouldInheritColours); - DEC_PYCALLBACK__COLOUR(ApplyParentThemeBackground); + DEC_PYCALLBACK_BOOL_const(ShouldInheritColours); + DEC_PYCALLBACK_VIZATTR_(GetDefaultAttributes); + + DEC_PYCALLBACK_BOOL_(HasTransparentBackground); + + DEC_PYCALLBACK_VOID_(OnInternalIdle); PYPRIVATE; }; @@ -122,29 +134,35 @@ IMP_PYCALLBACK_SIZE_const(wxPyWindow, wxWindow, GetMaxSize); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, AddChild); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyWindow, wxWindow, RemoveChild); -IMP_PYCALLBACK_BOOL_(wxPyWindow, wxWindow, ShouldInheritColours); -IMP_PYCALLBACK__COLOUR(wxPyWindow, wxWindow, ApplyParentThemeBackground); - +IMP_PYCALLBACK_BOOL_const(wxPyWindow, wxWindow, ShouldInheritColours); +IMP_PYCALLBACK_VIZATTR_(wxPyWindow, wxWindow, GetDefaultAttributes); + +IMP_PYCALLBACK_BOOL_(wxPyWindow, wxWindow, HasTransparentBackground); + +IMP_PYCALLBACK_VOID_(wxPyWindow, wxWindow, OnInternalIdle); %} // And now the one for SWIG to see +MustHaveApp(wxPyWindow); class wxPyWindow : public wxWindow { public: %pythonAppend wxPyWindow "self._setOORInfo(self); self._setCallbackInfo(self, PyWindow)" %pythonAppend wxPyWindow() "" - wxPyWindow(wxWindow* parent, const wxWindowID id, + wxPyWindow(wxWindow* parent, const wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPyPanelNameStr); - %name(PrePyWindow) wxPyWindow(); + %RenameCtor(PrePyWindow, wxPyWindow()); void _setCallbackInfo(PyObject* self, PyObject* _class); - + void SetBestSize(const wxSize& size); + bool DoEraseBackground(wxDC* dc); + 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); @@ -176,8 +194,11 @@ public: void base_AddChild(wxWindow* child); void base_RemoveChild(wxWindow* child); - bool base_ShouldInheritColours(); - void base_ApplyParentThemeBackground(const wxColour& c); + bool base_ShouldInheritColours() const; + wxVisualAttributes base_GetDefaultAttributes(); + + void base_OnInternalIdle(); + }; //--------------------------------------------------------------------------- @@ -202,6 +223,17 @@ public: const wxString& name = wxPyPanelNameStr) : wxPanel(parent, id, pos, size, style, name) {} + void SetBestSize(const wxSize& size) { wxPanel::SetBestSize(size); } + bool DoEraseBackground(wxDC* dc) { +#ifdef __WXMSW__ + return wxWindow::DoEraseBackground(dc->GetHDC()); +#else + dc->SetBackground(wxBrush(GetBackgroundColour())); + dc->Clear(); + return true; +#endif + } + DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); DEC_PYCALLBACK_VOID_INT5(DoSetSize); @@ -227,9 +259,13 @@ public: DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); - DEC_PYCALLBACK_BOOL_(ShouldInheritColours); - DEC_PYCALLBACK__COLOUR(ApplyParentThemeBackground); + DEC_PYCALLBACK_BOOL_const(ShouldInheritColours); + DEC_PYCALLBACK_VIZATTR_(GetDefaultAttributes); + DEC_PYCALLBACK_BOOL_(HasTransparentBackground); + + DEC_PYCALLBACK_VOID_(OnInternalIdle); + PYPRIVATE; }; @@ -259,28 +295,35 @@ IMP_PYCALLBACK_SIZE_const(wxPyPanel, wxPanel, GetMaxSize); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, AddChild); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyPanel, wxPanel, RemoveChild); -IMP_PYCALLBACK_BOOL_(wxPyPanel, wxPanel, ShouldInheritColours); -IMP_PYCALLBACK__COLOUR(wxPyPanel, wxPanel, ApplyParentThemeBackground); +IMP_PYCALLBACK_BOOL_const(wxPyPanel, wxPanel, ShouldInheritColours); +IMP_PYCALLBACK_VIZATTR_(wxPyPanel, wxPanel, GetDefaultAttributes); + +IMP_PYCALLBACK_BOOL_(wxPyPanel, wxPanel, HasTransparentBackground); + +IMP_PYCALLBACK_VOID_(wxPyPanel, wxPanel, OnInternalIdle); %} // And now the one for SWIG to see +MustHaveApp(wxPyPanel); class wxPyPanel : public wxPanel { public: %pythonAppend wxPyPanel "self._setOORInfo(self); self._setCallbackInfo(self, PyPanel)" %pythonAppend wxPyPanel() "" - wxPyPanel(wxWindow* parent, const wxWindowID id, + wxPyPanel(wxWindow* parent, const wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPyPanelNameStr); - %name(PrePyPanel) wxPyPanel(); + %RenameCtor(PrePyPanel, wxPyPanel()); void _setCallbackInfo(PyObject* self, PyObject* _class); - + void SetBestSize(const wxSize& size); + bool DoEraseBackground(wxDC* dc); + 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); @@ -312,8 +355,11 @@ public: void base_AddChild(wxWindow* child); void base_RemoveChild(wxWindow* child); - bool base_ShouldInheritColours(); - void base_ApplyParentThemeBackground(const wxColour& c); + bool base_ShouldInheritColours() const ; + wxVisualAttributes base_GetDefaultAttributes(); + + void base_OnInternalIdle(); + }; //--------------------------------------------------------------------------- @@ -332,6 +378,16 @@ public: const wxString& name = wxPyPanelNameStr) : wxScrolledWindow(parent, id, pos, size, style, name) {} + void SetBestSize(const wxSize& size) { wxScrolledWindow::SetBestSize(size); } + bool DoEraseBackground(wxDC* dc) { +#ifdef __WXMSW__ + return wxWindow::DoEraseBackground(dc->GetHDC()); +#else + dc->SetBackground(wxBrush(GetBackgroundColour())); + dc->Clear(); + return true; +#endif + } DEC_PYCALLBACK_VOID_INT4(DoMoveWindow); DEC_PYCALLBACK_VOID_INT5(DoSetSize); @@ -357,9 +413,13 @@ public: DEC_PYCALLBACK_VOID_WXWINBASE(AddChild); DEC_PYCALLBACK_VOID_WXWINBASE(RemoveChild); - DEC_PYCALLBACK_BOOL_(ShouldInheritColours); - DEC_PYCALLBACK__COLOUR(ApplyParentThemeBackground); + DEC_PYCALLBACK_BOOL_const(ShouldInheritColours); + DEC_PYCALLBACK_VIZATTR_(GetDefaultAttributes); + DEC_PYCALLBACK_BOOL_(HasTransparentBackground); + + DEC_PYCALLBACK_VOID_(OnInternalIdle); + PYPRIVATE; }; @@ -389,28 +449,35 @@ IMP_PYCALLBACK_SIZE_const(wxPyScrolledWindow, wxScrolledWindow, GetMaxSize); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyScrolledWindow, wxScrolledWindow, AddChild); IMP_PYCALLBACK_VOID_WXWINBASE(wxPyScrolledWindow, wxScrolledWindow, RemoveChild); -IMP_PYCALLBACK_BOOL_(wxPyScrolledWindow, wxScrolledWindow, ShouldInheritColours); -IMP_PYCALLBACK__COLOUR(wxPyScrolledWindow, wxScrolledWindow, ApplyParentThemeBackground); +IMP_PYCALLBACK_BOOL_const(wxPyScrolledWindow, wxScrolledWindow, ShouldInheritColours); +IMP_PYCALLBACK_VIZATTR_(wxPyScrolledWindow, wxScrolledWindow, GetDefaultAttributes); + +IMP_PYCALLBACK_BOOL_(wxPyScrolledWindow, wxScrolledWindow, HasTransparentBackground); + +IMP_PYCALLBACK_VOID_(wxPyScrolledWindow, wxScrolledWindow, OnInternalIdle); %} // And now the one for SWIG to see +MustHaveApp(wxPyScrolledWindow); class wxPyScrolledWindow : public wxScrolledWindow { public: - %pythonAppend wxPyScrolledWindow "self._setOORInfo(self); self._setCallbackInfo(self, PyPanel)" + %pythonAppend wxPyScrolledWindow "self._setOORInfo(self); self._setCallbackInfo(self, PyScrolledWindow)" %pythonAppend wxPyScrolledWindow() "" - wxPyScrolledWindow(wxWindow* parent, const wxWindowID id, + wxPyScrolledWindow(wxWindow* parent, const wxWindowID id=-1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxPyPanelNameStr); - %name(PrePyScrolledWindow) wxPyScrolledWindow(); + %RenameCtor(PrePyScrolledWindow, wxPyScrolledWindow()); void _setCallbackInfo(PyObject* self, PyObject* _class); - + void SetBestSize(const wxSize& size); + bool DoEraseBackground(wxDC* dc); + 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); @@ -442,8 +509,11 @@ public: void base_AddChild(wxWindow* child); void base_RemoveChild(wxWindow* child); - bool base_ShouldInheritColours(); - void base_ApplyParentThemeBackground(const wxColour& c); + bool base_ShouldInheritColours() const; + wxVisualAttributes base_GetDefaultAttributes(); + + void base_OnInternalIdle(); + };