home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / scripts / BuildApplet.py < prev    next >
Encoding:
Python Source  |  2000-06-23  |  1.6 KB  |  68 lines

  1. """Create an applet from a Python script.
  2.  
  3. This puts up a dialog asking for a Python source file ('TEXT').
  4. The output is a file with the same name but its ".py" suffix dropped.
  5. It is created by copying an applet template and then adding a 'PYC '
  6. resource named __main__ containing the compiled, marshalled script.
  7. """
  8.  
  9.  
  10. import sys
  11. sys.stdout = sys.stderr
  12.  
  13. import os
  14. import macfs
  15. import MacOS
  16. import EasyDialogs
  17. import buildtools
  18.  
  19.  
  20. def main():
  21.     try:
  22.         buildapplet()
  23.     except buildtools.BuildError, detail:
  24.         EasyDialogs.Message(detail)
  25.  
  26.  
  27. def buildapplet():
  28.     buildtools.DEBUG=1
  29.     
  30.     # Find the template
  31.     # (there's no point in proceeding if we can't find it)
  32.     
  33.     template = buildtools.findtemplate()
  34.     
  35.     # Ask for source text if not specified in sys.argv[1:]
  36.     
  37.     if not sys.argv[1:]:
  38.         srcfss, ok = macfs.PromptGetFile('Select Python source or applet:', 'TEXT', 'APPL')
  39.         if not ok:
  40.             return
  41.         filename = srcfss.as_pathname()
  42.         tp, tf = os.path.split(filename)
  43.         if tf[-3:] == '.py':
  44.             tf = tf[:-3]
  45.         else:
  46.             tf = tf + '.applet'
  47.         dstfss, ok = macfs.StandardPutFile('Save application as:', tf)
  48.         if not ok: return
  49.         dstfilename = dstfss.as_pathname()
  50.         cr, tp = MacOS.GetCreatorAndType(filename)
  51.         if tp == 'APPL':
  52.             buildtools.update(template, filename, dstfilename)
  53.         else:
  54.             buildtools.process(template, filename, dstfilename, 1)
  55.     else:
  56.         
  57.         # Loop over all files to be processed
  58.         for filename in sys.argv[1:]:
  59.             cr, tp = MacOS.GetCreatorAndType(filename)
  60.             if tp == 'APPL':
  61.                 buildtools.update(template, filename, '')
  62.             else:
  63.                 buildtools.process(template, filename, '', 1)
  64.  
  65.  
  66. if __name__ == '__main__':
  67.     main()
  68.