mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """Utility routines depending on the finder."""
 | |
| 
 | |
| import Finder_7_0_Suite
 | |
| import AppleEvents
 | |
| import aetools
 | |
| import MacOS
 | |
| import sys
 | |
| import macfs
 | |
| 
 | |
| SIGNATURE='MACS'
 | |
| 
 | |
| class Finder(aetools.TalkTo, Finder_7_0_Suite.Finder_7_0_Suite):
 | |
| 	pass
 | |
| 	
 | |
| _finder_talker = None
 | |
| 
 | |
| def _getfinder():
 | |
| 	global _finder_talker
 | |
| 	if not _finder_talker:
 | |
| 		_finder_talker = Finder(SIGNATURE)
 | |
| 	_finder_talker.send_flags = ( _finder_talker.send_flags | 
 | |
| 		AppleEvents.kAECanInteract | AppleEvents.kAECanSwitchLayer)
 | |
| 	return _finder_talker
 | |
| 	
 | |
| def launch(file):
 | |
| 	"""Open a file thru the finder. Specify file by name or fsspec"""
 | |
| 	finder = _getfinder()
 | |
| 	fss = macfs.FSSpec(file)
 | |
| 	vRefNum, parID, name = fss.as_tuple()
 | |
| 	dir_fss = macfs.FSSpec((vRefNum, parID, ''))
 | |
| 	file_alias = fss.NewAlias()
 | |
| 	dir_alias = dir_fss.NewAlias()
 | |
| 	return finder.open(dir_alias, items=[file_alias])
 | |
| 	
 | |
| def Print(file):
 | |
| 	"""Print a file thru the finder. Specify file by name or fsspec"""
 | |
| 	finder = _getfinder()
 | |
| 	fss = macfs.FSSpec(file)
 | |
| 	vRefNum, parID, name = fss.as_tuple()
 | |
| 	dir_fss = macfs.FSSpec((vRefNum, parID, ''))
 | |
| 	file_alias = fss.NewAlias()
 | |
| 	dir_alias = dir_fss.NewAlias()
 | |
| 	return finder._print(dir_alias, items=[file_alias])
 | |
| 	
 | |
| def copy(src, dstdir):
 | |
| 	"""Copy a file to a folder"""
 | |
| 	finder = _getfinder()
 | |
| 	src_fss = macfs.FSSpec(src)
 | |
| 	dst_fss = macfs.FSSpec(dstdir)
 | |
| 	src_alias = src_fss.NewAlias()
 | |
| 	dst_alias = dst_fss.NewAlias()
 | |
| 	return finder.copy_to(dst_alias, _from=[src_alias])
 | |
| 
 | |
| def move(src, dstdir):
 | |
| 	"""Move a file to a folder"""
 | |
| 	finder = _getfinder()
 | |
| 	src_fss = macfs.FSSpec(src)
 | |
| 	dst_fss = macfs.FSSpec(dstdir)
 | |
| 	src_alias = src_fss.NewAlias()
 | |
| 	dst_alias = dst_fss.NewAlias()
 | |
| 	return finder.move_to(dst_alias, _from=[src_alias])
 | |
| 	
 | |
| def sleep():
 | |
| 	"""Put the mac to sleep"""
 | |
| 	finder = _getfinder()
 | |
| 	finder.sleep()
 | |
| 	
 | |
| def shutdown():
 | |
| 	"""Shut the mac down"""
 | |
| 	finder = _getfinder()
 | |
| 	finder.shut_down()
 | |
| 	
 | |
| def restart():
 | |
| 	"""Restart the mac"""
 | |
| 	finder = _getfinder()
 | |
| 	finder.restart()
 | |
| 	
 | |
| 
 | |
| def main():
 | |
| 	print 'Testing launch...'
 | |
| 	fss, ok = macfs.PromptGetFile('File to launch:')
 | |
| 	if ok:
 | |
| 		result = launch(fss)
 | |
| 		if result:
 | |
| 			print 'Result: ', result
 | |
| 		print 'Press return-',
 | |
| 		sys.stdin.readline()
 | |
| 	print 'Testing print...'
 | |
| 	fss, ok = macfs.PromptGetFile('File to print:')
 | |
| 	if ok:
 | |
| 		result = Print(fss)
 | |
| 		if result:
 | |
| 			print 'Result: ', result
 | |
| 		print 'Press return-',
 | |
| 		sys.stdin.readline()
 | |
| 	print 'Testing copy...'
 | |
| 	fss, ok = macfs.PromptGetFile('File to copy:')
 | |
| 	if ok:
 | |
| 		dfss, ok = macfs.GetDirectory()
 | |
| 		if ok:
 | |
| 			result = copy(fss, dfss)
 | |
| 			if result:
 | |
| 				print 'Result:', result
 | |
| 			print 'Press return-',
 | |
| 			sys.stdin.readline()
 | |
| 	print 'Testing move...'
 | |
| 	fss, ok = macfs.PromptGetFile('File to move:')
 | |
| 	if ok:
 | |
| 		dfss, ok = macfs.GetDirectory()
 | |
| 		if ok:
 | |
| 			result = move(fss, dfss)
 | |
| 			if result:
 | |
| 				print 'Result:', result
 | |
| 			print 'Press return-',
 | |
| 			sys.stdin.readline()
 | |
| 	import EasyDialogs
 | |
| 	print 'Testing sleep...'
 | |
| 	if EasyDialogs.AskYesNoCancel('Sleep?') > 0:
 | |
| 		result = sleep()
 | |
| 		if result:
 | |
| 			print 'Result:', result
 | |
| 		print 'Press return-',
 | |
| 		sys.stdin.readline()
 | |
| 	print 'Testing shutdown...'
 | |
| 	if EasyDialogs.AskYesNoCancel('Shut down?') > 0:
 | |
| 		result = shutdown()
 | |
| 		if result:
 | |
| 			print 'Result:', result
 | |
| 		print 'Press return-',
 | |
| 		sys.stdin.readline()
 | |
| 	print 'Testing restart...'
 | |
| 	if EasyDialogs.AskYesNoCancel('Restart?') > 0:
 | |
| 		result = restart()
 | |
| 		if result:
 | |
| 			print 'Result:', result
 | |
| 		print 'Press return-',
 | |
| 		sys.stdin.readline()
 | |
| 		
 | |
| if __name__ == '__main__':
 | |
| 	main()
 | |
| 	
 | 
