X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a66212dcdf3f4b2d4e2b1d1dc45f2ff35bd51bfd..371fd015a7c7bd9aeaaccb05b19d07b69740755c:/wxPython/src/helpers.h diff --git a/wxPython/src/helpers.h b/wxPython/src/helpers.h index fc20239de3..3fefcfe62e 100644 --- a/wxPython/src/helpers.h +++ b/wxPython/src/helpers.h @@ -210,10 +210,12 @@ public: class wxPyClientData; class wxPyUserData; class wxPyOORClientData; +class wxPyCBInputStream; void wxPyClientData_dtor(wxPyClientData* self); void wxPyUserData_dtor(wxPyUserData* self); void wxPyOORClientData_dtor(wxPyOORClientData* self); +wxPyCBInputStream* wxPyCBInputStream_create(PyObject *py, bool block); //--------------------------------------------------------------------------- @@ -223,14 +225,24 @@ void wxPyOORClientData_dtor(wxPyOORClientData* self); class wxPyCallbackHelper; + +// Make SunCC happy and make typedef's for these that are extern "C" +typedef void (*p_SWIG_MakePtr_t)(char*, void*, char*); +typedef char* (*p_SWIG_GetPtr_t)(char*, void**, char*); +typedef char* (*p_SWIG_GetPtrObj_t)(PyObject*, void**, char*); +typedef void (*p_SWIG_RegisterMapping_t)(char*, char*, void *(*cast)(void *)); +typedef void (*p_SWIG_addvarlink_t)(PyObject*, char*, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)); +typedef PyObject* (*p_SWIG_newvarlink_t)(void); + + struct wxPyCoreAPI { - void (*p_SWIG_MakePtr)(char*, void*, char*); - char* (*p_SWIG_GetPtr)(char*, void**, char*); - char* (*p_SWIG_GetPtrObj)(PyObject*, void**, char*); - void (*p_SWIG_RegisterMapping)(char*, char*, void *(*cast)(void *)); - void (*p_SWIG_addvarlink)(PyObject*, char*, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)); - PyObject* (*p_SWIG_newvarlink)(void); + p_SWIG_MakePtr_t p_SWIG_MakePtr; + p_SWIG_GetPtr_t p_SWIG_GetPtr; + p_SWIG_GetPtrObj_t p_SWIG_GetPtrObj; + p_SWIG_RegisterMapping_t p_SWIG_RegisterMapping; + p_SWIG_addvarlink_t p_SWIG_addvarlink; + p_SWIG_newvarlink_t p_SWIG_newvarlink; PyThreadState* (*p_wxPyBeginAllowThreads)(); void (*p_wxPyEndAllowThreads)(PyThreadState* state); @@ -275,6 +287,9 @@ struct wxPyCoreAPI { void (*p_wxPyClientData_dtor)(wxPyClientData*); void (*p_wxPyUserData_dtor)(wxPyUserData*); void (*p_wxPyOORClientData_dtor)(wxPyOORClientData*); + + wxPyCBInputStream* (*p_wxPyCBInputStream_create)(PyObject *py, bool block); + }; #ifdef wxPyUSE_EXPORT @@ -1300,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(); @@ -1701,4 +1740,50 @@ 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; \ + bool found; \ + wxPyBeginBlockThreads(); \ + if ((found = 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; \ + bool found; \ + wxPyBeginBlockThreads(); \ + if ((found = 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; \ + } + +//--------------------------------------------------------------------------- + #endif