]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/_evthandler.i
1d3f53ceb980a724bb556d85f57eeef4780c292f
[wxWidgets.git] / wxPython / src / _evthandler.i
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: _evthandler.i
3 // Purpose: SWIG interface for wxEventHandler
4 //
5 // Author: Robin Dunn
6 //
7 // Created: 9-Aug-2003
8 // RCS-ID: $Id$
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
12
13 // Not a %module
14
15
16 //---------------------------------------------------------------------------
17 %newgroup
18
19 // wxEvtHandler: the base class for all objects handling wxWindows events
20 class wxEvtHandler : public wxObject {
21 public:
22 wxEvtHandler();
23
24 wxEvtHandler* GetNextHandler();
25 wxEvtHandler* GetPreviousHandler();
26 void SetNextHandler(wxEvtHandler* handler);
27 void SetPreviousHandler(wxEvtHandler* handler);
28
29 bool GetEvtHandlerEnabled();
30 void SetEvtHandlerEnabled(bool enabled);
31
32
33 // process an event right now
34 bool ProcessEvent(wxEvent& event);
35
36 // add an event to be processed later
37 void AddPendingEvent(wxEvent& event);
38
39 // process all pending events
40 void ProcessPendingEvents();
41
42 %extend {
43 // Dynamic association of a member function handler with the event handler
44 void Connect( int id, int lastId, int eventType, PyObject* func) {
45 if (PyCallable_Check(func)) {
46 self->Connect(id, lastId, eventType,
47 (wxObjectEventFunction) &wxPyCallback::EventThunker,
48 new wxPyCallback(func));
49 }
50 else if (func == Py_None) {
51 self->Disconnect(id, lastId, eventType,
52 (wxObjectEventFunction)
53 &wxPyCallback::EventThunker);
54 }
55 else {
56 PyErr_SetString(PyExc_TypeError, "Expected callable object or None.");
57 }
58 }
59
60 bool Disconnect(int id, int lastId = -1,
61 wxEventType eventType = wxEVT_NULL) {
62 return self->Disconnect(id, lastId, eventType,
63 (wxObjectEventFunction)
64 &wxPyCallback::EventThunker);
65 }
66 }
67
68 %extend {
69 void _setOORInfo(PyObject* _self) {
70 if (_self && _self != Py_None) {
71 self->SetClientObject(new wxPyOORClientData(_self));
72 }
73 else {
74 wxPyOORClientData* data = (wxPyOORClientData*)self->GetClientObject();
75 if (data) {
76 self->SetClientObject(NULL); // This will delete it too
77 }
78 }
79 }
80 }
81
82 %pythoncode {
83 def Bind(self, event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY):
84 """
85 Bind an event to an event handler.
86
87 event One of the EVT_* objects that specifies the
88 type of event to bind,
89
90 handler A callable object to be invoked when the event
91 is delivered to self. Pass None to disconnect an
92 event handler.
93
94 source Sometimes the event originates from a different window
95 than self, but you still want to catch it in self. (For
96 example, a button event delivered to a frame.) By
97 passing the source of the event, the event handling
98 system is able to differentiate between the same event
99 type from different controls.
100
101 id,id2 Used for menu IDs or for event types that require a
102 range of IDs
103 """
104 if source is not None:
105 id = source.GetId()
106 event.Bind(self, id, id2, handler)
107
108 }
109
110
111 };
112
113 //---------------------------------------------------------------------------