From df1faa2a8dfc71f5c7dac57aa0b197c4c80e1343 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Mon, 25 Mar 2013 21:17:46 +0100 Subject: [PATCH 01/11] - Fixed traceback on canceling the 'choose group' dialog - Clear the 'new group' lineedit in the 'choose group' dialog --- openlp/plugins/images/forms/choosegroupform.py | 1 + openlp/plugins/images/lib/mediaitem.py | 1 + 2 files changed, 2 insertions(+) diff --git a/openlp/plugins/images/forms/choosegroupform.py b/openlp/plugins/images/forms/choosegroupform.py index bbb57255c..f5478d014 100644 --- a/openlp/plugins/images/forms/choosegroupform.py +++ b/openlp/plugins/images/forms/choosegroupform.py @@ -50,6 +50,7 @@ class ChooseGroupForm(QtGui.QDialog, Ui_ChooseGroupDialog): ``selected_group`` The ID of the group that should be selected by default when showing the dialog """ + self.new_group_edit.clear() if selected_group is not None: for i in range(self.group_combobox.count()): if self.group_combobox.itemData(i) == selected_group: diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 1b2fe512e..ceb67f74b 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -394,6 +394,7 @@ class ImageMediaItem(MediaManagerItem): ``initial_load`` When set to False, the busy cursor and progressbar will be shown while loading images """ + parent_group = None if target_group is None: # Find out if a group must be pre-selected preselect_group = None From 44547769c637a46210f488ce751b1968a84d5bd4 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 26 Mar 2013 10:47:05 +0100 Subject: [PATCH 02/11] - Fixed traceback on adding multiple image groups to the service in one go - Cleaned up obsolete line in imagetab --- openlp/core/lib/mediamanageritem.py | 2 +- openlp/plugins/images/lib/imagetab.py | 1 - openlp/plugins/images/lib/mediaitem.py | 117 ++++++++++++++----------- 3 files changed, 65 insertions(+), 55 deletions(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index e261bfe59..960708620 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -464,7 +464,7 @@ class MediaManagerItem(QtGui.QWidget): translate('OpenLP.MediaManagerItem', 'You must select one or more items to preview.')) else: log.debug(u'%s Preview requested', self.plugin.name) - service_item = self.build_service_item() + service_item = self.build_service_item(context=ServiceItemContext.Preview) if service_item: service_item.from_plugin = True self.preview_controller.add_service_item(service_item) diff --git a/openlp/plugins/images/lib/imagetab.py b/openlp/plugins/images/lib/imagetab.py index 83d015cb8..b43b19097 100644 --- a/openlp/plugins/images/lib/imagetab.py +++ b/openlp/plugins/images/lib/imagetab.py @@ -32,7 +32,6 @@ from PyQt4 import QtGui from openlp.core.lib import Registry, SettingsTab, Settings, UiStrings, translate - class ImageTab(SettingsTab): """ ImageTab is the images settings tab in the settings dialog. diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index ceb67f74b..9bdd1dd11 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -32,7 +32,7 @@ import os from PyQt4 import QtCore, QtGui -from openlp.core.lib import ItemCapabilities, MediaManagerItem, Registry, ServiceItemContext, Settings, \ +from openlp.core.lib import ItemCapabilities, MediaManagerItem, Registry, ServiceItem, ServiceItemContext, Settings, \ StringContent, TreeWidgetWithDnD, UiStrings, build_icon, check_directory_exists, check_item_selected, \ create_thumb, translate, validate_thumb from openlp.core.lib.ui import create_widget_action, critical_error_message_box @@ -538,63 +538,74 @@ class ImageMediaItem(MediaManagerItem): """ background = QtGui.QColor(Settings().value(self.settings_section + u'/background color')) if item: - items = [item] + new_items = [item] else: - items = self.list_view.selectedItems() - if not items: + new_items = self.list_view.selectedItems() + if not new_items: return False - # Determine service item title - if isinstance(items[0].data(0, QtCore.Qt.UserRole), ImageGroups): - service_item.title = items[0].text(0) - else: - service_item.title = unicode(self.plugin.name_strings[u'plural']) - service_item.add_capability(ItemCapabilities.CanMaintain) - service_item.add_capability(ItemCapabilities.CanPreview) - service_item.add_capability(ItemCapabilities.CanLoop) - service_item.add_capability(ItemCapabilities.CanAppend) - # force a nonexistent theme - service_item.theme = -1 - missing_items = [] - missing_items_filenames = [] - # Expand groups to images - for bitem in items: + for bitem in new_items: + new_service_item = ServiceItem(self.plugin) + new_service_item.add_icon(self.plugin.icon_path) + # Determine service item title + if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups): + new_service_item.title = bitem.text(0) + else: + new_service_item.title = unicode(self.plugin.name_strings[u'plural']) + new_service_item.add_capability(ItemCapabilities.CanMaintain) + new_service_item.add_capability(ItemCapabilities.CanPreview) + new_service_item.add_capability(ItemCapabilities.CanLoop) + new_service_item.add_capability(ItemCapabilities.CanAppend) + # force a nonexistent theme + new_service_item.theme = -1 + sub_images = [] + missing_items = [] + missing_items_filenames = [] + # Expand groups to images if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups) or bitem.data(0, QtCore.Qt.UserRole) is None: for index in range(0, bitem.childCount()): if isinstance(bitem.child(index).data(0, QtCore.Qt.UserRole), ImageFilenames): - items.append(bitem.child(index)) - items.remove(bitem) - # Don't try to display empty groups - if not items: - return False - # Find missing files - for bitem in items: - filename = bitem.data(0, QtCore.Qt.UserRole).filename - if not os.path.exists(filename): - missing_items.append(bitem) - missing_items_filenames.append(filename) - for item in missing_items: - items.remove(item) - # We cannot continue, as all images do not exist. - if not items: - if not remote: - critical_error_message_box( - translate('ImagePlugin.MediaItem', 'Missing Image(s)'), - translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s') % - u'\n'.join(missing_items_filenames)) - return False - # We have missing as well as existing images. We ask what to do. - elif missing_items and QtGui.QMessageBox.question(self, - translate('ImagePlugin.MediaItem', 'Missing Image(s)'), - translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s\n' - 'Do you want to add the other images anyway?') % u'\n'.join(missing_items_filenames), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No: - return False - # Continue with the existing images. - for bitem in items: - filename = bitem.data(0, QtCore.Qt.UserRole).filename - name = os.path.split(filename)[1] - service_item.add_from_image(filename, name, background) - return True + sub_images.append(bitem.child(index)) + # Don't try to display empty groups + if not sub_images: + return False + # Find missing files + for bitem in sub_images: + filename = bitem.data(0, QtCore.Qt.UserRole).filename + if not os.path.exists(filename): + missing_items.append(bitem) + missing_items_filenames.append(filename) + for item in missing_items: + sub_images.remove(item) + # We cannot continue, as all images do not exist. + if not sub_images: + if not remote: + critical_error_message_box( + translate('ImagePlugin.MediaItem', 'Missing Image(s)'), + translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s') % + u'\n'.join(missing_items_filenames)) + return False + # We have missing as well as existing images. We ask what to do. + elif missing_items and QtGui.QMessageBox.question(self, + translate('ImagePlugin.MediaItem', 'Missing Image(s)'), + translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s\n' + 'Do you want to add the other images anyway?') % u'\n'.join(missing_items_filenames), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \ + QtGui.QMessageBox.No: + return False + # Continue with the existing images. + for sub_image in sub_images: + filename = sub_image.data(0, QtCore.Qt.UserRole).filename + name = os.path.split(filename)[1] + new_service_item.add_from_image(filename, name, background) + # Add the service item to the correct controller + if context == ServiceItemContext.Service: + self.service_manager.add_service_item(new_service_item) + elif context == ServiceItemContext.Preview: + self.preview_controller.add_service_item(new_service_item) + elif context == ServiceItemContext.Live: + self.live_controller.add_service_item(new_service_item) + # Return False because we added the service item ourselves + return False def check_group_exists(self, new_group): """ From 6b032d52e554a2080ef9fb3127df1d2c0ccd5bf8 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 26 Mar 2013 11:32:22 +0100 Subject: [PATCH 03/11] - Fixed adding single images --- openlp/plugins/images/lib/mediaitem.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 163d7094e..75c6a1216 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -565,6 +565,8 @@ class ImageMediaItem(MediaManagerItem): for index in range(0, bitem.childCount()): if isinstance(bitem.child(index).data(0, QtCore.Qt.UserRole), ImageFilenames): sub_images.append(bitem.child(index)) + if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageFilenames): + sub_images.append(bitem) # Don't try to display empty groups if not sub_images: return False From 28f8e31bf0223b206e94f622e791f0069a28275e Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Fri, 29 Mar 2013 13:00:06 +0100 Subject: [PATCH 04/11] Added a simple test for onResetClick() --- .../functional/openlp_plugins/images/test_lib.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/functional/openlp_plugins/images/test_lib.py b/tests/functional/openlp_plugins/images/test_lib.py index a355e956b..6349745c2 100644 --- a/tests/functional/openlp_plugins/images/test_lib.py +++ b/tests/functional/openlp_plugins/images/test_lib.py @@ -23,6 +23,7 @@ class TestImageMediaItem(TestCase): Registry.create() Registry().register(u'service_list', MagicMock()) Registry().register(u'main_window', self.mocked_main_window) + Registry().register(u'live_controller', MagicMock()) mocked_parent = MagicMock() mocked_plugin = MagicMock() with patch(u'openlp.plugins.images.lib.mediaitem.ImageMediaItem.__init__') as mocked_init: @@ -110,3 +111,17 @@ class TestImageMediaItem(TestCase): # THEN: loadFullList() should not have been called assert self.media_item.manager.save_object.call_count == 2, \ u'loadFullList() should have been called only once' + + def on_reset_click_test(self): + """ + Test that onResetClick() actually resets the background + """ + # GIVEN: + self.media_item.resetAction = MagicMock() + + # WHEN: + self.media_item.onResetClick() + + # THEN: + self.media_item.resetAction.setVisible.assert_called_with(False) + self.media_item.live_controller.display.reset_image.assert_called_with() From e8dbbdfc896a68e9c353ef707254b8019e0c0ba2 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Fri, 29 Mar 2013 15:15:16 +0100 Subject: [PATCH 05/11] Added a test for recursively_delete_group() --- .../openlp_plugins/images/test_lib.py | 59 ++++++++++++++++-- tests/interfaces/openlp_plugins/__init__.pyc | Bin 184 -> 0 bytes 2 files changed, 55 insertions(+), 4 deletions(-) delete mode 100644 tests/interfaces/openlp_plugins/__init__.pyc diff --git a/tests/functional/openlp_plugins/images/test_lib.py b/tests/functional/openlp_plugins/images/test_lib.py index 6349745c2..bdfe29373 100644 --- a/tests/functional/openlp_plugins/images/test_lib.py +++ b/tests/functional/openlp_plugins/images/test_lib.py @@ -9,7 +9,7 @@ from unittest import TestCase from mock import MagicMock, patch from openlp.core.lib import Registry -from openlp.plugins.images.lib.db import ImageFilenames +from openlp.plugins.images.lib.db import ImageFilenames, ImageGroups from openlp.plugins.images.lib.mediaitem import ImageMediaItem @@ -116,12 +116,63 @@ class TestImageMediaItem(TestCase): """ Test that onResetClick() actually resets the background """ - # GIVEN: + # GIVEN: A mocked version of resetAction self.media_item.resetAction = MagicMock() - # WHEN: + # WHEN: onResetClick is called self.media_item.onResetClick() - # THEN: + # THEN: the resetAction should be set visible, and the image should be reset self.media_item.resetAction.setVisible.assert_called_with(False) self.media_item.live_controller.display.reset_image.assert_called_with() + + def recursively_delete_group_side_effect(*args, **kwargs): + """ + Side effect method that creates custom retun values for the recursively_delete_group method + """ + if args[1] == ImageFilenames and args[2]: + # Create some fake objects that should be removed + returned_object1 = ImageFilenames() + returned_object1.id = 1 + returned_object1.filename = u'/tmp/test_file_1.jpg' + returned_object2 = ImageFilenames() + returned_object2.id = 2 + returned_object2.filename = u'/tmp/test_file_2.jpg' + returned_object3 = ImageFilenames() + returned_object3.id = 3 + returned_object3.filename = u'/tmp/test_file_3.jpg' + return [returned_object1, returned_object2, returned_object3] + if args[1] == ImageGroups and args[2]: + # Change the parent_id that is matched so we don't get into an endless loop + ImageGroups.parent_id = 0 + # Create a fake group that will be used in the next run + returned_object1 = ImageGroups() + returned_object1.id = 1 + return [returned_object1] + return [] + + def recursively_delete_group_test(self): + """ + Test that recursively_delete_group() works + """ + # GIVEN: An ImageGroups object and mocked functions + with patch(u'openlp.core.utils.delete_file') as mocked_delete_file: + ImageFilenames.group_id = 1 + ImageGroups.parent_id = 1 + self.media_item.manager = MagicMock() + self.media_item.manager.get_all_objects.side_effect = self.recursively_delete_group_side_effect + self.media_item.servicePath = "" + test_group = ImageGroups() + test_group.id = 1 + + # WHEN: recursively_delete_group() is called + self.media_item.recursively_delete_group(test_group) + + # THEN: + assert mocked_delete_file.call_count == 0, u'delete_file() should not be called' + assert self.media_item.manager.delete_object.call_count == 7, \ + u'manager.delete_object() should be called exactly 7 times' + + # CLEANUP: Remove added attribute from ImageFilenames and ImageGroups + delattr(ImageFilenames, 'group_id') + delattr(ImageGroups, 'parent_id') diff --git a/tests/interfaces/openlp_plugins/__init__.pyc b/tests/interfaces/openlp_plugins/__init__.pyc deleted file mode 100644 index 0d24c9eff54ac7d86f14523ef46194c4bbc24cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmZ9GO$q`r423JY5W#!QX3Pa-@BpGC9-x#qGe-JH(*ZrLhY(zw0apgz3w(L-vV3nh zpI3LW>NgA72NAEtoKn|jCZ|SB{TUl!a7zKfL|4!-^d;TVR)%xNc Date: Tue, 14 May 2013 15:58:07 +0200 Subject: [PATCH 06/11] Reverted 'adding multiple service items' functionality --- openlp/plugins/images/lib/mediaitem.py | 119 +++++++++++-------------- 1 file changed, 53 insertions(+), 66 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index e8a81d886..dc2aa3660 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -32,7 +32,7 @@ import os from PyQt4 import QtCore, QtGui -from openlp.core.lib import ItemCapabilities, MediaManagerItem, Registry, ServiceItem, ServiceItemContext, Settings, \ +from openlp.core.lib import ItemCapabilities, MediaManagerItem, Registry, ServiceItemContext, Settings, \ StringContent, TreeWidgetWithDnD, UiStrings, build_icon, check_directory_exists, check_item_selected, \ create_thumb, translate, validate_thumb from openlp.core.lib.ui import create_widget_action, critical_error_message_box @@ -538,76 +538,63 @@ class ImageMediaItem(MediaManagerItem): """ background = QtGui.QColor(Settings().value(self.settings_section + u'/background color')) if item: - new_items = [item] + items = [item] else: - new_items = self.list_view.selectedItems() - if not new_items: + items = self.list_view.selectedItems() + if not items: return False - for bitem in new_items: - new_service_item = ServiceItem(self.plugin) - new_service_item.add_icon(self.plugin.icon_path) - # Determine service item title - if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups): - new_service_item.title = bitem.text(0) - else: - new_service_item.title = unicode(self.plugin.name_strings[u'plural']) - new_service_item.add_capability(ItemCapabilities.CanMaintain) - new_service_item.add_capability(ItemCapabilities.CanPreview) - new_service_item.add_capability(ItemCapabilities.CanLoop) - new_service_item.add_capability(ItemCapabilities.CanAppend) - # force a nonexistent theme - new_service_item.theme = -1 - sub_images = [] - missing_items = [] - missing_items_filenames = [] - # Expand groups to images + # Determine service item title + if isinstance(items[0].data(0, QtCore.Qt.UserRole), ImageGroups): + service_item.title = items[0].text(0) + else: + service_item.title = unicode(self.plugin.name_strings[u'plural']) + service_item.add_capability(ItemCapabilities.CanMaintain) + service_item.add_capability(ItemCapabilities.CanPreview) + service_item.add_capability(ItemCapabilities.CanLoop) + service_item.add_capability(ItemCapabilities.CanAppend) + # force a nonexistent theme + service_item.theme = -1 + missing_items = [] + missing_items_filenames = [] + # Expand groups to images + for bitem in items: if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups) or bitem.data(0, QtCore.Qt.UserRole) is None: for index in range(0, bitem.childCount()): if isinstance(bitem.child(index).data(0, QtCore.Qt.UserRole), ImageFilenames): - sub_images.append(bitem.child(index)) - if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageFilenames): - sub_images.append(bitem) - # Don't try to display empty groups - if not sub_images: - return False - # Find missing files - for bitem in sub_images: - filename = bitem.data(0, QtCore.Qt.UserRole).filename - if not os.path.exists(filename): - missing_items.append(bitem) - missing_items_filenames.append(filename) - for item in missing_items: - sub_images.remove(item) - # We cannot continue, as all images do not exist. - if not sub_images: - if not remote: - critical_error_message_box( - translate('ImagePlugin.MediaItem', 'Missing Image(s)'), - translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s') % - u'\n'.join(missing_items_filenames)) - return False - # We have missing as well as existing images. We ask what to do. - elif missing_items and QtGui.QMessageBox.question(self, - translate('ImagePlugin.MediaItem', 'Missing Image(s)'), - translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s\n' - 'Do you want to add the other images anyway?') % u'\n'.join(missing_items_filenames), - QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == \ - QtGui.QMessageBox.No: - return False - # Continue with the existing images. - for sub_image in sub_images: - filename = sub_image.data(0, QtCore.Qt.UserRole).filename - name = os.path.split(filename)[1] - new_service_item.add_from_image(filename, name, background) - # Add the service item to the correct controller - if context == ServiceItemContext.Service: - self.service_manager.add_service_item(new_service_item) - elif context == ServiceItemContext.Preview: - self.preview_controller.add_service_item(new_service_item) - elif context == ServiceItemContext.Live: - self.live_controller.add_service_item(new_service_item) - # Return False because we added the service item ourselves - return False + items.append(bitem.child(index)) + items.remove(bitem) + # Don't try to display empty groups + if not items: + return False + # Find missing files + for bitem in items: + filename = bitem.data(0, QtCore.Qt.UserRole).filename + if not os.path.exists(filename): + missing_items.append(bitem) + missing_items_filenames.append(filename) + for item in missing_items: + items.remove(item) + # We cannot continue, as all images do not exist. + if not items: + if not remote: + critical_error_message_box( + translate('ImagePlugin.MediaItem', 'Missing Image(s)'), + translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s') % + u'\n'.join(missing_items_filenames)) + return False + # We have missing as well as existing images. We ask what to do. + elif missing_items and QtGui.QMessageBox.question(self, + translate('ImagePlugin.MediaItem', 'Missing Image(s)'), + translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s\n' + 'Do you want to add the other images anyway?') % u'\n'.join(missing_items_filenames), + QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No: + return False + # Continue with the existing images. + for bitem in items: + filename = bitem.data(0, QtCore.Qt.UserRole).filename + name = os.path.split(filename)[1] + service_item.add_from_image(filename, name, background) + return True def check_group_exists(self, new_group): """ From 71335357dd8a3178b1873af4a7a5064171dc9fbc Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 14 May 2013 16:17:56 +0200 Subject: [PATCH 07/11] - Fixed traceback on adding multiple image groups to the service in one go --- openlp/plugins/images/lib/mediaitem.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index dc2aa3660..cb4656539 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -554,28 +554,23 @@ class ImageMediaItem(MediaManagerItem): service_item.add_capability(ItemCapabilities.CanAppend) # force a nonexistent theme service_item.theme = -1 - missing_items = [] missing_items_filenames = [] + images_filenames = [] # Expand groups to images for bitem in items: if isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageGroups) or bitem.data(0, QtCore.Qt.UserRole) is None: for index in range(0, bitem.childCount()): if isinstance(bitem.child(index).data(0, QtCore.Qt.UserRole), ImageFilenames): - items.append(bitem.child(index)) - items.remove(bitem) + images_filenames.append(bitem.child(index).data(0, QtCore.Qt.UserRole).filename) # Don't try to display empty groups - if not items: + if not images_filenames: return False # Find missing files - for bitem in items: - filename = bitem.data(0, QtCore.Qt.UserRole).filename + for filename in images_filenames: if not os.path.exists(filename): - missing_items.append(bitem) missing_items_filenames.append(filename) - for item in missing_items: - items.remove(item) # We cannot continue, as all images do not exist. - if not items: + if not images_filenames: if not remote: critical_error_message_box( translate('ImagePlugin.MediaItem', 'Missing Image(s)'), @@ -583,15 +578,14 @@ class ImageMediaItem(MediaManagerItem): u'\n'.join(missing_items_filenames)) return False # We have missing as well as existing images. We ask what to do. - elif missing_items and QtGui.QMessageBox.question(self, + elif missing_items_filenames and QtGui.QMessageBox.question(self, translate('ImagePlugin.MediaItem', 'Missing Image(s)'), translate('ImagePlugin.MediaItem', 'The following image(s) no longer exist: %s\n' 'Do you want to add the other images anyway?') % u'\n'.join(missing_items_filenames), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No: return False # Continue with the existing images. - for bitem in items: - filename = bitem.data(0, QtCore.Qt.UserRole).filename + for filename in images_filenames: name = os.path.split(filename)[1] service_item.add_from_image(filename, name, background) return True From 673a87a65d14042632d5c7f6ea8802a4f8a0ff24 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 14 May 2013 16:48:49 +0200 Subject: [PATCH 08/11] - Fixed a bug where new image groups added from the 'choose group' popup weren't added to the 'add group' and 'choose group' popup selectboxes --- openlp/plugins/images/lib/mediaitem.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index cb4656539..8a564fa2c 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -440,6 +440,8 @@ class ImageMediaItem(MediaManagerItem): parent_group.parent_id = 0 parent_group.group_name = self.choose_group_form.new_group_edit.text() self.manager.save_object(parent_group) + self.fill_groups_combobox(self.choose_group_form.group_combobox) + self.fill_groups_combobox(self.add_group_form.parent_group_combobox) else: parent_group = target_group.data(0, QtCore.Qt.UserRole) if isinstance(parent_group, ImageFilenames): From 6572ab31e818e254843c68b11baf866c97e833c2 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Tue, 14 May 2013 17:05:41 +0200 Subject: [PATCH 09/11] - Fixed adding single images again --- openlp/plugins/images/lib/mediaitem.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 328ba462a..deed14594 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -561,6 +561,8 @@ class ImageMediaItem(MediaManagerItem): for index in range(0, bitem.childCount()): if isinstance(bitem.child(index).data(0, QtCore.Qt.UserRole), ImageFilenames): images_filenames.append(bitem.child(index).data(0, QtCore.Qt.UserRole).filename) + elif isinstance(bitem.data(0, QtCore.Qt.UserRole), ImageFilenames): + images_filenames.append(bitem.data(0, QtCore.Qt.UserRole).filename) # Don't try to display empty groups if not images_filenames: return False From 255ed90d972d2565abe929be8f9913c2a1d34f0c Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Sun, 19 May 2013 13:31:02 +0200 Subject: [PATCH 10/11] Change helper method to private --- tests/functional/openlp_plugins/images/test_lib.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/openlp_plugins/images/test_lib.py b/tests/functional/openlp_plugins/images/test_lib.py index 2e9432eaf..0aecc0a7f 100644 --- a/tests/functional/openlp_plugins/images/test_lib.py +++ b/tests/functional/openlp_plugins/images/test_lib.py @@ -126,7 +126,7 @@ class TestImageMediaItem(TestCase): self.media_item.reset_action.setVisible.assert_called_with(False) self.media_item.live_controller.display.reset_image.assert_called_with() - def recursively_delete_group_side_effect(*args, **kwargs): + def _recursively_delete_group_side_effect(*args, **kwargs): """ Side effect method that creates custom retun values for the recursively_delete_group method """ @@ -160,7 +160,7 @@ class TestImageMediaItem(TestCase): ImageFilenames.group_id = 1 ImageGroups.parent_id = 1 self.media_item.manager = MagicMock() - self.media_item.manager.get_all_objects.side_effect = self.recursively_delete_group_side_effect + self.media_item.manager.get_all_objects.side_effect = self._recursively_delete_group_side_effect self.media_item.servicePath = "" test_group = ImageGroups() test_group.id = 1 From f22254501aa0f975cdf65530614e57e247ecc529 Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Thu, 23 May 2013 09:31:12 +0200 Subject: [PATCH 11/11] Reverted another change from the 'adding multiple service items' functionality --- openlp/core/lib/mediamanageritem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index 2fde4a821..c3e1fa366 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -466,7 +466,7 @@ class MediaManagerItem(QtGui.QWidget): translate('OpenLP.MediaManagerItem', 'You must select one or more items to preview.')) else: log.debug(u'%s Preview requested', self.plugin.name) - service_item = self.build_service_item(context=ServiceItemContext.Preview) + service_item = self.build_service_item() if service_item: service_item.from_plugin = True self.preview_controller.add_service_item(service_item)