mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# 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.EnableAppswitch(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 ..."
 |