← Back to team overview

openlp-core team mailing list archive

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

 

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

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  Bug #730294 in OpenLP: "Auto-preview, not previewing next item if go live from preview"
  https://bugs.launchpad.net/openlp/+bug/730294
  Bug #745218 in OpenLP: "Move "Layout Style" out of Bible settings and into Media Manager for easy access"
  https://bugs.launchpad.net/openlp/+bug/745218
  Bug #748960 in OpenLP: "comma after bible name"
  https://bugs.launchpad.net/openlp/+bug/748960
  Bug #755687 in OpenLP: "Save Bible translation"
  https://bugs.launchpad.net/openlp/+bug/755687

For more details, see:
https://code.launchpad.net/~trb143/openlp/general/+merge/57068

Clean up bible Tab code to standards
Sort out find_in_combo.
Fix bugs:
  -  Save last used bible
  -  Remove stray comma
  -  Allow layout to be selected from Quick Tab.  (Advanced has no real estate left so has been left in settings). 
-- 
https://code.launchpad.net/~trb143/openlp/general/+merge/57068
Your team OpenLP Core is requested to review the proposed merge of lp:~trb143/openlp/general into lp:openlp.
=== modified file 'openlp/core/lib/ui.py'
--- openlp/core/lib/ui.py	2011-03-27 16:30:40 +0000
+++ openlp/core/lib/ui.py	2011-04-10 07:44:29 +0000
@@ -49,8 +49,10 @@
     Cancel = translate('OpenLP.Ui', 'Cancel')
     CCLINumberLabel = translate('OpenLP.Ui', 'CCLI number:')
     CreateService = translate('OpenLP.Ui', 'Create a new service.')
+    Continuous = translate('OpenLP.Ui', 'Continuous')
     Default = unicode(translate('OpenLP.Ui', 'Default'))
     Delete = translate('OpenLP.Ui', '&Delete')
+    DisplayStyle = translate('OpenLP.Ui', 'Display style:')
     Edit = translate('OpenLP.Ui', '&Edit')
     EmptyField = translate('OpenLP.Ui', 'Empty Field')
     Error = translate('OpenLP.Ui', 'Error')
@@ -97,6 +99,8 @@
     Theme = translate('OpenLP.Ui', 'Theme', 'Singular')
     Themes = translate('OpenLP.Ui', 'Themes', 'Plural')
     Top = translate('OpenLP.Ui', 'Top')
+    VersePerSlide = translate('OpenLP.Ui', 'Verse Per Slide')
+    VersePerLine = translate('OpenLP.Ui', 'Verse Per Line')
     Version = translate('OpenLP.Ui', 'Version')
 
 def add_welcome_page(parent, image):
@@ -315,3 +319,20 @@
     form.verticalComboBox.addItem(UiStrings.Bottom)
     verticalLabel.setBuddy(form.verticalComboBox)
     layout.addRow(verticalLabel, form.verticalComboBox)
+
+def find_in_combo_box(combo_box, value_to_find):
+    """
+    Find a string in a combo box and set it as the selected item if present
+
+    ``combo_box``
+        The combo box to check for selected items
+
+    ``value_to_find``
+        The value to find
+    """
+    index = combo_box.findText(value_to_find,
+        QtCore.Qt.MatchExactly)
+    if index == -1:
+        # Not Found.
+        index = 0
+    combo_box.setCurrentIndex(index)

=== modified file 'openlp/core/ui/servicemanager.py'
--- openlp/core/ui/servicemanager.py	2011-04-02 09:53:08 +0000
+++ openlp/core/ui/servicemanager.py	2011-04-10 07:44:29 +0000
@@ -35,7 +35,8 @@
 from openlp.core.lib import OpenLPToolbar, ServiceItem, context_menu_action, \
     Receiver, build_icon, ItemCapabilities, SettingsManager, translate
 from openlp.core.lib.theme import ThemeLevel
-from openlp.core.lib.ui import UiStrings, critical_error_message_box
+from openlp.core.lib.ui import UiStrings, critical_error_message_box, \
+    find_in_combo_box
 from openlp.core.ui import ServiceNoteForm, ServiceItemEditForm, StartTimeForm
 from openlp.core.ui.printserviceform import PrintServiceForm
 from openlp.core.utils import AppLocation, delete_file, file_is_unicode, \
@@ -1261,13 +1262,7 @@
             action = context_menu_action(self.serviceManagerList, None, theme,
                 self.onThemeChangeAction)
             self.themeMenu.addAction(action)
-        index = self.themeComboBox.findText(self.service_theme,
-            QtCore.Qt.MatchExactly)
-        # Not Found
-        if index == -1:
-            index = 0
-            self.service_theme = u''
-        self.themeComboBox.setCurrentIndex(index)
+        find_in_combo_box(self.themeComboBox, self.service_theme)
         self.mainwindow.renderManager.set_service_theme(self.service_theme)
         self.regenerateServiceItems()
 

=== modified file 'openlp/core/ui/themestab.py'
--- openlp/core/ui/themestab.py	2011-03-24 19:04:02 +0000
+++ openlp/core/ui/themestab.py	2011-04-10 07:44:29 +0000
@@ -28,7 +28,7 @@
 
 from openlp.core.lib import SettingsTab, Receiver, translate
 from openlp.core.lib.theme import ThemeLevel
-from openlp.core.lib.ui import UiStrings
+from openlp.core.lib.ui import UiStrings, find_in_combo_box
 
 class ThemesTab(SettingsTab):
     """
@@ -185,12 +185,7 @@
         self.DefaultComboBox.clear()
         for theme in theme_list:
             self.DefaultComboBox.addItem(theme)
-        id = self.DefaultComboBox.findText(
-            self.global_theme, QtCore.Qt.MatchExactly)
-        if id == -1:
-            id = 0 # Not Found
-            self.global_theme = u''
-        self.DefaultComboBox.setCurrentIndex(id)
+        find_in_combo_box(self.DefaultComboBox, self.global_theme)
         self.parent.renderManager.set_global_theme(
             self.global_theme, self.theme_level)
         if self.global_theme is not u'':

=== modified file 'openlp/plugins/bibles/lib/biblestab.py'
--- openlp/plugins/bibles/lib/biblestab.py	2011-03-24 19:04:02 +0000
+++ openlp/plugins/bibles/lib/biblestab.py	2011-04-10 07:44:29 +0000
@@ -30,6 +30,7 @@
 
 from openlp.core.lib import Receiver, SettingsTab, translate
 from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle
+from openlp.core.lib.ui import UiStrings, find_in_combo_box
 
 log = logging.getLogger(__name__)
 
@@ -48,116 +49,115 @@
     def setupUi(self):
         self.setObjectName(u'BiblesTab')
         SettingsTab.setupUi(self)
-        self.VerseDisplayGroupBox = QtGui.QGroupBox(self.leftColumn)
-        self.VerseDisplayGroupBox.setObjectName(u'VerseDisplayGroupBox')
-        self.VerseDisplayLayout = QtGui.QFormLayout(self.VerseDisplayGroupBox)
-        self.VerseDisplayLayout.setObjectName(u'VerseDisplayLayout')
-        self.NewChaptersCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
-        self.NewChaptersCheckBox.setObjectName(u'NewChaptersCheckBox')
-        self.VerseDisplayLayout.addRow(self.NewChaptersCheckBox)
-        self.DisplayStyleLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
-        self.DisplayStyleLabel.setObjectName(u'DisplayStyleLabel')
-        self.DisplayStyleComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
-        self.DisplayStyleComboBox.addItems([u'', u'', u'', u''])
-        self.DisplayStyleComboBox.setObjectName(u'DisplayStyleComboBox')
-        self.VerseDisplayLayout.addRow(self.DisplayStyleLabel,
-            self.DisplayStyleComboBox)
-        self.LayoutStyleLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
-        self.LayoutStyleLabel.setObjectName(u'LayoutStyleLabel')
-        self.LayoutStyleComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
-        self.LayoutStyleComboBox.setObjectName(u'LayoutStyleComboBox')
-        self.LayoutStyleComboBox.addItems([u'', u'', u''])
-        self.VerseDisplayLayout.addRow(self.LayoutStyleLabel,
-            self.LayoutStyleComboBox)
-        self.BibleSecondCheckBox = QtGui.QCheckBox(self.VerseDisplayGroupBox)
-        self.BibleSecondCheckBox.setObjectName(u'BibleSecondCheckBox')
-        self.VerseDisplayLayout.addRow(self.BibleSecondCheckBox)
-        self.BibleThemeLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
-        self.BibleThemeLabel.setObjectName(u'BibleThemeLabel')
-        self.BibleThemeComboBox = QtGui.QComboBox(self.VerseDisplayGroupBox)
-        self.BibleThemeComboBox.setSizeAdjustPolicy(
+        self.verseDisplayGroupBox = QtGui.QGroupBox(self.leftColumn)
+        self.verseDisplayGroupBox.setObjectName(u'verseDisplayGroupBox')
+        self.verseDisplayLayout = QtGui.QFormLayout(self.verseDisplayGroupBox)
+        self.verseDisplayLayout.setObjectName(u'verseDisplayLayout')
+        self.newChaptersCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
+        self.newChaptersCheckBox.setObjectName(u'newChaptersCheckBox')
+        self.verseDisplayLayout.addRow(self.newChaptersCheckBox)
+        self.displayStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
+        self.displayStyleLabel.setObjectName(u'displayStyleLabel')
+        self.displayStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
+        self.displayStyleComboBox.addItems([u'', u'', u'', u''])
+        self.displayStyleComboBox.setObjectName(u'displayStyleComboBox')
+        self.verseDisplayLayout.addRow(self.displayStyleLabel,
+            self.displayStyleComboBox)
+        self.layoutStyleLabel = QtGui.QLabel(self.verseDisplayGroupBox)
+        self.layoutStyleLabel.setObjectName(u'layoutStyleLabel')
+        self.layoutStyleComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
+        self.layoutStyleComboBox.setObjectName(u'layoutStyleComboBox')
+        self.layoutStyleComboBox.addItems([u'', u'', u''])
+        self.verseDisplayLayout.addRow(self.layoutStyleLabel,
+            self.layoutStyleComboBox)
+        self.bibleSecondCheckBox = QtGui.QCheckBox(self.verseDisplayGroupBox)
+        self.bibleSecondCheckBox.setObjectName(u'bibleSecondCheckBox')
+        self.verseDisplayLayout.addRow(self.bibleSecondCheckBox)
+        self.bibleThemeLabel = QtGui.QLabel(self.verseDisplayGroupBox)
+        self.bibleThemeLabel.setObjectName(u'BibleThemeLabel')
+        self.bibleThemeComboBox = QtGui.QComboBox(self.verseDisplayGroupBox)
+        self.bibleThemeComboBox.setSizeAdjustPolicy(
             QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.BibleThemeComboBox.setSizePolicy(
+        self.bibleThemeComboBox.setSizePolicy(
             QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
-        self.BibleThemeComboBox.addItem(u'')
-        self.BibleThemeComboBox.setObjectName(u'BibleThemeComboBox')
-        self.VerseDisplayLayout.addRow(self.BibleThemeLabel,
-            self.BibleThemeComboBox)
-        self.ChangeNoteLabel = QtGui.QLabel(self.VerseDisplayGroupBox)
-        self.ChangeNoteLabel.setWordWrap(True)
-        self.ChangeNoteLabel.setObjectName(u'ChangeNoteLabel')
-        self.VerseDisplayLayout.addRow(self.ChangeNoteLabel)
-        self.leftLayout.addWidget(self.VerseDisplayGroupBox)
+        self.bibleThemeComboBox.addItem(u'')
+        self.bibleThemeComboBox.setObjectName(u'BibleThemeComboBox')
+        self.verseDisplayLayout.addRow(self.bibleThemeLabel,
+            self.bibleThemeComboBox)
+        self.changeNoteLabel = QtGui.QLabel(self.verseDisplayGroupBox)
+        self.changeNoteLabel.setWordWrap(True)
+        self.changeNoteLabel.setObjectName(u'changeNoteLabel')
+        self.verseDisplayLayout.addRow(self.changeNoteLabel)
+        self.leftLayout.addWidget(self.verseDisplayGroupBox)
         self.leftLayout.addStretch()
         self.rightColumn.setSizePolicy(
             QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred)
         self.rightLayout.addStretch()
         # Signals and slots
         QtCore.QObject.connect(
-            self.NewChaptersCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onNewChaptersCheckBoxChanged)
-        QtCore.QObject.connect(
-            self.DisplayStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
-            self.onDisplayStyleComboBoxChanged)
-        QtCore.QObject.connect(
-            self.BibleThemeComboBox, QtCore.SIGNAL(u'activated(int)'),
+            self.newChaptersCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
+            self.onnewChaptersCheckBoxChanged)
+        QtCore.QObject.connect(
+            self.displayStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
+            self.ondisplayStyleComboBoxChanged)
+        QtCore.QObject.connect(
+            self.bibleThemeComboBox, QtCore.SIGNAL(u'activated(int)'),
             self.onBibleThemeComboBoxChanged)
         QtCore.QObject.connect(
-            self.LayoutStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
-            self.onLayoutStyleComboBoxChanged)
+            self.layoutStyleComboBox, QtCore.SIGNAL(u'activated(int)'),
+            self.onlayoutStyleComboBoxChanged)
         QtCore.QObject.connect(
-            self.BibleSecondCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onBibleSecondCheckBox)
+            self.bibleSecondCheckBox, QtCore.SIGNAL(u'stateChanged(int)'),
+            self.onbibleSecondCheckBox)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'theme_update_list'), self.updateThemeList)
 
     def retranslateUi(self):
-        self.VerseDisplayGroupBox.setTitle(
+        self.verseDisplayGroupBox.setTitle(
             translate('BiblesPlugin.BiblesTab', 'Verse Display'))
-        self.NewChaptersCheckBox.setText(
+        self.newChaptersCheckBox.setText(
             translate('BiblesPlugin.BiblesTab',
             'Only show new chapter numbers'))
-        self.LayoutStyleLabel.setText(
+        self.layoutStyleLabel.setText(
             translate('BiblesPlugin.BiblesTab', 'Layout style:'))
-        self.DisplayStyleLabel.setText(
-            translate('BiblesPlugin.BiblesTab', 'Display style:'))
-        self.BibleThemeLabel.setText(
+        self.displayStyleLabel.setText(UiStrings.DisplayStyle)
+        self.bibleThemeLabel.setText(
             translate('BiblesPlugin.BiblesTab', 'Bible theme:'))
-        self.LayoutStyleComboBox.setItemText(LayoutStyle.VersePerSlide,
-            translate('BiblesPlugin.BiblesTab', 'Verse Per Slide'))
-        self.LayoutStyleComboBox.setItemText(LayoutStyle.VersePerLine,
-            translate('BiblesPlugin.BiblesTab', 'Verse Per Line'))
-        self.LayoutStyleComboBox.setItemText(LayoutStyle.Continuous,
-            translate('BiblesPlugin.BiblesTab', 'Continuous'))
-        self.DisplayStyleComboBox.setItemText(DisplayStyle.NoBrackets,
+        self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerSlide,
+            UiStrings.VersePerSlide)
+        self.layoutStyleComboBox.setItemText(LayoutStyle.VersePerLine,
+            UiStrings.VersePerLine)
+        self.layoutStyleComboBox.setItemText(LayoutStyle.Continuous,
+            UiStrings.Continuous)
+        self.displayStyleComboBox.setItemText(DisplayStyle.NoBrackets,
             translate('BiblesPlugin.BiblesTab', 'No Brackets'))
-        self.DisplayStyleComboBox.setItemText(DisplayStyle.Round,
+        self.displayStyleComboBox.setItemText(DisplayStyle.Round,
             translate('BiblesPlugin.BiblesTab', '( And )'))
-        self.DisplayStyleComboBox.setItemText(DisplayStyle.Curly,
+        self.displayStyleComboBox.setItemText(DisplayStyle.Curly,
             translate('BiblesPlugin.BiblesTab', '{ And }'))
-        self.DisplayStyleComboBox.setItemText(DisplayStyle.Square,
+        self.displayStyleComboBox.setItemText(DisplayStyle.Square,
             translate('BiblesPlugin.BiblesTab', '[ And ]'))
-        self.ChangeNoteLabel.setText(translate('BiblesPlugin.BiblesTab',
+        self.changeNoteLabel.setText(translate('BiblesPlugin.BiblesTab',
             'Note:\nChanges do not affect verses already in the service.'))
-        self.BibleSecondCheckBox.setText(
+        self.bibleSecondCheckBox.setText(
             translate('BiblesPlugin.BiblesTab', 'Display second Bible verses'))
 
     def onBibleThemeComboBoxChanged(self):
-        self.bible_theme = self.BibleThemeComboBox.currentText()
-
-    def onDisplayStyleComboBoxChanged(self):
-        self.display_style = self.DisplayStyleComboBox.currentIndex()
-
-    def onLayoutStyleComboBoxChanged(self):
-        self.layout_style = self.LayoutStyleComboBox.currentIndex()
-
-    def onNewChaptersCheckBoxChanged(self, check_state):
+        self.bible_theme = self.bibleThemeComboBox.currentText()
+
+    def ondisplayStyleComboBoxChanged(self):
+        self.display_style = self.displayStyleComboBox.currentIndex()
+
+    def onlayoutStyleComboBoxChanged(self):
+        self.layout_style = self.layoutStyleComboBox.currentIndex()
+
+    def onnewChaptersCheckBoxChanged(self, check_state):
         self.show_new_chapters = False
         # We have a set value convert to True/False.
         if check_state == QtCore.Qt.Checked:
             self.show_new_chapters = True
 
-    def onBibleSecondCheckBox(self, check_state):
+    def onbibleSecondCheckBox(self, check_state):
         self.second_bibles = False
         # We have a set value convert to True/False.
         if check_state == QtCore.Qt.Checked:
@@ -176,10 +176,10 @@
             settings.value(u'bible theme', QtCore.QVariant(u'')).toString())
         self.second_bibles = settings.value(
             u'second bibles', QtCore.QVariant(True)).toBool()
-        self.NewChaptersCheckBox.setChecked(self.show_new_chapters)
-        self.DisplayStyleComboBox.setCurrentIndex(self.display_style)
-        self.LayoutStyleComboBox.setCurrentIndex(self.layout_style)
-        self.BibleSecondCheckBox.setChecked(self.second_bibles)
+        self.newChaptersCheckBox.setChecked(self.show_new_chapters)
+        self.displayStyleComboBox.setCurrentIndex(self.display_style)
+        self.layoutStyleComboBox.setCurrentIndex(self.layout_style)
+        self.bibleSecondCheckBox.setChecked(self.second_bibles)
         settings.endGroup()
 
     def save(self):
@@ -204,14 +204,8 @@
 
                 [u'Bible Theme', u'Song Theme']
         """
-        self.BibleThemeComboBox.clear()
-        self.BibleThemeComboBox.addItem(u'')
+        self.bibleThemeComboBox.clear()
+        self.bibleThemeComboBox.addItem(u'')
         for theme in theme_list:
-            self.BibleThemeComboBox.addItem(theme)
-        index = self.BibleThemeComboBox.findText(
-            unicode(self.bible_theme), QtCore.Qt.MatchExactly)
-        if index == -1:
-            # Not Found.
-            index = 0
-            self.bible_theme = u''
-        self.BibleThemeComboBox.setCurrentIndex(index)
+            self.bibleThemeComboBox.addItem(theme)
+        find_in_combo_box(self.bibleThemeComboBox, self.bible_theme)

=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py	2011-03-26 16:29:21 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py	2011-04-10 07:44:29 +0000
@@ -32,7 +32,7 @@
     translate
 from openlp.core.lib.searchedit import SearchEdit
 from openlp.core.lib.ui import UiStrings, add_widget_completer, \
-    media_item_combo_box, critical_error_message_box
+    media_item_combo_box, critical_error_message_box, find_in_combo_box
 from openlp.plugins.bibles.forms import BibleImportForm
 from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \
     VerseReferenceList, get_reference_match
@@ -106,6 +106,12 @@
             translate('BiblesPlugin.MediaItem', 'Text Search'))
         ])
         self.quickLayout.addRow(self.quickSearchLabel, self.quickSearchEdit)
+        self.quickLayoutLabel = QtGui.QLabel(self.quickTab)
+        self.quickLayoutLabel.setObjectName(u'quickClearLabel')
+        self.quickLayoutComboBox = media_item_combo_box(self.quickTab,
+            u'quickLayoutComboBox')
+        self.quickLayoutComboBox.addItems([u'', u'', u''])
+        self.quickLayout.addRow(self.quickLayoutLabel, self.quickLayoutComboBox)
         self.quickClearLabel = QtGui.QLabel(self.quickTab)
         self.quickClearLabel.setObjectName(u'quickClearLabel')
         self.quickClearComboBox = media_item_combo_box(self.quickTab,
@@ -210,6 +216,9 @@
             QtCore.SIGNAL(u'searchTypeChanged(int)'), self.updateAutoCompleter)
         QtCore.QObject.connect(self.quickVersionComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
+        QtCore.QObject.connect(
+            self.quickLayoutComboBox, QtCore.SIGNAL(u'activated(int)'),
+            self.onlayoutStyleComboBoxChanged)
         # Buttons
         QtCore.QObject.connect(self.advancedSearchButton,
             QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)
@@ -234,6 +243,7 @@
             self.advancedSecondComboBox.setVisible(False)
             self.quickSecondLabel.setVisible(False)
             self.quickSecondComboBox.setVisible(False)
+        self.quickLayoutComboBox.setCurrentIndex(self.settings.layout_style)
 
     def retranslateUi(self):
         log.debug(u'retranslateUi')
@@ -269,12 +279,19 @@
             translate('BiblesPlugin.MediaItem', 'Clear'))
         self.advancedClearComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Keep'))
+        self.quickLayoutLabel.setText(UiStrings.DisplayStyle)
+        self.quickLayoutComboBox.setItemText(LayoutStyle.VersePerSlide,
+            UiStrings.VersePerSlide)
+        self.quickLayoutComboBox.setItemText(LayoutStyle.VersePerLine,
+            UiStrings.VersePerLine)
+        self.quickLayoutComboBox.setItemText(LayoutStyle.Continuous,
+            UiStrings.Continuous)
 
     def initialise(self):
         log.debug(u'bible manager initialise')
         self.parent.manager.media = self
         self.loadBibles()
-        self.updateAutoCompleter()
+        self.updateAutoCompleter(False)
         self.configUpdated()
         log.debug(u'bible manager initialise complete')
 
@@ -298,23 +315,25 @@
         bibles = self.parent.manager.get_bibles().keys()
         bibles.sort()
         # Load the bibles into the combo boxes.
-        first = True
         for bible in bibles:
             if bible:
                 self.quickVersionComboBox.addItem(bible)
                 self.quickSecondComboBox.addItem(bible)
                 self.advancedVersionComboBox.addItem(bible)
                 self.advancedSecondComboBox.addItem(bible)
-                if first:
-                    first = False
-                    self.initialiseBible(bible)
+        # set the default value
+        book = QtCore.QSettings().value(
+            self.settingsSection + u'/advanced bible',
+            QtCore.QVariant(u'')).toString()
+        find_in_combo_box(self.advancedVersionComboBox, book)
+        self.initialiseAdvancedBible(unicode(book))
 
     def reloadBibles(self):
         log.debug(u'Reloading Bibles')
         self.parent.manager.reload_bibles()
         self.loadBibles()
 
-    def initialiseBible(self, bible):
+    def initialiseAdvancedBible(self, bible):
         """
         This initialises the given bible, which means that its book names and
         their chapter numbers is added to the combo boxes on the
@@ -324,7 +343,7 @@
         ``bible``
             The bible to initialise (unicode).
         """
-        log.debug(u'initialiseBible %s', bible)
+        log.debug(u'initialiseAdvancedBible %s', bible)
         book_data = self.parent.manager.get_books(bible)
         self.advancedBookComboBox.clear()
         first = True
@@ -354,12 +373,20 @@
             self.adjustComboBox(1, verse_count, self.advancedFromVerse)
             self.adjustComboBox(1, verse_count, self.advancedToVerse)
 
-    def updateAutoCompleter(self):
+    def updateAutoCompleter(self, updateConfig=True):
         """
         This updates the bible book completion list for the search field. The
         completion depends on the bible. It is only updated when we are doing a
         reference search, otherwise the auto completion list is removed.
         """
+        if updateConfig:
+            QtCore.QSettings().setValue(self.settingsSection + u'/quick bible',
+                QtCore.QVariant(self.quickVersionComboBox.currentText()))
+        else:
+            book = QtCore.QSettings().value(
+                self.settingsSection + u'/quick bible',
+                QtCore.QVariant(u'')).toString()
+            find_in_combo_box(self.quickVersionComboBox, book)
         books = []
         # We have to do a 'Reference Search'.
         if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference:
@@ -372,7 +399,9 @@
         add_widget_completer(books, self.quickSearchEdit)
 
     def onAdvancedVersionComboBox(self):
-        self.initialiseBible(
+        QtCore.QSettings().setValue(self.settingsSection + u'/advanced bible',
+            QtCore.QVariant(self.advancedVersionComboBox.currentText()))
+        self.initialiseAdvancedBible(
             unicode(self.advancedVersionComboBox.currentText()))
 
     def onAdvancedBookComboBox(self):
@@ -804,3 +833,11 @@
         if self.settings.display_style == DisplayStyle.Square:
             return u'{su}[%s]{/su}' % verse_text
         return u'{su}%s{/su}' % verse_text
+
+    def onlayoutStyleComboBoxChanged(self):
+        self.settings.layout_style = self.quickLayoutComboBox.currentIndex()
+        self.settings.layoutStyleComboBox.setCurrentIndex(
+            self.settings.layout_style)
+        QtCore.QSettings().setValue(
+            self.settingsSection + u'/verse layout style',
+            QtCore.QVariant(self.settings.layout_style))

=== modified file 'openlp/plugins/bibles/lib/versereferencelist.py'
--- openlp/plugins/bibles/lib/versereferencelist.py	2011-03-24 19:04:02 +0000
+++ openlp/plugins/bibles/lib/versereferencelist.py	2011-04-10 07:44:29 +0000
@@ -96,4 +96,7 @@
                 version[u'copyright'])
             if version[u'permission'].strip():
                 result = result + u', ' + version[u'permission']
+        result = result.rstrip()
+        if result.endswith(u','):
+            return result[:len(result)-1]
         return result

=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py	2011-03-24 19:04:02 +0000
+++ openlp/plugins/custom/forms/editcustomform.py	2011-04-10 07:44:29 +0000
@@ -29,7 +29,7 @@
 from PyQt4 import QtCore, QtGui
 
 from openlp.core.lib import Receiver, translate
-from openlp.core.lib.ui import critical_error_message_box
+from openlp.core.lib.ui import critical_error_message_box, find_in_combo_box
 from openlp.plugins.custom.lib import CustomXMLBuilder, CustomXMLParser
 from openlp.plugins.custom.lib.db import CustomSlide
 from editcustomdialog import Ui_CustomEditDialog
@@ -98,11 +98,7 @@
             for slide in slideList:
                 self.slideListView.addItem(slide[1])
             theme = self.customSlide.theme_name
-            id = self.themeComboBox.findText(theme, QtCore.Qt.MatchExactly)
-            # No theme match
-            if id == -1:
-                id = 0
-            self.themeComboBox.setCurrentIndex(id)
+            find_in_combo_box(self.themeComboBox, theme)
         # If not preview hide the preview button.
         self.previewButton.setVisible(False)
         if preview:

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2011-03-30 18:35:48 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2011-04-10 07:44:29 +0000
@@ -31,7 +31,7 @@
 
 from openlp.core.lib import Receiver, translate
 from openlp.core.lib.ui import UiStrings, add_widget_completer, \
-    critical_error_message_box
+    critical_error_message_box, find_in_combo_box
 from openlp.plugins.songs.forms import EditVerseForm
 from openlp.plugins.songs.lib import SongXML, VerseType, clean_song
 from openlp.plugins.songs.lib.db import Book, Song, Author, Topic
@@ -208,20 +208,9 @@
             self.alternativeEdit.setText(u'')
         if self.song.song_book_id != 0:
             book_name = self.manager.get_object(Book, self.song.song_book_id)
-            id = self.songBookComboBox.findText(
-                unicode(book_name.name), QtCore.Qt.MatchExactly)
-            if id == -1:
-                # Not Found
-                id = 0
-            self.songBookComboBox.setCurrentIndex(id)
+            find_in_combo_box(self.songBookComboBox, unicode(book_name.name))
         if self.song.theme_name:
-            id = self.themeComboBox.findText(
-                unicode(self.song.theme_name), QtCore.Qt.MatchExactly)
-            if id == -1:
-                # Not Found
-                id = 0
-                self.song.theme_name = None
-            self.themeComboBox.setCurrentIndex(id)
+            find_in_combo_box(self.themeComboBox, unicode(self.song.theme_name))
         if self.song.copyright:
             self.copyrightEdit.setText(self.song.copyright)
         else:


Follow ups