Mercurial > cpython-lru_cache-weakref
annotate Mac/mkapplet.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 98c1d84101a5 |
| children |
| rev | line source |
|---|---|
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
1 """Create an applet from a Python script. |
| 2362 | 2 |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
3 This puts up a dialog asking for a Python source file ('TEXT'). |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
4 The output is a file with the same name but its ".py" suffix dropped. |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
5 It is created by copying an applet template and then adding a 'PYC ' |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
6 resource named __main__ containing the compiled, marshalled script. |
| 2362 | 7 """ |
| 8 | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
9 import sys |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
10 sys.stdout = sys.stderr |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
11 |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
12 import string |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
13 import os |
| 2362 | 14 import marshal |
| 15 import imp | |
| 16 import macfs | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
17 import MacOS |
| 2362 | 18 from Res import * |
| 19 | |
| 20 # .pyc file (and 'PYC ' resource magic number) | |
| 21 MAGIC = imp.get_magic() | |
| 22 | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
23 # Template file (searched on sys.path) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
24 TEMPLATE = "PythonApplet" |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
25 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
26 # Specification of our resource |
| 2362 | 27 RESTYPE = 'PYC ' |
| 28 RESNAME = '__main__' | |
| 29 | |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
30 # A resource with this name sets the "owner" (creator) of the destination |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
31 OWNERNAME = "owner resource" |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
32 |
| 2362 | 33 # OpenResFile mode parameters |
| 34 READ = 1 | |
| 35 WRITE = 2 | |
| 36 | |
| 37 def main(): | |
| 38 | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
39 # Find the template |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
40 # (there's no point in proceeding if we can't find it) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
41 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
42 for p in sys.path: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
43 template = os.path.join(p, TEMPLATE) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
44 try: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
45 tmpl = open(template, "rb") |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
46 tmpl.close() |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
47 break |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
48 except IOError: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
49 continue |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
50 else: |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
51 die("Template %s not found" % `template`) |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
52 return |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
53 |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
54 # Ask for source text if not specified in sys.argv[1:] |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
55 |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
56 if not sys.argv[1:]: |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
57 srcfss, ok = macfs.StandardGetFile('TEXT') |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
58 if not ok: |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
59 return |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
60 filename = srcfss.as_pathname() |
|
2444
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
61 tp, tf = os.path.split(filename) |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
62 if tf[-3:] == '.py': |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
63 tf = tf[:-3] |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
64 else: |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
65 tf = tf + '.applet' |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
66 dstfss, ok = macfs.StandardPutFile('Save application as:', tf) |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
67 if not ok: return |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
68 process(template, filename, dstfss.as_pathname()) |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
69 else: |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
70 |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
71 # Loop over all files to be processed |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
72 for filename in sys.argv[1:]: |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
73 process(template, filename, '') |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
74 |
|
2425
eccf4937f1dc
Added BINA to unknown filetypes (what mw uses)
Jack Jansen <jack.jansen@cwi.nl>
parents:
2409
diff
changeset
|
75 undefs = ('????', ' ', '\0\0\0\0', 'BINA') |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
76 |
|
2444
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
77 def process(template, filename, output): |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
78 |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
79 print "Processing", `filename`, "..." |
| 2362 | 80 |
| 81 # Read the source and compile it | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
82 # (there's no point overwriting the destination if it has a syntax error) |
| 2362 | 83 |
| 84 fp = open(filename) | |
| 85 text = fp.read() | |
| 86 fp.close() | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
87 try: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
88 code = compile(text, filename, "exec") |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
89 except (SyntaxError, EOFError): |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
90 die("Syntax error in script %s" % `filename`) |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
91 return |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
92 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
93 # Set the destination file name |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
94 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
95 if string.lower(filename[-3:]) == ".py": |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
96 destname = filename[:-3] |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
97 rsrcname = destname + '.rsrc' |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
98 else: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
99 destname = filename + ".applet" |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
100 rsrcname = filename + '.rsrc' |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
101 |
|
2444
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
102 if output: |
|
98c1d84101a5
In interactive mode ask for output file
Jack Jansen <jack.jansen@cwi.nl>
parents:
2428
diff
changeset
|
103 destname = output |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
104 # Copy the data from the template (creating the file as well) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
105 |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
106 tmpl = open(template, "rb") |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
107 dest = open(destname, "wb") |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
108 data = tmpl.read() |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
109 if data: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
110 dest.write(data) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
111 dest.close() |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
112 tmpl.close() |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
113 |
| 2402 | 114 # Copy the creator of the template to the destination |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
115 # unless it already got one. Set type to APPL |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
116 |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
117 tctor, ttype = MacOS.GetCreatorAndType(template) |
|
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
118 ctor, type = MacOS.GetCreatorAndType(destname) |
| 2402 | 119 if type in undefs: type = 'APPL' |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
120 if ctor in undefs: ctor = tctor |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
121 |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
122 # Open the output resource fork |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
123 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
124 try: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
125 output = FSpOpenResFile(destname, WRITE) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
126 except MacOS.Error: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
127 print "Creating resource fork..." |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
128 CreateResFile(destname) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
129 output = FSpOpenResFile(destname, WRITE) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
130 |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
131 # Copy the resources from the template |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
132 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
133 input = FSpOpenResFile(template, READ) |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
134 newctor = copyres(input, output) |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
135 CloseResFile(input) |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
136 if newctor: ctor = newctor |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
137 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
138 # Copy the resources from the target specific resource template, if any |
| 2362 | 139 |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
140 try: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
141 input = FSpOpenResFile(rsrcname, READ) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
142 except MacOS.Error: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
143 pass |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
144 else: |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
145 newctor = copyres(input, output) |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
146 CloseResFile(input) |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
147 if newctor: ctor = newctor |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
148 |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
149 # Now set the creator and type of the destination |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
150 |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
151 MacOS.SetCreatorAndType(destname, ctor, type) |
| 2362 | 152 |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
153 # Make sure we're manipulating the output resource file now |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
154 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
155 UseResFile(output) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
156 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
157 # Delete any existing 'PYC 'resource named __main__ |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
158 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
159 try: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
160 res = Get1NamedResource(RESTYPE, RESNAME) |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
161 res.RmveResource() |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
162 except Error: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
163 pass |
| 2362 | 164 |
| 165 # Create the raw data for the resource from the code object | |
| 166 | |
| 167 data = marshal.dumps(code) | |
| 168 del code | |
| 169 data = (MAGIC + '\0\0\0\0') + data | |
| 170 | |
| 171 # Create the resource and write it | |
| 172 | |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
173 id = 0 |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
174 while id < 128: |
|
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
175 id = Unique1ID(RESTYPE) |
| 2362 | 176 res = Resource(data) |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
177 res.AddResource(RESTYPE, id, RESNAME) |
| 2362 | 178 res.WriteResource() |
| 179 res.ReleaseResource() | |
| 180 | |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
181 # Close the output file |
| 2362 | 182 |
|
2387
5313ac6f34fd
fancier version copies template file
Guido van Rossum <guido@python.org>
parents:
2362
diff
changeset
|
183 CloseResFile(output) |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
184 |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
185 # Give positive feedback |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
186 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
187 message("Applet %s created." % `destname`) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
188 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
189 |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
190 # Copy resources between two resource file descriptors. |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
191 # Exception: don't copy a __main__ resource. |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
192 # If a resource's name is "owner resource", its type is returned |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
193 # (so the caller can use it to set the destination's creator) |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
194 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
195 def copyres(input, output): |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
196 ctor = None |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
197 UseResFile(input) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
198 ntypes = Count1Types() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
199 for itype in range(1, 1+ntypes): |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
200 type = Get1IndType(itype) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
201 nresources = Count1Resources(type) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
202 for ires in range(1, 1+nresources): |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
203 res = Get1IndResource(type, ires) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
204 id, type, name = res.GetResInfo() |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
205 lcname = string.lower(name) |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
206 if (type, lcname) == (RESTYPE, RESNAME): |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
207 continue # Don't copy __main__ from template |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
208 if lcname == OWNERNAME: ctor = type |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
209 size = res.SizeResource() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
210 attrs = res.GetResAttrs() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
211 print id, type, name, size, hex(attrs) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
212 res.LoadResource() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
213 res.DetachResource() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
214 UseResFile(output) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
215 try: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
216 res2 = Get1Resource(type, id) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
217 except MacOS.Error: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
218 res2 = None |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
219 if res2: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
220 print "Overwriting..." |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
221 res2.RmveResource() |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
222 res.AddResource(type, id, name) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
223 res.WriteResource() |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
224 attrs = attrs | res.GetResAttrs() |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
225 print "New attrs =", hex(attrs) |
|
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
226 res.SetResAttrs(attrs) |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
227 UseResFile(input) |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
228 return ctor |
|
2409
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
229 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
230 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
231 # Show a message and exit |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
232 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
233 def die(str): |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
234 message(str) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
235 sys.exit(1) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
236 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
237 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
238 # Show a message |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
239 |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
240 def message(str, id = 256): |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
241 from Dlg import * |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
242 d = GetNewDialog(id, -1) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
243 if not d: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
244 print "Error:", `str` |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
245 print "DLOG id =", id, "not found." |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
246 return |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
247 tp, h, rect = d.GetDItem(2) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
248 SetIText(h, str) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
249 while 1: |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
250 n = ModalDialog(None) |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
251 if n == 1: break |
|
4fc033cb5544
real dialogs for warnings etc., copy applet.rsrc template too
Guido van Rossum <guido@python.org>
parents:
2402
diff
changeset
|
252 del d |
|
2389
49bfef17b12b
accept file arguments and loop over files
Guido van Rossum <guido@python.org>
parents:
2387
diff
changeset
|
253 |
| 2362 | 254 |
| 255 if __name__ == '__main__': | |
| 256 main() | |
|
2428
7924b7819d8f
get creator from Owner resource; set attrs
Guido van Rossum <guido@python.org>
parents:
2425
diff
changeset
|
257 |
