git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3652 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;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
//---------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |