From b94115d4b29e80874abd724aff076e9e39f6bb2c Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 8 Jul 2011 21:55:18 +0100 Subject: [PATCH 1/6] Amend tooltips so show theme for service item if present. Fixes: https://launchpad.net/bugs/806834 --- openlp/core/ui/servicemanager.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index cccbed399..e46a6f0f8 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -956,7 +956,14 @@ class ServiceManager(QtGui.QWidget): treewidgetitem.setIcon(0, build_icon(u':/general/general_delete.png')) treewidgetitem.setText(0, serviceitem.get_display_title()) - treewidgetitem.setToolTip(0, serviceitem.notes) + tips = [] + if serviceitem.theme and serviceitem.theme != -1: + tips.append(unicode(translate('OpenLP.ServiceManager', + 'Slide theme : %s')) % serviceitem.theme) + if serviceitem.notes: + tips.append(unicode(translate('OpenLP.ServiceManager', + 'Notes : %s')) % unicode(serviceitem.notes)) + treewidgetitem.setToolTip(0, u'\n'.join(tips)) treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) treewidgetitem.setSelected(item[u'selected']) From cf9355d7250cbc5af51b68b0442740600fb8c009 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 9 Jul 2011 07:03:52 +0100 Subject: [PATCH 2/6] Add some formatting --- openlp/core/ui/servicemanager.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index e46a6f0f8..f22ff6fc8 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -957,13 +957,16 @@ class ServiceManager(QtGui.QWidget): build_icon(u':/general/general_delete.png')) treewidgetitem.setText(0, serviceitem.get_display_title()) tips = [] + # does not work with tooltips it needs if serviceitem.theme and serviceitem.theme != -1: - tips.append(unicode(translate('OpenLP.ServiceManager', - 'Slide theme : %s')) % serviceitem.theme) + tips.append(u'%s : %s' % + (unicode(translate('OpenLP.ServiceManager', 'Slide theme')), + serviceitem.theme)) if serviceitem.notes: - tips.append(unicode(translate('OpenLP.ServiceManager', - 'Notes : %s')) % unicode(serviceitem.notes)) - treewidgetitem.setToolTip(0, u'\n'.join(tips)) + tips.append(u'%s : %s' % + (unicode(translate('OpenLP.ServiceManager', 'Notes')), + unicode(serviceitem.notes))) + treewidgetitem.setToolTip(0, u'
'.join(tips)) treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) treewidgetitem.setSelected(item[u'selected']) From e9fb8e59c16b212060fa5c0da3186f438cadba03 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 9 Jul 2011 08:43:35 +0100 Subject: [PATCH 3/6] Allow service item themes to change and be added back to slide controller Break object link between saved item in slide controller and service manager. Fixes: https://launchpad.net/bugs/806829 --- openlp/core/lib/serviceitem.py | 14 ++++++++++++++ openlp/core/ui/servicemanager.py | 2 +- openlp/core/ui/slidecontroller.py | 4 +++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index ad762e326..0810e292d 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -352,6 +352,9 @@ class ServiceItem(object): Updates the _uuid with the value from the original one The _uuid is unique for a given service item but this allows one to replace an original version. + + ``other`` + The service item to be merged with """ self._uuid = other._uuid self.notes = other.notes @@ -461,3 +464,14 @@ class ServiceItem(object): else: return u'%s : %s' % (start, end) + def update_theme(self, theme): + """ + updates the theme in the service item + + ``theme`` + The new theme to be replaced in the service item + """ + self.theme = theme + self._new_item() + self.render() + diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index f22ff6fc8..88dc0603a 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -1348,7 +1348,7 @@ class ServiceManager(QtGui.QWidget): if not theme: theme = None item = self.findServiceItem()[0] - self.serviceItems[item][u'service_item'].theme = theme + self.serviceItems[item][u'service_item'].update_theme(theme) self.regenerateServiceItems() def _getParentItemData(self, item): diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index e86e2e760..8a7912b01 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -28,6 +28,7 @@ import logging import os import time +import copy from PyQt4 import QtCore, QtGui from PyQt4.phonon import Phonon @@ -600,7 +601,8 @@ class SlideController(QtGui.QWidget): log.debug(u'processManagerItem live = %s' % self.isLive) self.onStopLoop() old_item = self.serviceItem - self.serviceItem = serviceItem + # take a copy not a link to the servicemeanager copy. + self.serviceItem = copy.copy(serviceItem) if old_item and self.isLive and old_item.is_capable( ItemCapabilities.ProvidesOwnDisplay): self._resetBlank() From dd302537ecf84c6c5a42c3b811c95ecf87757175 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 10 Jul 2011 07:58:15 +0100 Subject: [PATCH 4/6] Fix code --- openlp/core/ui/servicemanager.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 88dc0603a..337de3bb8 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -957,15 +957,14 @@ class ServiceManager(QtGui.QWidget): build_icon(u':/general/general_delete.png')) treewidgetitem.setText(0, serviceitem.get_display_title()) tips = [] - # does not work with tooltips it needs if serviceitem.theme and serviceitem.theme != -1: - tips.append(u'%s : %s' % - (unicode(translate('OpenLP.ServiceManager', 'Slide theme')), - serviceitem.theme)) + tips.append(u'%s : %s' % + (unicode(translate('OpenLP.ServiceManager', 'Slide theme')), + serviceitem.theme)) if serviceitem.notes: - tips.append(u'%s : %s' % - (unicode(translate('OpenLP.ServiceManager', 'Notes')), - unicode(serviceitem.notes))) + tips.append(u'%s : %s' % + (unicode(translate('OpenLP.ServiceManager', 'Notes')), + unicode(serviceitem.notes))) treewidgetitem.setToolTip(0, u'
'.join(tips)) treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) From 4651ec35b60145b42afcfbc08433b3401dedc7b4 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 10 Jul 2011 12:59:23 +0100 Subject: [PATCH 5/6] Fixes --- openlp/core/lib/serviceitem.py | 10 ++++++---- openlp/core/lib/ui.py | 2 -- openlp/core/ui/servicemanager.py | 12 +++++------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/openlp/core/lib/serviceitem.py b/openlp/core/lib/serviceitem.py index 0810e292d..1245988b4 100644 --- a/openlp/core/lib/serviceitem.py +++ b/openlp/core/lib/serviceitem.py @@ -35,7 +35,7 @@ import logging import os import uuid -from openlp.core.lib import build_icon, clean_tags, expand_tags +from openlp.core.lib import build_icon, clean_tags, expand_tags, translate from openlp.core.lib.ui import UiStrings log = logging.getLogger(__name__) @@ -450,10 +450,12 @@ class ServiceItem(object): start = None end = None if self.start_time != 0: - start = UiStrings().StartTimeCode % \ + start = unicode(translate('OpenLP.ServiceItem', + 'Start: %s')) % \ unicode(datetime.timedelta(seconds=self.start_time)) if self.media_length != 0: - end = UiStrings().LengthTime % \ + end = unicode(translate('OpenLP.ServiceItem', + 'Length: %s')) % \ unicode(datetime.timedelta(seconds=self.media_length)) if not start and not end: return None @@ -462,7 +464,7 @@ class ServiceItem(object): elif not start and end: return end else: - return u'%s : %s' % (start, end) + return u'%s
%s' % (start, end) def update_theme(self, theme): """ diff --git a/openlp/core/lib/ui.py b/openlp/core/lib/ui.py index 973c76660..812e5815d 100644 --- a/openlp/core/lib/ui.py +++ b/openlp/core/lib/ui.py @@ -83,7 +83,6 @@ class UiStrings(object): self.Image = translate('OpenLP.Ui', 'Image') self.Import = translate('OpenLP.Ui', 'Import') self.LayoutStyle = translate('OpenLP.Ui', 'Layout style:') - self.LengthTime = unicode(translate('OpenLP.Ui', 'Length %s')) self.Live = translate('OpenLP.Ui', 'Live') self.LiveBGError = translate('OpenLP.Ui', 'Live Background Error') self.LiveToolbar = translate('OpenLP.Ui', 'Live Toolbar') @@ -123,7 +122,6 @@ class UiStrings(object): self.Split = translate('OpenLP.Ui', '&Split') self.SplitToolTip = translate('OpenLP.Ui', 'Split a slide into two ' 'only if it does not fit on the screen as one slide.') - self.StartTimeCode = unicode(translate('OpenLP.Ui', 'Start %s')) self.Theme = translate('OpenLP.Ui', 'Theme', 'Singular') self.Themes = translate('OpenLP.Ui', 'Themes', 'Plural') self.Tools = translate('OpenLP.Ui', 'Tools') diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 337de3bb8..9a758df61 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -958,13 +958,16 @@ class ServiceManager(QtGui.QWidget): treewidgetitem.setText(0, serviceitem.get_display_title()) tips = [] if serviceitem.theme and serviceitem.theme != -1: - tips.append(u'%s : %s' % + tips.append(u'%s: %s' % (unicode(translate('OpenLP.ServiceManager', 'Slide theme')), serviceitem.theme)) if serviceitem.notes: - tips.append(u'%s : %s' % + tips.append(u'%s %s' % (unicode(translate('OpenLP.ServiceManager', 'Notes')), unicode(serviceitem.notes))) + if item[u'service_item'] \ + .is_capable(ItemCapabilities.AllowsVariableStartTime): + tips.append(item[u'service_item'].get_media_time()) treewidgetitem.setToolTip(0, u'
'.join(tips)) treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) @@ -975,11 +978,6 @@ class ServiceManager(QtGui.QWidget): text = frame[u'title'].replace(u'\n', u' ') child.setText(0, text[:40]) child.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(count)) - if item[u'service_item'] \ - .is_capable(ItemCapabilities.AllowsVariableStartTime): - tip = item[u'service_item'].get_media_time() - if tip: - child.setToolTip(0, tip) if serviceItem == itemcount: if item[u'expanded'] and serviceItemChild == count: self.serviceManagerList.setCurrentItem(child) From 7d21d45764e405a06f5ec6dc3798dfc04bedf0e8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 10 Jul 2011 13:02:58 +0100 Subject: [PATCH 6/6] missing : --- openlp/core/ui/servicemanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9a758df61..fa7c9ef55 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -962,7 +962,7 @@ class ServiceManager(QtGui.QWidget): (unicode(translate('OpenLP.ServiceManager', 'Slide theme')), serviceitem.theme)) if serviceitem.notes: - tips.append(u'%s %s' % + tips.append(u'%s: %s' % (unicode(translate('OpenLP.ServiceManager', 'Notes')), unicode(serviceitem.notes))) if item[u'service_item'] \