diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2000-05-09 08:38:20 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2000-05-09 08:38:20 (GMT) |
commit | 317b2a6d59302315b577c927752a994571212ee8 (patch) | |
tree | ff421c635b9a4e3d07568aef3666317819c7f308 /Mac/Lib | |
parent | 1500374667bf2b1e882ec8ba7db5a8c546e187fd (diff) | |
download | cpython-317b2a6d59302315b577c927752a994571212ee8.zip cpython-317b2a6d59302315b577c927752a994571212ee8.tar.gz cpython-317b2a6d59302315b577c927752a994571212ee8.tar.bz2 |
Import this to replace open() by an extended version that uses
Internet Config to set creator/type based on the extension. Donated by
Oliver Steele.
Diffstat (limited to 'Mac/Lib')
-rw-r--r-- | Mac/Lib/icopen.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Mac/Lib/icopen.py b/Mac/Lib/icopen.py new file mode 100644 index 0000000..d819159 --- /dev/null +++ b/Mac/Lib/icopen.py @@ -0,0 +1,66 @@ +"""icopen patch + +OVERVIEW + +icopen patches MacOS Python to use the Internet Config file mappings to select +the type and creator for a file. + +Version 1 released to the public domain 3 November 1999 +by Oliver Steele (steele@cs.brandeis.edu). + +DETAILS + +This patch causes files created by Python's open(filename, 'w') command (and +by functions and scripts that call it) to set the type and creator of the file +to the type and creator associated with filename's extension (the +portion of the filename after the last period), according to Internet Config. +Thus, a script that creates a file foo.html will create one that opens in whatever +browser you've set to handle *.html files, and so on. + +Python IDE uses its own algorithm to select the type and creator for saved +editor windows, so this patch won't effect their types. + +As of System 8.6 at least, Internet Config is built into the system, and the +file mappings are accessed from the Advanced pane of the Internet control +panel. User Mode (in the Edit menu) needs to be set to Advanced in order to +access this pane. + +INSTALLATION + +Put this file in your Python path, and create a file named {Python}:sitecustomize.py +that contains: + import icopen + +(If {Python}:sitecustomizer.py already exists, just add the 'import' line to it.) + +The next time you launch PythonInterpreter or Python IDE, the patch will take +effect. +""" + +import __builtin__ + +_builtin_open = globals().get('_builtin_open', __builtin__.open) + +def _open_with_typer(*args): + file = apply(_builtin_open, args) + filename = args[0] + mode = 'r' + if args[1:]: + mode = args[1] + if mode[0] == 'w': + from ic import error, settypecreator + try: + settypecreator(filename) + except error: + pass + return file + +__builtin__.open = _open_with_typer + +""" +open('test.py') +_open_with_typer('test.py', 'w') +_open_with_typer('test.txt', 'w') +_open_with_typer('test.html', 'w') +_open_with_typer('test.foo', 'w') +"""
\ No newline at end of file |