diff options
Diffstat (limited to 'Mac/Tools/macfreeze/macfreeze.py')
-rw-r--r-- | Mac/Tools/macfreeze/macfreeze.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Mac/Tools/macfreeze/macfreeze.py b/Mac/Tools/macfreeze/macfreeze.py new file mode 100644 index 0000000..60962ee --- /dev/null +++ b/Mac/Tools/macfreeze/macfreeze.py @@ -0,0 +1,72 @@ +"""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() + |