X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d74525f7640db2ac3c2229a869806904951aec55..4e1c35f810f574af79e649fa37171dfa7fc775ee:/wxPython/contrib/ogl/oglbasic.i diff --git a/wxPython/contrib/ogl/oglbasic.i b/wxPython/contrib/ogl/oglbasic.i index d93ef67c75..8fd19b783b 100644 --- a/wxPython/contrib/ogl/oglbasic.i +++ b/wxPython/contrib/ogl/oglbasic.i @@ -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 wxPyOORClientData(_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); @@ -177,7 +179,7 @@ public: %addmethods { PyObject* GetChildren() { wxList& list = self->GetChildren(); - return wxPy_ConvertList(&list, "wxPyShape"); + return wxPy_ConvertShapeList(&list, "wxPyShape"); } } @@ -221,7 +223,7 @@ public: %addmethods { PyObject* GetLines() { wxList& list = self->GetLines(); - return wxPy_ConvertList(&list, "wxPyLineShape"); + return wxPy_ConvertShapeList(&list, "wxPyLineShape"); } } @@ -238,25 +240,17 @@ public: // 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(); @@ -366,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);