Mercurial > cpython-lru_cache-weakref
annotate Mac/scripts/RunLibScript.py @ 2873:315760ba0041 legacy-trunk
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..
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Sat, 29 Jul 1995 13:48:41 +0000 |
| parents | |
| children | 7eea9b426802 |
| rev | line source |
|---|---|
|
2873
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
1 """Import a module while pretending its name is __main__. This |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
2 can be used to run scripts from the PackedLib resource file while pretending |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
3 they have been double-clicked.""" |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
4 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
5 import imp |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
6 import sys |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
7 import os |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
8 import string |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
9 import Dlg |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
10 import macfs |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
11 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
12 DIALOG_ID = 140 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
13 OK = 1 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
14 CANCEL = 2 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
15 SCRIPTNAME=3 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
16 ARGV=4 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
17 STDIN_CONS=5 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
18 STDIN_FILE=6 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
19 STDOUT_CONS=7 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
20 STDOUT_FILE=8 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
21 WORKING_DIR=9 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
22 PAUSE=10 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
23 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
24 def import_as_main(name): |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
25 fp, path, (suffix, mode, type) = imp.find_module(name) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
26 if type == imp.PY_SOURCE: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
27 imp.load_source('__main__', path) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
28 elif type == imp.PY_COMPILED: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
29 imp.load_compiled('__main__', path) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
30 elif type == imp.PY_RESOURCE: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
31 imp.load_resource('__main__', path) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
32 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
33 def interact(): |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
34 d = Dlg.GetNewDialog(DIALOG_ID, -1) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
35 wdir = stdin = stdout = None |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
36 pause = 0 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
37 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
38 tp, in_c_h, rect = d.GetDialogItem(STDIN_CONS) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
39 tp, in_f_h, rect = d.GetDialogItem(STDIN_FILE) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
40 tp, out_c_h, rect = d.GetDialogItem(STDOUT_CONS) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
41 tp, out_f_h, rect = d.GetDialogItem(STDOUT_FILE) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
42 tp, pause_h, rect = d.GetDialogItem(PAUSE) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
43 in_c_h = in_c_h.as_Control() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
44 in_f_h = in_f_h.as_Control() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
45 out_c_h = out_c_h.as_Control() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
46 out_f_h = out_f_h.as_Control() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
47 pause_h = pause_h.as_Control() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
48 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
49 while 1: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
50 in_c_h.SetControlValue(not stdin) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
51 in_f_h.SetControlValue(not not stdin) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
52 out_c_h.SetControlValue(not stdout) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
53 out_f_h.SetControlValue(not not stdout) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
54 pause_h.SetControlValue(pause) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
55 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
56 n = Dlg.ModalDialog(None) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
57 if n == OK: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
58 break |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
59 elif n == CANCEL: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
60 sys.exit(0) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
61 elif n == STDIN_CONS: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
62 stdin = None |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
63 elif n == STDIN_FILE: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
64 fss, ok = macfs.StandardGetFile('TEXT') |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
65 if ok: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
66 stdin = fss |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
67 elif n == STDOUT_FILE: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
68 fss, ok = macfs.StandardPutFile('stdout:') |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
69 if ok: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
70 stdout = fss |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
71 elif n == WORKING_DIR: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
72 fss, ok = macfs.GetDirectory() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
73 if ok: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
74 wdir = fss |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
75 elif n == PAUSE: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
76 pause = (not pause) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
77 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
78 tp, h, rect = d.GetDialogItem(SCRIPTNAME) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
79 name = Dlg.GetDialogItemText(h) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
80 tp, h, rect = d.GetDialogItem(ARGV) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
81 argv = Dlg.GetDialogItemText(h) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
82 return name, argv, stdin, stdout, wdir, pause |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
83 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
84 def main(): |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
85 curdir = os.getcwd() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
86 import Res |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
87 Res.OpenResFile('RunLibScript.rsrc') |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
88 name, argv, stdin, stdout, wdir, pause = interact() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
89 if not name: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
90 sys.exit(0) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
91 sys.argv = [name] + string.split(argv) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
92 if stdin: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
93 sys.stdin = open(stdin.as_pathname()) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
94 if stdout: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
95 sys.stdout = open(stdout.as_pathname(), 'w') |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
96 if wdir: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
97 os.chdir(wdir.as_pathname()) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
98 else: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
99 os.chdir(curdir) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
100 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
101 import_as_main(name) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
102 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
103 if pause: |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
104 sys.exit(1) |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
105 |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
106 if __name__ == '__main__': |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
107 main() |
|
315760ba0041
A new home for scripts/applets
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff
changeset
|
108 |
