| # 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 ..." |