X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b1462dfa3496ba7288691376c1de4c890d90787c..abdd4565f1461dc027542880ccf948830b03e937:/utils/wxPython/src/events.i diff --git a/utils/wxPython/src/events.i b/utils/wxPython/src/events.i index 90aaa54017..a5f08b2eec 100644 --- a/utils/wxPython/src/events.i +++ b/utils/wxPython/src/events.i @@ -401,120 +401,34 @@ public: //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- -//--------------------------------------------------------------------------- -// This one can be derived from in Python and passed through the event -// system without loosing anything so long as the Python data is saved with -// SetPyData... - -%{ -class wxPyEvent : public wxEvent { - DECLARE_DYNAMIC_CLASS(wxPyEvent) -public: - wxPyEvent(int id=0, PyObject* userData = Py_None) - : wxEvent(id) { - m_userData = userData; - Py_INCREF(m_userData); - } - - ~wxPyEvent() { - bool doSave = wxPyRestoreThread(); - Py_DECREF(m_userData); - wxPySaveThread(doSave); - } - - void SetPyData(PyObject* userData) { - bool doSave = wxPyRestoreThread(); - Py_DECREF(m_userData); - m_userData = userData; - Py_INCREF(m_userData); - wxPySaveThread(doSave); - } - - PyObject* GetPyData() const { - Py_INCREF(m_userData); - return m_userData; - } - - // This one is so the event object can be Cloned... - void CopyObject(wxObject& dest) const { - wxEvent::CopyObject(dest); - ((wxPyEvent*)&dest)->SetPyData(m_userData); - } - -private: - PyObject* m_userData; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxPyEvent, wxEvent) - -%} - +// These classes can be derived from in Python and passed through the event +// system without loosing anything. They do this by keeping a reference to +// themselves and some special case handling in wxPyCallback::EventThunker. class wxPyEvent : public wxEvent { public: - wxPyEvent(int id=0, PyObject* userData = Py_None); + wxPyEvent(int id=0); ~wxPyEvent(); - void SetPyData(PyObject* userData); - PyObject* GetPyData(); + %pragma(python) addtomethod = "__init__:self.SetSelf(self)" + + void SetSelf(PyObject* self); + PyObject* GetSelf(); }; -//--------------------------------------------------------------------------- -// Same for this one except it is a wxCommandEvent and so will get passed up the -// containment heirarchy. -%{ class wxPyCommandEvent : public wxCommandEvent { - DECLARE_DYNAMIC_CLASS(wxPyCommandEvent) public: - wxPyCommandEvent(wxEventType commandType = wxEVT_NULL, int id=0, PyObject* userData = Py_None) - : wxCommandEvent(commandType, id) { - m_userData = userData; - Py_INCREF(m_userData); - } - - ~wxPyCommandEvent() { - bool doSave = wxPyRestoreThread(); - Py_DECREF(m_userData); - wxPySaveThread(doSave); - } - - void SetPyData(PyObject* userData) { - bool doSave = wxPyRestoreThread(); - Py_DECREF(m_userData); - m_userData = userData; - Py_INCREF(m_userData); - wxPySaveThread(doSave); - } - - PyObject* GetPyData() const { - Py_INCREF(m_userData); - return m_userData; - } + wxPyCommandEvent(wxEventType commandType = wxEVT_NULL, int id=0); + ~wxPyCommandEvent(); - // This one is so the event object can be Cloned... - void CopyObject(wxObject& dest) const { - wxCommandEvent::CopyObject(dest); - ((wxPyCommandEvent*)&dest)->SetPyData(m_userData); - } + %pragma(python) addtomethod = "__init__:self.SetSelf(self)" -private: - PyObject* m_userData; + void SetSelf(PyObject* self); + PyObject* GetSelf(); }; -IMPLEMENT_DYNAMIC_CLASS(wxPyCommandEvent, wxCommandEvent) - -%} - -class wxPyCommandEvent : public wxCommandEvent { -public: - wxPyCommandEvent(wxEventType commandType = wxEVT_NULL, int id=0, PyObject* userData = Py_None); - ~wxPyCommandEvent(); - - void SetPyData(PyObject* userData); - PyObject* GetPyData(); -}; //---------------------------------------------------------------------------