mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			66 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """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') | ||
|  | """
 |