X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/249a57f4438ef017764e7b317fce1c9847ed45dc..d8f3f983596d288daa840ffb7510ffa1cc67be0f:/wxPython/src/helpers.h diff --git a/wxPython/src/helpers.h b/wxPython/src/helpers.h index acc450dce6..9cf9014612 100644 --- a/wxPython/src/helpers.h +++ b/wxPython/src/helpers.h @@ -1315,6 +1315,30 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- +#define DEC_PYCALLBACK_VOID_WXWINBASE(CBNAME) \ + void CBNAME(wxWindowBase* a); \ + void base_##CBNAME(wxWindowBase* a); + + +#define IMP_PYCALLBACK_VOID_WXWINBASE(CLASS, PCLASS, CBNAME) \ + void CLASS::CBNAME(wxWindowBase* a) { \ + bool found; \ + wxPyBeginBlockThreads(); \ + if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ + PyObject* obj = wxPyMake_wxObject(a); \ + wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ + Py_DECREF(obj); \ + } \ + wxPyEndBlockThreads(); \ + if (! found) \ + PCLASS::CBNAME(a); \ + } \ + void CLASS::base_##CBNAME(wxWindowBase* a) { \ + PCLASS::CBNAME(a); \ + } + +//--------------------------------------------------------------------------- + #define DEC_PYCALLBACK_BOOL_(CBNAME) \ bool CBNAME(); \ bool base_##CBNAME(); @@ -1596,6 +1620,25 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- +#define DEC_PYCALLBACK_bool_anypure(CBNAME, Type) \ + bool CBNAME(Type& a); + + +#define IMP_PYCALLBACK_bool_anypure(CLASS, PCLASS, CBNAME, Type) \ + bool CLASS::CBNAME(Type& a) { \ + bool rv=FALSE; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* obj = wxPyConstructObject((void*)&a, #Type, 0); \ + rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ + Py_DECREF(obj); \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } \ + +//--------------------------------------------------------------------------- + #define DEC_PYCALLBACK_STRING_LONGLONG(CBNAME) \ wxString CBNAME(long a, long b) const; \ wxString base_##CBNAME(long a, long b)const ; @@ -1716,4 +1759,87 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- +#define DEC_PYCALLBACK_WIZPG__pure(CBNAME) \ + wxWizardPage* CBNAME() const; + +#define IMP_PYCALLBACK_WIZPG__pure(CLASS, PCLASS, CBNAME) \ + wxWizardPage* CLASS::CBNAME() const { \ + wxWizardPage* rv = NULL; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* ro; \ + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); \ + if (ro) { \ + SWIG_GetPtrObj(ro, (void **)&rv, "_wxWizardPage_p"); \ + Py_DECREF(ro); \ + } \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } + +//--------------------------------------------------------------------------- + +#define DEC_PYCALLBACK_BITMAP__pure(CBNAME) \ + wxBitmap CBNAME() const; + +#define IMP_PYCALLBACK_BITMAP__pure(CLASS, PCLASS, CBNAME) \ + wxBitmap CLASS::CBNAME() const { \ + wxBitmap rv; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* ro; \ + wxBitmap* ptr; \ + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); \ + if (ro) { \ + if (! SWIG_GetPtrObj(ro, (void **)&ptr, "_wxBitmap_p")) \ + rv = *ptr; \ + Py_DECREF(ro); \ + } \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } + +//--------------------------------------------------------------------------- + +#define DEC_PYCALLBACK_OBJECT__pure(CBNAME) \ + wxObject* CBNAME(); + +#define IMP_PYCALLBACK_OBJECT__pure(CLASS, PCLASS, CBNAME) \ + wxObject* CLASS::CBNAME() { \ + wxObject* rv = NULL; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* ro; \ + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); \ + if (ro) { \ + SWIG_GetPtrObj(ro, (void **)&rv, "_wxObject_p"); \ + Py_DECREF(ro); \ + } \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } + +//--------------------------------------------------------------------------- + +#define DEC_PYCALLBACK_BOOL_NODE_pure(CBNAME) \ + bool CBNAME(wxXmlNode* a); + + +#define IMP_PYCALLBACK_BOOL_NODE_pure(CLASS, PCLASS, CBNAME) \ + bool CLASS::CBNAME(wxXmlNode* a) { \ + bool rv=FALSE; \ + wxPyBeginBlockThreads(); \ + if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \ + PyObject* obj = wxPyConstructObject((void*)a, "wxXmlNode", 0); \ + rv = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", obj)); \ + Py_DECREF(obj); \ + } \ + wxPyEndBlockThreads(); \ + return rv; \ + } \ + +//--------------------------------------------------------------------------- #endif