mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #
 | |
| # Instant Python
 | |
| # $Id$
 | |
| #
 | |
| # tk common file dialogues
 | |
| #
 | |
| # this module provides interfaces to the native file dialogues
 | |
| # available in Tk 4.2 and newer.
 | |
| #
 | |
| # written by Fredrik Lundh, May 1997.
 | |
| #
 | |
| 
 | |
| #
 | |
| # options (all have default values):
 | |
| #
 | |
| # - defaultextension: added to filename if not explicitly given
 | |
| #
 | |
| # - filetypes: sequence of (label, pattern) tuples.  the same pattern
 | |
| #   may occur with several patterns.  use "*" as pattern to indicate
 | |
| #   all files.
 | |
| #
 | |
| # - initialdir: initial directory.  preserved by dialog instance.
 | |
| #
 | |
| # - initialfile: initial file (ignored by the open dialog).  preserved
 | |
| #   by dialog instance.
 | |
| #
 | |
| # - parent: which window to place the dialog on top of
 | |
| #
 | |
| # - title: dialog title
 | |
| #
 | |
| 
 | |
| from tkCommonDialog import Dialog
 | |
| 
 | |
| class _Dialog(Dialog):
 | |
| 
 | |
|     def _fixoptions(self):
 | |
|         try:
 | |
|             # make sure "filetypes" is a tuple
 | |
|             self.options["filetypes"] = tuple(self.options["filetypes"])
 | |
|         except KeyError:
 | |
|             pass
 | |
| 
 | |
|     def _fixresult(self, widget, result):
 | |
|         if result:
 | |
|             # keep directory and filename until next time
 | |
|             import os
 | |
|             path, file = os.path.split(result)
 | |
|             self.options["initialdir"] = path
 | |
|             self.options["initialfile"] = file
 | |
|         self.filename = result # compatibility
 | |
|         return result
 | |
| 
 | |
| 
 | |
| #
 | |
| # file dialogs
 | |
| 
 | |
| class Open(_Dialog):
 | |
|     "Ask for a filename to open"
 | |
| 
 | |
|     command = "tk_getOpenFile"
 | |
| 
 | |
| class SaveAs(_Dialog):
 | |
|     "Ask for a filename to save as"
 | |
| 
 | |
|     command = "tk_getSaveFile"
 | |
| 
 | |
| 
 | |
| #
 | |
| # convenience stuff
 | |
| 
 | |
| def askopenfilename(**options):
 | |
|     "Ask for a filename to open"
 | |
| 
 | |
|     return apply(Open, (), options).show()
 | |
| 
 | |
| def asksaveasfilename(**options):
 | |
|     "Ask for a filename to save as"
 | |
| 
 | |
|     return apply(SaveAs, (), options).show()
 | |
| 
 | |
| # FIXME: are the following two perhaps a bit too convenient?
 | |
| 
 | |
| def askopenfile(mode = "r", **options):
 | |
|     "Ask for a filename to open, and returned the opened file"
 | |
| 
 | |
|     filename = apply(Open, (), options).show()
 | |
|     if filename:
 | |
|         return open(filename, mode)
 | |
|     return None
 | |
| 
 | |
| def asksaveasfile(mode = "w", **options):
 | |
|     "Ask for a filename to save as, and returned the opened file"
 | |
| 
 | |
|     filename = apply(SaveAs, (), options).show()
 | |
|     if filename:
 | |
|         return open(filename, mode)
 | |
|     return None
 | |
| 
 | |
| 
 | |
| # --------------------------------------------------------------------
 | |
| # test stuff
 | |
| 
 | |
| if __name__ == "__main__":
 | |
| 
 | |
|     print "open", askopenfilename(filetypes=[("all filez", "*")])
 | |
|     print "saveas", asksaveasfilename()
 | 
