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