summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Jacq <mig@mig5.net>2017-05-29 13:47:05 +1000
committerMiguel Jacq <mig@mig5.net>2017-05-29 13:47:05 +1000
commit8f79fc392d6ac9085ca699d4713ad7d3c397d717 (patch)
tree4f8d31100066c4e382e513c60ce1bdd7d91503b8
parent68089a9850be184fea98b6916542d8d585b28395 (diff)
downloadonionshare-8f79fc392d6ac9085ca699d4713ad7d3c397d717.tar.gz
onionshare-8f79fc392d6ac9085ca699d4713ad7d3c397d717.zip
Fix file dialog by subclassing/overriding it, which allows for single selection of a file or folder, as well as multiple
-rw-r--r--onionshare_gui/file_selection.py34
1 files changed, 22 insertions, 12 deletions
diff --git a/onionshare_gui/file_selection.py b/onionshare_gui/file_selection.py
index c13a4880..7480709f 100644
--- a/onionshare_gui/file_selection.py
+++ b/onionshare_gui/file_selection.py
@@ -209,19 +209,10 @@ class FileSelection(QtWidgets.QVBoxLayout):
"""
Add button clicked.
"""
- file_dialog = QtWidgets.QFileDialog(caption=strings._('gui_choose_items', 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, False)
- 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)
-
+ file_dialog = FileDialog() #caption=strings._('gui_choose_items', True))
if file_dialog.exec_() == QtWidgets.QDialog.Accepted:
- for filename in file_dialog.selectedFiles():
- self.file_list.add_file(filename)
+ for filename in file_dialog.selectedFiles():
+ self.file_list.add_file(filename)
self.update()
@@ -261,3 +252,22 @@ class FileSelection(QtWidgets.QVBoxLayout):
Set the Qt app focus on the file selection box.
"""
self.file_list.setFocus()
+
+class FileDialog(QtWidgets.QFileDialog):
+ """
+ Overridden version of QFileDialog which allows us to select
+ folders as well as, or instead of, files.
+ """
+ def __init__(self, *args):
+ QtWidgets.QFileDialog.__init__(self, *args)
+ self.setOption(self.DontUseNativeDialog, True)
+ self.setOption(self.ReadOnly, True)
+ self.setOption(self.ShowDirsOnly, False)
+ self.setFileMode(self.ExistingFiles)
+ tree_view = self.findChild(QtWidgets.QTreeView)
+ tree_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
+ list_view = self.findChild(QtWidgets.QListView, "listView")
+ list_view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
+
+ def accept(self):
+ QtWidgets.QDialog.accept(self)