From af0d1b9c7e9fb1ee19cc97955c8578e9b0d697ac Mon Sep 17 00:00:00 2001 From: Will Date: Wed, 23 Jan 2008 22:30:54 -0500 Subject: [PATCH 1/2] adding multiple direction selection option --- picard/ui/mainwindow.py | 28 +++++++++++++++++++++++++--- picard/ui/options/interface.py | 3 +++ picard/ui/ui_options_interface.py | 5 +++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index 4fa106c18..39b872a67 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -460,10 +460,32 @@ class MainWindow(QtGui.QMainWindow): """Add directory to the tagger.""" current_directory = self.config.persist["current_directory"] or QtCore.QDir.homePath() current_directory = find_existing_path(unicode(current_directory)) - directory = QtGui.QFileDialog.getExistingDirectory(self, "", current_directory) - if directory: + + dir_list = [] + if not self.config.setting["toolbar_multiselect"]: + directory = QtGui.QFileDialog.getExistingDirectory(self, "", current_directory) + if directory: + dir_list.append(directory) + else: + # Use a custom file selection dialog to allow the selection of multiple directories + file_dialog = QtGui.QFileDialog(self, "", current_directory) + file_dialog.setFileMode(QtGui.QFileDialog.DirectoryOnly) + tree_view = file_dialog.findChild(QtGui.QTreeView) + tree_view.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) + list_view = file_dialog.findChild(QtGui.QListView, "listView") + list_view.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) + + if file_dialog.exec_() == QtGui.QDialog.Accepted: + dir_list = file_dialog.selectedFiles() + + if len(dir_list) == 1: + self.config.persist["current_directory"] = dir_list[0] + elif len(dir_list) > 1: + (parent, dir) = os.path.split(str(dir_list[0])) + self.config.persist["current_directory"] = parent + + for directory in dir_list: directory = unicode(directory) - self.config.persist["current_directory"] = directory self.tagger.add_directory(directory) def generate_playlist(self): diff --git a/picard/ui/options/interface.py b/picard/ui/options/interface.py index 560ade686..18b4f1164 100644 --- a/picard/ui/options/interface.py +++ b/picard/ui/options/interface.py @@ -32,6 +32,7 @@ class InterfaceOptionsPage(OptionsPage): options = [ BoolOption("setting", "toolbar_show_labels", True), + BoolOption("setting", "toolbar_multiselect", True), ] def __init__(self, parent=None): @@ -41,9 +42,11 @@ class InterfaceOptionsPage(OptionsPage): def load(self): self.ui.toolbar_show_labels.setChecked(self.config.setting["toolbar_show_labels"]) + self.ui.toolbar_multiselect.setChecked(self.config.setting["toolbar_multiselect"]) def save(self): self.config.setting["toolbar_show_labels"] = self.ui.toolbar_show_labels.isChecked() + self.config.setting["toolbar_multiselect"] = self.ui.toolbar_multiselect.isChecked() self.tagger.window.update_toolbar_style() diff --git a/picard/ui/ui_options_interface.py b/picard/ui/ui_options_interface.py index 7b568fa4d..1eb511964 100644 --- a/picard/ui/ui_options_interface.py +++ b/picard/ui/ui_options_interface.py @@ -29,7 +29,11 @@ class Ui_InterfaceOptionsPage(object): self.toolbar_show_labels = QtGui.QCheckBox(self.groupBox_2) self.toolbar_show_labels.setObjectName("toolbar_show_labels") + self.toolbar_multiselect = QtGui.QCheckBox(self.groupBox_2) + self.toolbar_multiselect.setObjectName("toolbar_multiselect") + self.vboxlayout1.addWidget(self.toolbar_show_labels) + self.vboxlayout1.addWidget(self.toolbar_multiselect) self.vboxlayout.addWidget(self.groupBox_2) spacerItem = QtGui.QSpacerItem(181,21,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding) @@ -41,4 +45,5 @@ class Ui_InterfaceOptionsPage(object): def retranslateUi(self, InterfaceOptionsPage): self.groupBox_2.setTitle(_("Toolbar")) self.toolbar_show_labels.setText(_("Show text labels under icons")) + self.toolbar_multiselect.setText(_("Allow selection of multiple directories")) From a60f9e90ca76fd5c0a933565755b059c9983178e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Lalinsk=C3=BD?= Date: Sun, 27 Jan 2008 08:50:19 +0100 Subject: [PATCH 2/2] Disable the multi-select option by default, as it leads to non-native UI on Windows and Mac. --- picard/ui/options/interface.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/picard/ui/options/interface.py b/picard/ui/options/interface.py index 18b4f1164..600b8a4b0 100644 --- a/picard/ui/options/interface.py +++ b/picard/ui/options/interface.py @@ -32,7 +32,7 @@ class InterfaceOptionsPage(OptionsPage): options = [ BoolOption("setting", "toolbar_show_labels", True), - BoolOption("setting", "toolbar_multiselect", True), + BoolOption("setting", "toolbar_multiselect", False), ] def __init__(self, parent=None):