From 644706a62a6558a76e072e2dbf4f3e0d91077337 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 2 Aug 2011 06:07:09 +0100 Subject: [PATCH] Fix review comments and cleanups --- openlp/core/lib/listwidgetwithdnd.py | 17 +++++-- openlp/core/lib/mediamanageritem.py | 50 +++++++++++-------- openlp/plugins/images/lib/mediaitem.py | 2 - openlp/plugins/media/lib/mediaitem.py | 2 - openlp/plugins/presentations/lib/mediaitem.py | 2 - 5 files changed, 42 insertions(+), 31 deletions(-) diff --git a/openlp/core/lib/listwidgetwithdnd.py b/openlp/core/lib/listwidgetwithdnd.py index 69bd67fdd..8474821a4 100644 --- a/openlp/core/lib/listwidgetwithdnd.py +++ b/openlp/core/lib/listwidgetwithdnd.py @@ -51,6 +51,9 @@ class ListWidgetWithDnD(QtGui.QListWidget): """ self.setAcceptDrops(True) self.setDragDropMode(QtGui.QAbstractItemView.DragDrop) + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'%s_dnd' % self.mimeDataText), + self.parent().loadFile) def mouseMoveEvent(self, event): """ @@ -71,7 +74,7 @@ class ListWidgetWithDnD(QtGui.QListWidget): drag.start(QtCore.Qt.CopyAction) def dragEnterEvent(self, event): - if event.mimeData().hasUrls: + if event.mimeData().hasUrls(): event.accept() else: event.ignore() @@ -93,9 +96,15 @@ class ListWidgetWithDnD(QtGui.QListWidget): if event.mimeData().hasUrls(): event.setDropAction(QtCore.Qt.CopyAction) event.accept() + files = [] for url in event.mimeData().urls(): - if os.path.isfile(url.toLocalFile()): - Receiver.send_message(u'%s_dnd' % self.mimeDataText, - url.toLocalFile()) + localFile = unicode(url.toLocalFile()) + if os.path.isfile(localFile): + files.append(localFile) + elif os.path.isdir(localFile): + listing = os.listdir(localFile) + for file in listing: + files.append(os.path.join(localFile,file)) + Receiver.send_message(u'%s_dnd' % self.mimeDataText,files) else: event.ignore() diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 2b2e8c6e3..7852a0d5c 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -341,25 +341,31 @@ class MediaManagerItem(QtGui.QWidget): self.validateAndLoad(files) Receiver.send_message(u'cursor_normal') - def loadFile(self, filename): + def loadFile(self, files): """ - Turn file from Drag and Drop into a array so the Validate code - can runn it. + Turn file from Drag and Drop into an array so the Validate code + can run it. - ``filename`` - The file to be loaded + ``files`` + The list of files to be loaded """ - filename = unicode(filename) - type = filename.split(u'.')[-1] - if type.lower() not in self.onNewFileMasks: - critical_error_message_box( - translate('OpenLP.MediaManagerItem', - 'Invalid File Type'), - unicode(translate('OpenLP.MediaManagerItem', - 'Invalid File %s.\nSuffix not supported')) - % filename) - else: - self.validateAndLoad([filename]) + newFiles = [] + errorShown = False + for file in files: + type = file.split(u'.')[-1] + if type.lower() not in self.onNewFileMasks: + if not errorShown: + critical_error_message_box( + translate('OpenLP.MediaManagerItem', + 'Invalid File Type'), + unicode(translate('OpenLP.MediaManagerItem', + 'Invalid File %s.\nSuffix not supported')) + % file) + errorShown = True + else: + newFiles.append(file) + if file: + self.validateAndLoad(newFiles) def validateAndLoad(self, files): """ @@ -373,14 +379,11 @@ class MediaManagerItem(QtGui.QWidget): for count in range(0, self.listView.count()): names.append(self.listView.item(count).text()) newFiles = [] + duplicatesFound = False for file in files: filename = os.path.split(unicode(file))[1] if filename in names: - critical_error_message_box( - UiStrings().Duplicate, - unicode(translate('OpenLP.MediaManagerItem', - 'Duplicate filename %s.\nThis filename is already in ' - 'the list')) % filename) + duplicatesFound = True else: newFiles.append(file) self.loadList(newFiles) @@ -388,6 +391,11 @@ class MediaManagerItem(QtGui.QWidget): SettingsManager.set_last_dir(self.settingsSection, lastDir) SettingsManager.set_list(self.settingsSection, self.settingsSection, self.getFileList()) + if duplicatesFound: + critical_error_message_box( + UiStrings().Duplicate, + unicode(translate('OpenLP.MediaManagerItem', + 'Duplicate files found on import and ignored.'))) def contextMenu(self, point): item = self.listView.itemAt(point) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 09811ead7..acd420880 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -54,8 +54,6 @@ class ImageMediaItem(MediaManagerItem): QtCore.SIGNAL(u'live_theme_changed'), self.liveThemeChanged) # Allow DnD from the desktop self.listView.activateDnD() - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'images_dnd'), self.loadFile) def retranslateUi(self): self.onNewPrompt = translate('ImagePlugin.MediaItem', diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 54682dbf6..e3c36bd77 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -63,8 +63,6 @@ class MediaMediaItem(MediaManagerItem): self.createPhonon) # Allow DnD from the desktop self.listView.activateDnD() - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'media_dnd'), self.loadFile) def retranslateUi(self): self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index abd597c6c..85721c65d 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -60,8 +60,6 @@ class PresentationMediaItem(MediaManagerItem): QtCore.SIGNAL(u'mediaitem_presentation_rebuild'), self.rebuild) # Allow DnD from the desktop self.listView.activateDnD() - QtCore.QObject.connect(Receiver.get_receiver(), - QtCore.SIGNAL(u'presentations_dnd'), self.loadFile) def retranslateUi(self): """