-
-
-#define PYCALLBACK_STRING_INTINT(PCLASS, CBNAME) \
- wxString CBNAME(int a, int b) { \
- bool doSave = wxPyRestoreThread(); \
- wxString rval; \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
- PyObject* ro; \
- ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(ii)",a,b)); \
- if (ro) { \
- PyObject* str = PyObject_Str(ro); \
- rval = PyString_AsString(str); \
- Py_DECREF(ro); Py_DECREF(str); \
- } \
- } else \
- rval = PCLASS::CBNAME(a, b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- wxString base_##CBNAME(int a, int b) { \
- return PCLASS::CBNAME(a, b); \
- }
-
-
-
-#define PYCALLBACK_BOOL_INTINTSTRING(PCLASS, CBNAME) \
- bool CBNAME(int a, int b, const wxString& c) { \
- bool rval; \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iis)", a,b,c.c_str())); \
- else \
- rval = PCLASS::CBNAME(a,b,c); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- bool base_##CBNAME(int a, int b, const wxString& c) { \
- return PCLASS::CBNAME(a,b,c); \
- }
-
-
-
-
-#define PYCALLBACK_LONG_INTINT(PCLASS, CBNAME) \
- long CBNAME(int a, int b) { \
- long rval; \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
- else \
- rval = PCLASS::CBNAME(a,b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- long base_##CBNAME(int a, int b) { \
- return PCLASS::CBNAME(a,b); \
- }
-
-
-
-#define PYCALLBACK_BOOL_INTINT(PCLASS, CBNAME) \
- bool CBNAME(int a, int b) { \
- bool rval; \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
- else \
- rval = PCLASS::CBNAME(a,b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- bool base_##CBNAME(int a, int b) { \
- return PCLASS::CBNAME(a,b); \
- }
-
-
-
-#define PYCALLBACK_DOUBLE_INTINT(PCLASS, CBNAME) \
- double CBNAME(int a, int b) { \
- bool doSave = wxPyRestoreThread(); \
- double rval; \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
- PyObject* ro; \
- ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(ii)",a,b)); \
- if (ro) { \
- PyObject* str = PyObject_Str(ro); \
- rval = PyFloat_AsDouble(str); \
- Py_DECREF(ro); Py_DECREF(str); \
- } \
- } else \
- rval = PCLASS::CBNAME(a, b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- double base_##CBNAME(int a, int b) { \
- return PCLASS::CBNAME(a, b); \
- }
-
-
-
-#define PYCALLBACK__(PCLASS, CBNAME) \
- void CBNAME() { \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \
- else \
- PCLASS::CBNAME(); \
- wxPySaveThread(doSave); \
- } \
- void base_##CBNAME() { \
- PCLASS::CBNAME(); \
- }
-
-
-
-
-#define PYCALLBACK_BOOL_SIZETSIZET(PCLASS, CBNAME) \
- bool CBNAME(size_t a, size_t b) { \
- bool rval; \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
- else \
- rval = PCLASS::CBNAME(a,b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- bool base_##CBNAME(size_t a, size_t b) { \
- return PCLASS::CBNAME(a,b); \
- }
-
-
-
-#define PYCALLBACK_BOOL_SIZET(PCLASS, CBNAME) \
- bool CBNAME(size_t a) { \
- bool rval; \
- bool doSave = wxPyRestoreThread(); \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
- rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(i)", a)); \
- else \
- rval = PCLASS::CBNAME(a); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- bool base_##CBNAME(size_t a) { \
- return PCLASS::CBNAME(a); \
- }
-
-
-
-#define PYCALLBACK_STRING_INT(PCLASS, CBNAME) \
- wxString CBNAME(int a) { \
- bool doSave = wxPyRestoreThread(); \
- wxString rval; \
- if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
- PyObject* ro; \
- ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(i)",a)); \
- if (ro) { \
- PyObject* str = PyObject_Str(ro); \
- rval = PyString_AsString(str); \
- Py_DECREF(ro); Py_DECREF(str); \
- } \
- } else \
- rval = PCLASS::CBNAME(a); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- wxString base_##CBNAME(int a) { \
- return PCLASS::CBNAME(a); \
+
+
+
+
+#define PYCALLBACK_BOOL_SIZETSIZET(PCLASS, CBNAME) \
+ bool CBNAME(size_t a, size_t b) { \
+ bool rval; \
+ bool found; \
+ wxPyTState* state = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
+ wxPyEndBlockThreads(state); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a,b); \
+ return rval; \
+ } \
+ bool base_##CBNAME(size_t a, size_t b) { \
+ return PCLASS::CBNAME(a,b); \
+ }
+
+
+
+#define PYCALLBACK_BOOL_SIZET(PCLASS, CBNAME) \
+ bool CBNAME(size_t a) { \
+ bool rval; \
+ bool found; \
+ wxPyTState* state = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(i)", a)); \
+ wxPyEndBlockThreads(state); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a); \
+ return rval; \
+ } \
+ bool base_##CBNAME(size_t a) { \
+ return PCLASS::CBNAME(a); \
+ }
+
+
+
+#define PYCALLBACK_STRING_INT(PCLASS, CBNAME) \
+ wxString CBNAME(int a) { \
+ bool found; \
+ wxPyTState* state = wxPyBeginBlockThreads(); \
+ wxString rval; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* ro; \
+ ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(i)",a)); \
+ if (ro) { \
+ PyObject* str = PyObject_Str(ro); \
+ rval = PyString_AsString(str); \
+ Py_DECREF(ro); Py_DECREF(str); \
+ } \
+ } \
+ wxPyEndBlockThreads(state); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a); \
+ return rval; \
+ } \
+ wxString base_##CBNAME(int a) { \
+ return PCLASS::CBNAME(a); \