| 
									
										
										
										
											2000-05-09 08:38:20 +00:00
										 |  |  | """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: | 
					
						
							| 
									
										
										
										
											2003-04-06 09:01:11 +00:00
										 |  |  |         import icopen | 
					
						
							| 
									
										
										
										
											2000-05-09 08:38:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | (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): | 
					
						
							| 
									
										
										
										
											2003-04-06 09:01:11 +00:00
										 |  |  |         file = _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 | 
					
						
							| 
									
										
										
										
											2000-05-09 08:38:20 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | __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') | 
					
						
							| 
									
										
										
										
											2003-04-06 09:01:11 +00:00
										 |  |  | """
 |