Add an option to select multiple directories from the 'Add Directory' window

This commit is contained in:
Lukáš Lalinský
2008-01-27 08:51:35 +01:00
3 changed files with 33 additions and 3 deletions

View File

@@ -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):

View File

@@ -32,6 +32,7 @@ class InterfaceOptionsPage(OptionsPage):
options = [
BoolOption("setting", "toolbar_show_labels", True),
BoolOption("setting", "toolbar_multiselect", False),
]
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()

View File

@@ -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"))