X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..761e1e0702fb50aca31fb7a38dcb0f00ae4d2ac6:/wxPython/contrib/ogl/oglbasic.i diff --git a/wxPython/contrib/ogl/oglbasic.i b/wxPython/contrib/ogl/oglbasic.i index 1df3cc74ee..c1f6c83014 100644 --- a/wxPython/contrib/ogl/oglbasic.i +++ b/wxPython/contrib/ogl/oglbasic.i @@ -14,7 +14,7 @@ %module oglbasic %{ -#include "helpers.h" +#include "export.h" #include "oglhelpers.h" %} @@ -42,7 +42,7 @@ //--------------------------------------------------------------------------- -class wxShapeRegion { +class wxShapeRegion : public wxObject { public: wxShapeRegion(); //~wxShapeRegion(); @@ -87,18 +87,23 @@ public: %} -class wxPyShapeEvtHandler { +class wxPyShapeEvtHandler : public wxObject { public: wxPyShapeEvtHandler(wxPyShapeEvtHandler *prev = NULL, wxPyShape *shape = NULL); - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyShapeEvtHandler)" + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyShapeEvtHandler)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" + %addmethods { void Destroy() { delete self; } } %addmethods { - void Destroy() { delete self; } + void _setOORInfo(PyObject* _self) { + self->SetClientObject(new wxPyClientData(_self)); + } } + void SetShape(wxPyShape *sh); wxPyShape *GetShape(); void SetPreviousHandler(wxPyShapeEvtHandler* handler); @@ -147,12 +152,9 @@ class wxPyShape : public wxPyShapeEvtHandler { public: // wxPyShape(wxPyShapeCanvas *can = NULL); abstract base class... - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPyShape)" - - %addmethods { - void Destroy() { delete self; } - } + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPyShape)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" void GetBoundingBoxMax(double *OUTPUT, double *OUTPUT); void GetBoundingBoxMin(double *OUTPUT, double *OUTPUT); @@ -231,30 +233,24 @@ public: int GetAttachmentMode(); void SetId(long i); long GetId(); + void SetPen(wxPen *pen); void SetBrush(wxBrush *brush); + // void SetClientData(wxObject *client_data); // wxObject *GetClientData(); - %addmethods { - void SetClientData(PyObject* userData) { - wxPyUserData* data = NULL; - if (userData) - data = new wxPyUserData(userData); - self->SetClientData(data); - } - PyObject* GetClientData() { - wxPyUserData* data = (wxPyUserData*)self->GetClientData(); - if (data) { - Py_INCREF(data->m_obj); - return data->m_obj; - } else { - Py_INCREF(Py_None); - return Py_None; - } - } - } + // The real client data methods are being used for OOR, so just fake it. + %pragma(python) addtoclass = " + def SetClientData(self, data): + self.clientData = data + def GetClientData(self): + if hasattr(self, 'clientData'): + return self.clientData + else: + return None +" void Show(bool show); bool IsShown(); @@ -364,6 +360,8 @@ public: void ClearAttachments(); void Recentre(wxDC& dc); void ClearPointList(wxList& list); + wxPen GetBackgroundPen(); + wxBrush GetBackgroundBrush(); void base_OnDelete(); void base_OnDraw(wxDC& dc);