mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +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')
							 | 
						||
| 
								 | 
							
								"""
							 |