X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aaad759f90972578f8c8bfbf3218f496e0f8c547..4e3ad7c095f0a047b48445d76316fc20f394f3e9:/wxPython/src/helpers.h diff --git a/wxPython/src/helpers.h b/wxPython/src/helpers.h index e0cb056cf7..1ca7acd7da 100644 --- a/wxPython/src/helpers.h +++ b/wxPython/src/helpers.h @@ -1068,6 +1068,33 @@ void wxPyCBH_delete(wxPyCallbackHelper* cbh); //--------------------------------------------------------------------------- +#define DEC_PYCALLBACK_STRING_STRING(CBNAME) \ + wxString CBNAME(const wxString& a); \ + wxString base_##CBNAME(const wxString& a); + +#define IMP_PYCALLBACK_STRING_STRING(CLASS, PCLASS, CBNAME) \ + wxString CLASS::CBNAME(const wxString& a) { \ + wxString rval; \ + bool found; \ + wxPyBeginBlockThreads(); \ + if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ + PyObject* ro; \ + PyObject* s = wx2PyString(a); \ + ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", s)); \ + Py_DECREF(s); \ + if (ro) { \ + rval = Py2wxString(ro); \ + Py_DECREF(ro); \ + } \ + } \ + if (! found) \ + rval = PCLASS::CBNAME(a); \ + wxPyEndBlockThreads(); \ + return rval; \ + } \ + +//--------------------------------------------------------------------------- + #define DEC_PYCALLBACK_STRING_STRINGINT_pure(CBNAME) \ wxString CBNAME(const wxString& a,int b); \ @@ -1620,6 +1647,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 ; @@ -1740,4 +1786,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