]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/wx/lib/newevent.py
1 """Easy generation of new events classes and binder objects"""
3 __author__
= "Miki Tebeka <miki.tebeka@gmail.com>"
7 #---------------------------------------------------------------------------
10 """Generate new (Event, Binder) tuple
11 e.g. MooEvent, EVT_MOO = NewEvent()
13 evttype
= wx
.NewEventType()
15 class _Event(wx
.PyEvent
):
16 def __init__(self
, **kw
):
17 wx
.PyEvent
.__init
__(self
)
18 self
.SetEventType(evttype
)
19 self
.__dict
__.update(kw
)
21 return _Event
, wx
.PyEventBinder(evttype
)
25 def NewCommandEvent():
26 """Generate new (CmdEvent, Binder) tuple
27 e.g. MooCmdEvent, EVT_MOO = NewCommandEvent()
29 evttype
= wx
.NewEventType()
31 class _Event(wx
.PyCommandEvent
):
32 def __init__(self
, id, **kw
):
33 wx
.PyCommandEvent
.__init
__(self
, evttype
, id)
34 self
.__dict
__.update(kw
)
36 return _Event
, wx
.PyEventBinder(evttype
, 1)
39 #---------------------------------------------------------------------------
42 """A little smoke test"""
43 from threading
import Thread
44 from time
import sleep
46 MooEvent
, EVT_MOO
= NewEvent()
47 GooEvent
, EVT_GOO
= NewCommandEvent()
53 wx
.PostEvent(win
, MooEvent(moo
=1))
57 wx
.PostEvent(win
, GooEvent(id, goo
=id))
62 class Frame(wx
.Frame
):
64 wx
.Frame
.__init
__(self
, None, -1, "MOO")
65 sizer
= wx
.BoxSizer(wx
.VERTICAL
)
66 EVT_MOO(self
, self
.on_moo
)
67 b
= wx
.Button(self
, -1, "Generate MOO")
68 sizer
.Add(b
, 1, wx
.EXPAND
)
69 wx
.EVT_BUTTON(self
, b
.GetId(), self
.on_evt_click
)
70 b
= wx
.Button(self
, ID_CMD1
, "Generate GOO with %d" % ID_CMD1
)
71 sizer
.Add(b
, 1, wx
.EXPAND
)
72 wx
.EVT_BUTTON(self
, ID_CMD1
, self
.on_cmd_click
)
73 b
= wx
.Button(self
, ID_CMD2
, "Generate GOO with %d" % ID_CMD2
)
74 sizer
.Add(b
, 1, wx
.EXPAND
)
75 wx
.EVT_BUTTON(self
, ID_CMD2
, self
.on_cmd_click
)
77 EVT_GOO(self
, ID_CMD1
, self
.on_cmd1
)
78 EVT_GOO(self
, ID_CMD2
, self
.on_cmd2
)
81 self
.SetAutoLayout(True)
84 def on_evt_click(self
, e
):
85 t
= Thread(target
=evt_thr
, args
=(self
, ))
89 def on_cmd_click(self
, e
):
90 t
= Thread(target
=cmd_thr
, args
=(self
, e
.GetId()))
94 def show(self
, msg
, title
):
95 dlg
= wx
.MessageDialog(self
, msg
, title
, wx
.OK
)
100 self
.show("MOO = %s" % e
.moo
, "Got Moo")
102 def on_cmd1(self
, e
):
103 self
.show("goo = %s" % e
.goo
, "Got Goo (cmd1)")
105 def on_cmd2(self
, e
):
106 self
.show("goo = %s" % e
.goo
, "Got Goo (cmd2)")
109 app
= wx
.PySimpleApp()
114 if __name__
== "__main__":