From cb97b2b1fa8d140529e813dbcebbb2a97d0ec973 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 22 Apr 2023 10:14:26 +0530 Subject: [PATCH] Allow not saving initial dir in choose_files as well --- src/calibre/gui2/linux_file_dialogs.py | 18 ++++++++++++------ src/calibre/gui2/qt_file_dialogs.py | 4 ++-- src/calibre/gui2/win_file_dialogs.py | 6 +++--- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/calibre/gui2/linux_file_dialogs.py b/src/calibre/gui2/linux_file_dialogs.py index cd394dd61e..f671913441 100644 --- a/src/calibre/gui2/linux_file_dialogs.py +++ b/src/calibre/gui2/linux_file_dialogs.py @@ -178,14 +178,17 @@ def kdialog_choose_files( filters=[], all_files=True, select_only_single_file=False, - default_dir='~'): - initial_dir = get_initial_dir(name, title, default_dir, False) + default_dir='~', + no_save_dir=False, +): + initial_dir = get_initial_dir(name, title, default_dir, no_save_dir) args = [] if not select_only_single_file: args += '--multiple --separate-output'.split() args += ['--getopenfilename', initial_dir, kdialog_filters(filters, all_files)] ans = run_kde(kde_cmd(window, title, *args)) - save_initial_dir(name, title, ans[0] if ans else None, False, is_file=True) + if not no_save_dir: + save_initial_dir(name, title, ans[0] if ans else None, False, is_file=True) return ans @@ -258,14 +261,17 @@ def zenity_choose_files( filters=[], all_files=True, select_only_single_file=False, - default_dir='~'): - initial_dir = get_initial_dir(name, title, default_dir, False) + default_dir='~', + no_save_dir=False, +): + initial_dir = get_initial_dir(name, title, default_dir, no_save_dir) args = ['--filename=' + os.path.join(initial_dir, '.fgdfg.gdfhjdhf*&^839')] args += zenity_filters(filters, all_files) if not select_only_single_file: args.append('--multiple') ans = run_zenity(zenity_cmd(window, title, *args)) - save_initial_dir(name, title, ans[0] if ans else None, False, is_file=True) + if not no_save_dir: + save_initial_dir(name, title, ans[0] if ans else None, False, is_file=True) return ans diff --git a/src/calibre/gui2/qt_file_dialogs.py b/src/calibre/gui2/qt_file_dialogs.py index 77f94d3e82..b7c387c1b3 100644 --- a/src/calibre/gui2/qt_file_dialogs.py +++ b/src/calibre/gui2/qt_file_dialogs.py @@ -193,7 +193,7 @@ def choose_dir(window, name, title, default_dir='~', no_save_dir=False): def choose_files(window, name, title, - filters=[], all_files=True, select_only_single_file=False, default_dir='~'): + filters=[], all_files=True, select_only_single_file=False, default_dir='~', no_save_dir=False): ''' Ask user to choose a bunch of files. :param name: Unique dialog name used to store the opened directory @@ -207,7 +207,7 @@ def choose_files(window, name, title, ''' mode = QFileDialog.FileMode.ExistingFile if select_only_single_file else QFileDialog.FileMode.ExistingFiles fd = FileDialog(title=title, name=name, filters=filters, default_dir=default_dir, - parent=window, add_all_files_filter=all_files, mode=mode, + parent=window, add_all_files_filter=all_files, mode=mode, no_save_dir=no_save_dir, ) fd.setParent(None) if fd.accepted: diff --git a/src/calibre/gui2/win_file_dialogs.py b/src/calibre/gui2/win_file_dialogs.py index 52e0587781..b8b9007fd5 100644 --- a/src/calibre/gui2/win_file_dialogs.py +++ b/src/calibre/gui2/win_file_dialogs.py @@ -260,13 +260,13 @@ def choose_dir(window, name, title, default_dir='~', no_save_dir=False): def choose_files(window, name, title, - filters=(), all_files=True, select_only_single_file=False, default_dir='~'): - name, initial_folder = get_initial_folder(name, title, default_dir) + filters=(), all_files=True, select_only_single_file=False, default_dir='~', no_save_dir=False): + name, initial_folder = get_initial_folder(name, title, default_dir, no_save_dir) file_types = list(filters) if all_files: file_types.append((_('All files'), ['*'])) ans = run_file_dialog(window, title, allow_multiple=not select_only_single_file, initial_folder=initial_folder, file_types=file_types) - if ans: + if ans and not no_save_dir: dynamic.set(name, os.path.dirname(ans[0])) return ans return None