]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/wx/lib/newevent.py
2 """Easy generation of new events classes and binder functions"""
4 __author__
= "Miki Tebeka <tebeka@cs.bgu.ac.il>"
8 #---------------------------------------------------------------------------
11 """Generate new (Event, Binder) tuple
12 e.g. MooEvent, EVT_MOO = NewEvent()
14 evttype
= wx
.NewEventType()
16 class _Event(wx
.PyEvent
):
17 def __init__(self
, **kw
):
18 wx
.PyEvent
.__init
__(self
)
19 self
.SetEventType(evttype
)
20 self
.__dict
__.update(kw
)
22 def Binder(win
, func
):
23 win
.Connect(-1, -1, evttype
, func
)
29 def NewCommandEvent():
30 """Generate new (CmdEvent, Binder) tuple
31 e.g. MooCmdEvent, EVT_MOO = NewCommandEvent()
33 evttype
= wx
.NewEventType()
35 class _Event(wx
.PyCommandEvent
):
36 def __init__(self
, id, **kw
):
37 wx
.PyCommandEvent
.__init
__(self
, evttype
, id)
38 self
.__dict
__.update(kw
)
40 def Binder(win
, id, func
):
41 win
.Connect(id, -1, evttype
, func
)
46 #---------------------------------------------------------------------------
49 """A little smoke test"""
50 from threading
import Thread
51 from time
import sleep
53 MooEvent
, EVT_MOO
= NewEvent()
54 GooEvent
, EVT_GOO
= NewCommandEvent()
60 wx
.PostEvent(win
, MooEvent(moo
=1))
64 wx
.PostEvent(win
, GooEvent(id, goo
=id))
69 class Frame(wx
.Frame
):
71 wx
.Frame
.__init
__(self
, None, -1, "MOO")
72 sizer
= wx
.BoxSizer(wx
.VERTICAL
)
73 EVT_MOO(self
, self
.on_moo
)
74 b
= wx
.Button(self
, -1, "Generate MOO")
75 sizer
.Add(b
, 1, wx
.EXPAND
)
76 wx
.EVT_BUTTON(self
, b
.GetId(), self
.on_evt_click
)
77 b
= wx
.Button(self
, ID_CMD1
, "Generate GOO with %d" % ID_CMD1
)
78 sizer
.Add(b
, 1, wx
.EXPAND
)
79 wx
.EVT_BUTTON(self
, ID_CMD1
, self
.on_cmd_click
)
80 b
= wx
.Button(self
, ID_CMD2
, "Generate GOO with %d" % ID_CMD2
)
81 sizer
.Add(b
, 1, wx
.EXPAND
)
82 wx
.EVT_BUTTON(self
, ID_CMD2
, self
.on_cmd_click
)
84 EVT_GOO(self
, ID_CMD1
, self
.on_cmd1
)
85 EVT_GOO(self
, ID_CMD2
, self
.on_cmd2
)
88 self
.SetAutoLayout(True)
91 def on_evt_click(self
, e
):
92 t
= Thread(target
=evt_thr
, args
=(self
, ))
96 def on_cmd_click(self
, e
):
97 t
= Thread(target
=cmd_thr
, args
=(self
, e
.GetId()))
101 def show(self
, msg
, title
):
102 dlg
= wx
.MessageDialog(self
, msg
, title
, wx
.OK
)
107 self
.show("MOO = %s" % e
.moo
, "Got Moo")
109 def on_cmd1(self
, e
):
110 self
.show("goo = %s" % e
.goo
, "Got Goo (cmd1)")
112 def on_cmd2(self
, e
):
113 self
.show("goo = %s" % e
.goo
, "Got Goo (cmd2)")
116 app
= wx
.PySimpleApp()
121 if __name__
== "__main__":