← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~marmyshev/openlp/item_title into lp:openlp

 

Dmitriy Marmyshev has proposed merging lp:~marmyshev/openlp/item_title into lp:openlp.

Requested reviews:
  Tim Bentley (trb143)

For more details, see:
https://code.launchpad.net/~marmyshev/openlp/item_title/+merge/158653

Added future to rename items in ServiceManager.
Gives more flexability in use onLive and in print service.
-- 
https://code.launchpad.net/~marmyshev/openlp/item_title/+merge/158653
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/serviceitem.py'
--- openlp/core/lib/serviceitem.py	2013-03-19 19:43:22 +0000
+++ openlp/core/lib/serviceitem.py	2013-04-12 15:31:48 +0000
@@ -113,6 +113,10 @@
 
     ``CanAutoStartForLive``
             The capability to ignore the do not play if display blank flag.
+    
+    ``CanEditTitle``
+            The capability to allow the ServiceManager to allow the title of the item to be
+             edited
 
     """
     CanPreview = 1
@@ -131,6 +135,7 @@
     CanWordSplit = 14
     HasBackgroundAudio = 15
     CanAutoStartForLive = 16
+    CanEditTitle = 17
 
 
 class ServiceItem(object):
@@ -442,7 +447,7 @@
         """
         Returns the title of the service item.
         """
-        if self.is_text():
+        if self.is_text() or ItemCapabilities.CanEditTitle in self.capabilities:
             return self.title
         else:
             if ItemCapabilities.HasDetailedTitleDisplay in self.capabilities:

=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py	2013-04-05 09:04:38 +0000
+++ openlp/core/ui/servicemanager.py	2013-04-12 15:31:48 +0000
@@ -219,6 +219,8 @@
         self.menu = QtGui.QMenu()
         self.edit_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Edit Item'),
             icon=u':/general/general_edit.png', triggers=self.remote_edit)
+        self.rename_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Rename...'),
+            triggers=self.on_service_item_rename)
         self.maintain_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Reorder Item'),
             icon=u':/general/general_edit.png', triggers=self.on_service_item_edit_form)
         self.notes_action = create_widget_action(self.menu, text=translate('OpenLP.ServiceManager', '&Notes'),
@@ -777,6 +779,7 @@
             pos = item.data(0, QtCore.Qt.UserRole)
         service_item = self.service_items[pos - 1]
         self.edit_action.setVisible(False)
+        self.rename_action.setVisible(False)
         self.create_custom_action.setVisible(False)
         self.maintain_action.setVisible(False)
         self.notes_action.setVisible(False)
@@ -784,6 +787,8 @@
         self.auto_start_action.setVisible(False)
         if service_item[u'service_item'].is_capable(ItemCapabilities.CanEdit) and service_item[u'service_item'].edit_id:
             self.edit_action.setVisible(True)
+        if service_item[u'service_item'].is_capable(ItemCapabilities.CanEditTitle):
+            self.rename_action.setVisible(True)
         if service_item[u'service_item'].is_capable(ItemCapabilities.CanMaintain):
             self.maintain_action.setVisible(True)
         if item.parent() is None:
@@ -1397,6 +1402,21 @@
             if new_item:
                 self.add_service_item(new_item, replace=True)
 
+    def on_service_item_rename(self):
+        """
+        Opens a dialog to rename the service item.
+        """
+        item = self.find_service_item()[0]
+        if not self.service_items[item][u'service_item'].is_capable(ItemCapabilities.CanEditTitle):
+            return
+        title = self.service_items[item][u'service_item'].title
+        title, ok = QtGui.QInputDialog.getText(self, self.tr(translate('OpenLP.ServiceManager', 'Input title')), 
+            self.tr(translate('OpenLP.ServiceManager', 'Title')),  QtGui.QLineEdit.Normal,  self.trUtf8(title))
+        if ok:
+            self.service_items[item][u'service_item'].title = unicode(title)
+            self.repaint_service_list(item, -1)
+            self.set_modified()
+
     def create_custom(self):
         """
         Saves the current text item as a custom slide

=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py	2013-03-28 20:08:07 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py	2013-04-12 15:31:48 +0000
@@ -842,6 +842,7 @@
         service_item.add_capability(ItemCapabilities.CanPreview)
         service_item.add_capability(ItemCapabilities.CanLoop)
         service_item.add_capability(ItemCapabilities.CanWordSplit)
+        service_item.add_capability(ItemCapabilities.CanEditTitle)
         # Service Item: Title
         service_item.title = create_separated_list(raw_title)
         # Service Item: Theme

=== 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-04-12 15:31:48 +0000
@@ -543,14 +543,17 @@
             if not items:
                 return False
         # Determine service item title
-        if isinstance(items[0].data(0, QtCore.Qt.UserRole), ImageGroups):
+        if (isinstance(items[0].data(0, QtCore.Qt.UserRole), ImageGroups) or len(items) == 1)\
+            and len(service_item._raw_frames) ==0:
             service_item.title = items[0].text(0)
-        else:
+        elif len(service_item._raw_frames) == 1 and service_item.title == service_item._raw_frames[0][u'title']\
+            or len(items) > 1 and len(service_item._raw_frames) ==0:
             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)
+        service_item.add_capability(ItemCapabilities.CanEditTitle)
         # force a nonexistent theme
         service_item.theme = -1
         missing_items = []


Follow ups