diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 2265bc5e7d..4acba227d5 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -666,28 +666,29 @@ class FileDialog(QObject): if not use_native_dialog: opts |= QFileDialog.DontUseNativeDialog if mode == QFileDialog.AnyFile: - f = unicode(QFileDialog.getSaveFileName(parent, title, - initial_dir, ftext, "", opts)) - if f: - self.selected_files.append(f) + f = QFileDialog.getSaveFileName(parent, title, + initial_dir, ftext, "", opts) + if f and f[0]: + self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFile: - f = unicode(QFileDialog.getOpenFileName(parent, title, - initial_dir, ftext, "", opts)) - if f and os.path.exists(f): - self.selected_files.append(f) + f = QFileDialog.getOpenFileName(parent, title, + initial_dir, ftext, "", opts) + if f and f[0] and os.path.exists(f[0]): + self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFiles: fs = QFileDialog.getOpenFileNames(parent, title, initial_dir, ftext, "", opts) - for f in fs: - f = unicode(f) - if not f: - continue - if not os.path.exists(f): - # QFileDialog for some reason quotes spaces - # on linux if there is more than one space in a row - f = unquote(f) - if f and os.path.exists(f): - self.selected_files.append(f) + if fs and fs[0]: + for f in fs[0]: + f = unicode(f) + if not f: + continue + if not os.path.exists(f): + # QFileDialog for some reason quotes spaces + # on linux if there is more than one space in a row + f = unquote(f) + if f and os.path.exists(f): + self.selected_files.append(f) else: if mode == QFileDialog.Directory: opts |= QFileDialog.ShowDirsOnly diff --git a/src/calibre/gui2/store/web_control.py b/src/calibre/gui2/store/web_control.py index f0482f1e0c..acb9824bc2 100644 --- a/src/calibre/gui2/store/web_control.py +++ b/src/calibre/gui2/store/web_control.py @@ -9,11 +9,12 @@ __docformat__ = 'restructuredtext en' import os from urlparse import urlparse -from PyQt5.Qt import QNetworkCookieJar, QFileDialog, QNetworkProxy +from PyQt5.Qt import QNetworkCookieJar, QNetworkProxy from PyQt5.QtWebKitWidgets import QWebView, QWebPage from calibre import USER_AGENT, get_proxies, get_download_filename from calibre.ebooks import BOOK_EXTENSIONS +from calibre.gui2 import choose_save_file from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.filenames import ascii_filename @@ -85,13 +86,8 @@ class NPWebView(QWebView): 'the ADE library folder.'), 'acsm_download', self): return - home = os.path.expanduser('~') - name = QFileDialog.getSaveFileName(self, - _('File is not a supported ebook type. Save to disk?'), - os.path.join(home, filename), - '*.*') + name = choose_save_file(self, 'web-store-download-unknown', _('File is not a supported ebook type. Save to disk?'), initial_filename=filename) if name: - name = unicode(name) self.gui.download_ebook(url, cf, name, name, False) else: self.gui.download_ebook(url, cf, filename, tags=self.tags)