From d9e882cbdcc792f5eae2f9cd8a7146b9d72bbaea Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Sun, 21 May 2017 16:14:32 +1000 Subject: [PATCH 1/4] Make it possible to select multiple folders by using non-native QFileDialog --- onionshare_gui/file_selection.py | 18 ++++++++++++++---- share/locale/en.json | 2 +- share/locale/fr.json | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/onionshare_gui/file_selection.py b/onionshare_gui/file_selection.py index 2ebbbb75..0de96e02 100644 --- a/onionshare_gui/file_selection.py +++ b/onionshare_gui/file_selection.py @@ -225,10 +225,20 @@ class FileSelection(QtWidgets.QVBoxLayout): """ Add folder button clicked. """ - filename = QtWidgets.QFileDialog.getExistingDirectory( - caption=strings._('gui_choose_folder', True), options=QtWidgets.QFileDialog.ReadOnly) - if filename: - self.file_list.add_file(str(filename)) + file_dialog = QtWidgets.QFileDialog(caption=strings._('gui_choose_folder', True)) + file_dialog.setFileMode(QtWidgets.QFileDialog.Directory) + file_dialog.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True) + file_dialog.setOption(QtWidgets.QFileDialog.ReadOnly, True) + file_dialog.setOption(QtWidgets.QFileDialog.ShowDirsOnly, True) + tree_view = file_dialog.findChild(QtWidgets.QTreeView) + tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + list_view = file_dialog.findChild(QtWidgets.QListView, "listView") + list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + + if file_dialog.exec_() == QtWidgets.QDialog.Accepted: + for filename in file_dialog.selectedFiles(): + self.file_list.add_file(filename) + self.update() def delete_file(self): diff --git a/share/locale/en.json b/share/locale/en.json index 701b067c..2b4fa116 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -24,7 +24,7 @@ "help_filename": "List of files or folders to share", "gui_drag_and_drop": "Drag and drop\nfiles here", "gui_add_files": "Add Files", - "gui_add_folder": "Add Folder", + "gui_add_folder": "Add Folders", "gui_delete": "Delete", "gui_choose_files": "Choose files", "gui_choose_folder": "Choose folder", diff --git a/share/locale/fr.json b/share/locale/fr.json index ce9cfa15..842bf22b 100644 --- a/share/locale/fr.json +++ b/share/locale/fr.json @@ -21,7 +21,7 @@ "help_filename": "Liste des fichiers ou dossiers à partager", "gui_drag_and_drop": "Glissez déposez\nles fichiers ici", "gui_add_files": "Ajouter des fichiers", - "gui_add_folder": "Ajouter un dossier", + "gui_add_folder": "Ajouter des dossiers", "gui_delete": "Supprimer", "gui_choose_files": "Sélectionnez des fichiers", "gui_choose_folder": "Sélectionnez un dossier", From 9d2074961019bad2f4c55c1b50d4ba0793c69b6e Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Sun, 21 May 2017 16:23:48 +1000 Subject: [PATCH 2/4] Adjust French translation for the dialog caption to be plural --- share/locale/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/locale/fr.json b/share/locale/fr.json index 842bf22b..7197f9dc 100644 --- a/share/locale/fr.json +++ b/share/locale/fr.json @@ -24,7 +24,7 @@ "gui_add_folder": "Ajouter des dossiers", "gui_delete": "Supprimer", "gui_choose_files": "Sélectionnez des fichiers", - "gui_choose_folder": "Sélectionnez un dossier", + "gui_choose_folder": "Sélectionnez des dossiers", "gui_start_server": "Démarrer le serveur", "gui_stop_server": "Arrêter le serveur", "gui_copy_url": "Copier URL", From 4b4de9add31a2ee87c740c4b3522f676042cee00 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Sun, 21 May 2017 16:25:15 +1000 Subject: [PATCH 3/4] Adjust folder dialog caption to be plural --- share/locale/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/locale/en.json b/share/locale/en.json index 2b4fa116..754993a2 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -27,7 +27,7 @@ "gui_add_folder": "Add Folders", "gui_delete": "Delete", "gui_choose_files": "Choose files", - "gui_choose_folder": "Choose folder", + "gui_choose_folder": "Choose folders", "gui_start_server": "Start Sharing", "gui_stop_server": "Stop Sharing", "gui_copy_url": "Copy URL", From 06f08ab51b0a99ba110eecfdcd9105adcbbba8ed Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 22 May 2017 16:10:55 -0700 Subject: [PATCH 4/4] Use non-native QFileDialog for file selection as well as directory selection, to have a consistent UI --- onionshare_gui/file_selection.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/onionshare_gui/file_selection.py b/onionshare_gui/file_selection.py index 0de96e02..f24c61ea 100644 --- a/onionshare_gui/file_selection.py +++ b/onionshare_gui/file_selection.py @@ -214,11 +214,19 @@ class FileSelection(QtWidgets.QVBoxLayout): """ Add files button clicked. """ - filenames = QtWidgets.QFileDialog.getOpenFileNames( - caption=strings._('gui_choose_files', True), options=QtWidgets.QFileDialog.ReadOnly) - if filenames: - for filename in filenames[0]: - self.file_list.add_file(filename) + file_dialog = QtWidgets.QFileDialog(caption=strings._('gui_choose_files', True)) + file_dialog.setFileMode(QtWidgets.QFileDialog.ExistingFiles) + file_dialog.setOption(QtWidgets.QFileDialog.DontUseNativeDialog, True) + file_dialog.setOption(QtWidgets.QFileDialog.ReadOnly, True) + tree_view = file_dialog.findChild(QtWidgets.QTreeView) + tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + list_view = file_dialog.findChild(QtWidgets.QListView, "listView") + list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) + + if file_dialog.exec_() == QtWidgets.QDialog.Accepted: + for filename in file_dialog.selectedFiles(): + self.file_list.add_file(filename) + self.update() def add_dir(self):