openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #20095
[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/155450
- 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/155450
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 10:34:30 +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 10:34:30 +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 10:34:30 +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 10:34:30 +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,76 @@
"""
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))
+ 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
def check_group_exists(self, new_group):
"""
Follow ups