← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~raoul-snyman/openlp/dualdisplay2 into lp:openlp

 

Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/dualdisplay2 into lp:openlp.

Requested reviews:
    Tim Bentley (trb143)

Fixed displaying of "display" label on the display form.
Display form is displayed on the correct screen at startup.
Display form switches to active non-primary screen or hidden on primary screen after set in the settings dialog.
A few syntax tidy-ups.
Made the loading and saving of things to the "registry" better.
-- 
https://code.launchpad.net/~raoul-snyman/openlp/dualdisplay2/+merge/7122
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/pluginconfig.py'
--- openlp/core/lib/pluginconfig.py	2009-05-20 20:17:20 +0000
+++ openlp/core/lib/pluginconfig.py	2009-06-05 18:53:50 +0000
@@ -56,10 +56,8 @@
         safe_name = self.section.replace(u' ',u'-')
         plugin_data = self.get_config(u'data path', safe_name)
         path = os.path.join(app_data, plugin_data)
-
         if not os.path.exists(path):
             os.makedirs(path)
-
         return path
 
     def set_data_path(self, path):
@@ -74,8 +72,8 @@
         if suffix != None:
             return_files = []
             for f in files:
-                if f.find('.') != -1:
-                    nme = f.split('.')
+                if f.find(u'.') != -1:
+                    nme = f.split(u'.')
                     bname = nme[0]
                     sfx = nme[1].lower()
                     sfx = sfx.lower()
@@ -127,7 +125,7 @@
             name = u'last directory'
         last_dir = self.get_config(name)
         if last_dir is None:
-            last_dir = ''
+            last_dir = u''
         return last_dir
 
     def set_last_dir(self, directory, num=None):

=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py	2009-06-03 15:38:14 +0000
+++ openlp/core/lib/renderer.py	2009-06-05 18:53:50 +0000
@@ -27,11 +27,8 @@
 from copy import copy
 
 class Renderer:
-
-    global log
-    log = logging.getLogger(u'Renderer')
-    log.info(u'Renderer Loaded')
-    """All the functions for rendering a set of words onto a Device Context
+    """
+    All the functions for rendering a set of words onto a Device Context
 
     How to use:
     set the words to be displayed with a call to format_slide() - this returns an array of screenfuls of data
@@ -39,8 +36,11 @@
     tell it which DC to render to with set_DC()
     set the borders of where you want the text (if not the whole DC) with set_text_rectangle()
     tell it to render a particular screenfull with render_screen(n)
+    """
+    global log
+    log = logging.getLogger(u'Renderer')
+    log.info(u'Renderer Loaded')
 
-    """
     def __init__(self):
         self._rect = None
         self._debug = 0
@@ -119,19 +119,11 @@
             lines = verse.split(u'\n')
             for line in lines:
                 text.append(line)
-
         split_text = self._split_set_of_lines(text, False)
         print "split text ", split_text
         print "text ", text
         return split_text
 
-#    def render_screen(self, screennum):
-#        log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
-#        t = 0.0
-#        words = self.words[screennum]
-#        retval = self._render_lines(words)
-#        return retval
-
     def set_text_rectangle(self, rect_main, rect_footer):
         """
         Sets the rectangle within which text should be rendered
@@ -145,23 +137,17 @@
          """
         #print "########## Generate frame from lines ##################"
         log.debug(u'generate_frame_from_lines - Start')
-
         #print "Render Lines ", lines
-
         bbox = self._render_lines_unaligned(lines, False)
         if footer_lines is not None:
             bbox1 = self._render_lines_unaligned(footer_lines, True)
-
         # reset the frame. first time do not worrk about what you paint on.
         self._frame = QtGui.QPixmap(self._bg_frame)
-
         x, y = self._correctAlignment(self._rect, bbox)
         bbox = self._render_lines_unaligned(lines, False,  (x, y))
-
         if footer_lines is not None:
             bbox = self._render_lines_unaligned(footer_lines, True, (self._rect_footer.left(), self._rect_footer.top()) )
         log.debug(u'generate_frame_from_lines - Finish')
-
         return self._frame
 
     def _generate_background_frame(self):
@@ -189,23 +175,18 @@
                 w = int(self._frame.width()) / 2
                 h = int(self._frame.height()) / 2
                 gradient = QtGui.QRadialGradient(w, h, w) # Circular
-
             gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor))
             gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor))
-
             painter.setBrush(QtGui.QBrush(gradient))
             rectPath = QtGui.QPainterPath()
-
             max_x = self._frame.width()
             max_y = self._frame.height()
             rectPath.moveTo(0, 0)
             rectPath.lineTo(0, max_y)
             rectPath.lineTo(max_x, max_y)
             rectPath.lineTo(max_x, 0)
-
             rectPath.closeSubpath()
             painter.drawPath(rectPath)
-
         elif self._theme.background_type== u'image': # image
             if self.bg_image is not None:
                 painter.drawPixmap(0 ,0 , self.bg_image)
@@ -219,24 +200,19 @@
     def _split_set_of_lines(self, lines, footer):
         """
         Given a list of lines, decide how to split them best if they don't all fit on the screen
-         - this is done by splitting at 1/2, 1/3 or 1/4 of the set
-         If it doesn't fit, even at this size, just split at each opportunity
-
-         We'll do this by getting the bounding box of each line, and then summing them appropriately
-         Returns a list of [lists of lines], one set for each screenful
-         """
+        - this is done by splitting at 1/2, 1/3 or 1/4 of the set
+        If it doesn't fit, even at this size, just split at each opportunity.
+        We'll do this by getting the bounding box of each line, and then summing them appropriately
+        Returns a list of [lists of lines], one set for each screenful
+        """
         bboxes = []
         #print "lines ",  lines
-
         for line in lines:
             bboxes.append(self._render_and_wrap_single_line(line, footer))
         #print "bboxes ", bboxes
-
         numlines = len(lines)
         bottom = self._rect.bottom()
-
         count = 0
-
         for ratio in (numlines,  numlines/2, numlines/3, numlines/4):
             good = 1
             startline = 0
@@ -258,7 +234,6 @@
                 endline = startline + ratio
             if good == 1:
                 break
-
         retval = []
         numlines_per_page = ratio
         #print "good ", good, ratio
@@ -276,7 +251,7 @@
                 retval.append(thislines)
             #print "extra ", thislines
         else:
-#             print "Just split where you can"
+            # print "Just split where you can"
             retval = []
             startline = 0
             endline = startline + 1
@@ -312,7 +287,6 @@
         (using the _render_single_line fn - which may result in going
         off the bottom) They are expected to be pre-arranged to less
         than a screenful (eg. by using split_set_of_lines)
-
         Returns the bounding box of the text as QRect
         """
         log.debug(u'render lines unaligned Start')
@@ -339,10 +313,8 @@
         """
         Render a single line of words onto the DC, top left corner
         specified.
-
         If the line is too wide for the context, it wraps, but
         right-aligns the surplus words in the manner of song lyrics
-
         Returns the bottom-right corner (of what was rendered) as a tuple(x, y).
         """
         log.debug(u'Render single line %s @ %s '%( line, tlcorner))
@@ -374,7 +346,6 @@
             align = 0
         else:
             align = int(self._theme .display_horizontalAlign)
-
         for linenum in range(len(lines)):
             line = lines[linenum]
             #find out how wide line is
@@ -420,7 +391,6 @@
                         color = self._theme.display_outline_color)
                     self._get_extent_and_render(line, footer,(x-self._outline_offset,y-self._outline_offset), draw=True,
                         color = self._theme.display_outline_color)
-
             self._get_extent_and_render(line, footer,tlcorner=(x, y), draw=True)
             y += h
             if linenum == 0:
@@ -432,7 +402,6 @@
             painter.setPen(QtGui.QPen(QtGui.QColor(0,255,0)))
             painter.drawRect(startx , starty , rightextent-startx , y-starty)
             painter.end()
-
         brcorner = (rightextent , y)
         log.debug(u'Render single line Finish')
         return brcorner
@@ -489,3 +458,10 @@
         if image2 is not None:
             im = image2.toImage()
             im.save("renderer2.png", "png")
+
+#    def render_screen(self, screennum):
+#        log.debug(u'render screen\n %s %s ', screennum, self.words[screennum])
+#        t = 0.0
+#        words = self.words[screennum]
+#        retval = self._render_lines(words)
+#        return retval

=== modified file 'openlp/core/lib/rendermanager.py'
--- openlp/core/lib/rendermanager.py	2009-06-01 17:50:37 +0000
+++ openlp/core/lib/rendermanager.py	2009-06-05 18:53:50 +0000
@@ -54,17 +54,25 @@
     log=logging.getLogger(u'RenderManager')
     log.info(u'RenderManager Loaded')
 
-    def __init__(self, theme_manager, screen_list):
+    def __init__(self, theme_manager, screen_list, screen_number=0):
         log.debug(u'Initilisation started')
         self.screen_list = screen_list
         self.theme_manager = theme_manager
         self.displays = len(screen_list)
-        self.current_display = 0
+        self.current_display = screen_number
         self.renderer = Renderer()
         self.calculate_default(self.screen_list[self.current_display]['size'])
         self.theme = u''
         self.service_theme = u''
 
+    def update_display(self, screen_number):
+        """
+        Updates the render manager's information about the current screen.
+        """
+        if self.current_display != screen_number:
+            self.current_display = screen_number
+            self.calculate_default(self.screen_list[self.current_display]['size'])
+
     def set_global_theme(self, global_theme, global_style = u'Global'):
         self.global_theme = global_theme
         self.global_style = global_style
@@ -95,7 +103,7 @@
         if self.theme is not self.renderer.theme_name:
             log.debug(u'theme is now %s',  self.theme)
             self.themedata = self.theme_manager.getThemeData(self.theme)
-            self.calculate_default(self.screen_list[self.current_display]['size'])
+            self.calculate_default(self.screen_list[self.current_display][u'size'])
             self.renderer.set_theme(self.themedata)
             self.build_text_rectangle(self.themedata)
 
@@ -140,14 +148,14 @@
 
     def format_slide(self, words):
         log.debug(u'format slide')
-        self.calculate_default(self.screen_list[self.current_display]['size'])
+        self.calculate_default(self.screen_list[self.current_display][u'size'])
         self.build_text_rectangle(self.themedata)
         self.renderer.set_frame_dest(self.width, self.height)
         return self.renderer.format_slide(words, False)
 
     def generate_slide(self,main_text, footer_text):
         log.debug(u'generate slide')
-        self.calculate_default(self.screen_list[self.current_display]['size'])
+        self.calculate_default(self.screen_list[self.current_display][u'size'])
         self.build_text_rectangle(self.themedata)
         self.renderer.set_frame_dest(self.width, self.height)
         return self.renderer.generate_frame_from_lines(main_text, footer_text)

=== modified file 'openlp/core/lib/settingstab.py'
--- openlp/core/lib/settingstab.py	2009-05-01 11:50:09 +0000
+++ openlp/core/lib/settingstab.py	2009-06-05 18:53:50 +0000
@@ -25,7 +25,7 @@
     """
     SettingsTab is a helper widget for plugins to define Tabs for the settings dialog.
     """
-    def __init__(self, title=None):
+    def __init__(self, title=None, section=None):
         """
         Constructor to create the Steetings tab item.
         """
@@ -34,10 +34,10 @@
         self.setupUi()
         self.retranslateUi()
         self.initialise()
-        if title == None:
-            self.config = PluginConfig(u'Main')
+        if section == None:
+            self.config = PluginConfig(title)
         else:
-            self.config = PluginConfig(str(title))
+            self.config = PluginConfig(section)
         self.load()
 
     def setTitle(self, title):

=== modified file 'openlp/core/ui/alertstab.py'
--- openlp/core/ui/alertstab.py	2009-05-20 20:17:20 +0000
+++ openlp/core/ui/alertstab.py	2009-06-05 18:53:50 +0000
@@ -29,7 +29,7 @@
     def __init__(self):
         self.font_color = '#ffffff'
         self.bg_color = '#660000'
-        SettingsTab.__init__(self, u'Alerts')
+        SettingsTab.__init__(self, translate(u'AlertsTab', u'Alerts'), u'Alerts')
 
     def setupUi(self):
         self.setObjectName(u'AlertsTab')
@@ -130,13 +130,13 @@
         self.AlertsLayout.addWidget(self.AlertRightColumn)
         # Signals and slots
         QtCore.QObject.connect(self.BackgroundColorButton,
-            QtCore.SIGNAL("pressed()"), self.onBackgroundColorButtonClicked)
+            QtCore.SIGNAL(u'pressed()'), self.onBackgroundColorButtonClicked)
         QtCore.QObject.connect(self.FontColorButton,
-            QtCore.SIGNAL("pressed()"), self.onFontColorButtonClicked)
+            QtCore.SIGNAL(u'pressed()'), self.onFontColorButtonClicked)
         QtCore.QObject.connect(self.FontComboBox,
-            QtCore.SIGNAL("activated(int)"), self.onFontComboBoxClicked)
+            QtCore.SIGNAL(u'activated(int)'), self.onFontComboBoxClicked)
         QtCore.QObject.connect(self.TimeoutSpinBox,
-            QtCore.SIGNAL("valueChanged(int)"), self.onTimeoutSpinBoxChanged)
+            QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
 
     def retranslateUi(self):
         self.FontGroupBox.setTitle(translate(u'AlertsTab', u'Font'))
@@ -146,13 +146,13 @@
         self.TimeoutLabel.setText(translate(u'AlertsTab', u'Alert timeout:'))
         self.TimeoutSpinBox.setSuffix(translate(u'AlertsTab', u's'))
         self.PreviewGroupBox.setTitle(translate(u'AlertsTab', u'Preview'))
-        self.FontPreview.setText(translate(u'AlertsTab', 'openlp.org 2.0 rocks!'))
+        self.FontPreview.setText(translate(u'AlertsTab', u'openlp.org 2.0 rocks!'))
 
     def onBackgroundColorButtonClicked(self):
         self.bg_color = QtGui.QColorDialog.getColor(
-            QColor(self.bg_color), self).name()
+            QtGui.QColor(self.bg_color), self).name()
         self.BackgroundColorButton.setStyleSheet(
-            'background-color: %s' % self.bg_color)
+            u'background-color: %s' % self.bg_color)
         self.updateDisplay()
 
     def onFontComboBoxClicked(self):
@@ -160,22 +160,22 @@
 
     def onFontColorButtonClicked(self):
         self.font_color = QtGui.QColorDialog.getColor(
-            QColor(self.font_color), self).name()
+            QtGui.QColor(self.font_color), self).name()
         self.FontColorButton.setStyleSheet(
-            'background-color: %s' % self.font_color)
+            u'background-color: %s' % self.font_color)
         self.updateDisplay()
 
     def onTimeoutSpinBoxChanged(self):
         self.timeout = self.TimeoutSpinBox.value()
 
     def load(self):
-        self.timeout = int(self.config.get_config('timeout', 5))
-        self.font_color = str(self.config.get_config('font color', u'#ffffff'))
-        self.bg_color = str(self.config.get_config('background color', u'#660000'))
-        self.font_face = str(self.config.get_config('font face', QtGui.QFont().family()))
+        self.timeout = int(self.config.get_config(u'timeout', 5))
+        self.font_color = str(self.config.get_config(u'font color', u'#ffffff'))
+        self.bg_color = str(self.config.get_config(u'background color', u'#660000'))
+        self.font_face = str(self.config.get_config(u'font face', QtGui.QFont().family()))
         self.TimeoutSpinBox.setValue(self.timeout)
-        self.FontColorButton.setStyleSheet('background-color: %s' % self.font_color)
-        self.BackgroundColorButton.setStyleSheet('background-color: %s' % self.bg_color)
+        self.FontColorButton.setStyleSheet(u'background-color: %s' % self.font_color)
+        self.BackgroundColorButton.setStyleSheet(u'background-color: %s' % self.bg_color)
         font = QtGui.QFont()
         font.setFamily(self.font_face)
         self.FontComboBox.setCurrentFont(font)
@@ -183,10 +183,10 @@
 
     def save(self):
         self.font_face = self.FontComboBox.currentFont().family()
-        self.config.set_config('background color', str(self.bg_color))
-        self.config.set_config('font color', str(self.font_color))
-        self.config.set_config('font face', str(self.font_face))
-        self.config.set_config('timeout', str(self.timeout))
+        self.config.set_config(u'background color', str(self.bg_color))
+        self.config.set_config(u'font color', str(self.font_color))
+        self.config.set_config(u'font face', str(self.font_face))
+        self.config.set_config(u'timeout', str(self.timeout))
 
     def updateDisplay(self):
         font = QtGui.QFont()
@@ -195,4 +195,4 @@
         font.setPointSize(16)
         self.FontPreview.setFont(font)
         self.FontPreview.setStyleSheet(
-            'background-color: %s; color: %s' % (self.bg_color, self.font_color))
+            u'background-color: %s; color: %s' % (self.bg_color, self.font_color))

=== modified file 'openlp/core/ui/generaltab.py'
--- openlp/core/ui/generaltab.py	2009-06-01 17:50:37 +0000
+++ openlp/core/ui/generaltab.py	2009-06-05 18:53:50 +0000
@@ -28,7 +28,7 @@
     """
     def __init__(self, screen_list):
         self.screen_list = screen_list
-        SettingsTab.__init__(self, translate(u'GeneralTab', u'General'))
+        SettingsTab.__init__(self, translate(u'GeneralTab', u'General'), u'General')
 
     def setupUi(self):
         self.setObjectName(u'GeneralTab')
@@ -114,18 +114,17 @@
         self.GeneralRightLayout.addItem(self.GeneralRightSpacer)
         self.GeneralLayout.addWidget(self.GeneralRightWidget)
         QtCore.QObject.connect(self.MonitorComboBox,
-            QtCore.SIGNAL("activated(int)"), self.onMonitorComboBoxChanged)
+            QtCore.SIGNAL(u'activated(int)'), self.onMonitorComboBoxChanged)
         QtCore.QObject.connect(self.WarningCheckBox,
-            QtCore.SIGNAL("stateChanged(int)"), self.onWarningCheckBoxChanged)
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onWarningCheckBoxChanged)
         QtCore.QObject.connect(self.AutoOpenCheckBox,
-            QtCore.SIGNAL("stateChanged(int)"), self.onAutoOpenCheckBoxChanged)
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onAutoOpenCheckBoxChanged)
         QtCore.QObject.connect(self.NumberEdit,
-            QtCore.SIGNAL("lostFocus()"), self.onNumberEditLostFocus)
+            QtCore.SIGNAL(u'lostFocus()'), self.onNumberEditLostFocus)
         QtCore.QObject.connect(self.UsernameEdit,
-            QtCore.SIGNAL("lostFocus()"), self.onUsernameEditLostFocus)
+            QtCore.SIGNAL(u'lostFocus()'), self.onUsernameEditLostFocus)
         QtCore.QObject.connect(self.PasswordEdit,
-            QtCore.SIGNAL("lostFocus()"), self.onPasswordEditLostFocus)
-
+            QtCore.SIGNAL(u'lostFocus()'), self.onPasswordEditLostFocus)
 
     def retranslateUi(self):
         self.MonitorGroupBox.setTitle(translate(u'GeneralTab', u'Monitors'))
@@ -144,12 +143,14 @@
 
     def onAutoOpenCheckBoxChanged(self, value):
         self.AutoOpen = False
-        if value == 2: # we have a set value convert to True/False
+        if value == 2:
+            # we have a set value convert to True/False
             self.AutoOpen = True
 
     def onWarningCheckBoxChanged(self, value):
         self.Warning = False
-        if value == 2: # we have a set value convert to True/False
+        if value == 2:
+            # we have a set value convert to True/False
             self.Warning = True
 
     def onNumberEditLostFocus(self):
@@ -164,19 +165,19 @@
     def load(self):
         for screen in self.screen_list:
             screen_name = translate(u'GeneralTab', u'Screen') + u' ' + \
-                str(screen['number'] + 1)
-            if screen['primary']:
+                str(screen[u'number'] + 1)
+            if screen[u'primary']:
                 screen_name = screen_name + u' (' + \
                     translate(u'GeneralTab', u'primary') + u')'
             self.MonitorComboBox.addItem(screen_name)
-
+        # Get the configs
         self.MonitorNumber = int(self.config.get_config(u'Monitor', u'0'))
-        self.Warning = str_to_bool(self.config.get_config(u'Warning', u"False"))
-        self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u"False"))
-        self.CCLNumber = str(self.config.get_config('CCL Number', u'XXX'))
-        self.Username = str(self.config.get_config('User Name', u''))
-        self.Password = str(self.config.get_config('Password', u''))
-
+        self.Warning = str_to_bool(self.config.get_config(u'Warning', u'False'))
+        self.AutoOpen = str_to_bool(self.config.get_config(u'Auto Open', u'False'))
+        self.CCLNumber = str(self.config.get_config(u'CCL Number', u'XXX'))
+        self.Username = str(self.config.get_config(u'User Name', u''))
+        self.Password = str(self.config.get_config(u'Password', u''))
+        # Set a few things up
         self.MonitorComboBox.setCurrentIndex(self.MonitorNumber)
         self.WarningCheckBox.setChecked(self.Warning)
         self.AutoOpenCheckBox.setChecked(self.AutoOpen)
@@ -185,9 +186,9 @@
         self.PasswordEdit.setText(self.Password)
 
     def save(self):
-        self.config.set_config(u'Monitor',str(self.MonitorNumber))
-        self.config.set_config(u'Warning', str(self.Warning))
-        self.config.set_config(u'Auto Open', str(self.AutoOpen))
-        self.config.set_config('CCL Number', str(self.CCLNumber))
-        self.config.set_config('User Name',str(self.Username))
-        self.config.set_config('Password', str(self.Password ))
+        self.config.set_config(u'Monitor', self.MonitorNumber)
+        self.config.set_config(u'Warning', self.Warning)
+        self.config.set_config(u'Auto Open', self.AutoOpen)
+        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/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2009-06-01 17:50:37 +0000
+++ openlp/core/ui/maindisplay.py	2009-06-05 18:53:50 +0000
@@ -29,8 +29,13 @@
         QtGui.QWidget.__init__(self, parent)
         self.setWindowTitle(u'OpenLP Display')
         self.screens = screens
+        self.layout = QtGui.QVBoxLayout(self)
+        self.layout.setSpacing(0)
+        self.layout.setMargin(0)
+        self.layout.setObjectName(u'layout')
         self.display = QtGui.QLabel(self)
         self.display.setScaledContents(True)
+        self.layout.addWidget(self.display)
         self.displayBlank = False
         self.blankFrame= None
         self.alertactive = False
@@ -43,23 +48,21 @@
         @param (integer) screen This is the screen number.
         """
         screen = self.screens[screenNumber]
-        if screen['number'] != screenNumber:
+        if screen[u'number'] != screenNumber:
             # We will most probably never actually hit this bit, but just in
             # case the index in the list doesn't match the screen number, we
             # search for it.
             for scrn in self.screens:
-                if scrn['number'] == screenNumber:
+                if scrn[u'number'] == screenNumber:
                     screen = scrn
                     break
-        self.setGeometry(screen['size'])
-        self.display.setGeometry(screen['size'])
-        if not screen['primary']:
+        self.setGeometry(screen[u'size'])
+        if not screen[u'primary']:
             self.showFullScreen()
         else:
-            self.showMinimized()
-
-        painter=QtGui.QPainter()
-        self.blankFrame = QtGui.QPixmap(screen['size'].width(), screen['size'].height())
+            self.hide()
+        painter = QtGui.QPainter()
+        self.blankFrame = QtGui.QPixmap(screen[u'size'].width(), screen[u'size'].height())
         painter.begin(self.blankFrame)
         painter.fillRect(self.blankFrame.rect(), QtGui.QColor(u'#000000'))
         self.frameView(self.blankFrame)

=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2009-06-02 19:02:12 +0000
+++ openlp/core/ui/mainwindow.py	2009-06-05 18:53:50 +0000
@@ -25,7 +25,7 @@
 from openlp.core.ui import AboutForm, SettingsForm, AlertForm, ServiceManager, \
     ThemeManager, MainDisplay, SlideController
 from openlp.core.lib import translate, Plugin, MediaManagerItem, SettingsTab, \
-    EventManager, RenderManager
+    EventManager, RenderManager, PluginConfig
 from openlp.core import PluginManager
 
 class MainWindow(object):
@@ -46,6 +46,7 @@
         self.mainDisplay = MainDisplay(None, screens)
         self.screenList = screens
         self.EventManager = EventManager()
+        self.generalConfig = PluginConfig(u'General')
         self.alertForm = AlertForm(self)
         self.aboutForm = AboutForm()
         self.settingsForm = SettingsForm(self.screenList, self)
@@ -60,7 +61,8 @@
         #warning cyclic dependency
         #RenderManager needs to call ThemeManager and
         #ThemeManager needs to call RenderManager
-        self.RenderManager = RenderManager(self.ThemeManagerContents, self.screenList)
+        self.RenderManager = RenderManager(self.ThemeManagerContents,
+            self.screenList, int(self.generalConfig.get_config(u'Monitor', 0)))
         log.info(u'Load Plugins')
         self.plugin_helpers[u'preview'] = self.PreviewController
         self.plugin_helpers[u'live'] = self.LiveController
@@ -91,6 +93,43 @@
         log.info(u'Load Themes')
         self.ThemeManagerContents.loadThemes()
 
+    def show(self):
+        """
+        Show the main form, as well as the display form
+        """
+        self.mainWindow.showMaximized()
+        self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber)
+        self.mainDisplay.show()
+        #self.mainWindow.setFocus(QtCore.Qt.OtherFocusReason)
+
+    def onHelpAboutItemClicked(self):
+        """
+        Show the About form
+        """
+        self.aboutForm.exec_()
+
+    def onToolsAlertItemClicked(self):
+        """
+        Show the Alert form
+        """
+        self.alertForm.exec_()
+
+    def onOptionsSettingsItemClicked(self):
+        """
+        Show the Settings dialog
+        """
+        self.settingsForm.exec_()
+        screen_number = int(self.generalConfig.get_config(u'Monitor', 0))
+        self.RenderManager.update_display(screen_number)
+        self.mainDisplay.setup(screen_number)
+
+    def onCloseEvent(self, event):
+        """
+        Hook to close the main window and display windows on exit
+        """
+        self.mainDisplay.close()
+        event.accept()
+
     def setupUi(self):
         """
         Set up the user interface
@@ -459,36 +498,3 @@
         self.action_Preview_Panel.setText(
             translate(u'mainWindow', u'&Preview Pane'))
         self.ModeLiveItem.setText(translate(u'mainWindow', u'&Live'))
-
-    def show(self):
-        """
-        Show the main form, as well as the display form
-        """
-        self.mainWindow.showMaximized()
-        self.mainDisplay.setup(self.settingsForm.GeneralTab.MonitorNumber)
-        self.mainDisplay.show()
-
-    def onHelpAboutItemClicked(self):
-        """
-        Show the About form
-        """
-        self.aboutForm.exec_()
-
-    def onToolsAlertItemClicked(self):
-        """
-        Show the Alert form
-        """
-        self.alertForm.exec_()
-
-    def onOptionsSettingsItemClicked(self):
-        """
-        Show the Settings dialog
-        """
-        self.settingsForm.exec_()
-
-    def onCloseEvent(self, event):
-        """
-        Hook to close the main window and display windows on exit
-        """
-        self.mainDisplay.close()
-        event.accept()

=== modified file 'openlp/core/ui/themestab.py'
--- openlp/core/ui/themestab.py	2009-05-20 20:17:20 +0000
+++ openlp/core/ui/themestab.py	2009-06-05 18:53:50 +0000
@@ -28,7 +28,7 @@
     """
     def __init__(self, parent):
         self.parent = parent
-        SettingsTab.__init__(self, u'Themes')
+        SettingsTab.__init__(self, translate(u'ThemesTab', u'Themes'), u'Themes')
 
     def setupUi(self):
         self.setObjectName(u'ThemesTab')
@@ -90,11 +90,11 @@
         self.ThemesTabLayout.addWidget(self.LevelGroupBox)
 
         QtCore.QObject.connect(self.SongLevelRadioButton,
-            QtCore.SIGNAL("pressed()"), self.onSongLevelButtonPressed)
+            QtCore.SIGNAL(u'pressed()'), self.onSongLevelButtonPressed)
         QtCore.QObject.connect(self.ServiceLevelRadioButton,
-            QtCore.SIGNAL("pressed()"), self.onServiceLevelButtonPressed)
+            QtCore.SIGNAL(u'pressed()'), self.onServiceLevelButtonPressed)
         QtCore.QObject.connect(self.GlobalLevelRadioButton,
-            QtCore.SIGNAL("pressed()"), self.onGlobalLevelButtonPressed)
+            QtCore.SIGNAL(u'pressed()'), self.onGlobalLevelButtonPressed)
 
         QtCore.QObject.connect(self.DefaultComboBox,
             QtCore.SIGNAL("activated(int)"), self.onDefaultComboBoxChanged)

=== modified file 'openlp/core/utils/registry.py'
--- openlp/core/utils/registry.py	2009-06-04 16:53:49 +0000
+++ openlp/core/utils/registry.py	2009-06-05 18:53:50 +0000
@@ -28,8 +28,8 @@
     """
     def __init__(self, dir):
         self.config = SafeConfigParser()
-        self.file_name = os.path.join(dir, 'openlp.conf')
-        self.config.read(self.file_name)
+        self.file_name = os.path.join(dir, u'openlp.conf')
+        self._load()
 
     def has_value(self, section, key):
         """
@@ -95,14 +95,24 @@
         except:
             return False
 
+    def _load(self):
+        try:
+            if not os.path.isfile(self.file_name):
+                return False
+            file_handle = open(self.file_name, u'r')
+            self.config.readfp(file_handle)
+            file_handle.close()
+            return True
+        except:
+            return False
+
     def _save(self):
         try:
             if not os.path.exists(os.path.dirname(self.file_name)):
                 os.makedirs(os.path.dirname(self.file_name))
-            file_handle = open(self.file_name, 'w')
+            file_handle = open(self.file_name, u'w')
             self.config.write(file_handle)
-            close(file_handle)
-            self.config.read(self.file_name)
-            return True
+            file_handle.close()
+            return self._load()
         except:
             return False

=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
--- openlp/plugins/bibles/lib/biblestab.py	2009-05-21 05:15:51 +0000
+++ openlp/plugins/bibles/lib/biblestab.py	2009-06-05 18:53:50 +0000
@@ -32,7 +32,7 @@
         self.show_new_chapters = False
         self.display_style = 0
         self.bible_search = True
-        SettingsTab.__init__(self, u'Bibles')
+        SettingsTab.__init__(self, translate(u'BiblesTab', u'Bibles'), u'Bibles')
 
     def setupUi(self):
         self.setObjectName(u'BiblesTab')
@@ -134,32 +134,32 @@
         self.BibleLayout.addWidget(self.BibleRightWidget)
         # Signals and slots
         QtCore.QObject.connect(self.NewChaptersCheckBox,
-            QtCore.SIGNAL("stateChanged(int)"), self.onNewChaptersCheckBoxChanged)
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onNewChaptersCheckBoxChanged)
         QtCore.QObject.connect(self.BibleSearchCheckBox,
-            QtCore.SIGNAL("stateChanged(int)"), self.onBibleSearchCheckBoxChanged)
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onBibleSearchCheckBoxChanged)
         QtCore.QObject.connect(self.VerseRadioButton,
-            QtCore.SIGNAL("pressed()"), self.onVerseRadioButtonPressed)
+            QtCore.SIGNAL(u'pressed()'), self.onVerseRadioButtonPressed)
         QtCore.QObject.connect(self.ParagraphRadioButton,
-            QtCore.SIGNAL("pressed()"), self.onParagraphRadioButtonPressed)
+            QtCore.SIGNAL(u'pressed()'), self.onParagraphRadioButtonPressed)
         QtCore.QObject.connect(self.DisplayStyleComboBox,
-            QtCore.SIGNAL("activated(int)"), self.onDisplayStyleComboBoxChanged)
+            QtCore.SIGNAL(u'activated(int)'), self.onDisplayStyleComboBoxChanged)
         QtCore.QObject.connect(self.BibleThemeComboBox,
-            QtCore.SIGNAL("activated(int)"), self.onBibleThemeComboBoxChanged)
+            QtCore.SIGNAL(u'activated(int)'), self.onBibleThemeComboBoxChanged)
 
     def retranslateUi(self):
-        self.VerseDisplayGroupBox.setTitle(translate('SettingsForm', 'Verse Display'))
-        self.VerseRadioButton.setText(translate('SettingsForm', 'Verse style'))
-        self.ParagraphRadioButton.setText(translate('SettingsForm','Paragraph style'))
-        self.NewChaptersCheckBox.setText(translate('SettingsForm', 'Only show new chapter numbers'))
-        self.DisplayStyleLabel.setText(translate('SettingsForm', 'Display Style:'))
-        self.BibleThemeLabel.setText(translate('SettingsForm', 'Bible Theme:'))
-        self.DisplayStyleComboBox.setItemText(0, translate('SettingsForm', 'No brackets'))
-        self.DisplayStyleComboBox.setItemText(1, translate('SettingsForm', '( and )'))
-        self.DisplayStyleComboBox.setItemText(2, translate('SettingsForm', '{ and }'))
-        self.DisplayStyleComboBox.setItemText(3, translate('SettingsForm', '[ and ]'))
-        self.ChangeNoteLabel.setText(translate('SettingsForm', 'Note:\nChanges don\'t affect verses already in the service'))
-        self.BibleSearchGroupBox.setTitle(translate('SettingsForm', 'Search'))
-        self.BibleSearchCheckBox.setText(translate('SettingsForm', 'Search-as-you-type'))
+        self.VerseDisplayGroupBox.setTitle(translate(u'SettingsForm', u'Verse Display'))
+        self.VerseRadioButton.setText(translate(u'SettingsForm', u'Verse style'))
+        self.ParagraphRadioButton.setText(translate(u'SettingsForm', u'Paragraph style'))
+        self.NewChaptersCheckBox.setText(translate(u'SettingsForm', u'Only show new chapter numbers'))
+        self.DisplayStyleLabel.setText(translate(u'SettingsForm', u'Display Style:'))
+        self.BibleThemeLabel.setText(translate(u'SettingsForm', u'Bible Theme:'))
+        self.DisplayStyleComboBox.setItemText(0, translate(u'SettingsForm', u'No brackets'))
+        self.DisplayStyleComboBox.setItemText(1, translate(u'SettingsForm', u'( and )'))
+        self.DisplayStyleComboBox.setItemText(2, translate(u'SettingsForm', u'{ and }'))
+        self.DisplayStyleComboBox.setItemText(3, translate(u'SettingsForm', u'[ and ]'))
+        self.ChangeNoteLabel.setText(translate(u'SettingsForm', u'Note:\nChanges don\'t affect verses already in the service'))
+        self.BibleSearchGroupBox.setTitle(translate(u'SettingsForm', u'Search'))
+        self.BibleSearchCheckBox.setText(translate(u'SettingsForm', u'Search-as-you-type'))
 
     def onBibleThemeComboBoxChanged(self):
         self.bible_theme = self.BibleThemeComboBox.currentText()
@@ -187,7 +187,7 @@
 
     def load(self):
         self.paragraph_style = str_to_bool(self.config.get_config(u'paragraph style', u'True'))
-        self.show_new_chapters = str_to_bool(self.config.get_config(u'display new chapter', u"False"))
+        self.show_new_chapters = str_to_bool(self.config.get_config(u'display new chapter', u'False'))
         self.display_style = int(self.config.get_config(u'display brackets', u'0'))
         self.bible_theme = self.config.get_config(u'bible theme', u'0')
         self.bible_search = str_to_bool(self.config.get_config(u'search as type', u'True'))
@@ -216,6 +216,7 @@
             self.BibleThemeComboBox.addItem(theme)
         id = self.BibleThemeComboBox.findText(str(self.bible_theme), QtCore.Qt.MatchExactly)
         if id == -1:
-            id = 0 # Not Found
+            # Not Found
+            id = 0
             self.bible_theme = u''
         self.BibleThemeComboBox.setCurrentIndex(id)

=== modified file 'openlp/plugins/custom/lib/customtab.py'
--- openlp/plugins/custom/lib/customtab.py	2009-05-21 16:07:01 +0000
+++ openlp/plugins/custom/lib/customtab.py	2009-06-05 18:53:50 +0000
@@ -27,7 +27,7 @@
     SongsTab is the songs settings tab in the settings dialog.
     """
     def __init__(self):
-        SettingsTab.__init__(self, u'Custom')
+        SettingsTab.__init__(self, translate(u'CustomTab', u'Custom'), u'Custom')
 
     def setupUi(self):
         self.setObjectName(u'CustomTab')

=== modified file 'openlp/plugins/media/lib/mediatab.py'
--- openlp/plugins/media/lib/mediatab.py	2009-05-21 05:15:51 +0000
+++ openlp/plugins/media/lib/mediatab.py	2009-06-05 18:53:50 +0000
@@ -27,40 +27,38 @@
     mediaTab is the media settings tab in the settings dialog.
     """
     def __init__(self):
-        SettingsTab.__init__(self, u'Media')
+        SettingsTab.__init__(self, translate(u'MediaTab', u'Media'), u'Media')
 
     def setupUi(self):
         self.setObjectName(u'MediaTab')
-
         self.MediaLayout = QtGui.QFormLayout(self)
-        self.MediaLayout.setObjectName("MediaLayout")
-
+        self.MediaLayout.setObjectName(u'MediaLayout')
         self.MediaModeGroupBox = QtGui.QGroupBox(self)
-        self.MediaModeGroupBox.setObjectName("MediaModeGroupBox")
+        self.MediaModeGroupBox.setObjectName(u'MediaModeGroupBox')
         self.MediaModeLayout = QtGui.QVBoxLayout(self.MediaModeGroupBox)
         self.MediaModeLayout.setSpacing(8)
         self.MediaModeLayout.setMargin(8)
-        self.MediaModeLayout.setObjectName("MediaModeLayout")
+        self.MediaModeLayout.setObjectName(u'MediaModeLayout')
         self.UseVMRCheckBox = QtGui.QCheckBox(self.MediaModeGroupBox)
-        self.UseVMRCheckBox.setObjectName("UseVMRCheckBox")
+        self.UseVMRCheckBox.setObjectName(u'UseVMRCheckBox')
         self.MediaModeLayout.addWidget(self.UseVMRCheckBox)
         self.UseVMRLabel = QtGui.QLabel(self.MediaModeGroupBox)
-        self.UseVMRLabel.setObjectName("UseVMRLabel")
+        self.UseVMRLabel.setObjectName(u'UseVMRLabel')
         self.MediaModeLayout.addWidget(self.UseVMRLabel)
 
         self.MediaLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.MediaModeGroupBox)
         # Signals and slots
         QtCore.QObject.connect(self.UseVMRCheckBox,
-            QtCore.SIGNAL("stateChanged(int)"), self.onVMRCheckBoxChanged)
+            QtCore.SIGNAL(u'stateChanged(int)'), self.onVMRCheckBoxChanged)
 
     def retranslateUi(self):
-        self.MediaModeGroupBox.setTitle(translate("SettingsForm", "Media Mode"))
-        self.UseVMRCheckBox.setText(translate("SettingsForm", "Use Video Mode Rendering"))
-        self.UseVMRLabel.setText(translate("SettingsForm", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\";>\n"
-"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
-"p, li { white-space: pre-wrap; }\n"
-"</style></head><body style=\" font-family:\'DejaVu Sans\'; font-size:10pt; font-weight:400; font-style:normal;\">\n"
-"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-style:italic;\">No video preview available with VMR enabled</span></p></body></html>"))
+        self.MediaModeGroupBox.setTitle(translate(u'MediaTab', u'Media Mode'))
+        self.UseVMRCheckBox.setText(translate(u'MediaTab', u'Use Video Mode Rendering'))
+        self.UseVMRLabel.setText(translate(u'MediaTab', u'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd";>\n'
+            u'<html><head><meta name="qrichtext" content="1" /><style type="text/css">\n'
+            u'p, li { white-space: pre-wrap; }\n'
+            u'</style></head><body style="font-family:\'DejaVu Sans\'; font-size:10pt; font-weight:400; font-style:normal;">\n'
+            u'<p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">No video preview available with VMR enabled</span></p></body></html>'))
 
     def onVMRCheckBoxChanged(self):
         use_vmr_mode = self.UseVMRCheckBox.checkState()

=== modified file 'openlp/plugins/presentations/lib/presentationtab.py'
--- openlp/plugins/presentations/lib/presentationtab.py	2009-06-01 18:37:06 +0000
+++ openlp/plugins/presentations/lib/presentationtab.py	2009-06-05 18:53:50 +0000
@@ -24,23 +24,23 @@
 
 class PresentationTab(SettingsTab):
     """
-    BiblesTab is the Bibles settings tab in the settings dialog.
+    PresentationsTab is the Presentations settings tab in the settings dialog.
     """
     def __init__(self):
-        SettingsTab.__init__(self, u'Presentation')
+        SettingsTab.__init__(self, translate(u'PresentationTab', u'Presentation'), u'Presentation')
 
     def setupUi(self):
-        self.setObjectName(u'BiblesTab')
-        self.BibleLayout = QtGui.QHBoxLayout(self)
-        self.BibleLayout.setSpacing(8)
-        self.BibleLayout.setMargin(8)
-        self.BibleLayout.setObjectName(u'BibleLayout')
-        self.BibleLeftWidget = QtGui.QWidget(self)
-        self.BibleLeftWidget.setObjectName(u'BibleLeftWidget')
-        self.BibleLeftLayout = QtGui.QVBoxLayout(self.BibleLeftWidget)
-        self.BibleLeftLayout.setObjectName(u'BibleLeftLayout')
-        self.BibleLeftLayout.setSpacing(8)
-        self.BibleLeftLayout.setMargin(0)
+        self.setObjectName(u'PresentationTab')
+        self.PresentationLayout = QtGui.QHBoxLayout(self)
+        self.PresentationLayout.setSpacing(8)
+        self.PresentationLayout.setMargin(8)
+        self.PresentationLayout.setObjectName(u'PresentationLayout')
+        self.PresentationLeftWidget = QtGui.QWidget(self)
+        self.PresentationLeftWidget.setObjectName(u'PresentationLeftWidget')
+        self.PresentationLeftLayout = QtGui.QVBoxLayout(self.PresentationLeftWidget)
+        self.PresentationLeftLayout.setObjectName(u'PresentationLeftLayout')
+        self.PresentationLeftLayout.setSpacing(8)
+        self.PresentationLeftLayout.setMargin(0)
 
         self.VerseDisplayGroupBox = QtGui.QGroupBox(self)
         self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox')
@@ -70,29 +70,29 @@
         self.ImpressPath.setObjectName("ImpressPath")
         self.VerseDisplayLayout.addWidget(self.ImpressPath, 3, 0, 1, 1)
 
-        self.BibleThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
-        self.BibleThemeWidget.setObjectName(u'BibleThemeWidget')
-        self.BibleThemeLayout = QtGui.QHBoxLayout(self.BibleThemeWidget)
-        self.BibleThemeLayout.setSpacing(8)
-        self.BibleThemeLayout.setMargin(0)
-        self.BibleThemeLayout.setObjectName(u'BibleThemeLayout')
-
-        self.BibleLeftLayout.addWidget(self.VerseDisplayGroupBox)
-        self.BibleLeftSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.BibleLeftLayout.addItem(self.BibleLeftSpacer)
-        self.BibleLayout.addWidget(self.BibleLeftWidget)
-
-        self.BibleRightWidget = QtGui.QWidget(self)
-        self.BibleRightWidget.setObjectName(u'BibleRightWidget')
-        self.BibleRightLayout = QtGui.QVBoxLayout(self.BibleRightWidget)
-        self.BibleRightLayout.setObjectName(u'BibleRightLayout')
-        self.BibleRightLayout.setSpacing(8)
-        self.BibleRightLayout.setMargin(0)
-        self.BibleRightSpacer = QtGui.QSpacerItem(50, 20,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.BibleRightLayout.addItem(self.BibleRightSpacer)
-        self.BibleLayout.addWidget(self.BibleRightWidget)
+        self.PresentationThemeWidget = QtGui.QWidget(self.VerseDisplayGroupBox)
+        self.PresentationThemeWidget.setObjectName(u'PresentationThemeWidget')
+        self.PresentationThemeLayout = QtGui.QHBoxLayout(self.PresentationThemeWidget)
+        self.PresentationThemeLayout.setSpacing(8)
+        self.PresentationThemeLayout.setMargin(0)
+        self.PresentationThemeLayout.setObjectName(u'PresentationThemeLayout')
+
+        self.PresentationLeftLayout.addWidget(self.VerseDisplayGroupBox)
+        self.PresentationLeftSpacer = QtGui.QSpacerItem(40, 20,
+            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.PresentationLeftLayout.addItem(self.PresentationLeftSpacer)
+        self.PresentationLayout.addWidget(self.PresentationLeftWidget)
+
+        self.PresentationRightWidget = QtGui.QWidget(self)
+        self.PresentationRightWidget.setObjectName(u'PresentationRightWidget')
+        self.PresentationRightLayout = QtGui.QVBoxLayout(self.PresentationRightWidget)
+        self.PresentationRightLayout.setObjectName(u'PresentationRightLayout')
+        self.PresentationRightLayout.setSpacing(8)
+        self.PresentationRightLayout.setMargin(0)
+        self.PresentationRightSpacer = QtGui.QSpacerItem(50, 20,
+            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.PresentationRightLayout.addItem(self.PresentationRightSpacer)
+        self.PresentationLayout.addWidget(self.PresentationRightWidget)
 
         # Signals and slots
         #QtCore.QObject.connect(self.NewChaptersCheckBox,
@@ -116,20 +116,20 @@
 #        self.paragraph_style = (self.config.get_config(u'paragraph style', u'True'))
 #        self.show_new_chapters = (self.config.get_config(u'display new chapter', u"False"))
 #        self.display_style = int(self.config.get_config(u'display brackets', u'0'))
-#        self.bible_theme = int(self.config.get_config(u'bible theme', u'0'))
-#        self.bible_search = (self.config.get_config(u'search as type', u'True'))
+#        self.Presentation_theme = int(self.config.get_config(u'Presentation theme', u'0'))
+#        self.Presentation_search = (self.config.get_config(u'search as type', u'True'))
 #        if self.paragraph_style:
 #            self.ParagraphRadioButton.setChecked(True)
 #        else:
 #            self.VerseRadioButton.setChecked(True)
 #        self.NewChaptersCheckBox.setChecked(self.show_new_chapters)
 #        self.DisplayStyleComboBox.setCurrentIndex(self.display_style)
-#        self.BibleSearchCheckBox.setChecked(self.bible_search)
+#        self.PresentationSearchCheckBox.setChecked(self.Presentation_search)
 
     def save(self):
         pass
 #        self.config.set_config(u'paragraph style', str(self.paragraph_style))
 #        self.config.set_config(u'display new chapter', str(self.show_new_chapters))
 #        self.config.set_config(u'display brackets', str(self.display_style))
-#        self.config.set_config(u'search as type', str(self.bible_search))
-#        self.config.set_config(u'bible theme', str(self.bible_theme))
+#        self.config.set_config(u'search as type', str(self.Presentation_search))
+#        self.config.set_config(u'Presentation theme', str(self.Presentation_theme))

=== modified file 'openlp/plugins/songs/lib/songstab.py'
--- openlp/plugins/songs/lib/songstab.py	2009-05-21 16:07:01 +0000
+++ openlp/plugins/songs/lib/songstab.py	2009-06-05 18:53:50 +0000
@@ -20,14 +20,14 @@
 
 from PyQt4 import QtCore, QtGui
 
-from openlp.core.lib import SettingsTab,  translate
+from openlp.core.lib import SettingsTab, translate
 
 class SongsTab(SettingsTab):
     """
     SongsTab is the songs settings tab in the settings dialog.
     """
     def __init__(self):
-        SettingsTab.__init__(self, u'Songs')
+        SettingsTab.__init__(self, translate(u'SongsTab', u'Songs'), u'Songs')
 
     def setupUi(self):
         self.setObjectName(u'SongsTab')


References