PageRenderTime 7ms CodeModel.GetById 1ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/Lib/plat-mac/icopen.py

http://unladen-swallow.googlecode.com/
Python | 69 lines | 56 code | 1 blank | 12 comment | 6 complexity | 20486d2731ba0681612d9fca4c210bf0 MD5 | raw file
 1"""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:
32        import icopen
33
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
40from warnings import warnpy3k
41warnpy3k("In 3.x, the icopen module is removed.", stacklevel=2)
42
43import __builtin__
44
45_builtin_open = globals().get('_builtin_open', __builtin__.open)
46
47def _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"""
64open('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"""