///////////////////////////////////////////////////////////////////////////// // Name: oglhelpers.cpp // Purpose: Some Helper functions to help in data conversions in OGL // // Author: Robin Dunn // // Created: 3-Sept-1999 // RCS-ID: $Id$ // Copyright: (c) 1998 by Total Control Software // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #include #include "helpers.h" //--------------------------------------------------------------------------- // This one will work for any class for the VERY generic cases, but beyond that // the helper needs to know more about the type. wxList* wxPy_wxListHelper(PyObject* pyList, char* className) { bool doSave = wxPyRestoreThread(); if (!PyList_Check(pyList)) { PyErr_SetString(PyExc_TypeError, "Expected a list object."); wxPySaveThread(doSave); return NULL; } int count = PyList_Size(pyList); wxList* list = new wxList; if (! list) { PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object"); wxPySaveThread(doSave); return NULL; } for (int x=0; xAppend(wxo); } wxPySaveThread(doSave); return list; } //--------------------------------------------------------------------------- wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList) { bool doSave = wxPyRestoreThread(); if (!PyList_Check(pyList)) { PyErr_SetString(PyExc_TypeError, "Expected a list object."); wxPySaveThread(doSave); return NULL; } int count = PyList_Size(pyList); wxList* list = new wxList; if (! list) { PyErr_SetString(PyExc_MemoryError, "Unable to allocate wxList object"); wxPySaveThread(doSave); return NULL; } for (int x=0; xAppend((wxObject*) new wxRealPoint(val1, val2)); } else { wxRealPoint* wxo = NULL; if (SWIG_GetPtrObj(pyo, (void **)&wxo, "_wxRealPoint_p")) { PyErr_SetString(PyExc_TypeError, "Type error, expected list of wxRealPoint objects or 2-tuples"); wxPySaveThread(doSave); return NULL; } list->Append((wxObject*) new wxRealPoint(*wxo)); } } wxPySaveThread(doSave); return list; } //--------------------------------------------------------------------------- // Convert a wxList to a Python List #include 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