//---------------------------------------------------------------------------
-// Convert a wxList to a Python List
-#include <ogl.h>
-PyObject* wxPy_ConvertList(wxList* list, char* className) {
- PyObject* pyList;
- PyObject* pyObj;
- wxObject* wxObj;
- wxNode* node = list->First();
- bool doSave = wxPyRestoreThread();
- pyList = PyList_New(0);
- while (node) {
- wxObj = node->Data();
-// printf("%s class at %x : %x\n", wxObj->GetClassInfo()->GetClassName(), (void*)wxObj, (void*)((wxShape*)wxObj)->GetParent());
- pyObj = wxPyConstructObject(wxObj, className);
- PyList_Append(pyList, pyObj);
- node = node->Next();
- }
-// for (int x=0; x<PyList_Size(pyList); x++) {
-// PyObject* obj = PyList_GetItem(pyList, x);
-// char* attr = PyString_AsString(PyObject_GetAttrString(obj, "this"));
-// PyObject* par = PyObject_CallMethod(obj, "GetParent", NULL);
-// char* parent;
-// if (par != Py_None)
-// parent = PyString_AsString(PyObject_GetAttrString(par, "this"));
-// else
-// parent = "None";
-// printf("obj.this = %s obj.GetParent().this = %s\n", attr, parent);
-// }
-// printf("--------\n");
- wxPySaveThread(doSave);
- return pyList;
-}
-//---------------------------------------------------------------------------
}
//----------------------------------------------------------------------
+//---------------------------------------------------------------------------
+// Convert a wxList to a Python List
+
+PyObject* wxPy_ConvertList(wxListBase* list, char* className) {
+ PyObject* pyList;
+ PyObject* pyObj;
+ wxObject* wxObj;
+ wxNode* node = list->First();
+
+ bool doSave = wxPyRestoreThread();
+ pyList = PyList_New(0);
+ while (node) {
+ wxObj = node->Data();
+ pyObj = wxPyConstructObject(wxObj, className);
+ PyList_Append(pyList, pyObj);
+ node = node->Next();
+ }
+ wxPySaveThread(doSave);
+ return pyList;
+}
+
//----------------------------------------------------------------------
// Some helper functions for typemaps in my_typemaps.i, so they won't be
-// imcluded in every file...
+// included in every file...
HELPEREXPORT byte* byte_LIST_helper(PyObject* source) {
HELPEREXPORT PyObject* wxPyConstructObject(void* ptr, char* className);
HELPEREXPORT bool wxPyRestoreThread();
HELPEREXPORT void wxPySaveThread(bool doSave);
+HELPEREXPORT PyObject* wxPy_ConvertList(wxListBase* list, char* className);
//----------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK__STRING(CBNAME) \
+ void CBNAME(const wxString& a); \
+ void base_##CBNAME(const wxString& a);
+
+
+#define IMP_PYCALLBACK__STRING(CLASS, PCLASS, CBNAME) \
+ void CLASS::CBNAME(const wxString& a) { \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) \
+ m_myInst.callCallback(Py_BuildValue("(s)", a.c_str())); \
+ else \
+ PCLASS::CBNAME(a); \
+ wxPySaveThread(doSave); \
+ } \
+ void CLASS::base_##CBNAME(const wxString& a) { \
+ PCLASS::CBNAME(a); \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_BOOL_STRING(CBNAME) \
+ bool CBNAME(const wxString& a); \
+ bool base_##CBNAME(const wxString& a);
+
+
+#define IMP_PYCALLBACK_BOOL_STRING(CLASS, PCLASS, CBNAME) \
+ bool CLASS::CBNAME(const wxString& a) { \
+ bool rval; \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) \
+ rval = m_myInst.callCallback(Py_BuildValue("(s)", a.c_str())); \
+ else \
+ rval = PCLASS::CBNAME(a); \
+ wxPySaveThread(doSave); \
+ return rval; \
+ } \
+ bool CLASS::base_##CBNAME(const wxString& a) { \
+ return PCLASS::CBNAME(a); \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_STRING_(CBNAME) \
+ wxString CBNAME(); \
+ wxString base_##CBNAME();
+
+
+#define IMP_PYCALLBACK_STRING_(CLASS, PCLASS, CBNAME) \
+ wxString CLASS::CBNAME() { \
+ wxString rval; \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) { \
+ PyObject* ro; \
+ ro = m_myInst.callCallbackObj(Py_BuildValue("()")); \
+ rval = PyString_AsString(PyObject_Str(ro)); \
+ } \
+ else \
+ rval = PCLASS::CBNAME(a); \
+ wxPySaveThread(doSave); \
+ return rval; \
+ } \
+ bool CLASS::base_##CBNAME(const wxString& a) { \
+ return PCLASS::CBNAME(a); \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_STRING__pure(CBNAME) \
+ wxString CBNAME();
+
+
+#define IMP_PYCALLBACK_STRING__pure(CLASS, PCLASS, CBNAME) \
+ wxString CLASS::CBNAME() { \
+ wxString rval; \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) { \
+ PyObject* ro; \
+ ro = m_myInst.callCallbackObj(Py_BuildValue("()")); \
+ rval = PyString_AsString(PyObject_Str(ro)); \
+ } \
+ wxPySaveThread(doSave); \
+ return rval; \
+ }
+
+//---------------------------------------------------------------------------
+
+#define DEC_PYCALLBACK_BOOL_TAG_pure(CBNAME) \
+ bool CBNAME(const wxHtmlTag& a); \
+
+
+#define IMP_PYCALLBACK_BOOL_TAG_pure(CLASS, PCLASS, CBNAME) \
+ bool CLASS::CBNAME(const wxHtmlTag& a) { \
+ bool rval = false; \
+ bool doSave = wxPyRestoreThread(); \
+ if (m_myInst.findCallback(#CBNAME)) \
+ rval = m_myInst.callCallback(Py_BuildValue("(O)", \
+ wxPyConstructObject((void*)&a,"wxHtmlTag"))); \
+ wxPySaveThread(doSave); \
+ return rval; \
+ }
+
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
+//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------