Mercurial > cpython-lru_cache-weakref
diff Lib/lib-tk/tkFileDialog.py @ 5869:f2bf7bcf8b8b legacy-trunk
New dialog routines (Fred Lundh)
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Sat, 19 Jul 1997 20:02:36 +0000 |
| parents | |
| children | 9c37ed8868b9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/lib-tk/tkFileDialog.py Sat Jul 19 20:02:36 1997 +0000 @@ -0,0 +1,106 @@ +# +# 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()
