Merged the wxPy_newswig branch into the HEAD branch (main trunk)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2003-11-12 21:34:20 +00:00
parent eb6a4098a0
commit d14a1e2856
987 changed files with 671143 additions and 783083 deletions

113
wxPython/src/_evthandler.i Normal file
View File

@@ -0,0 +1,113 @@
/////////////////////////////////////////////////////////////////////////////
// Name: _evthandler.i
// Purpose: SWIG interface for wxEventHandler
//
// Author: Robin Dunn
//
// Created: 9-Aug-2003
// RCS-ID: $Id$
// Copyright: (c) 2003 by Total Control Software
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
// Not a %module
//---------------------------------------------------------------------------
%newgroup
// wxEvtHandler: the base class for all objects handling wxWindows events
class wxEvtHandler : public wxObject {
public:
wxEvtHandler();
wxEvtHandler* GetNextHandler();
wxEvtHandler* GetPreviousHandler();
void SetNextHandler(wxEvtHandler* handler);
void SetPreviousHandler(wxEvtHandler* handler);
bool GetEvtHandlerEnabled();
void SetEvtHandlerEnabled(bool enabled);
// process an event right now
bool ProcessEvent(wxEvent& event);
// add an event to be processed later
void AddPendingEvent(wxEvent& event);
// process all pending events
void ProcessPendingEvents();
%extend {
// Dynamic association of a member function handler with the event handler
void Connect( int id, int lastId, int eventType, PyObject* func) {
if (PyCallable_Check(func)) {
self->Connect(id, lastId, eventType,
(wxObjectEventFunction) &wxPyCallback::EventThunker,
new wxPyCallback(func));
}
else if (func == Py_None) {
self->Disconnect(id, lastId, eventType,
(wxObjectEventFunction)
&wxPyCallback::EventThunker);
}
else {
PyErr_SetString(PyExc_TypeError, "Expected callable object or None.");
}
}
bool Disconnect(int id, int lastId = -1,
wxEventType eventType = wxEVT_NULL) {
return self->Disconnect(id, lastId, eventType,
(wxObjectEventFunction)
&wxPyCallback::EventThunker);
}
}
%extend {
void _setOORInfo(PyObject* _self) {
if (_self && _self != Py_None) {
self->SetClientObject(new wxPyOORClientData(_self));
}
else {
wxPyOORClientData* data = (wxPyOORClientData*)self->GetClientObject();
if (data) {
self->SetClientObject(NULL); // This will delete it too
}
}
}
}
%pythoncode {
def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
"""
Bind an event to an event handler.
event One of the EVT_* objects that specifies the
type of event to bind,
handler A callable object to be invoked when the event
is delivered to self. Pass None to disconnect an
event handler.
source Sometimes the event originates from a different window
than self, but you still want to catch it in self. (For
example, a button event delivered to a frame.) By
passing the source of the event, the event handling
system is able to differentiate between the same event
type from different controls.
id,id2 Used for menu IDs or for event types that require a
range of IDs
"""
if source is not None:
id = source.GetId()
event.Bind(self, id, id2, handler)
}
};
//---------------------------------------------------------------------------