+//---------------------------------------------------------------------------
+
+PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source, bool setThisOwn) {
+ PyObject* target = NULL;
+
+ if (source && wxIsKindOf(source, wxShapeEvtHandler)) {
+ // If it's derived from wxShapeEvtHandler then there may
+ // already be a pointer to a Python object that we can use
+ // in the OOR data.
+ wxShapeEvtHandler* seh = (wxShapeEvtHandler*)source;
+ wxPyOORClientData* data = (wxPyOORClientData*)seh->GetClientObject();
+ if (data) {
+ target = data->m_obj;
+ Py_INCREF(target);
+ }
+ }
+ if (! target) {
+ target = wxPyMake_wxObject2(source, setThisOwn, false);
+ if (target != Py_None)
+ ((wxShapeEvtHandler*)source)->SetClientObject(new wxPyOORClientData(target));
+ }
+ return target;
+}
+
+//---------------------------------------------------------------------------
+
+PyObject* wxPy_ConvertRealPointList(wxListBase* listbase) {
+ wxList* list = (wxList*)listbase;
+ PyObject* pyList;
+ PyObject* pyObj;
+ wxObject* wxObj;
+ wxNode* node = list->GetFirst();
+
+ bool blocked = wxPyBeginBlockThreads();
+ pyList = PyList_New(0);
+ while (node) {
+ wxObj = node->GetData();
+ pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0);
+ PyList_Append(pyList, pyObj);
+ node = node->GetNext();
+ }
+ wxPyEndBlockThreads(blocked);
+ return pyList;
+}
+
+//---------------------------------------------------------------------------
+
+PyObject* wxPy_ConvertShapeList(wxListBase* listbase) {
+ wxList* list = (wxList*)listbase;
+ PyObject* pyList;
+ PyObject* pyObj;
+ wxObject* wxObj;
+ wxNode* node = list->GetFirst();
+
+ bool blocked = wxPyBeginBlockThreads();
+ pyList = PyList_New(0);
+ while (node) {
+ wxObj = node->GetData();
+ pyObj = wxPyMake_wxShapeEvtHandler((wxShapeEvtHandler*)wxObj, false);
+ PyList_Append(pyList, pyObj);
+ node = node->GetNext();
+ }
+ wxPyEndBlockThreads(blocked);
+ return pyList;
+}
+