From af76f9b84c0b2f30e7ff6e44593429b7bdfd4365 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Thu, 21 May 2015 21:03:32 +0200 Subject: [PATCH] Move MultiDirsSelectDialog class to picard.ui.util --- picard/ui/mainwindow.py | 25 +++++-------------------- picard/ui/util.py | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/picard/ui/mainwindow.py b/picard/ui/mainwindow.py index 2b4ec009c..6f91ff075 100644 --- a/picard/ui/mainwindow.py +++ b/picard/ui/mainwindow.py @@ -37,7 +37,11 @@ from picard.ui.options.dialog import OptionsDialog from picard.ui.infodialog import FileInfoDialog, AlbumInfoDialog, ClusterInfoDialog from picard.ui.infostatus import InfoStatus from picard.ui.passworddialog import PasswordDialog -from picard.ui.util import find_starting_directory, ButtonLineEdit +from picard.ui.util import ( + find_starting_directory, + ButtonLineEdit, + MultiDirsSelectDialog +) from picard.util import icontheme, webbrowser2, throttle, thread from picard.util.cdrom import discid, get_cdrom_drives from picard.plugin import ExtensionPoint @@ -684,25 +688,6 @@ class MainWindow(QtGui.QMainWindow): if directory: dir_list.append(directory) else: - - class MultiDirsSelectDialog(QtGui.QFileDialog): - - """Custom file selection dialog which allow the selection - of multiple directories. - Depending on the platform, dialog may fallback on non-native. - """ - - def __init__(self, *args): - super(MultiDirsSelectDialog, self).__init__(*args) - self.setFileMode(self.Directory) - self.setOption(self.ShowDirsOnly) - if sys.platform == "darwin": - # The native dialog doesn't allow selecting >1 directory - self.setOption(self.DontUseNativeDialog) - for view in self.findChildren((QtGui.QListView, QtGui.QTreeView)): - if isinstance(view.model(), QtGui.QFileSystemModel): - view.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) - file_dialog = MultiDirsSelectDialog(self, "", current_directory) if file_dialog.exec_() == QtGui.QDialog.Accepted: dir_list = file_dialog.selectedFiles() diff --git a/picard/ui/util.py b/picard/ui/util.py index 3b60117fe..3558b6c48 100644 --- a/picard/ui/util.py +++ b/picard/ui/util.py @@ -93,3 +93,22 @@ class ButtonLineEdit(QtGui.QLineEdit): self.clear_button.setVisible(text != "") left, top, right, bottom = self._margins self.setTextMargins(left, top, right + self.clear_button.width(), bottom) + + +class MultiDirsSelectDialog(QtGui.QFileDialog): + + """Custom file selection dialog which allow the selection + of multiple directories. + Depending on the platform, dialog may fallback on non-native. + """ + + def __init__(self, *args): + super(MultiDirsSelectDialog, self).__init__(*args) + self.setFileMode(self.Directory) + self.setOption(self.ShowDirsOnly) + if sys.platform == "darwin": + # The native dialog doesn't allow selecting >1 directory + self.setOption(self.DontUseNativeDialog) + for view in self.findChildren((QtGui.QListView, QtGui.QTreeView)): + if isinstance(view.model(), QtGui.QFileSystemModel): + view.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)