wxPython stuff:

1. Added test for HTML printing
  2. Update wxFontEnumerator
  3. wxPyEvent and wxPyCommandEvent derived classes now return the
     actual Python object in the event handler.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
1999-11-07 07:49:09 +00:00
parent e4a330f1e5
commit 65dd82cbce
33 changed files with 611 additions and 321 deletions

View File

@@ -401,122 +401,36 @@ 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;
}
// This one is so the event object can be Cloned...
void CopyObject(wxObject& dest) const {
wxCommandEvent::CopyObject(dest);
((wxPyCommandEvent*)&dest)->SetPyData(m_userData);
}
private:
PyObject* m_userData;
};
IMPLEMENT_DYNAMIC_CLASS(wxPyCommandEvent, wxCommandEvent)
%}
class wxPyCommandEvent : public wxCommandEvent {
public:
wxPyCommandEvent(wxEventType commandType = wxEVT_NULL, int id=0, PyObject* userData = Py_None);
wxPyCommandEvent(wxEventType commandType = wxEVT_NULL, int id=0);
~wxPyCommandEvent();
void SetPyData(PyObject* userData);
PyObject* GetPyData();
%pragma(python) addtomethod = "__init__:self.SetSelf(self)"
void SetSelf(PyObject* self);
PyObject* GetSelf();
};
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------