← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/fixes into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/fixes into lp:openlp.

    Requested reviews:
    OpenLP Core (openlp-core)

-- 
https://code.launchpad.net/~trb143/openlp/fixes/+merge/14243
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp.pyw'
--- openlp.pyw	2009-10-18 18:15:20 +0000
+++ openlp.pyw	2009-10-30 22:10:25 +0000
@@ -105,6 +105,7 @@
         if show_splash:
             # now kill the splashscreen
             self.splash.finish(self.mainWindow)
+        self.mainWindow.versionCheck()
         return self.exec_()
 
 def main():

=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py	2009-10-23 17:09:09 +0000
+++ openlp/core/lib/renderer.py	2009-10-30 22:10:25 +0000
@@ -72,9 +72,11 @@
         self._theme = theme
         self.bg_frame = None
         self.bg_image = None
+        self._bg_image_filename = None
         self.theme_name = theme.theme_name
         self._set_theme_font()
         if theme.background_type == u'image':
+            print theme.background_filename
             if theme.background_filename is not None:
                 self.set_bg_image(theme.background_filename)
 
@@ -110,8 +112,8 @@
         painter.begin(self.bg_image)
         self.background_offsetx = (width - realwidth) / 2
         self.background_offsety = (height - realheight) / 2
-        painter.drawImage(self.background_offsetx, self.background_offsety,
-            preview)
+        painter.drawImage(self.background_offsetx,
+                self.background_offsety, preview)
         painter.end()
 
     def set_frame_dest(self, frame_width, frame_height, preview=False):

=== modified file 'openlp/core/ui/amendthemeform.py'
--- openlp/core/ui/amendthemeform.py	2009-10-29 23:27:45 +0000
+++ openlp/core/ui/amendthemeform.py	2009-10-30 22:10:25 +0000
@@ -431,7 +431,6 @@
             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 +485,14 @@
             self.BackgroundComboBox.setCurrentIndex(0)
         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)
         elif self.theme.background_direction == u'vertical':

=== modified file 'openlp/core/ui/generaltab.py'
--- openlp/core/ui/generaltab.py	2009-10-30 17:44:16 +0000
+++ openlp/core/ui/generaltab.py	2009-10-30 22:10:25 +0000
@@ -76,6 +76,16 @@
         self.ShowSplashCheckBox.setObjectName(u'ShowSplashCheckBox')
         self.StartupLayout.addWidget(self.ShowSplashCheckBox)
         self.GeneralLeftLayout.addWidget(self.StartupGroupBox)
+        self.SettingsGroupBox = QtGui.QGroupBox(self.GeneralLeftWidget)
+        self.SettingsGroupBox.setObjectName(u'SettingsGroupBox')
+        self.SettingsLayout = QtGui.QVBoxLayout(self.SettingsGroupBox)
+        self.SettingsLayout.setSpacing(8)
+        self.SettingsLayout.setMargin(8)
+        self.SettingsLayout.setObjectName(u'SettingsLayout')
+        self.SaveCheckServiceCheckBox = QtGui.QCheckBox(self.SettingsGroupBox)
+        self.SaveCheckServiceCheckBox.setObjectName(u'SaveCheckServiceCheckBox')
+        self.SettingsLayout.addWidget(self.SaveCheckServiceCheckBox)
+        self.GeneralLeftLayout.addWidget(self.SettingsGroupBox)
         self.GeneralLeftSpacer = QtGui.QSpacerItem(20, 40,
             QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
         self.GeneralLeftLayout.addItem(self.GeneralLeftSpacer)
@@ -124,6 +134,8 @@
             QtCore.SIGNAL(u'stateChanged(int)'), self.onAutoOpenCheckBoxChanged)
         QtCore.QObject.connect(self.ShowSplashCheckBox,
             QtCore.SIGNAL(u'stateChanged(int)'), self.onShowSplashCheckBoxChanged)
+        QtCore.QObject.connect(self.SaveCheckServiceCheckBox,
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onSaveCheckServiceCheckBox)
         QtCore.QObject.connect(self.NumberEdit,
             QtCore.SIGNAL(u'editingFinished()'), self.onNumberEditLostFocus)
         QtCore.QObject.connect(self.UsernameEdit,
@@ -138,6 +150,8 @@
         self.WarningCheckBox.setText(self.trUtf8(u'Show blank screen warning'))
         self.AutoOpenCheckBox.setText(self.trUtf8(u'Automatically open the last service'))
         self.ShowSplashCheckBox.setText(self.trUtf8(u'Show the splash screen'))
+        self.SettingsGroupBox.setTitle(self.trUtf8(u'Application Settings'))
+        self.SaveCheckServiceCheckBox.setText(self.trUtf8(u'Prompt to save Sevice before starting New'))
         self.CCLIGroupBox.setTitle(self.trUtf8(u'CCLI Details'))
         self.NumberLabel.setText(self.trUtf8(u'CCLI Number:'))
         self.UsernameLabel.setText(self.trUtf8(u'SongSelect Username:'))
@@ -155,6 +169,9 @@
     def onWarningCheckBoxChanged(self, value):
         self.Warning = (value == QtCore.Qt.Checked)
 
+    def onSaveCheckServiceCheckBox(self, value):
+        self.PromptSaveService = (value == QtCore.Qt.Checked)
+
     def onNumberEditLostFocus(self):
         self.CCLNumber = self.NumberEdit.displayText()
 
@@ -175,9 +192,11 @@
         self.Warning = str_to_bool(self.config.get_config(u'Blank Warning', u'False'))
         self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u'False'))
         self.ShowSplash = str_to_bool(self.config.get_config(u'show splash', u'True'))
+        self.PromptSaveService = str_to_bool(self.config.get_config(u'prompt save service', u'False'))
         self.CCLNumber = unicode(self.config.get_config(u'CCL Number', u'XXX'))
         self.Username = unicode(self.config.get_config(u'User Name', u''))
         self.Password = unicode(self.config.get_config(u'Password', u''))
+        self.SaveCheckServiceCheckBox.setChecked(self.PromptSaveService)
         # Set a few things up
         self.MonitorComboBox.setCurrentIndex(self.MonitorNumber)
         self.WarningCheckBox.setChecked(self.Warning)
@@ -192,6 +211,7 @@
         self.config.set_config(u'Blank Warning', self.Warning)
         self.config.set_config(u'Auto Open', self.AutoOpen)
         self.config.set_config(u'show splash', self.ShowSplash)
+        self.config.set_config(u'prompt save service', self.PromptSaveService)
         self.config.set_config(u'CCL Number', self.CCLNumber)
         self.config.set_config(u'User Name', self.Username)
         self.config.set_config(u'Password', self.Password)

=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2009-10-29 16:01:33 +0000
+++ openlp/core/ui/mainwindow.py	2009-10-30 22:10:25 +0000
@@ -562,7 +562,6 @@
         screen_number = self.getMonitorNumber()
         self.mainDisplay.setup(screen_number)
         self.setFocus()
-        self.versionCheck()
         if str_to_bool(self.generalConfig.get_config(u'Auto Open', False)):
             self.ServiceManagerContents.onLoadService(True)
         if str_to_bool(self.generalConfig.get_config(u'Screen Blank', False)) \

=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py	2009-10-29 13:44:33 +0000
+++ openlp/core/ui/servicemanager.py	2009-10-30 22:10:25 +0000
@@ -30,7 +30,8 @@
 
 from PyQt4 import QtCore, QtGui
 from openlp.core.lib import PluginConfig, OpenLPToolbar, ServiceItem, \
-    ServiceType, contextMenuAction, contextMenuSeparator, Receiver, contextMenu
+    ServiceType, contextMenuAction, contextMenuSeparator, Receiver, \
+    contextMenu, str_to_bool
 
 class ServiceManagerList(QtGui.QTreeWidget):
 
@@ -128,8 +129,12 @@
         self.parent = parent
         self.serviceItems = []
         self.serviceName = u''
+        #is a new service and has not been saved
         self.isNew = True
+        #Indicates if remoteTriggering is active.  If it is the next addServiceItem call
+        #will replace the currently selected one.
         self.remoteEditTriggered = False
+        #start with the layout
         self.Layout = QtGui.QVBoxLayout(self)
         self.Layout.setSpacing(0)
         self.Layout.setMargin(0)
@@ -354,6 +359,19 @@
         """
         Clear the list to create a new service
         """
+        if self.parent.serviceNotSaved and \
+            str_to_bool(PluginConfig(u'General').
+                        get_config(u'prompt save service', u'False')):
+            ret = QtGui.QMessageBox.question(None,
+                self.trUtf8(u'Save Changes to Service?'),
+                self.trUtf8(u'Your service is unsaved, do you want to save those '
+                            u'changes before creating a new one ?'),
+                QtGui.QMessageBox.StandardButtons(
+                    QtGui.QMessageBox.Cancel |
+                    QtGui.QMessageBox.Save),
+                QtGui.QMessageBox.Save)
+            if ret == QtGui.QMessageBox.Save:
+                self.onSaveService()
         self.ServiceManagerList.clear()
         self.serviceItems = []
         self.serviceName = u''

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2009-10-29 13:44:33 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2009-10-30 22:10:25 +0000
@@ -95,9 +95,10 @@
             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 @@
         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 @@
         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 @@
 
     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 \n%s', sxml.dump_xml())
 
     def processTitle(self):
         log.debug(u'processTitle')

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2009-10-30 17:44:16 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2009-10-30 22:10:25 +0000
@@ -53,7 +53,11 @@
         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):
@@ -242,7 +246,7 @@
         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):
@@ -252,7 +256,7 @@
             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):
@@ -286,6 +290,7 @@
         service_item.theme = song.theme_name
         service_item.editEnabled = True
         service_item.editId = item_id
+        service_item.verse_order = song.verse_order
         if song.lyrics.startswith(u'<?xml version='):
             songXML=SongXMLParser(song.lyrics)
             verseList = songXML.get_verses()


Follow ups