68 lines
1.6 KiB
Python
68 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()
|