diff options
author | Miguel Jacq <mig@mig5.net> | 2017-05-29 13:47:05 +1000 |
---|---|---|
committer | Miguel Jacq <mig@mig5.net> | 2017-05-29 13:47:05 +1000 |
commit | 8f79fc392d6ac9085ca699d4713ad7d3c397d717 (patch) | |
tree | 4f8d31100066c4e382e513c60ce1bdd7d91503b8 | |
parent | 68089a9850be184fea98b6916542d8d585b28395 (diff) | |
download | onionshare-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.py | 34 |
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) |