1111addpack .addpack ('bgen' )
1212addpack .addpack ('ae' )
1313addpack .addpack ('evt' )
14+ #addpack.addpack('menu')
15+ addpack .addpack ('win' )
1416
1517import sys
1618sys .stdout = sys .stderr
2022from AppleEvents import *
2123import Evt
2224from Events import *
25+ import Menu
26+ import Dlg
27+ import Win
28+ from Windows import *
29+ import Qd
30+
2331import aetools
32+ import EasyDialogs
2433
2534kHighLevelEvent = 23 # Not defined anywhere for Python yet?
2635
2736
2837def main ():
2938 echo = EchoServer ()
30- MacOS .EnableAppswitch (0 ) # Disable Python's own "event handling"
39+ yield = MacOS .EnableAppswitch (- 1 ) # Disable Python's own "event handling"
3140 try :
32- echo .mainloop ()
41+ echo .mainloop (everyEvent , 0 )
3342 finally :
34- MacOS .EnableAppswitch (1 ) # Let Python have a go at events
43+ MacOS .EnableAppswitch (yield ) # Let Python have a go at events
3544 echo .close ()
3645
3746
@@ -44,6 +53,13 @@ def __init__(self):
4453 for suite in self .suites :
4554 AE .AEInstallEventHandler (suite , typeWildCard , self .aehandler )
4655 self .active = 1
56+ self .appleid = 1
57+ Menu .ClearMenuBar ()
58+ self .applemenu = applemenu = Menu .NewMenu (self .appleid , "\024 " )
59+ applemenu .AppendMenu ("All about echo...;(-" )
60+ applemenu .AddResMenu ('DRVR' )
61+ applemenu .InsertMenu (0 )
62+ Menu .DrawMenuBar ()
4763
4864 def __del__ (self ):
4965 self .close ()
@@ -64,22 +80,38 @@ def dooneevent(self, mask = everyEvent, timeout = 60*60):
6480 self .lowlevelhandler (event )
6581
6682 def lowlevelhandler (self , event ):
67- what , message , when , (h , v ), modifiers = event
83+ what , message , when , where , modifiers = event
84+ h , v = where
6885 if what == kHighLevelEvent :
69- print "High Level Event:" , `code(message)` , `code(h | (v<<16))`
86+ msg = "High Level Event: %s %s" % \
87+ (`code(message)` , `code(h | (v<<16))` )
7088 try :
7189 AE .AEProcessAppleEvent (event )
72- except AE .Error , msg :
73- print "AEProcessAppleEvent error:"
90+ except AE .Error , err :
91+ EasyDialogs . Message ( msg + " \015 AEProcessAppleEvent error: %s" % str ( err ))
7492 traceback .print_exc ()
93+ else :
94+ EasyDialogs .Message (msg + "\015 OK!" )
7595 elif what == keyDown :
7696 c = chr (message & charCodeMask )
7797 if c == '.' and modifiers & cmdKey :
7898 raise KeyboardInterrupt , "Command-period"
7999 MacOS .HandleEvent (event )
100+ elif what == mouseDown :
101+ partcode , window = Win .FindWindow (where )
102+ if partcode == inMenuBar :
103+ result = Menu .MenuSelect (where )
104+ id = (result >> 16 ) & 0xffff # Hi word
105+ item = result & 0xffff # Lo word
106+ if id == self .appleid :
107+ if item == 1 :
108+ EasyDialogs .Message ("Echo -- echo AppleEvents" )
109+ elif item > 1 :
110+ name = self .applemenu .GetItem (item )
111+ Qd .OpenDeskAcc (name )
80112 elif what <> autoKey :
81113 print "Event:" , (eventname (what ), message , when , (h , v ), modifiers )
82- MacOS .HandleEvent (event )
114+ ## MacOS.HandleEvent(event)
83115
84116 def aehandler (self , request , reply ):
85117 print "Apple Event" ,
0 commit comments