- rval = ptr; \
- Py_DECREF(ro); \
- } \
- } \
- else \
- rval = PCLASS::CBNAME(a, b); \
- wxPySaveThread(doSave); \
- return rval; \
- } \
- wxGridCellAttr *base_##CBNAME(int a, int b) { \
- return PCLASS::CBNAME(a, b); \
- }
-
-
-
-#define PYCALLBACK__GCAINTINT(PCLASS, CBNAME) \
- void CBNAME(wxGridCellAttr *attr, int a, int b) { \
- bool doSave = wxPyRestoreThread(); \
- if (m_myInst.findCallback(#CBNAME)) \
- m_myInst.callCallback( \
- Py_BuildValue("(Oii)", \
- wxPyConstructObject((void*)attr, "wxGridCellAttr"), \
- a, b)); \
- else \
- PCLASS::CBNAME(attr, a, b); \
- wxPySaveThread(doSave); \
- } \
- void base_##CBNAME(wxGridCellAttr *attr, int a, int b) { \
- PCLASS::CBNAME(attr, a, b); \
- }
-
-
-
-#define PYCALLBACK__GCAINT(PCLASS, CBNAME) \
- void CBNAME(wxGridCellAttr *attr, int val) { \
- bool doSave = wxPyRestoreThread(); \
- if (m_myInst.findCallback(#CBNAME)) \
- m_myInst.callCallback( \
- Py_BuildValue("(Oi)", \
- wxPyConstructObject((void*)attr, "wxGridCellAttr"), \
- val)); \
- else \
- PCLASS::CBNAME(attr, val); \
- wxPySaveThread(doSave); \
- } \
- void base_##CBNAME(wxGridCellAttr *attr, int val) { \
- PCLASS::CBNAME(attr, val); \
- }
-
-
-
-#define PYCALLBACK_INT__pure(CBNAME) \
- int CBNAME() { \
- bool doSave = wxPyRestoreThread(); \
- int rval = 0; \
- if (m_myInst.findCallback(#CBNAME)) \
- rval = m_myInst.callCallback(Py_BuildValue("()")); \
- wxPySaveThread(doSave); \
- return rval; \
+ rval = ptr; \
+ Py_DECREF(ro); \
+ } \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a, b, c); \
+ return rval; \
+ } \
+ wxGridCellAttr *base_##CBNAME(int a, int b, wxGridCellAttr::wxAttrKind c) { \
+ return PCLASS::CBNAME(a, b, c); \
+ }
+
+
+
+#define PYCALLBACK__GCAINTINT(PCLASS, CBNAME) \
+ void CBNAME(wxGridCellAttr *attr, int a, int b) { \
+ wxPyBeginBlockThreads(); \
+ bool found; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyMake_wxGridCellAttr(attr); \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oii)", obj, a, b)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ PCLASS::CBNAME(attr, a, b); \
+ } \
+ void base_##CBNAME(wxGridCellAttr *attr, int a, int b) { \
+ PCLASS::CBNAME(attr, a, b); \
+ }
+
+
+
+#define PYCALLBACK__GCAINT(PCLASS, CBNAME) \
+ void CBNAME(wxGridCellAttr *attr, int val) { \
+ wxPyBeginBlockThreads(); \
+ bool found; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyMake_wxGridCellAttr(attr); \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oi)", obj, val)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ PCLASS::CBNAME(attr, val); \
+ } \
+ void base_##CBNAME(wxGridCellAttr *attr, int val) { \
+ PCLASS::CBNAME(attr, val); \
+ }
+
+
+
+#define PYCALLBACK_INT__pure(CBNAME) \
+ int CBNAME() { \
+ wxPyBeginBlockThreads(); \
+ int rval = 0; \
+ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \
+ wxPyEndBlockThreads(); \
+ return rval; \
+ }
+
+
+
+#define PYCALLBACK_BOOL_INTINT_pure(CBNAME) \
+ bool CBNAME(int a, int b) { \
+ wxPyBeginBlockThreads(); \
+ bool rval = 0; \
+ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)",a,b)); \
+ wxPyEndBlockThreads(); \
+ return rval; \
+ }
+
+
+#define PYCALLBACK_STRING_INTINT_pure(CBNAME) \
+ wxString CBNAME(int a, int b) { \
+ wxPyBeginBlockThreads(); \
+ wxString rval; \
+ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
+ PyObject* ro; \
+ ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(ii)",a,b)); \
+ if (ro) { \
+ rval = Py2wxString(ro); \
+ Py_DECREF(ro); \
+ } \
+ } \
+ wxPyEndBlockThreads(); \
+ return rval; \
+ }
+
+
+#define PYCALLBACK__INTINTSTRING_pure(CBNAME) \
+ void CBNAME(int a, int b, const wxString& c) { \
+ wxPyBeginBlockThreads(); \
+ if (wxPyCBH_findCallback(m_myInst, #CBNAME)) { \
+ PyObject* s = wx2PyString(c); \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",a,b,s));\
+ Py_DECREF(s); \
+ } \
+ wxPyEndBlockThreads(); \
+ }
+
+
+#define PYCALLBACK_STRING_INTINT(PCLASS, CBNAME) \
+ wxString CBNAME(int a, int b) { \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ wxString rval; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* ro; \
+ ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(ii)",a,b)); \
+ if (ro) { \
+ rval = Py2wxString(ro); \
+ Py_DECREF(ro); \
+ } \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a, b); \
+ 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 = 0; \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* s = wx2PyString(c); \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iiO)",a,b,s));\
+ Py_DECREF(s); \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a,b,c); \
+ 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 found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a,b); \
+ 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 = 0; \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a,b); \
+ 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 found; \
+ wxPyBeginBlockThreads(); \
+ double rval; \
+ if ((found = 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); \
+ } \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a, b); \
+ return rval; \
+ } \
+ double base_##CBNAME(int a, int b) { \
+ return PCLASS::CBNAME(a, b); \
+ }
+
+
+
+#define PYCALLBACK__(PCLASS, CBNAME) \
+ void CBNAME() { \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("()")); \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ PCLASS::CBNAME(); \
+ } \
+ void base_##CBNAME() { \
+ PCLASS::CBNAME(); \
+ }
+
+
+
+
+#define PYCALLBACK_BOOL_SIZETSIZET(PCLASS, CBNAME) \
+ bool CBNAME(size_t a, size_t b) { \
+ bool rval = 0; \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(ii)", a,b)); \
+ wxPyEndBlockThreads(); \
+ 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 = 0; \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) \
+ rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(i)", a)); \
+ wxPyEndBlockThreads(); \
+ 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; \
+ wxPyBeginBlockThreads(); \
+ wxString rval; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* ro; \
+ ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(i)",a)); \
+ if (ro) { \
+ rval = Py2wxString(ro); \
+ Py_DECREF(ro); \
+ } \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ rval = PCLASS::CBNAME(a); \
+ return rval; \
+ } \
+ wxString base_##CBNAME(int a) { \
+ return PCLASS::CBNAME(a); \
+ }
+
+
+#define PYCALLBACK__INTSTRING(PCLASS, CBNAME) \
+ void CBNAME(int a, const wxString& c) { \
+ bool found; \
+ wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* s = wx2PyString(c); \
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(iO)",a,s)); \
+ Py_DECREF(s); \
+ } \
+ wxPyEndBlockThreads(); \
+ if (! found) \
+ PCLASS::CBNAME(a,c); \
+ } \
+ void base_##CBNAME(int a, const wxString& c) { \
+ PCLASS::CBNAME(a,c); \