A new home for scripts/applets
EditPythonPrefs - Edit the preferences file (sys.path, python home)
PackLibDir - Convert a sys.path directory to a resource file
RunLibScript - import a module and run as __main__
mkapplet - Create a python applet

The resource files belonging to these should also be stored here, somehow..
diff --git a/Mac/scripts/RunLibScript.py b/Mac/scripts/RunLibScript.py
new file mode 100644
index 0000000..36787d9
--- /dev/null
+++ b/Mac/scripts/RunLibScript.py
@@ -0,0 +1,108 @@
+"""Import a module while pretending its name is __main__. This
+can be used to run scripts from the PackedLib resource file while pretending
+they have been double-clicked."""
+
+import imp
+import sys
+import os
+import string
+import Dlg
+import macfs
+
+DIALOG_ID = 140
+OK = 1
+CANCEL = 2
+SCRIPTNAME=3
+ARGV=4
+STDIN_CONS=5
+STDIN_FILE=6
+STDOUT_CONS=7
+STDOUT_FILE=8
+WORKING_DIR=9
+PAUSE=10
+
+def import_as_main(name):
+	fp, path, (suffix, mode, type) = imp.find_module(name)
+	if type == imp.PY_SOURCE:
+		imp.load_source('__main__', path)
+	elif type == imp.PY_COMPILED:
+		imp.load_compiled('__main__', path)
+	elif type == imp.PY_RESOURCE:
+		imp.load_resource('__main__', path)
+		
+def interact():
+	d = Dlg.GetNewDialog(DIALOG_ID, -1)
+	wdir = stdin = stdout = None
+	pause = 0
+
+	tp, in_c_h, rect = d.GetDialogItem(STDIN_CONS)
+	tp, in_f_h, rect = d.GetDialogItem(STDIN_FILE)
+	tp, out_c_h, rect = d.GetDialogItem(STDOUT_CONS)
+	tp, out_f_h, rect = d.GetDialogItem(STDOUT_FILE)
+	tp, pause_h, rect = d.GetDialogItem(PAUSE)
+	in_c_h = in_c_h.as_Control()
+	in_f_h = in_f_h.as_Control()
+	out_c_h = out_c_h.as_Control()
+	out_f_h = out_f_h.as_Control()
+	pause_h = pause_h.as_Control()
+
+	while 1:
+		in_c_h.SetControlValue(not stdin)
+		in_f_h.SetControlValue(not not stdin)
+		out_c_h.SetControlValue(not stdout)
+		out_f_h.SetControlValue(not not stdout)
+		pause_h.SetControlValue(pause)
+		
+		n = Dlg.ModalDialog(None)
+		if n == OK:
+			break
+		elif n == CANCEL:
+			sys.exit(0)
+		elif n == STDIN_CONS:
+			stdin = None
+		elif n == STDIN_FILE:
+			fss, ok = macfs.StandardGetFile('TEXT')
+			if ok:
+				stdin = fss
+		elif n == STDOUT_FILE:
+			fss, ok = macfs.StandardPutFile('stdout:')
+			if ok:
+				stdout = fss
+		elif n == WORKING_DIR:
+			fss, ok = macfs.GetDirectory()
+			if ok:
+				wdir = fss
+		elif n == PAUSE:
+			pause = (not pause)
+		
+	tp, h, rect = d.GetDialogItem(SCRIPTNAME)
+	name = Dlg.GetDialogItemText(h)
+	tp, h, rect = d.GetDialogItem(ARGV)
+	argv = Dlg.GetDialogItemText(h)
+	return name, argv, stdin, stdout, wdir, pause
+	
+def main():
+	curdir = os.getcwd()
+	import Res
+	Res.OpenResFile('RunLibScript.rsrc')
+	name, argv, stdin, stdout, wdir, pause = interact()
+	if not name:
+		sys.exit(0)
+	sys.argv = [name] + string.split(argv)
+	if stdin:
+		sys.stdin = open(stdin.as_pathname())
+	if stdout:
+		sys.stdout = open(stdout.as_pathname(), 'w')
+	if wdir:
+		os.chdir(wdir.as_pathname())
+	else:
+		os.chdir(curdir)
+
+	import_as_main(name)
+
+	if pause:
+		sys.exit(1)
+	
+if __name__ == '__main__':
+	main()
+