]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_event_ex.py
Added wrappers for the missing wxSpinEvent, which fixes the deadlock
[wxWidgets.git] / wxPython / src / _event_ex.py
CommitLineData
d14a1e28
RD
1
2
3#---------------------------------------------------------------------------
4
5class PyEventBinder(object):
6 """
7 Instances of this class are used to bind specific events to event
8 handlers.
9 """
10 def __init__(self, evtType, expectedIDs=0):
11 if expectedIDs not in [0, 1, 2]:
12 raise ValueError, "Invalid number of expectedIDs"
13 self.expectedIDs = expectedIDs
14
15 if type(evtType) == list or type(evtType) == tuple:
16 self.evtType = evtType
17 else:
18 self.evtType = [evtType]
19
20
21 def Bind(self, target, id1, id2, function):
22 """Bind this set of event types to target."""
23 for et in self.evtType:
24 target.Connect(id1, id2, et, function)
25
26
27 def __call__(self, *args):
28 """
29 For backwards compatibility with the old EVT_* functions.
30 Should be called with either (window, func), (window, ID,
31 func) or (window, ID1, ID2, func) parameters depending on the
32 type of the event.
33 """
34 assert len(args) == 2 + self.expectedIDs
35 id1 = wx.ID_ANY
36 id2 = wx.ID_ANY
37 target = args[0]
38 if self.expectedIDs == 0:
39 func = args[1]
40 elif self.expectedIDs == 1:
41 id1 = args[1]
42 func = args[2]
43 elif self.expectedIDs == 2:
44 id1 = args[1]
45 id2 = args[2]
46 func = args[3]
47 else:
48 raise ValueError, "Unexpected number of IDs"
49
50 self.Bind(target, id1, id2, func)
51
52
53# These two are square pegs that don't fit the PyEventBinder hole...
54def EVT_COMMAND(win, id, cmd, func):
55 win.Connect(id, -1, cmd, func)
56def EVT_COMMAND_RANGE(win, id1, id2, cmd, func):
57 win.Connect(id1, id2, cmd, func)
58
59
60#---------------------------------------------------------------------------