diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2003-06-14 21:34:32 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2003-06-14 21:34:32 (GMT) |
commit | d6efae500ce3e955b95b324954defa1a9f2d9e96 (patch) | |
tree | e0d562478928d8e75f98f8117ecf3b8b1c0c38ec | |
parent | 19d173486b2263a269260343d65ac3929c89297e (diff) | |
download | cpython-d6efae500ce3e955b95b324954defa1a9f2d9e96.zip cpython-d6efae500ce3e955b95b324954defa1a9f2d9e96.tar.gz cpython-d6efae500ce3e955b95b324954defa1a9f2d9e96.tar.bz2 |
Properly deal with tuples in Open._fixresult. Fixes bug reported in
follow-up to #621891.
-rw-r--r-- | Lib/lib-tk/tkFileDialog.py | 19 | ||||
-rw-r--r-- | Modules/_tkinter.c | 6 |
2 files changed, 20 insertions, 5 deletions
diff --git a/Lib/lib-tk/tkFileDialog.py b/Lib/lib-tk/tkFileDialog.py index 63487d2..fb0014c 100644 --- a/Lib/lib-tk/tkFileDialog.py +++ b/Lib/lib-tk/tkFileDialog.py @@ -76,6 +76,21 @@ class Open(_Dialog): command = "tk_getOpenFile" + def _fixresult(self, widget, result): + if isinstance(result, tuple): + # multiple results: + result = tuple([getattr(r, "string", r) for r in result]) + if result: + import os + path, file = os.path.split(result[0]) + self.options["initialdir"] = path + # don't set initialfile or filename, as we have multiple of these + return result + if not widget.tk.wantobjects() and "multiple" in self.options: + # Need to split result explicitly + return self._fixresult(widget, widget.tk.splitlist(result)) + return _Dialog._fixresult(widget, result) + class SaveAs(_Dialog): "Ask for a filename to save as" @@ -115,9 +130,7 @@ def askopenfilenames(**options): cancel button selected """ options["multiple"]=1 - files=Open(**options).show() - return files.split() - + return Open(**options).show() # FIXME: are the following perhaps a bit too convenient? diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 5851372..5253a10 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -2604,9 +2604,11 @@ static PyObject * Tkapp_WantObjects(PyObject *self, PyObject *args) { - int wantobjects; - if (!PyArg_ParseTuple(args, "i:wantobjects", &wantobjects)) + int wantobjects = -1; + if (!PyArg_ParseTuple(args, "|i:wantobjects", &wantobjects)) return NULL; + if (wantobjects == -1) + return PyBool_FromLong(((TkappObject*)self)->wantobjects); ((TkappObject*)self)->wantobjects = wantobjects; Py_INCREF(Py_None); |