| """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() |