git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // 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 <Python.h>
 | |
| #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; x<count; x++) {
 | |
|         PyObject* pyo = PyList_GetItem(pyList, x);
 | |
|         wxObject* wxo = NULL;
 | |
| 
 | |
|         if (SWIG_GetPtrObj(pyo, (void **)&wxo, className)) {
 | |
|             char errmsg[1024];
 | |
|             sprintf(errmsg, "Type error, expected list of %s objects", className);
 | |
|             PyErr_SetString(PyExc_TypeError, errmsg);
 | |
|             wxPySaveThread(doSave);
 | |
|             return NULL;
 | |
|         }
 | |
|         list->Append(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; x<count; x++) {
 | |
|         PyObject* pyo = PyList_GetItem(pyList, x);
 | |
| 
 | |
|         if (PyTuple_Check(pyo)) {
 | |
|             PyObject* o1 = PyNumber_Float(PyTuple_GetItem(pyo, 0));
 | |
|             PyObject* o2 = PyNumber_Float(PyTuple_GetItem(pyo, 1));
 | |
| 
 | |
|             double val1 = (o1 ? PyFloat_AsDouble(o1) : 0.0);
 | |
|             double val2 = (o2 ? PyFloat_AsDouble(o2) : 0.0);
 | |
| 
 | |
|             list->Append((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;
 | |
| }
 | |
| 
 | |
| 
 | |
| //---------------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |