+//---------------------------------------------------------------------------
+#define DEC_PYCALLBACK__INTCOLOUR(CBNAME) \
+ void CBNAME(int a, const wxColour& c);
+
+#define IMP_PYCALLBACK__INTCOLOUR(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(int a, const wxColour& c) { \
+ bool found; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyConstructObject((void*)&c, wxT("wxColour"), 0); \
+ wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(iO)",a, obj)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ PCLASS::CBNAME(a, c); \
+ } \
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__INTFONT(CBNAME) \
+ void CBNAME(int a, const wxFont& c);
+
+#define IMP_PYCALLBACK__INTFONT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(int a, const wxFont& c) { \
+ bool found; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyConstructObject((void*)&c, wxT("wxFont"), 0); \
+ wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(iO)",a, obj)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ PCLASS::CBNAME(a, c); \
+ } \
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__FONT(CBNAME) \
+ void CBNAME(const wxFont& a);
+
+#define IMP_PYCALLBACK__FONT(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(const wxFont& a) { \
+ bool found; \
+ wxPyBlock_t blocked = wxPyBeginBlockThreads(); \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyConstructObject((void*)&a, wxT("wxFont"), 0); \
+ wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(O)", obj)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(blocked); \
+ if (! found) \
+ PCLASS::CBNAME(a); \
+ } \
+