| """macfreeze - Main program and GUI |
| |
| macfreeze allows you to turn Python scripts into fully self-contained |
| Mac applications, by including all the Python and C code needed in a single |
| executable. Like unix/windows freeze it can produce a config.c allowing you |
| to build the application with a development environment (CodeWarrior, to be |
| precise), but unlike the standard freeze it is also possible to create frozen |
| applications without a development environment, by glueing all the |
| shared libraries and extension modules needed together in a single |
| executable, using some Code Fragment Manager tricks.""" |
| |
| import macfs |
| import sys |
| import EasyDialogs |
| import string |
| |
| import macfreezegui |
| import macmodulefinder |
| |
| # |
| # Here are the macfreeze directives, used when freezing macfreeze itself |
| # (see directives.py for an explanation) |
| # |
| # macfreeze: path ::::Tools:freeze |
| # macfreeze: exclude win32api |
| # |
| |
| def main(): |
| if len(sys.argv) < 2: |
| gentype, program, output, debug = macfreezegui.dialog() |
| elif len(sys.argv) == 2: |
| gentype, program, output, debug = macfreezegui.dialog(sys.argv[1]) |
| else: |
| EasyDialog.Message( |
| "Please pass a single script. Additional modules can be specified with directives") |
| sys.exit(0) |
| mustwait = process(gentype, program, output, debug=debug) |
| if mustwait: |
| sys.exit(1) |
| |
| def process(gentype, program, output, modules=[], module_files=[], debug=0): |
| try: |
| module_dict = macmodulefinder.process(program, modules, module_files, debug) |
| except macmodulefinder.Missing, arg: |
| arg.sort() |
| print '** Missing modules:', string.join(arg, ' ') |
| sys.exit(1) |
| # |
| # And generate |
| # |
| if gentype == 'info': |
| import macgen_info |
| macgen_info.generate(output, module_dict) |
| return 1 # So the user can inspect it |
| elif gentype == 'source': |
| import macgen_src |
| warnings = macgen_src.generate(output, module_dict, debug) |
| return warnings |
| elif gentype == 'resource': |
| import macgen_rsrc |
| macgen_rsrc.generate(output, module_dict, debug) |
| warnings = macgen_rsrc.warnings(module_dict) |
| return warnings |
| elif gentype == 'applet': |
| import macgen_bin |
| macgen_bin.generate(output, module_dict, debug) |
| else: |
| raise 'unknown gentype', gentype |
| |
| if __name__ == '__main__': |
| main() |
| |