diff options
| author | Guido van Rossum <guido@python.org> | 1997-07-19 20:02:36 (GMT) | 
|---|---|---|
| committer | Guido van Rossum <guido@python.org> | 1997-07-19 20:02:36 (GMT) | 
| commit | 1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb (patch) | |
| tree | c6f6d34dad616a9efe0aaeaa7e5727b33b604762 /Lib/lib-tk/tkFileDialog.py | |
| parent | 65c78e18b593955c231006dcb5862b53d3a2f169 (diff) | |
| download | cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.zip cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.tar.gz cpython-1e8c8a20f2b5ff51415ed8dfbf4df574595a95fb.tar.bz2  | |
New dialog routines (Fred Lundh)
Diffstat (limited to 'Lib/lib-tk/tkFileDialog.py')
| -rw-r--r-- | Lib/lib-tk/tkFileDialog.py | 106 | 
1 files changed, 106 insertions, 0 deletions
diff --git a/Lib/lib-tk/tkFileDialog.py b/Lib/lib-tk/tkFileDialog.py new file mode 100644 index 0000000..e0d5ae5 --- /dev/null +++ b/Lib/lib-tk/tkFileDialog.py @@ -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()  | 
