|
1 """icopen patch |
|
2 |
|
3 OVERVIEW |
|
4 |
|
5 icopen patches MacOS Python to use the Internet Config file mappings to select |
|
6 the type and creator for a file. |
|
7 |
|
8 Version 1 released to the public domain 3 November 1999 |
|
9 by Oliver Steele (steele@cs.brandeis.edu). |
|
10 |
|
11 DETAILS |
|
12 |
|
13 This patch causes files created by Python's open(filename, 'w') command (and |
|
14 by functions and scripts that call it) to set the type and creator of the file |
|
15 to the type and creator associated with filename's extension (the |
|
16 portion of the filename after the last period), according to Internet Config. |
|
17 Thus, a script that creates a file foo.html will create one that opens in whatever |
|
18 browser you've set to handle *.html files, and so on. |
|
19 |
|
20 Python IDE uses its own algorithm to select the type and creator for saved |
|
21 editor windows, so this patch won't effect their types. |
|
22 |
|
23 As of System 8.6 at least, Internet Config is built into the system, and the |
|
24 file mappings are accessed from the Advanced pane of the Internet control |
|
25 panel. User Mode (in the Edit menu) needs to be set to Advanced in order to |
|
26 access this pane. |
|
27 |
|
28 INSTALLATION |
|
29 |
|
30 Put this file in your Python path, and create a file named {Python}:sitecustomize.py |
|
31 that contains: |
|
32 import icopen |
|
33 |
|
34 (If {Python}:sitecustomizer.py already exists, just add the 'import' line to it.) |
|
35 |
|
36 The next time you launch PythonInterpreter or Python IDE, the patch will take |
|
37 effect. |
|
38 """ |
|
39 |
|
40 from warnings import warnpy3k |
|
41 warnpy3k("In 3.x, the icopen module is removed.", stacklevel=2) |
|
42 |
|
43 import __builtin__ |
|
44 |
|
45 _builtin_open = globals().get('_builtin_open', __builtin__.open) |
|
46 |
|
47 def _open_with_typer(*args): |
|
48 file = _builtin_open(*args) |
|
49 filename = args[0] |
|
50 mode = 'r' |
|
51 if args[1:]: |
|
52 mode = args[1] |
|
53 if mode[0] == 'w': |
|
54 from ic import error, settypecreator |
|
55 try: |
|
56 settypecreator(filename) |
|
57 except error: |
|
58 pass |
|
59 return file |
|
60 |
|
61 __builtin__.open = _open_with_typer |
|
62 |
|
63 """ |
|
64 open('test.py') |
|
65 _open_with_typer('test.py', 'w') |
|
66 _open_with_typer('test.txt', 'w') |
|
67 _open_with_typer('test.html', 'w') |
|
68 _open_with_typer('test.foo', 'w') |
|
69 """ |