From 4eaa7a1535ddaed9f1d262b4c2b4b18478fb6ab9 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 31 Oct 2009 08:45:24 +0000 Subject: [PATCH 1/2] Finish remote editing of ServiceManager by updating live --- openlp/core/ui/mainwindow.py | 2 +- openlp/core/ui/servicemanager.py | 10 ++++++++-- openlp/core/ui/slidecontroller.py | 8 ++++++++ openlp/plugins/songs/forms/editsongform.py | 5 +---- openlp/plugins/songs/lib/manager.py | 1 + 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/openlp/core/ui/mainwindow.py b/openlp/core/ui/mainwindow.py index ec3fec0d5..51789e225 100644 --- a/openlp/core/ui/mainwindow.py +++ b/openlp/core/ui/mainwindow.py @@ -525,7 +525,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow): self.settingsForm.postSetUp() def versionCheck(self): - applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0-595') + applicationVersion = self.generalConfig.get_config(u'Application version', u'1.9.0-640') version = check_latest_version(self.generalConfig, applicationVersion) if applicationVersion != version: version_text = unicode(self.trUtf8(u'OpenLP version %s has been updated ' diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 9a331fccb..50b8137f3 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -27,6 +27,7 @@ import string import logging import cPickle import zipfile +import uuid from PyQt4 import QtCore, QtGui from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \ @@ -556,17 +557,22 @@ class ServiceManager(QtGui.QWidget): sitem, count = self.findServiceItem() item.render() if self.remoteEditTriggered: + item.uuid = self.serviceItems[sitem][u'data'].uuid self.serviceItems[sitem][u'data'] = item self.remoteEditTriggered = False self.repaintServiceList(sitem + 1, 0) + self.parent.LiveController.replaceServiceManagerItem(item) else: + item.uuid = unicode(uuid.uuid1()) if sitem == -1: self.serviceItems.append({u'data': item, - u'order': len(self.serviceItems) + 1, u'expanded':True}) + u'order': len(self.serviceItems) + 1, + u'expanded':True}) self.repaintServiceList(len(self.serviceItems) + 1, 0) else: self.serviceItems.insert(sitem + 1, {u'data': item, - u'order': len(self.serviceItems)+1, u'expanded':True}) + u'order': len(self.serviceItems)+1, + u'expanded':True}) self.repaintServiceList(sitem + 1, 0) self.parent.serviceChanged(False, self.serviceName) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 0715cda5d..8a7f2ce9b 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -282,6 +282,7 @@ class SlideController(QtGui.QWidget): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.name == u'Songs' and \ str_to_bool(self.songsconfig.get_config(u'display songbar', True)): + print item.verse_order self.Songbar.setVisible(True) elif item.service_item_type == ServiceType.Image: #Not sensible to allow loops with 1 frame @@ -323,6 +324,13 @@ class SlideController(QtGui.QWidget): self.songEdit = False self.displayServiceManagerItems(item, slideno) + def replaceServiceManagerItem(self, item): + """ + Replacement item following a remote edit + """ + if self.commandItem is not None and \ + item.uuid == self.commandItem.uuid: + self.addServiceManagerItem(item, self.PreviewListWidget.currentRow()) def addServiceManagerItem(self, item, slideno): """ diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 7fa0f9a52..434e9902e 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -115,7 +115,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.VerseDeleteButton.setEnabled(False) self.AuthorRemoveButton.setEnabled(False) self.TopicRemoveButton.setEnabled(False) - self.title_change = False def loadAuthors(self): authors = self.songmanager.get_authors() @@ -162,7 +161,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.VerseListWidget.clear() self.AuthorsListView.clear() self.TopicsListView.clear() - self.title_change = False self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason) self.loadAuthors() self.loadTopics() @@ -235,7 +233,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id)) self.TopicsListView.addItem(topic_name) self._validate_song() - self.title_change = False self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason) #if not preview hide the preview button self.previewButton.setVisible(False) @@ -378,7 +375,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): def onTitleEditItemLostFocus(self): self.song.title = self.TitleEditItem.text() - self.title_change = True def onVerseOrderEditLostFocus(self): self.song.verse_order = self.VerseOrderEdit.text() @@ -431,6 +427,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.song.search_title = unicode(self.TitleEditItem.displayText()) + \ u'@'+ unicode(self.AlternativeEdit.displayText()) self.song.comments = unicode(self.CommentsEdit.toPlainText()) + self.song.verse_order = unicode(self.VerseOrderEdit.text()) self.song.ccli_number = unicode(self.CCLNumberEdit.displayText()) self.processLyrics() self.processTitle() diff --git a/openlp/plugins/songs/lib/manager.py b/openlp/plugins/songs/lib/manager.py index d793785ac..9fe28198b 100644 --- a/openlp/plugins/songs/lib/manager.py +++ b/openlp/plugins/songs/lib/manager.py @@ -106,6 +106,7 @@ class SongManager(): self.session.commit() return True except: + log.exception(u'Could not save song to song database') self.session.rollback() log.exception(u'Could not save song to song database') return False From 258bf403c8d105bd0b553550b828fa8381a53ed0 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 31 Oct 2009 09:03:54 +0000 Subject: [PATCH 2/2] Sort out number of buttons on SlideController to match song and make more KITT like --- openlp/core/ui/slidecontroller.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py index 8a7f2ce9b..ace128e4f 100644 --- a/openlp/core/ui/slidecontroller.py +++ b/openlp/core/ui/slidecontroller.py @@ -176,16 +176,16 @@ class SlideController(QtGui.QWidget): if isLive: self.Songbar = OpenLPToolbar(self) self.Songbar.addToolbarButton( - u'Bridge', u':/media/media_time.png', + u'Bridge', u':/slides/slide_close.png', self.trUtf8(u'Bridge'), self.onSongBarHandler) self.Songbar.addToolbarButton( - u'Chorus', u':/media/media_time.png', + u'Chorus', u':/slides/slide_close.png', self.trUtf8(u'Chorus'), self.onSongBarHandler) - for verse in range(1, 9): + for verse in range(1, 20): self.Songbar.addToolbarButton( - unicode(verse), u':/media/media_time.png', + unicode(verse), u':/slides/slide_close.png', unicode(self.trUtf8(u'Verse %s'))%verse, self.onSongBarHandler) self.ControllerLayout.addWidget(self.Songbar) @@ -282,7 +282,15 @@ class SlideController(QtGui.QWidget): self.Toolbar.makeWidgetsInvisible(self.image_list) if item.name == u'Songs' and \ str_to_bool(self.songsconfig.get_config(u'display songbar', True)): - print item.verse_order + for action in self.Songbar.actions: + self.Songbar.actions[action].setVisible(False) + verses = item.verse_order.split(u' ') + for verse in verses: + try: + self.Songbar.actions[verse].setVisible(True) + except: + #More than 20 verses hard luck + pass self.Songbar.setVisible(True) elif item.service_item_type == ServiceType.Image: #Not sensible to allow loops with 1 frame