← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~arjan-i/openlp/images_groups_bugfix into lp:openlp

 

Arjan Schrijver has proposed merging lp:~arjan-i/openlp/images_groups_bugfix into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~arjan-i/openlp/images_groups_bugfix/+merge/155441

- Fixed traceback on canceling the 'choose group' dialog
- Clear the 'new group' lineedit in the 'choose group' dialog
- Fixed traceback on adding multiple image groups to the service in one go
- Cleaned up obsolete line in imagetab


Note: please look at the change in core/lib/mediamanageritem.py carefully. I'm not sure if this could break something, although everything still works fine in my tests.
-- 
https://code.launchpad.net/~arjan-i/openlp/images_groups_bugfix/+merge/155441
Your team OpenLP Core is requested to review the proposed merge of lp:~arjan-i/openlp/images_groups_bugfix into lp:openlp.
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py	2013-03-23 06:46:41 +0000
+++ openlp/core/lib/mediamanageritem.py	2013-03-26 09:54:27 +0000
@@ -464,7 +464,7 @@
                 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)

=== modified file 'openlp/plugins/images/forms/choosegroupform.py'
--- openlp/plugins/images/forms/choosegroupform.py	2013-03-18 13:43:45 +0000
+++ openlp/plugins/images/forms/choosegroupform.py	2013-03-26 09:54:27 +0000
@@ -50,6 +50,7 @@
         ``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:

=== modified file 'openlp/plugins/images/lib/imagetab.py'
--- openlp/plugins/images/lib/imagetab.py	2013-03-18 14:11:58 +0000
+++ openlp/plugins/images/lib/imagetab.py	2013-03-26 09:54:27 +0000
@@ -32,7 +32,6 @@
 from openlp.core.lib import Registry, SettingsTab, Settings, UiStrings, translate
 
 
-
 class ImageTab(SettingsTab):
     """
     ImageTab is the images settings tab in the settings dialog.

=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py	2013-03-23 07:07:06 +0000
+++ openlp/plugins/images/lib/mediaitem.py	2013-03-26 09:54:27 +0000
@@ -32,7 +32,7 @@
 
 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
@@ -394,6 +394,7 @@
         ``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
@@ -537,63 +538,74 @@
         """
         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):
         """