From 0d959fbfb1fa14fbcbc15cf1f5c49e3b2bfdc8ca Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Fri, 30 Oct 2009 06:43:28 +0000 Subject: [PATCH] Song Edit Preview button only active from Preview, Reset Theme Editor image text Edit --- openlp/core/ui/amendthemeform.py | 4 +- openlp/core/ui/servicemanager.py | 2 + openlp/plugins/songs/forms/editsongform.py | 66 ++++++++++++---------- openlp/plugins/songs/lib/mediaitem.py | 8 ++- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index b95a88ca2..11daa12c7 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -408,6 +408,7 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.theme.background_endColor = u'#ff0000' else: self.theme.background_type = u'image' + a=c self.stateChanging(self.theme) self.previewTheme(self.theme) @@ -431,7 +432,6 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): QtGui.QColor(self.theme.background_endColor), self).name() self.Color2PushButton.setStyleSheet( u'background-color: %s' % unicode(self.theme.background_endColor)) - self.previewTheme(self.theme) # #Other Tab @@ -486,12 +486,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): else: self.BackgroundComboBox.setCurrentIndex(1) + self.ImageLineEdit.setText(u'') if theme.background_type == u'solid': self.BackgroundTypeComboBox.setCurrentIndex(0) elif theme.background_type == u'gradient': self.BackgroundTypeComboBox.setCurrentIndex(1) else: self.BackgroundTypeComboBox.setCurrentIndex(2) + self.ImageLineEdit.setText(self.theme.background_filename) if self.theme.background_direction == u'horizontal': self.GradientComboBox.setCurrentIndex(0) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index ebd758bbc..2d0e43c30 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -129,6 +129,8 @@ class ServiceManager(QtGui.QWidget): self.serviceItems = [] self.serviceName = u'' self.isNew = True + #Indicates if remoteTriggering is active. If it is the next addServiceItem call + #will replace the currently selected one. self.remoteEditTriggered = False self.Layout = QtGui.QVBoxLayout(self) self.Layout.setSpacing(0) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 97b9eacb3..38a2117b2 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -95,9 +95,10 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): QtCore.SIGNAL(u'lostFocus()'), self.onCommentsEditLostFocus) QtCore.QObject.connect(self.VerseOrderEdit, QtCore.SIGNAL(u'lostFocus()'), self.onVerseOrderEditLostFocus) - previewButton = QtGui.QPushButton() - previewButton.setText(self.trUtf8(u'Save && Preview')) - self.ButtonBox.addButton(previewButton, QtGui.QDialogButtonBox.ActionRole) + self.previewButton = QtGui.QPushButton() + self.previewButton.setText(self.trUtf8(u'Save && Preview')) + self.ButtonBox.addButton( + self.previewButton, QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview) # Create other objects and forms @@ -167,7 +168,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.loadTopics() self.loadBooks() - def loadSong(self, id): + def loadSong(self, id, preview): log.debug(u'Load Song') self.SongTabWidget.setCurrentIndex(0) self.loadAuthors() @@ -236,6 +237,10 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self._validate_song() self.title_change = False self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason) + #if not preview hide the preview button + self.previewButton.setVisible(False) + if preview: + self.previewButton.setVisible(True) def onAuthorAddButtonClicked(self): item = int(self.AuthorsSelectionComboItem.currentIndex()) @@ -434,31 +439,34 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): def processLyrics(self): log.debug(u'processLyrics') - sxml = SongXMLBuilder() - sxml.new_document() - sxml.add_lyrics_to_song() - count = 1 - text = u' ' - verse_order = u'' - for i in range (0, self.VerseListWidget.count()): - sxml.add_verse_to_lyrics(u'Verse', unicode(count), - unicode(self.VerseListWidget.item(i).text())) - text = text + unicode(self.VerseListWidget.item(i).text()) + u' ' - verse_order = verse_order + unicode(count) + u' ' - count += 1 - if self.song.verse_order is None: - self.song.verse_order = verse_order - text = text.replace(u'\'', u'') - text = text.replace(u',', u'') - text = text.replace(u';', u'') - text = text.replace(u':', u'') - text = text.replace(u'(', u'') - text = text.replace(u')', u'') - text = text.replace(u'{', u'') - text = text.replace(u'}', u'') - text = text.replace(u'?', u'') - self.song.search_lyrics = unicode(text) - self.song.lyrics = unicode(sxml.extract_xml()) + try: + sxml = SongXMLBuilder() + sxml.new_document() + sxml.add_lyrics_to_song() + count = 1 + text = u' ' + verse_order = u'' + for i in range (0, self.VerseListWidget.count()): + sxml.add_verse_to_lyrics(u'Verse', unicode(count), + unicode(self.VerseListWidget.item(i).text())) + text = text + unicode(self.VerseListWidget.item(i).text()) + u' ' + verse_order = verse_order + unicode(count) + u' ' + count += 1 + if self.song.verse_order is None: + self.song.verse_order = verse_order + text = text.replace(u'\'', u'') + text = text.replace(u',', u'') + text = text.replace(u';', u'') + text = text.replace(u':', u'') + text = text.replace(u'(', u'') + text = text.replace(u')', u'') + text = text.replace(u'{', u'') + text = text.replace(u'}', u'') + text = text.replace(u'?', u'') + self.song.search_lyrics = unicode(text) + self.song.lyrics = unicode(sxml.extract_xml()) + except: + log.exception(u'Problem processing song Lyrics') def processTitle(self): log.debug(u'processTitle') diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 11ccb0763..0ca0756a6 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -55,7 +55,11 @@ class SongMediaItem(MediaManagerItem): self.edit_song_form = EditSongForm(self.parent.songmanager, self) self.song_maintenance_form = SongMaintenanceForm( self.parent.songmanager, self) + #fromPreview holds the id of the item if the song editor needs to trigger a preview + #without closing. It is set to -1 if this function is inactive self.fromPreview = -1 + #fromServiceManager holds the id of the item if the song editor needs to trigger posting + #to the servicemanager without closing. It is set to -1 if this function is inactive self.fromServiceManager = -1 def initPluginNameVisible(self): @@ -244,7 +248,7 @@ class SongMediaItem(MediaManagerItem): valid = self.parent.songmanager.get_song(songid) if valid is not None: self.fromServiceManager = songid - self.edit_song_form.loadSong(songid) + self.edit_song_form.loadSong(songid, False) self.edit_song_form.exec_() def onEditClick(self, preview=False): @@ -254,7 +258,7 @@ class SongMediaItem(MediaManagerItem): self.fromPreview = -1 if preview: self.fromPreview = item_id - self.edit_song_form.loadSong(item_id) + self.edit_song_form.loadSong(item_id, preview) self.edit_song_form.exec_() def onEventEditSong (self):