Move MultiDirsSelectDialog class to picard.ui.util

This commit is contained in:
Laurent Monin
2015-05-21 21:03:32 +02:00
parent d85918148f
commit af76f9b84c
2 changed files with 24 additions and 20 deletions

View File

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

View File

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