summaryrefslogtreecommitdiffstats
path: root/Mac/Tools/macfreeze/macfreeze.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Tools/macfreeze/macfreeze.py')
-rw-r--r--Mac/Tools/macfreeze/macfreeze.py72
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()
+