diff options
| author | Jack Jansen <jack.jansen@cwi.nl> | 1998-02-20 16:06:56 (GMT) | 
|---|---|---|
| committer | Jack Jansen <jack.jansen@cwi.nl> | 1998-02-20 16:06:56 (GMT) | 
| commit | 8554e302a5bf1732d99796ce0b58db2fd36a06a0 (patch) | |
| tree | a125743f52a36f2eb03fefd0498c83880d159366 /Mac/scripts/BuildApplet.py | |
| parent | ebe914af7ab4886bf918245c47407e2397a0c658 (diff) | |
| download | cpython-8554e302a5bf1732d99796ce0b58db2fd36a06a0.zip cpython-8554e302a5bf1732d99796ce0b58db2fd36a06a0.tar.gz cpython-8554e302a5bf1732d99796ce0b58db2fd36a06a0.tar.bz2  | |
BuildApplet will now also update old applets
Diffstat (limited to 'Mac/scripts/BuildApplet.py')
| -rw-r--r-- | Mac/scripts/BuildApplet.py | 93 | 
1 files changed, 60 insertions, 33 deletions
diff --git a/Mac/scripts/BuildApplet.py b/Mac/scripts/BuildApplet.py index b51eef1..77a5eda 100644 --- a/Mac/scripts/BuildApplet.py +++ b/Mac/scripts/BuildApplet.py @@ -67,7 +67,7 @@ def main():  	# Ask for source text if not specified in sys.argv[1:]  	if not sys.argv[1:]: -		srcfss, ok = macfs.PromptGetFile('Select Python source file:', 'TEXT') +		srcfss, ok = macfs.PromptGetFile('Select Python source or applet:', 'TEXT', 'APPL')  		if not ok:  			return  		filename = srcfss.as_pathname() @@ -75,15 +75,24 @@ def main():  		if tf[-3:] == '.py':  			tf = tf[:-3]  		else: -			tf = tf + '.applet' +			tf = tf + '.out'  		dstfss, ok = macfs.StandardPutFile('Save application as:', tf)  		if not ok: return -		process(template, filename, dstfss.as_pathname()) +		dstfilename = dstfss.as_pathname() +		cr, tp = MacOS.GetCreatorAndType(filename) +		if tp == 'APPL': +			update(template, filename, dstfilename) +		else: +			process(template, filename, dstfilename)  	else:  		# Loop over all files to be processed  		for filename in sys.argv[1:]: -			process(template, filename, '') +			cr, tp = MacOS.GetCreatorAndType(filename) +			if tp == 'APPL': +				update(template, filename, '') +			else: +				process(template, filename, '')  def process(template, filename, output): @@ -116,10 +125,23 @@ def process(template, filename, output):  	if output:  		destname = output +	 +	process_common(template, progress, code, rsrcname, destname, 0) +	 +def update(template, filename, output): +	if DEBUG: +		progress = EasyDialogs.ProgressBar("Updating %s..."%os.path.split(filename)[1], 120) +	else: +		progress = None +	if not output: +		output = filename + ' (updated)' +	process_common(template, progress, None, filename, output, 1) +	 +def process_common(template, progress, code, rsrcname, destname, is_update):  	# Try removing the output file  	try: -		os.unlink(output) +		os.unlink(destname)  	except os.error:  		pass @@ -163,7 +185,11 @@ def process(template, filename, output):  		if DEBUG:  			progress.inc(50)  	else: -		typesfound, ownertype = copyres(input, output, [], 0, progress) +		if is_update: +			skip_oldfile = ['cfrg'] +		else: +			skip_oldfile = [] +		typesfound, ownertype = copyres(input, output, skip_oldfile, 0, progress)  		CloseResFile(input)  	# Check which resource-types we should not copy from the template @@ -195,32 +221,33 @@ def process(template, filename, output):  	UseResFile(output) -	# Delete any existing 'PYC ' resource named __main__ -	 -	try: -		res = Get1NamedResource(RESTYPE, RESNAME) -		res.RemoveResource() -	except Error: -		pass -	 -	# Create the raw data for the resource from the code object -	if DEBUG: -		progress.label("Write PYC resource...") -		progress.set(120) -	 -	data = marshal.dumps(code) -	del code -	data = (MAGIC + '\0\0\0\0') + data -	 -	# Create the resource and write it +	if code: +		# Delete any existing 'PYC ' resource named __main__ +		 +		try: +			res = Get1NamedResource(RESTYPE, RESNAME) +			res.RemoveResource() +		except Error: +			pass -	id = 0 -	while id < 128: -		id = Unique1ID(RESTYPE) -	res = Resource(data) -	res.AddResource(RESTYPE, id, RESNAME) -	res.WriteResource() -	res.ReleaseResource() +		# Create the raw data for the resource from the code object +		if DEBUG: +			progress.label("Write PYC resource...") +			progress.set(120) +		 +		data = marshal.dumps(code) +		del code +		data = (MAGIC + '\0\0\0\0') + data +		 +		# Create the resource and write it +		 +		id = 0 +		while id < 128: +			id = Unique1ID(RESTYPE) +		res = Resource(data) +		res.AddResource(RESTYPE, id, RESNAME) +		res.WriteResource() +		res.ReleaseResource()  	# Close the output file @@ -252,8 +279,8 @@ def copyres(input, output, skiptypes, skipowner, progress=None):  			res = Get1IndResource(type, ires)  			id, type, name = res.GetResInfo()  			lcname = string.lower(name) -			if (type, lcname) == (RESTYPE, RESNAME): -				continue # Don't copy __main__ from template +##			if (type, lcname) == (RESTYPE, RESNAME): +##				continue # Don't copy __main__ from template  			# XXXX should look for id=0  			if lcname == OWNERNAME:  				if skipowner:  | 
