# The oldest AppleEvent test program. # Its function has been overtaken by echo.py and tell.py. import AE from AppleEvents import * import Evt from Events import * import struct import aetools import macfs import sys import MacOS MacOS.SchedParams(1, 0) def aehandler(request, reply): tosend = [] print 'request:', aetools.unpackevent(request) param = request.AEGetParamDesc(keyDirectObject, typeWildCard) if param.type == typeAEList: n = param.AECountItems() print 'List has', n, 'items' for i in range(1, 1+n): type, item = param.AEGetNthDesc(i, typeFSS) data = item.data print 'item', i, ':', type, item.type, len(data), 'bytes' vol, dir, fnlen = struct.unpack('hlb', data[:7]) filename = data[7:7+fnlen] print 'vol:', vol, '; dir:', dir, '; filename:', `filename` print 'full path:', macfs.FSSpec((vol,dir,filename)).as_pathname() tosend.append(item) else: pass print 'param:', (param.type, param.data[:20]), param.data[20:] and '...' if tosend: passtothink(tosend) def passtothink(list): target = AE.AECreateDesc(typeApplSignature, 'KAHL') event = AE.AECreateAppleEvent(kCoreEventClass, kAEOpenDocuments, target, kAutoGenerateReturnID, kAnyTransactionID) aetools.packevent(event, {keyDirectObject: list}) reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer, kAENormalPriority, kAEDefaultTimeout) #print "Reply:", aetools.unpackevent(reply) return event = AE.AECreateAppleEvent(kCoreEventClass, kAEOpenApplication, target, kAutoGenerateReturnID, kAnyTransactionID) reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer, kAENormalPriority, kAEDefaultTimeout) def unihandler(req, rep): print 'unihandler' aehandler(req, rep) quit = 0 def quithandler(req, rep): global quit quit = 1 def corehandler(req, rep): print 'core event!' parameters, attributes = aetools.unpackevent(req) print "event class =", attributes['evcl'] print "event id =", attributes['evid'] print 'parameters:', parameters # echo the arguments, to see how Script Editor formats them aetools.packevent(rep, parameters) def wildhandler(req, rep): print 'wildcard event!' parameters, attributes = aetools.unpackevent(req) print "event class =", attributes['evcl'] print "event id =", attributes['evid'] print 'parameters:', parameters AE.AEInstallEventHandler(typeAppleEvent, kAEOpenApplication, aehandler) AE.AEInstallEventHandler(typeAppleEvent, kAEOpenDocuments, aehandler) AE.AEInstallEventHandler(typeAppleEvent, kAEPrintDocuments, aehandler) AE.AEInstallEventHandler(typeAppleEvent, kAEQuitApplication, quithandler) AE.AEInstallEventHandler(typeAppleEvent, typeWildCard, unihandler) AE.AEInstallEventHandler('core', typeWildCard, corehandler) #AE.AEInstallEventHandler(typeWildCard, typeWildCard, wildhandler) def main(): global quit quit = 0 while not quit: ok, e = Evt.WaitNextEvent(-1, 60) if ok: print 'Event:', e if e[0] == 23: # kHighLevelEvent AE.AEProcessAppleEvent(e) elif e[0] == keyDown and chr(e[1]&0xff) == '.' and e[4]&cmdKey: raise KeyboardInterrupt, "Command-Period" else: MacOS.HandleEvent(e) if __name__ == '__main__': main() print "This module is obsolete -- use echo.py or tell.py ..."