mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Create an applet from a Python script.
 | 
						|
 | 
						|
This puts up a dialog asking for a Python source file ('TEXT').
 | 
						|
The output is a file with the same name but its ".py" suffix dropped.
 | 
						|
It is created by copying an applet template and then adding a 'PYC '
 | 
						|
resource named __main__ containing the compiled, marshalled script.
 | 
						|
"""
 | 
						|
 | 
						|
 | 
						|
import sys
 | 
						|
sys.stdout = sys.stderr
 | 
						|
 | 
						|
import os
 | 
						|
import macfs
 | 
						|
import MacOS
 | 
						|
import EasyDialogs
 | 
						|
import buildtools
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
	try:
 | 
						|
		buildapplet()
 | 
						|
	except buildtools.BuildError, detail:
 | 
						|
		EasyDialogs.Message(detail)
 | 
						|
 | 
						|
 | 
						|
def buildapplet():
 | 
						|
	buildtools.DEBUG=1
 | 
						|
	
 | 
						|
	# Find the template
 | 
						|
	# (there's no point in proceeding if we can't find it)
 | 
						|
	
 | 
						|
	template = buildtools.findtemplate()
 | 
						|
	
 | 
						|
	# Ask for source text if not specified in sys.argv[1:]
 | 
						|
	
 | 
						|
	if not sys.argv[1:]:
 | 
						|
		srcfss, ok = macfs.PromptGetFile('Select Python source or applet:', 'TEXT', 'APPL')
 | 
						|
		if not ok:
 | 
						|
			return
 | 
						|
		filename = srcfss.as_pathname()
 | 
						|
		tp, tf = os.path.split(filename)
 | 
						|
		if tf[-3:] == '.py':
 | 
						|
			tf = tf[:-3]
 | 
						|
		else:
 | 
						|
			tf = tf + '.applet'
 | 
						|
		dstfss, ok = macfs.StandardPutFile('Save application as:', tf)
 | 
						|
		if not ok: return
 | 
						|
		dstfilename = dstfss.as_pathname()
 | 
						|
		cr, tp = MacOS.GetCreatorAndType(filename)
 | 
						|
		if tp == 'APPL':
 | 
						|
			buildtools.update(template, filename, dstfilename)
 | 
						|
		else:
 | 
						|
			buildtools.process(template, filename, dstfilename, 1)
 | 
						|
	else:
 | 
						|
		
 | 
						|
		# Loop over all files to be processed
 | 
						|
		for filename in sys.argv[1:]:
 | 
						|
			cr, tp = MacOS.GetCreatorAndType(filename)
 | 
						|
			if tp == 'APPL':
 | 
						|
				buildtools.update(template, filename, '')
 | 
						|
			else:
 | 
						|
				buildtools.process(template, filename, '', 1)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
	main()
 |