← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~m2j/openlp/work into lp:openlp

 

m2j has proposed merging lp:~m2j/openlp/work into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  #609356 Web bibles don't download all their books on import
  https://bugs.launchpad.net/bugs/609356
  #661867 Invalid author added in song dialog
  https://bugs.launchpad.net/bugs/661867
  #686103 Labels in theme wizard out of alignment on Windows
  https://bugs.launchpad.net/bugs/686103

For more details, see:
https://code.launchpad.net/~m2j/openlp/work/+merge/45287

Nearly everything in the code are renaming of variables and rewriting of the layout. The visible layout change in the dialogs default size is mainly limited to label alignments (for resized dialogs, translated strings or some Themes it might be much more).
Functional changes are:
- Preventing a bug, when no bibles are installed
- Fixing a spelling error in osisbooks.csv
- Showing the 'reset background' buttons only, if the background is really replaced.
- showing a character encoding dialog for the ewimporter
- BibleGateway importer fix for rtl
-- 
https://code.launchpad.net/~m2j/openlp/work/+merge/45287
Your team OpenLP Core is requested to review the proposed merge of lp:~m2j/openlp/work into lp:openlp.
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py	2011-01-02 22:33:18 +0000
+++ openlp/core/lib/mediamanageritem.py	2011-01-05 20:02:48 +0000
@@ -111,7 +111,7 @@
         self.singleServiceItem = True
         self.pageLayout = QtGui.QVBoxLayout(self)
         self.pageLayout.setSpacing(0)
-        self.pageLayout.setContentsMargins(4, 0, 4, 0)
+        self.pageLayout.setMargin(0)
         self.requiredIcons()
         self.setupUi()
         self.retranslateUi()
@@ -176,7 +176,7 @@
         # break compatability), but it makes sense for the icon to
         # come before the tooltip (as you have to have an icon, but
         # not neccesarily a tooltip)
-        self.toolbar.addToolbarButton(title, icon, tooltip, slot, checkable)
+        return self.toolbar.addToolbarButton(title, icon, tooltip, slot, checkable)
 
     def addToolbarSeparator(self):
         """
@@ -268,7 +268,6 @@
         #Add the List widget
         self.listView = self.ListViewWithDnD_class(self)
         self.listView.uniformItemSizes = True
-        self.listView.setGeometry(QtCore.QRect(10, 100, 256, 591))
         self.listView.setSpacing(1)
         self.listView.setSelectionMode(
             QtGui.QAbstractItemView.ExtendedSelection)

=== modified file 'openlp/core/lib/searchedit.py'
--- openlp/core/lib/searchedit.py	2010-12-28 21:12:20 +0000
+++ openlp/core/lib/searchedit.py	2011-01-05 20:02:48 +0000
@@ -69,7 +69,7 @@
         """
         frameWidth = self.style().pixelMetric(
             QtGui.QStyle.PM_DefaultFrameWidth)
-        rightPadding = self.clearButton.sizeHint().width() + frameWidth
+        rightPadding = self.clearButton.width() + frameWidth
         if hasattr(self, u'menuButton'):
             leftPadding = self.menuButton.width()
             self.setStyleSheet(
@@ -81,7 +81,7 @@
         msz = self.minimumSizeHint();
         self.setMinimumSize(
             max(msz.width(),
-                self.clearButton.sizeHint().width() + (frameWidth * 2) + 2),
+                self.clearButton.width() + (frameWidth * 2) + 2),
             max(msz.height(),
                 self.clearButton.height() + (frameWidth * 2) + 2)
         )
@@ -93,13 +93,13 @@
         ``event``
             The event that happened.
         """
-        sz = self.clearButton.sizeHint()
+        sz = self.clearButton.size()
         frameWidth = self.style().pixelMetric(
             QtGui.QStyle.PM_DefaultFrameWidth)
         self.clearButton.move(self.rect().right() - frameWidth - sz.width(),
             (self.rect().bottom() + 1 - sz.height()) / 2)
         if hasattr(self, u'menuButton'):
-            sz = self.menuButton.sizeHint()
+            sz = self.menuButton.size()
             self.menuButton.move(self.rect().left() + frameWidth + 2,
                 (self.rect().bottom() + 1 - sz.height()) / 2)
 

=== modified file 'openlp/core/lib/toolbar.py'
--- openlp/core/lib/toolbar.py	2010-12-26 11:04:47 +0000
+++ openlp/core/lib/toolbar.py	2011-01-05 20:02:48 +0000
@@ -72,27 +72,27 @@
         ``objectname``
             The name of the object, as used in `<button>.setObjectName()`.
         """
-        toolbarButton = None
+        newAction = None
         if icon:
-            buttonIcon = build_icon(icon)
+            actionIcon = build_icon(icon)
             if slot and not checkable:
-                toolbarButton = self.addAction(buttonIcon, title, slot)
+                newAction = self.addAction(actionIcon, title, slot)
             else:
-                toolbarButton = self.addAction(buttonIcon, title)
-            self.icons[title] = buttonIcon
+                newAction = self.addAction(actionIcon, title)
+            self.icons[title] = actionIcon
         else:
-            toolbarButton = QtGui.QAction(title, toolbarButton)
-            self.addAction(toolbarButton)
-            QtCore.QObject.connect(toolbarButton,
+            newAction = QtGui.QAction(title, newAction)
+            self.addAction(newAction)
+            QtCore.QObject.connect(newAction,
                 QtCore.SIGNAL(u'triggered()'), slot)
         if tooltip:
-            toolbarButton.setToolTip(tooltip)
+            newAction.setToolTip(tooltip)
         if checkable:
-            toolbarButton.setCheckable(True)
-            QtCore.QObject.connect(toolbarButton,
+            newAction.setCheckable(True)
+            QtCore.QObject.connect(newAction,
                 QtCore.SIGNAL(u'toggled(bool)'), slot)
-        self.actions[title] = toolbarButton
-        return toolbarButton
+        self.actions[title] = newAction
+        return newAction
 
     def addToolbarSeparator(self, handle):
         """
@@ -154,4 +154,4 @@
         push_button.setCheckable(True)
         push_button.setFlat(True)
         self.addWidget(push_button)
-        return push_button
\ No newline at end of file
+        return push_button

=== modified file 'openlp/core/ui/filerenamedialog.py'
--- openlp/core/ui/filerenamedialog.py	2010-12-31 18:10:45 +0000
+++ openlp/core/ui/filerenamedialog.py	2011-01-05 20:02:48 +0000
@@ -31,14 +31,13 @@
 class Ui_FileRenameDialog(object):
     def setupUi(self, FileRenameDialog):
         FileRenameDialog.setObjectName(u'FileRenameDialog')
+        FileRenameDialog.resize(300, 10)
         self.dialogLayout = QtGui.QGridLayout(FileRenameDialog)
         self.dialogLayout.setObjectName(u'dialogLayout')
         self.fileNameLabel = QtGui.QLabel(FileRenameDialog)
         self.fileNameLabel.setObjectName(u'fileNameLabel')
         self.dialogLayout.addWidget(self.fileNameLabel, 0, 0)
         self.fileNameEdit = QtGui.QLineEdit(FileRenameDialog)
-        self.fileNameEdit.resize(self.fileNameEdit.sizeHint().width() * 2,
-            self.fileNameEdit.sizeHint().height())
         self.fileNameEdit.setObjectName(u'fileNameEdit')
         self.dialogLayout.addWidget(self.fileNameEdit, 0, 1)
         self.buttonBox = QtGui.QDialogButtonBox(FileRenameDialog)

=== modified file 'openlp/plugins/alerts/forms/alertdialog.py'
--- openlp/plugins/alerts/forms/alertdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/alerts/forms/alertdialog.py	2011-01-05 20:02:48 +0000
@@ -29,115 +29,81 @@
 from openlp.core.lib import build_icon, translate
 
 class Ui_AlertDialog(object):
-    def setupUi(self, AlertDialog):
-        AlertDialog.setObjectName(u'AlertDialog')
-        AlertDialog.resize(567, 440)
-        AlertDialog.setWindowIcon(build_icon(u':/icon/openlp.org-icon-32.bmp'))
-        self.AlertDialogLayout = QtGui.QVBoxLayout(AlertDialog)
-        self.AlertDialogLayout.setSpacing(8)
-        self.AlertDialogLayout.setMargin(8)
-        self.AlertDialogLayout.setObjectName(u'AlertDialogLayout')
-        self.AlertTextLayout = QtGui.QFormLayout()
-        self.AlertTextLayout.setContentsMargins(0, 0, -1, -1)
-        self.AlertTextLayout.setSpacing(8)
-        self.AlertTextLayout.setObjectName(u'AlertTextLayout')
-        self.AlertEntryLabel = QtGui.QLabel(AlertDialog)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred,
-            QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.AlertEntryLabel.sizePolicy().hasHeightForWidth())
-        self.AlertEntryLabel.setSizePolicy(sizePolicy)
-        self.AlertEntryLabel.setObjectName(u'AlertEntryLabel')
-        self.AlertTextLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
-            self.AlertEntryLabel)
-        self.AlertParameter = QtGui.QLabel(AlertDialog)
-        self.AlertParameter.setObjectName(u'AlertParameter')
-        self.AlertTextLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.AlertParameter)
-        self.ParameterEdit = QtGui.QLineEdit(AlertDialog)
-        self.ParameterEdit.setObjectName(u'ParameterEdit')
-        self.AlertTextLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
-            self.ParameterEdit)
-        self.AlertTextEdit = QtGui.QLineEdit(AlertDialog)
-        self.AlertTextEdit.setObjectName(u'AlertTextEdit')
-        self.AlertTextLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
-            self.AlertTextEdit)
-        self.AlertDialogLayout.addLayout(self.AlertTextLayout)
-        self.ManagementLayout = QtGui.QHBoxLayout()
-        self.ManagementLayout.setSpacing(8)
-        self.ManagementLayout.setContentsMargins(-1, -1, -1, 0)
-        self.ManagementLayout.setObjectName(u'ManagementLayout')
-        self.AlertListWidget = QtGui.QListWidget(AlertDialog)
-        self.AlertListWidget.setAlternatingRowColors(True)
-        self.AlertListWidget.setObjectName(u'AlertListWidget')
-        self.ManagementLayout.addWidget(self.AlertListWidget)
-        self.ManageButtonLayout = QtGui.QVBoxLayout()
-        self.ManageButtonLayout.setSpacing(8)
-        self.ManageButtonLayout.setObjectName(u'ManageButtonLayout')
-        self.NewButton = QtGui.QPushButton(AlertDialog)
-        self.NewButton.setIcon(build_icon(u':/general/general_new.png'))
-        self.NewButton.setObjectName(u'NewButton')
-        self.ManageButtonLayout.addWidget(self.NewButton)
-        self.SaveButton = QtGui.QPushButton(AlertDialog)
-        self.SaveButton.setEnabled(False)
-        self.SaveButton.setIcon(build_icon(u':/general/general_save.png'))
-        self.SaveButton.setObjectName(u'SaveButton')
-        self.ManageButtonLayout.addWidget(self.SaveButton)
-        self.DeleteButton = QtGui.QPushButton(AlertDialog)
-        self.DeleteButton.setIcon(build_icon(u':/general/general_delete.png'))
-        self.DeleteButton.setObjectName(u'DeleteButton')
-        self.ManageButtonLayout.addWidget(self.DeleteButton)
-        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum,
-            QtGui.QSizePolicy.Expanding)
-        self.ManageButtonLayout.addItem(spacerItem)
-        self.ManagementLayout.addLayout(self.ManageButtonLayout)
-        self.AlertDialogLayout.addLayout(self.ManagementLayout)
-        self.AlertButtonLayout = QtGui.QHBoxLayout()
-        self.AlertButtonLayout.setSpacing(8)
-        self.AlertButtonLayout.setObjectName(u'AlertButtonLayout')
-        spacerItem1 = QtGui.QSpacerItem(181, 0, QtGui.QSizePolicy.Expanding,
-            QtGui.QSizePolicy.Minimum)
-        self.AlertButtonLayout.addItem(spacerItem1)
+    def setupUi(self, alertDialog):
+        alertDialog.setObjectName(u'alertDialog')
+        alertDialog.resize(400, 300)
+        alertDialog.setWindowIcon(build_icon(u':/icon/openlp.org-icon-32.bmp'))
+        self.alertDialogLayout = QtGui.QGridLayout(alertDialog)
+        self.alertDialogLayout.setObjectName(u'alertDialogLayout')
+        self.alertTextLayout = QtGui.QFormLayout()
+        self.alertTextLayout.setObjectName(u'alertTextLayout')
+        self.alertEntryLabel = QtGui.QLabel(alertDialog)
+        self.alertEntryLabel.setObjectName(u'alertEntryLabel')
+        self.alertTextEdit = QtGui.QLineEdit(alertDialog)
+        self.alertTextEdit.setObjectName(u'alertTextEdit')
+        self.alertEntryLabel.setBuddy(self.alertTextEdit)
+        self.alertTextLayout.addRow(self.alertEntryLabel, self.alertTextEdit)
+        self.alertParameter = QtGui.QLabel(alertDialog)
+        self.alertParameter.setObjectName(u'alertParameter')
+        self.parameterEdit = QtGui.QLineEdit(alertDialog)
+        self.parameterEdit.setObjectName(u'parameterEdit')
+        self.alertParameter.setBuddy(self.parameterEdit)
+        self.alertTextLayout.addRow(self.alertParameter, self.parameterEdit)
+        self.alertDialogLayout.addLayout(self.alertTextLayout, 0, 0, 1, 2)
+        self.alertListWidget = QtGui.QListWidget(alertDialog)
+        self.alertListWidget.setAlternatingRowColors(True)
+        self.alertListWidget.setObjectName(u'alertListWidget')
+        self.alertDialogLayout.addWidget(self.alertListWidget, 1, 0)
+        self.manageButtonLayout = QtGui.QVBoxLayout()
+        self.manageButtonLayout.setObjectName(u'manageButtonLayout')
+        self.newButton = QtGui.QPushButton(alertDialog)
+        self.newButton.setIcon(build_icon(u':/general/general_new.png'))
+        self.newButton.setObjectName(u'newButton')
+        self.manageButtonLayout.addWidget(self.newButton)
+        self.saveButton = QtGui.QPushButton(alertDialog)
+        self.saveButton.setEnabled(False)
+        self.saveButton.setIcon(build_icon(u':/general/general_save.png'))
+        self.saveButton.setObjectName(u'saveButton')
+        self.manageButtonLayout.addWidget(self.saveButton)
+        self.deleteButton = QtGui.QPushButton(alertDialog)
+        self.deleteButton.setIcon(build_icon(u':/general/general_delete.png'))
+        self.deleteButton.setObjectName(u'deleteButton')
+        self.manageButtonLayout.addWidget(self.deleteButton)
+        self.manageButtonLayout.addStretch()
+        self.alertDialogLayout.addLayout(self.manageButtonLayout, 1, 1)
+        self.buttonBox = QtGui.QDialogButtonBox(alertDialog)
+        self.buttonBox.addButton(QtGui.QDialogButtonBox.Close)
         displayIcon = build_icon(u':/general/general_live.png')
-        self.DisplayButton = QtGui.QPushButton(AlertDialog)
-        self.DisplayButton.setIcon(displayIcon)
-        self.DisplayButton.setObjectName(u'DisplayButton')
-        self.AlertButtonLayout.addWidget(self.DisplayButton)
-        self.DisplayCloseButton = QtGui.QPushButton(AlertDialog)
-        self.DisplayCloseButton.setIcon(displayIcon)
-        self.DisplayCloseButton.setObjectName(u'DisplayCloseButton')
-        self.AlertButtonLayout.addWidget(self.DisplayCloseButton)
-        self.CloseButton = QtGui.QPushButton(AlertDialog)
-        self.CloseButton.setIcon(build_icon(u':/system/system_close.png'))
-        self.CloseButton.setObjectName(u'CloseButton')
-        self.AlertButtonLayout.addWidget(self.CloseButton)
-        self.AlertDialogLayout.addLayout(self.AlertButtonLayout)
-        self.AlertEntryLabel.setBuddy(self.AlertTextEdit)
-        self.AlertParameter.setBuddy(self.ParameterEdit)
-
-        self.retranslateUi(AlertDialog)
-        QtCore.QObject.connect(self.CloseButton, QtCore.SIGNAL(u'clicked()'),
-            AlertDialog.close)
-        QtCore.QMetaObject.connectSlotsByName(AlertDialog)
-
-    def retranslateUi(self, AlertDialog):
-        AlertDialog.setWindowTitle(
+        self.displayButton = QtGui.QPushButton(alertDialog)
+        self.displayButton.setIcon(displayIcon)
+        self.displayButton.setObjectName(u'displayButton')
+        self.buttonBox.addButton(self.displayButton,
+            QtGui.QDialogButtonBox.ActionRole)
+        self.displayCloseButton = QtGui.QPushButton(alertDialog)
+        self.displayCloseButton.setIcon(displayIcon)
+        self.displayCloseButton.setObjectName(u'displayCloseButton')
+        self.buttonBox.addButton(self.displayCloseButton,
+            QtGui.QDialogButtonBox.ActionRole)
+        self.alertDialogLayout.addWidget(self.buttonBox, 2, 0, 1, 2)
+        self.retranslateUi(alertDialog)
+        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
+            alertDialog.close)
+        QtCore.QMetaObject.connectSlotsByName(alertDialog)
+
+    def retranslateUi(self, alertDialog):
+        alertDialog.setWindowTitle(
             translate('AlertsPlugin.AlertForm', 'Alert Message'))
-        self.AlertEntryLabel.setText(
+        self.alertEntryLabel.setText(
             translate('AlertsPlugin.AlertForm', 'Alert &text:'))
-        self.AlertParameter.setText(
+        self.alertParameter.setText(
             translate('AlertsPlugin.AlertForm', '&Parameter:'))
-        self.NewButton.setText(
+        self.newButton.setText(
             translate('AlertsPlugin.AlertForm', '&New'))
-        self.SaveButton.setText(
+        self.saveButton.setText(
             translate('AlertsPlugin.AlertForm', '&Save'))
-        self.DeleteButton.setText(
+        self.deleteButton.setText(
             translate('AlertsPlugin.AlertForm', '&Delete'))
-        self.DisplayButton.setText(
+        self.displayButton.setText(
             translate('AlertsPlugin.AlertForm', 'Displ&ay'))
-        self.DisplayCloseButton.setText(
+        self.displayCloseButton.setText(
             translate('AlertsPlugin.AlertForm', 'Display && Cl&ose'))
-        self.CloseButton.setText(
-            translate('AlertsPlugin.AlertForm', '&Close'))
\ No newline at end of file

=== modified file 'openlp/plugins/alerts/forms/alertform.py'
--- openlp/plugins/alerts/forms/alertform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/alerts/forms/alertform.py	2011-01-05 20:02:48 +0000
@@ -44,62 +44,62 @@
         self.item_id = None
         QtGui.QDialog.__init__(self, plugin.formparent)
         self.setupUi(self)
-        QtCore.QObject.connect(self.DisplayButton, QtCore.SIGNAL(u'clicked()'),
+        QtCore.QObject.connect(self.displayButton, QtCore.SIGNAL(u'clicked()'),
             self.onDisplayClicked)
-        QtCore.QObject.connect(self.DisplayCloseButton,
+        QtCore.QObject.connect(self.displayCloseButton,
             QtCore.SIGNAL(u'clicked()'), self.onDisplayCloseClicked)
-        QtCore.QObject.connect(self.AlertTextEdit,
+        QtCore.QObject.connect(self.alertTextEdit,
             QtCore.SIGNAL(u'textChanged(const QString&)'), self.onTextChanged)
-        QtCore.QObject.connect(self.NewButton, QtCore.SIGNAL(u'clicked()'),
+        QtCore.QObject.connect(self.newButton, QtCore.SIGNAL(u'clicked()'),
             self.onNewClick)
-        QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL(u'clicked()'),
+        QtCore.QObject.connect(self.deleteButton, QtCore.SIGNAL(u'clicked()'),
             self.onDeleteClick)
-        QtCore.QObject.connect(self.SaveButton, QtCore.SIGNAL(u'clicked()'),
+        QtCore.QObject.connect(self.saveButton, QtCore.SIGNAL(u'clicked()'),
             self.onSaveClick)
-        QtCore.QObject.connect(self.AlertListWidget,
+        QtCore.QObject.connect(self.alertListWidget,
             QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onDoubleClick)
-        QtCore.QObject.connect(self.AlertListWidget,
+        QtCore.QObject.connect(self.alertListWidget,
             QtCore.SIGNAL(u'clicked(QModelIndex)'), self.onSingleClick)
 
     def loadList(self):
         """
         Loads the list with alerts.
         """
-        self.AlertListWidget.clear()
+        self.alertListWidget.clear()
         alerts = self.manager.get_all_objects(AlertItem,
             order_by_ref=AlertItem.text)
         for alert in alerts:
             item_name = QtGui.QListWidgetItem(alert.text)
             item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(alert.id))
-            self.AlertListWidget.addItem(item_name)
-        self.SaveButton.setEnabled(False)
-        self.DeleteButton.setEnabled(False)
+            self.alertListWidget.addItem(item_name)
+        self.saveButton.setEnabled(False)
+        self.deleteButton.setEnabled(False)
 
     def onDisplayClicked(self):
-        if self.triggerAlert(unicode(self.AlertTextEdit.text())):
+        if self.triggerAlert(unicode(self.alertTextEdit.text())):
             self.loadList()
 
     def onDisplayCloseClicked(self):
-        if self.triggerAlert(unicode(self.AlertTextEdit.text())):
+        if self.triggerAlert(unicode(self.alertTextEdit.text())):
             self.close()
 
     def onDeleteClick(self):
         """
         Deletes the selected item.
         """
-        item = self.AlertListWidget.currentItem()
+        item = self.alertListWidget.currentItem()
         if item:
             item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
             self.manager.delete_object(AlertItem, item_id)
-            row = self.AlertListWidget.row(item)
-            self.AlertListWidget.takeItem(row)
+            row = self.alertListWidget.row(item)
+            self.alertListWidget.takeItem(row)
         self.item_id = None
-        self.AlertTextEdit.setText(u'')
-        self.SaveButton.setEnabled(False)
-        self.DeleteButton.setEnabled(False)
+        self.alertTextEdit.setText(u'')
+        self.saveButton.setEnabled(False)
+        self.deleteButton.setEnabled(False)
 
     def onNewClick(self):
-        if len(self.AlertTextEdit.text()) == 0:
+        if len(self.alertTextEdit.text()) == 0:
             QtGui.QMessageBox.information(self,
                 translate('AlertsPlugin.AlertForm', 'New Alert'),
                 translate('AlertsPlugin.AlertForm', 'You haven\'t specified '
@@ -107,9 +107,9 @@
                 'clicking New.'))
         else:
             alert = AlertItem()
-            alert.text = unicode(self.AlertTextEdit.text())
+            alert.text = unicode(self.alertTextEdit.text())
             self.manager.save_object(alert)
-        self.AlertTextEdit.setText(u'')
+        self.alertTextEdit.setText(u'')
         self.loadList()
 
     def onSaveClick(self):
@@ -118,7 +118,7 @@
         """
         if self.item_id:
             alert = self.manager.get_object(AlertItem, self.item_id)
-            alert.text = unicode(self.AlertTextEdit.text())
+            alert.text = unicode(self.alertTextEdit.text())
             self.manager.save_object(alert)
             self.item_id = None
             self.loadList()
@@ -129,36 +129,36 @@
         """
         # Only enable the button, if we are editing an item.
         if self.item_id:
-            self.SaveButton.setEnabled(True)
+            self.saveButton.setEnabled(True)
 
     def onDoubleClick(self):
         """
         List item has been double clicked to display it
         """
-        items = self.AlertListWidget.selectedIndexes()
+        items = self.alertListWidget.selectedIndexes()
         for item in items:
-            bitem = self.AlertListWidget.item(item.row())
+            bitem = self.alertListWidget.item(item.row())
             self.triggerAlert(unicode(bitem.text()))
-            self.AlertTextEdit.setText(unicode(bitem.text()))
+            self.alertTextEdit.setText(unicode(bitem.text()))
             self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
-        self.SaveButton.setEnabled(False)
-        self.DeleteButton.setEnabled(True)
+        self.saveButton.setEnabled(False)
+        self.deleteButton.setEnabled(True)
 
     def onSingleClick(self):
         """
         List item has been single clicked to add it to
         the edit field so it can be changed.
         """
-        items = self.AlertListWidget.selectedIndexes()
+        items = self.alertListWidget.selectedIndexes()
         for item in items:
-            bitem = self.AlertListWidget.item(item.row())
-            self.AlertTextEdit.setText(unicode(bitem.text()))
+            bitem = self.alertListWidget.item(item.row())
+            self.alertTextEdit.setText(unicode(bitem.text()))
             self.item_id = (bitem.data(QtCore.Qt.UserRole)).toInt()[0]
         # If the alert does not contain '<>' we clear the ParameterEdit field.
-        if unicode(self.AlertTextEdit.text()).find(u'<>') == -1:
-            self.ParameterEdit.setText(u'')
-        self.SaveButton.setEnabled(False)
-        self.DeleteButton.setEnabled(True)
+        if unicode(self.alertTextEdit.text()).find(u'<>') == -1:
+            self.parameterEdit.setText(u'')
+        self.saveButton.setEnabled(False)
+        self.deleteButton.setEnabled(True)
 
     def triggerAlert(self, text):
         """
@@ -170,27 +170,27 @@
         if text:
             # We found '<>' in the alert text, but the ParameterEdit field is
             # empty.
-            if text.find(u'<>') != -1 and not self.ParameterEdit.text() and \
+            if text.find(u'<>') != -1 and not self.parameterEdit.text() and \
                 QtGui.QMessageBox.question(self,
                 translate('AlertPlugin.AlertForm', 'No Parameter found'),
                 translate('AlertPlugin.AlertForm', 'You have not entered a '
                 'parameter to be replaced.\nDo you want to continue anyway?'),
                 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
                 QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
-                    self.ParameterEdit.setFocus()
+                    self.parameterEdit.setFocus()
                     return False
             # The ParameterEdit field is not empty, but we have not found '<>'
             # in the alert text.
-            elif text.find(u'<>') == -1 and self.ParameterEdit.text() and \
+            elif text.find(u'<>') == -1 and self.parameterEdit.text() and \
                 QtGui.QMessageBox.question(self,
                 translate('AlertPlugin.AlertForm', 'No Placeholder found'),
                 translate('AlertPlugin.AlertForm', 'The alert text does not'
                 ' contain \'<>\'.\nDo want to continue anyway?'),
                 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.No |
                 QtGui.QMessageBox.Yes)) == QtGui.QMessageBox.No:
-                    self.ParameterEdit.setFocus()
+                    self.parameterEdit.setFocus()
                     return False
-            text = text.replace(u'<>', unicode(self.ParameterEdit.text()))
+            text = text.replace(u'<>', unicode(self.parameterEdit.text()))
             self.parent.alertsmanager.displayAlert(text)
             return True
-        return False
\ No newline at end of file
+        return False

=== modified file 'openlp/plugins/bibles/lib/http.py'
--- openlp/plugins/bibles/lib/http.py	2011-01-02 22:24:14 +0000
+++ openlp/plugins/bibles/lib/http.py	2011-01-05 20:02:48 +0000
@@ -212,13 +212,7 @@
             Receiver.send_message(u'openlp_process_events')
         except urllib2.URLError:
             log.exception(u'The web bible page could not be downloaded.')
-            Receiver.send_message(u'openlp_error_message', {
-                u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
-                u'message': translate('BiblePlugin.HTTPBible', 'There was a '
-                'problem downloading your verse selection. Please check your '
-                'Internet connection, and if this error continues to occur '
-                'consider reporting a bug.')
-            })
+            send_error_message(u'download')
         finally:
             if not page:
                 return None
@@ -229,15 +223,23 @@
         except HTMLParseError:
             log.exception(u'BeautifulSoup could not parse the bible page.')
             Receiver.send_message(u'bibles_download_error')
+            send_error_message(u'parse')
         finally:
             if not soup:
                 return None
         Receiver.send_message(u'openlp_process_events')
         footnotes = soup.findAll(u'sup', u'footnote')
-        [footnote.extract() for footnote in footnotes]
+        if footnotes:
+        	[footnote.extract() for footnote in footnotes]
         cleanup = [(re.compile('\s+'), lambda match: ' ')]
         verses = BeautifulSoup(str(soup), markupMassage=cleanup)
         content = verses.find(u'div', u'result-text-style-normal')
+        if not content:
+            content = verses.find(u'div', u'result-text-style-rtl-serif')
+        if not content:
+            log.debug(u'No content found in the BibleGateway response.')
+            send_error_message(u'parse')
+            return None
         verse_count = len(verses.findAll(u'sup', u'versenum'))
         found_count = 0
         verse_list = {}
@@ -283,13 +285,7 @@
             Receiver.send_message(u'openlp_process_events')
         except urllib2.URLError:
             log.exception(u'The web bible page could not be downloaded.')
-            Receiver.send_message(u'openlp_error_message', {
-                u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
-                u'message': translate('BiblePlugin.HTTPBible', 'There was a '
-                'problem downloading your verse selection. Please check your '
-                'Internet connection, and if this error continues to occur '
-                'consider reporting a bug.')
-            })
+            send_error_message(u'download')
         finally:
             if not page:
                 return None
@@ -298,19 +294,15 @@
             soup = BeautifulSoup(page)
         except HTMLParseError:
             log.exception(u'BeautifulSoup could not parse the bible page.')
-            Receiver.send_message(u'openlp_error_message', {
-                u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'),
-                u'message': translate('BiblePlugin.HTTPBible', 'There was a '
-                'problem extracting your verse selection. If this error '
-                'continues to occur consider reporting a bug.')
-            })
+            send_error_message(u'parse')
             return None
         Receiver.send_message(u'openlp_process_events')
         content = None
         try:
             content = soup.find(u'div', u'content').find(u'div').findAll(u'div')
         except:
-            log.exception(u'No verses found.')
+            log.exception(u'No verses found in the Bibleserver response.')
+            send_error_message(u'parse')
         finally:
             if not content:
                 return None
@@ -356,28 +348,21 @@
             Receiver.send_message(u'openlp_process_events')
         except urllib2.URLError:
             log.exception(u'The web bible page could not be downloaded.')
-            Receiver.send_message(u'openlp_error_message', {
-                u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
-                u'message': translate('BiblePlugin.HTTPBible', 'There was a '
-                'problem downloading your verse selection. Please check your '
-                'Internet connection, and if this error continues to occur '
-                'consider reporting a bug.')
-            })
+            send_error_message(u'download')
             return None
         soup = None
         try:
             soup = BeautifulSoup(page)
         except HTMLParseError:
             log.exception(u'BeautifulSoup could not parse the bible page.')
-            Receiver.send_message(u'openlp_error_message', {
-                u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'),
-                u'message': translate('BiblePlugin.HTTPBible', 'There was a '
-                'problem extracting your verse selection. If this error '
-                'continues to occur consider reporting a bug.')
-            })
+            send_error_message(u'parse')
             return None
         Receiver.send_message(u'openlp_process_events')
         htmlverses = soup.findAll(u'span', u'versetext')
+        if not htmlverses:
+            log.debug(u'No verses found in the CrossWalk response.')
+            send_error_message(u'parse')
+            return None
         verses = {}
         reduce_spaces = re.compile(r'[ ]{2,}')
         fix_punctuation = re.compile(r'[ ]+([.,;])')
@@ -560,3 +545,20 @@
             The chapter whose verses are being counted.
         """
         return HTTPBooks.get_verse_count(book, chapter)
+
+def send_error_message(reason):
+    if reason == u'downoad':
+        Receiver.send_message(u'openlp_error_message', {
+            u'title': translate('BiblePlugin.HTTPBible', 'Download Error'),
+            u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+            'problem downloading your verse selection. Please check your '
+            'Internet connection, and if this error continues to occur '
+            'consider reporting a bug.')
+            })
+    elif reason == u'parse':
+        Receiver.send_message(u'openlp_error_message', {
+            u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'),
+            u'message': translate('BiblePlugin.HTTPBible', 'There was a '
+            'problem extracting your verse selection. If this error continues '
+            'continues to occur consider reporting a bug.')
+            })

=== modified file 'openlp/plugins/bibles/lib/manager.py'
--- openlp/plugins/bibles/lib/manager.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/lib/manager.py	2011-01-05 20:02:48 +0000
@@ -257,6 +257,14 @@
                 - Genesis 1:1-10,2:1-10
         """
         log.debug(u'BibleManager.get_verses("%s", "%s")', bible, versetext)
+        if not bible:
+            QtGui.QMessageBox.information(self.parent.mediaItem,
+                translate('BiblesPlugin.BibleManager',
+                'No Bibles available'),
+                translate('BiblesPlugin.BibleManager',
+                'There are no Bibles currently installed. Please use the '
+                'Import Wizard to install one or more Bibles.'))
+            return None
         reflist = parse_reference(versetext)
         if reflist:
             return self.db_cache[bible].get_verses(reflist)

=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py	2011-01-01 10:33:14 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py	2011-01-05 20:02:48 +0000
@@ -56,8 +56,6 @@
     log.info(u'Bible Media Item loaded')
 
     def __init__(self, parent, plugin, icon):
-        self.PluginNameShort = u'Bible'
-        self.pluginNameVisible = translate('BiblesPlugin.MediaItem', 'Bible')
         self.IconPath = u'songs/song'
         self.ListViewWithDnD_class = BibleListView
         MediaManagerItem.__init__(self, parent, plugin, icon)
@@ -76,184 +74,178 @@
         self.addToServiceItem = False
 
     def addEndHeaderBar(self):
-        self.SearchTabWidget = QtGui.QTabWidget(self)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.SearchTabWidget.sizePolicy().hasHeightForWidth())
-        self.SearchTabWidget.setSizePolicy(sizePolicy)
-        self.SearchTabWidget.setObjectName(u'SearchTabWidget')
+        self.searchTabWidget = QtGui.QTabWidget(self)
+        self.searchTabWidget.setSizePolicy(
+            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
+        self.searchTabWidget.setObjectName(u'SearchTabWidget')
         # Add the Quick Search tab.
-        self.QuickTab = QtGui.QWidget()
-        self.QuickTab.setObjectName(u'QuickTab')
-        self.QuickLayout = QtGui.QGridLayout(self.QuickTab)
-        self.QuickLayout.setMargin(2)
-        self.QuickLayout.setSpacing(4)
-        self.QuickLayout.setVerticalSpacing(4)
-        self.QuickLayout.setObjectName(u'QuickLayout')
-        self.QuickVersionLabel = QtGui.QLabel(self.QuickTab)
-        self.QuickVersionLabel.setObjectName(u'QuickVersionLabel')
-        self.QuickLayout.addWidget(self.QuickVersionLabel, 0, 0, 1, 1)
-        self.QuickVersionComboBox = QtGui.QComboBox(self.QuickTab)
-        self.QuickVersionComboBox.setSizeAdjustPolicy(
-            QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.QuickVersionComboBox.setObjectName(u'VersionComboBox')
-        self.QuickLayout.addWidget(self.QuickVersionComboBox, 0, 1, 1, 2)
-        self.QuickSecondVersionLabel = QtGui.QLabel(self.QuickTab)
-        self.QuickSecondVersionLabel.setObjectName(u'QuickSecondVersionLabel')
-        self.QuickLayout.addWidget(self.QuickSecondVersionLabel, 1, 0, 1, 1)
-        self.QuickSecondBibleComboBox = QtGui.QComboBox(self.QuickTab)
-        self.QuickSecondBibleComboBox.setSizeAdjustPolicy(
-            QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.QuickSecondBibleComboBox.setObjectName(u'SecondBible')
-        self.QuickLayout.addWidget(self.QuickSecondBibleComboBox, 1, 1, 1, 2)
-        self.QuickSearchLabel = QtGui.QLabel(self.QuickTab)
-        self.QuickSearchLabel.setObjectName(u'QuickSearchLabel')
-        self.QuickLayout.addWidget(self.QuickSearchLabel, 2, 0, 1, 1)
-        self.QuickSearchComboBox = QtGui.QComboBox(self.QuickTab)
-        self.QuickSearchComboBox.setObjectName(u'SearchComboBox')
-        self.QuickLayout.addWidget(self.QuickSearchComboBox, 2, 1, 1, 2)
-        self.QuickSearchLabel = QtGui.QLabel(self.QuickTab)
-        self.QuickSearchLabel.setObjectName(u'QuickSearchLabel')
-        self.QuickLayout.addWidget(self.QuickSearchLabel, 3, 0, 1, 1)
-        self.QuickSearchEdit = QtGui.QLineEdit(self.QuickTab)
-        self.QuickSearchEdit.setObjectName(u'QuickSearchEdit')
-        self.QuickLayout.addWidget(self.QuickSearchEdit, 3, 1, 1, 2)
-        self.QuickClearLabel = QtGui.QLabel(self.QuickTab)
-        self.QuickClearLabel.setObjectName(u'QuickSearchLabel')
-        self.QuickLayout.addWidget(self.QuickClearLabel, 4, 0, 1, 1)
-        self.ClearQuickSearchComboBox = QtGui.QComboBox(self.QuickTab)
-        self.ClearQuickSearchComboBox.setObjectName(u'ClearQuickSearchComboBox')
-        self.QuickLayout.addWidget(self.ClearQuickSearchComboBox, 4, 1, 1, 2)
-        self.QuickSearchButtonLayout = QtGui.QHBoxLayout()
-        self.QuickSearchButtonLayout.setMargin(0)
-        self.QuickSearchButtonLayout.setSpacing(0)
-        self.QuickSearchButtonLayout.setObjectName(u'QuickSearchButtonLayout')
-        self.QuickSearchButtonSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.QuickSearchButtonLayout.addItem(self.QuickSearchButtonSpacer)
-        self.QuickSearchButton = QtGui.QPushButton(self.QuickTab)
-        self.QuickSearchButton.setObjectName(u'QuickSearchButton')
-        self.QuickSearchButtonLayout.addWidget(self.QuickSearchButton)
-        self.QuickLayout.addLayout(self.QuickSearchButtonLayout, 5, 0, 1, 3)
-        self.QuickMessage = QtGui.QLabel(self.QuickTab)
-        self.QuickMessage.setObjectName(u'QuickMessage')
-        self.QuickLayout.addWidget(self.QuickMessage, 6, 0, 1, 3)
-        self.SearchTabWidget.addTab(self.QuickTab,
+        self.quickTab = QtGui.QWidget()
+        self.quickTab.setObjectName(u'quickTab')
+        self.quickLayout = QtGui.QFormLayout(self.quickTab)
+        self.quickLayout.setObjectName(u'quickLayout')
+        self.quickVersionLabel = QtGui.QLabel(self.quickTab)
+        self.quickVersionLabel.setObjectName(u'quickVersionLabel')
+        self.quickVersionComboBox = QtGui.QComboBox(self.quickTab)
+        self.quickVersionComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.quickVersionComboBox.setObjectName(u'quickVersionComboBox')
+        self.quickVersionLabel.setBuddy(self.quickVersionComboBox)
+        self.quickLayout.addRow(self.quickVersionLabel,
+            self.quickVersionComboBox)
+        self.quickSecondLabel = QtGui.QLabel(self.quickTab)
+        self.quickSecondLabel.setObjectName(u'quickSecondLabel')
+        self.quickSecondComboBox = QtGui.QComboBox(self.quickTab)
+        self.quickSecondComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.quickSecondComboBox.setObjectName(u'quickSecondComboBox')
+        self.quickSecondLabel.setBuddy(self.quickSecondComboBox)
+        self.quickLayout.addRow(self.quickSecondLabel, self.quickSecondComboBox)
+        self.quickSearchTypeLabel = QtGui.QLabel(self.quickTab)
+        self.quickSearchTypeLabel.setObjectName(u'quickSearchTypeLabel')
+        self.quickSearchComboBox = QtGui.QComboBox(self.quickTab)
+        self.quickSearchComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.quickSearchComboBox.setObjectName(u'quickSearchComboBox')
+        self.quickSearchTypeLabel.setBuddy(self.quickSearchComboBox)
+        self.quickLayout.addRow(self.quickSearchTypeLabel,
+            self.quickSearchComboBox)
+        self.quickSearchLabel = QtGui.QLabel(self.quickTab)
+        self.quickSearchLabel.setObjectName(u'quickSearchLabel')
+        self.quickSearchEdit = QtGui.QLineEdit(self.quickTab)
+        self.quickSearchEdit.setObjectName(u'quickSearchEdit')
+        self.quickSearchLabel.setBuddy(self.quickSearchEdit)
+        self.quickLayout.addRow(self.quickSearchLabel, self.quickSearchEdit)
+        self.quickClearLabel = QtGui.QLabel(self.quickTab)
+        self.quickClearLabel.setObjectName(u'quickClearLabel')
+        self.quickClearComboBox = QtGui.QComboBox(self.quickTab)
+        self.quickClearComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.quickClearComboBox.setObjectName(u'quickClearComboBox')
+        self.quickLayout.addRow(self.quickClearLabel, self.quickClearComboBox)
+        self.quickSearchButtonLayout = QtGui.QHBoxLayout()
+        self.quickSearchButtonLayout.setObjectName(u'quickSearchButtonLayout')
+        self.quickSearchButtonLayout.addStretch()
+        self.quickSearchButton = QtGui.QPushButton(self.quickTab)
+        self.quickSearchButton.setObjectName(u'quickSearchButton')
+        self.quickSearchButtonLayout.addWidget(self.quickSearchButton)
+        self.quickLayout.addRow(self.quickSearchButtonLayout)
+        self.quickMessage = QtGui.QLabel(self.quickTab)
+        self.quickMessage.setObjectName(u'quickMessage')
+        self.quickLayout.addRow(self.quickMessage)
+        self.searchTabWidget.addTab(self.quickTab,
             translate('BiblesPlugin.MediaItem', 'Quick'))
-        QuickSpacerItem = QtGui.QSpacerItem(20, 35, QtGui.QSizePolicy.Minimum,
-            QtGui.QSizePolicy.Expanding)
-        self.QuickLayout.addItem(QuickSpacerItem, 6, 2, 1, 1)
         # Add the Advanced Search tab.
-        self.AdvancedTab = QtGui.QWidget()
-        self.AdvancedTab.setObjectName(u'AdvancedTab')
-        self.AdvancedLayout = QtGui.QGridLayout(self.AdvancedTab)
-        self.AdvancedLayout.setMargin(2)
-        self.AdvancedLayout.setSpacing(4)
-        self.AdvancedLayout.setVerticalSpacing(4)
-        self.AdvancedLayout.setObjectName(u'AdvancedLayout')
-        self.AdvancedVersionLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedVersionLabel.setObjectName(u'AdvancedVersionLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedVersionLabel, 0, 0, 1, 1)
-        self.AdvancedVersionComboBox = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedVersionComboBox.setSizeAdjustPolicy(
-            QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.AdvancedVersionComboBox.setObjectName(u'AdvancedVersionComboBox')
-        self.AdvancedLayout.addWidget(self.AdvancedVersionComboBox, 0, 1, 1, 2)
-        self.AdvancedSecondBibleLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedSecondBibleLabel.setObjectName(u'AdvancedSecondBibleLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedSecondBibleLabel, 1, 0, 1, 1)
-        self.AdvancedSecondBibleComboBox = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedSecondBibleComboBox.setSizeAdjustPolicy(
-            QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.AdvancedSecondBibleComboBox.setObjectName(
-            u'AdvancedSecondBibleComboBox')
-        self.AdvancedLayout.addWidget(
-            self.AdvancedSecondBibleComboBox, 1, 1, 1, 2)
-        self.AdvancedBookLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedBookLabel.setObjectName(u'AdvancedBookLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedBookLabel, 2, 0, 1, 1)
-        self.AdvancedBookComboBox = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedBookComboBox.setObjectName(u'AdvancedBookComboBox')
-        self.AdvancedLayout.addWidget(self.AdvancedBookComboBox, 2, 1, 1, 2)
-        self.AdvancedChapterLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedChapterLabel.setObjectName(u'AdvancedChapterLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedChapterLabel, 3, 1, 1, 1)
-        self.AdvancedVerseLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedVerseLabel.setObjectName(u'AdvancedVerseLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedVerseLabel, 3, 2, 1, 1)
-        self.AdvancedFromLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedFromLabel.setObjectName(u'AdvancedFromLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedFromLabel, 4, 0, 1, 1)
-        self.AdvancedFromChapter = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedFromChapter.setObjectName(u'AdvancedFromChapter')
-        self.AdvancedLayout.addWidget(self.AdvancedFromChapter, 4, 1, 1, 1)
-        self.AdvancedFromVerse = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedFromVerse.setObjectName(u'AdvancedFromVerse')
-        self.AdvancedLayout.addWidget(self.AdvancedFromVerse, 4, 2, 1, 1)
-        self.AdvancedToLabel = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedToLabel.setObjectName(u'AdvancedToLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedToLabel, 5, 0, 1, 1)
-        self.AdvancedToChapter = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedToChapter.setObjectName(u'AdvancedToChapter')
-        self.AdvancedLayout.addWidget(self.AdvancedToChapter, 5, 1, 1, 1)
-        self.AdvancedToVerse = QtGui.QComboBox(self.AdvancedTab)
-        self.AdvancedToVerse.setObjectName(u'AdvancedToVerse')
-        self.AdvancedLayout.addWidget(self.AdvancedToVerse, 5, 2, 1, 1)
-        self.AdvancedClearLabel = QtGui.QLabel(self.QuickTab)
-        self.AdvancedClearLabel.setObjectName(u'QuickSearchLabel')
-        self.AdvancedLayout.addWidget(self.AdvancedClearLabel, 6, 0, 1, 1)
-        self.ClearAdvancedSearchComboBox = QtGui.QComboBox(self.QuickTab)
-        self.ClearAdvancedSearchComboBox.setObjectName(
-            u'ClearAdvancedSearchComboBox')
-        self.AdvancedLayout.addWidget(
-            self.ClearAdvancedSearchComboBox, 6, 1, 1, 2)
-        self.AdvancedSearchButtonLayout = QtGui.QHBoxLayout()
-        self.AdvancedSearchButtonLayout.setMargin(0)
-        self.AdvancedSearchButtonLayout.setSpacing(0)
-        self.AdvancedSearchButtonLayout.setObjectName(
-            u'AdvancedSearchButtonLayout')
-        self.AdvancedSearchButtonSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.AdvancedSearchButtonLayout.addItem(self.AdvancedSearchButtonSpacer)
-        self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)
-        self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')
-        self.AdvancedSearchButtonLayout.addWidget(self.AdvancedSearchButton)
-        self.AdvancedLayout.addLayout(
-            self.AdvancedSearchButtonLayout, 7, 0, 1, 3)
-        self.AdvancedMessage = QtGui.QLabel(self.AdvancedTab)
-        self.AdvancedMessage.setObjectName(u'AdvancedMessage')
-        self.AdvancedLayout.addWidget(self.AdvancedMessage, 8, 0, 1, 3)
-        self.SearchTabWidget.addTab(self.AdvancedTab,
+        self.advancedTab = QtGui.QWidget()
+        self.advancedTab.setObjectName(u'advancedTab')
+        self.advancedLayout = QtGui.QGridLayout(self.advancedTab)
+        self.advancedLayout.setObjectName(u'advancedLayout')
+        self.advancedVersionLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedVersionLabel.setObjectName(u'advancedVersionLabel')
+        self.advancedLayout.addWidget(self.advancedVersionLabel, 0, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedVersionComboBox = QtGui.QComboBox(self.advancedTab)
+        self.advancedVersionComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.advancedVersionComboBox.setObjectName(u'advancedVersionComboBox')
+        self.advancedVersionLabel.setBuddy(self.advancedVersionComboBox)
+        self.advancedLayout.addWidget(self.advancedVersionComboBox, 0, 1, 1, 2)
+        self.advancedSecondLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedSecondLabel.setObjectName(u'advancedSecondLabel')
+        self.advancedLayout.addWidget(self.advancedSecondLabel, 1, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedSecondComboBox = QtGui.QComboBox(self.advancedTab)
+        self.advancedSecondComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.advancedSecondComboBox.setObjectName(u'advancedSecondComboBox')
+        self.advancedSecondLabel.setBuddy(self.advancedSecondComboBox)
+        self.advancedLayout.addWidget(self.advancedSecondComboBox, 1, 1, 1, 2)
+        self.advancedBookLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedBookLabel.setObjectName(u'advancedBookLabel')
+        self.advancedLayout.addWidget(self.advancedBookLabel, 2, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedBookComboBox = QtGui.QComboBox(self.advancedTab)
+        self.advancedBookComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.advancedBookComboBox.setObjectName(u'advancedBookComboBox')
+        self.advancedBookLabel.setBuddy(self.advancedBookComboBox)
+        self.advancedLayout.addWidget(self.advancedBookComboBox, 2, 1, 1, 2)
+        self.advancedChapterLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedChapterLabel.setObjectName(u'advancedChapterLabel')
+        self.advancedLayout.addWidget(self.advancedChapterLabel, 3, 1)
+        self.advancedVerseLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedVerseLabel.setObjectName(u'advancedVerseLabel')
+        self.advancedLayout.addWidget(self.advancedVerseLabel, 3, 2)
+        self.advancedFromLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedFromLabel.setObjectName(u'advancedFromLabel')
+        self.advancedLayout.addWidget(self.advancedFromLabel, 4, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedFromChapter = QtGui.QComboBox(self.advancedTab)
+        self.advancedFromChapter.setObjectName(u'advancedFromChapter')
+        self.advancedLayout.addWidget(self.advancedFromChapter, 4, 1)
+        self.advancedFromVerse = QtGui.QComboBox(self.advancedTab)
+        self.advancedFromVerse.setObjectName(u'advancedFromVerse')
+        self.advancedLayout.addWidget(self.advancedFromVerse, 4, 2)
+        self.advancedToLabel = QtGui.QLabel(self.advancedTab)
+        self.advancedToLabel.setObjectName(u'advancedToLabel')
+        self.advancedLayout.addWidget(self.advancedToLabel, 5, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedToChapter = QtGui.QComboBox(self.advancedTab)
+        self.advancedToChapter.setObjectName(u'advancedToChapter')
+        self.advancedLayout.addWidget(self.advancedToChapter, 5, 1)
+        self.advancedToVerse = QtGui.QComboBox(self.advancedTab)
+        self.advancedToVerse.setObjectName(u'advancedToVerse')
+        self.advancedLayout.addWidget(self.advancedToVerse, 5, 2)
+
+        self.advancedClearLabel = QtGui.QLabel(self.quickTab)
+        self.advancedClearLabel.setObjectName(u'advancedClearLabel')
+        self.advancedLayout.addWidget(self.advancedClearLabel, 6, 0,
+            QtCore.Qt.AlignRight)
+        self.advancedClearComboBox = QtGui.QComboBox(self.quickTab)
+        self.advancedClearComboBox.setSizePolicy(
+            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
+        self.advancedClearComboBox.setObjectName(u'advancedClearComboBox')
+        self.advancedClearLabel.setBuddy(self.advancedClearComboBox)
+        self.advancedLayout.addWidget(self.advancedClearComboBox, 6, 1, 1, 2)
+        self.advancedSearchButtonLayout = QtGui.QHBoxLayout()
+        self.advancedSearchButtonLayout.setObjectName(
+            u'advancedSearchButtonLayout')
+        self.advancedSearchButtonLayout.addStretch()
+        self.advancedSearchButton = QtGui.QPushButton(self.advancedTab)
+        self.advancedSearchButton.setObjectName(u'advancedSearchButton')
+        self.advancedSearchButtonLayout.addWidget(self.advancedSearchButton)
+        self.advancedLayout.addLayout(
+            self.advancedSearchButtonLayout, 7, 0, 1, 3)
+        self.advancedMessage = QtGui.QLabel(self.advancedTab)
+        self.advancedMessage.setObjectName(u'advancedMessage')
+        self.advancedLayout.addWidget(self.advancedMessage, 8, 0, 1, 3)
+        self.searchTabWidget.addTab(self.advancedTab,
             translate('BiblesPlugin.MediaItem', 'Advanced'))
         # Add the search tab widget to the page layout.
-        self.pageLayout.addWidget(self.SearchTabWidget)
+        self.pageLayout.addWidget(self.searchTabWidget)
         # Combo Boxes
-        QtCore.QObject.connect(self.AdvancedVersionComboBox,
+        QtCore.QObject.connect(self.advancedVersionComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.onAdvancedVersionComboBox)
-        QtCore.QObject.connect(self.AdvancedBookComboBox,
+        QtCore.QObject.connect(self.advancedBookComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.onAdvancedBookComboBox)
-        QtCore.QObject.connect(self.AdvancedFromChapter,
+        QtCore.QObject.connect(self.advancedFromChapter,
             QtCore.SIGNAL(u'activated(int)'), self.onAdvancedFromChapter)
-        QtCore.QObject.connect(self.AdvancedFromVerse,
+        QtCore.QObject.connect(self.advancedFromVerse,
             QtCore.SIGNAL(u'activated(int)'), self.onAdvancedFromVerse)
-        QtCore.QObject.connect(self.AdvancedToChapter,
+        QtCore.QObject.connect(self.advancedToChapter,
             QtCore.SIGNAL(u'activated(int)'), self.onAdvancedToChapter)
-        QtCore.QObject.connect(self.QuickSearchComboBox,
+        QtCore.QObject.connect(self.quickSearchComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
-        QtCore.QObject.connect(self.QuickVersionComboBox,
+        QtCore.QObject.connect(self.quickVersionComboBox,
             QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
         # Buttons
-        QtCore.QObject.connect(self.AdvancedSearchButton,
+        QtCore.QObject.connect(self.advancedSearchButton,
             QtCore.SIGNAL(u'pressed()'), self.onAdvancedSearchButton)
-        QtCore.QObject.connect(self.QuickSearchButton,
+        QtCore.QObject.connect(self.quickSearchButton,
             QtCore.SIGNAL(u'pressed()'), self.onQuickSearchButton)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'config_updated'), self.configUpdated)
         # Other stuff
-        QtCore.QObject.connect(self.QuickSearchEdit,
+        QtCore.QObject.connect(self.quickSearchEdit,
             QtCore.SIGNAL(u'returnPressed()'), self.onQuickSearchButton)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'bibles_showprogress'), self.onSearchProgressShow)
@@ -276,59 +268,59 @@
         log.debug(u'configUpdated')
         if QtCore.QSettings().value(self.settingsSection + u'/second bibles',
             QtCore.QVariant(True)).toBool():
-            self.AdvancedSecondBibleLabel.setVisible(True)
-            self.AdvancedSecondBibleComboBox.setVisible(True)
-            self.QuickSecondVersionLabel.setVisible(True)
-            self.QuickSecondBibleComboBox.setVisible(True)
+            self.advancedSecondLabel.setVisible(True)
+            self.advancedSecondComboBox.setVisible(True)
+            self.quickSecondLabel.setVisible(True)
+            self.quickSecondComboBox.setVisible(True)
         else:
-            self.AdvancedSecondBibleLabel.setVisible(False)
-            self.AdvancedSecondBibleComboBox.setVisible(False)
-            self.QuickSecondVersionLabel.setVisible(False)
-            self.QuickSecondBibleComboBox.setVisible(False)
+            self.advancedSecondLabel.setVisible(False)
+            self.advancedSecondComboBox.setVisible(False)
+            self.quickSecondLabel.setVisible(False)
+            self.quickSecondComboBox.setVisible(False)
 
     def retranslateUi(self):
         log.debug(u'retranslateUi')
-        self.QuickVersionLabel.setText(
+        self.quickVersionLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Version:'))
-        self.QuickSecondVersionLabel.setText(
+        self.quickSecondLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Second:'))
-        self.QuickSearchLabel.setText(
+        self.quickSearchTypeLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Search type:'))
-        self.QuickSearchLabel.setText(
+        self.quickSearchLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Find:'))
-        self.QuickSearchButton.setText(
+        self.quickSearchButton.setText(
             translate('BiblesPlugin.MediaItem', 'Search'))
-        self.QuickClearLabel.setText(
+        self.quickClearLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Results:'))
-        self.AdvancedVersionLabel.setText(
+        self.advancedVersionLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Version:'))
-        self.AdvancedSecondBibleLabel.setText(
+        self.advancedSecondLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Second:'))
-        self.AdvancedBookLabel.setText(
+        self.advancedBookLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Book:'))
-        self.AdvancedChapterLabel.setText(
+        self.advancedChapterLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Chapter:'))
-        self.AdvancedVerseLabel.setText(
+        self.advancedVerseLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Verse:'))
-        self.AdvancedFromLabel.setText(
+        self.advancedFromLabel.setText(
             translate('BiblesPlugin.MediaItem', 'From:'))
-        self.AdvancedToLabel.setText(
+        self.advancedToLabel.setText(
             translate('BiblesPlugin.MediaItem', 'To:'))
-        self.AdvancedClearLabel.setText(
+        self.advancedClearLabel.setText(
             translate('BiblesPlugin.MediaItem', 'Results:'))
-        self.AdvancedSearchButton.setText(
+        self.advancedSearchButton.setText(
             translate('BiblesPlugin.MediaItem', 'Search'))
-        self.QuickSearchComboBox.addItem(
+        self.quickSearchComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Verse Search'))
-        self.QuickSearchComboBox.addItem(
+        self.quickSearchComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Text Search'))
-        self.ClearQuickSearchComboBox.addItem(
+        self.quickClearComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Clear'))
-        self.ClearQuickSearchComboBox.addItem(
+        self.quickClearComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Keep'))
-        self.ClearAdvancedSearchComboBox.addItem(
+        self.advancedClearComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Clear'))
-        self.ClearAdvancedSearchComboBox.addItem(
+        self.advancedClearComboBox.addItem(
             translate('BiblesPlugin.MediaItem', 'Keep'))
 
     def initialise(self):
@@ -340,8 +332,8 @@
         log.debug(u'bible manager initialise complete')
 
     def setQuickMessage(self, text):
-        self.QuickMessage.setText(text)
-        self.AdvancedMessage.setText(text)
+        self.quickMessage.setText(text)
+        self.advancedMessage.setText(text)
         Receiver.send_message(u'openlp_process_events')
         # Minor delay to get the events processed.
         time.sleep(0.1)
@@ -368,12 +360,12 @@
 
     def loadBibles(self):
         log.debug(u'Loading Bibles')
-        self.QuickVersionComboBox.clear()
-        self.QuickSecondBibleComboBox.clear()
-        self.AdvancedVersionComboBox.clear()
-        self.AdvancedSecondBibleComboBox.clear()
-        self.QuickSecondBibleComboBox.addItem(u'')
-        self.AdvancedSecondBibleComboBox.addItem(u'')
+        self.quickVersionComboBox.clear()
+        self.quickSecondComboBox.clear()
+        self.advancedVersionComboBox.clear()
+        self.advancedSecondComboBox.clear()
+        self.quickSecondComboBox.addItem(u'')
+        self.advancedSecondComboBox.addItem(u'')
         # Get all bibles and sort the list.
         bibles = self.parent.manager.get_bibles().keys()
         bibles.sort()
@@ -381,10 +373,10 @@
         first = True
         for bible in bibles:
             if bible:
-                self.QuickVersionComboBox.addItem(bible)
-                self.QuickSecondBibleComboBox.addItem(bible)
-                self.AdvancedVersionComboBox.addItem(bible)
-                self.AdvancedSecondBibleComboBox.addItem(bible)
+                self.quickVersionComboBox.addItem(bible)
+                self.quickSecondComboBox.addItem(bible)
+                self.advancedVersionComboBox.addItem(bible)
+                self.advancedSecondComboBox.addItem(bible)
                 if first:
                     first = False
                     self.initialiseBible(bible)
@@ -406,12 +398,12 @@
         """
         log.debug(u'initialiseBible %s', bible)
         book_data = self.parent.manager.get_books(bible)
-        self.AdvancedBookComboBox.clear()
+        self.advancedBookComboBox.clear()
         first = True
         for book in book_data:
-            row = self.AdvancedBookComboBox.count()
-            self.AdvancedBookComboBox.addItem(book[u'name'])
-            self.AdvancedBookComboBox.setItemData(
+            row = self.advancedBookComboBox.count()
+            self.advancedBookComboBox.addItem(book[u'name'])
+            self.advancedBookComboBox.setItemData(
                 row, QtCore.QVariant(book[u'chapters']))
             if first:
                 first = False
@@ -423,16 +415,16 @@
         self.chapter_count = chapter_count
         verse_count = self.parent.manager.get_verse_count(bible, book, 1)
         if verse_count == 0:
-            self.AdvancedSearchButton.setEnabled(False)
-            self.AdvancedMessage.setText(
+            self.advancedSearchButton.setEnabled(False)
+            self.advancedMessage.setText(
                 translate('BiblesPlugin.MediaItem', 'Bible not fully loaded.'))
         else:
-            self.AdvancedSearchButton.setEnabled(True)
-            self.AdvancedMessage.setText(u'')
-            self.adjustComboBox(1, self.chapter_count, self.AdvancedFromChapter)
-            self.adjustComboBox(1, self.chapter_count, self.AdvancedToChapter)
-            self.adjustComboBox(1, verse_count, self.AdvancedFromVerse)
-            self.adjustComboBox(1, verse_count, self.AdvancedToVerse)
+            self.advancedSearchButton.setEnabled(True)
+            self.advancedMessage.setText(u'')
+            self.adjustComboBox(1, self.chapter_count, self.advancedFromChapter)
+            self.adjustComboBox(1, self.chapter_count, self.advancedToChapter)
+            self.adjustComboBox(1, verse_count, self.advancedFromVerse)
+            self.adjustComboBox(1, verse_count, self.advancedToVerse)
 
     def updateAutoCompleter(self):
         """
@@ -442,73 +434,73 @@
         """
         books = []
         # We have to do a 'Verse Search'.
-        if self.QuickSearchComboBox.currentIndex() == 0:
+        if self.quickSearchComboBox.currentIndex() == 0:
             bibles = self.parent.manager.get_bibles()
-            bible = unicode(self.QuickVersionComboBox.currentText())
+            bible = unicode(self.quickVersionComboBox.currentText())
             if bible:
                 book_data = bibles[bible].get_books()
                 books = [book.name for book in book_data]
                 books.sort()
         completer = QtGui.QCompleter(books)
         completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
-        self.QuickSearchEdit.setCompleter(completer)
+        self.quickSearchEdit.setCompleter(completer)
 
     def onAdvancedVersionComboBox(self):
         self.initialiseBible(
-            unicode(self.AdvancedVersionComboBox.currentText()))
+            unicode(self.advancedVersionComboBox.currentText()))
 
     def onAdvancedBookComboBox(self):
-        item = int(self.AdvancedBookComboBox.currentIndex())
+        item = int(self.advancedBookComboBox.currentIndex())
         self.initialiseChapterVerse(
-            unicode(self.AdvancedVersionComboBox.currentText()),
-            unicode(self.AdvancedBookComboBox.currentText()),
-            self.AdvancedBookComboBox.itemData(item).toInt()[0])
+            unicode(self.advancedVersionComboBox.currentText()),
+            unicode(self.advancedBookComboBox.currentText()),
+            self.advancedBookComboBox.itemData(item).toInt()[0])
 
     def onAdvancedFromVerse(self):
-        chapter_from = int(self.AdvancedFromChapter.currentText())
-        chapter_to = int(self.AdvancedToChapter.currentText())
+        chapter_from = int(self.advancedFromChapter.currentText())
+        chapter_to = int(self.advancedToChapter.currentText())
         if chapter_from == chapter_to:
-            bible = unicode(self.AdvancedVersionComboBox.currentText())
-            book = unicode(self.AdvancedBookComboBox.currentText())
-            verse_from = int(self.AdvancedFromVerse.currentText())
+            bible = unicode(self.advancedVersionComboBox.currentText())
+            book = unicode(self.advancedBookComboBox.currentText())
+            verse_from = int(self.advancedFromVerse.currentText())
             verse_count = self.parent.manager.get_verse_count(bible, book,
                 chapter_to)
             self.adjustComboBox(verse_from, verse_count,
-                self.AdvancedToVerse, True)
+                self.advancedToVerse, True)
 
     def onAdvancedToChapter(self):
-        bible = unicode(self.AdvancedVersionComboBox.currentText())
-        book = unicode(self.AdvancedBookComboBox.currentText())
-        chapter_from = int(self.AdvancedFromChapter.currentText())
-        chapter_to = int(self.AdvancedToChapter.currentText())
-        verse_from = int(self.AdvancedFromVerse.currentText())
-        verse_to = int(self.AdvancedToVerse.currentText())
+        bible = unicode(self.advancedVersionComboBox.currentText())
+        book = unicode(self.advancedBookComboBox.currentText())
+        chapter_from = int(self.advancedFromChapter.currentText())
+        chapter_to = int(self.advancedToChapter.currentText())
+        verse_from = int(self.advancedFromVerse.currentText())
+        verse_to = int(self.advancedToVerse.currentText())
         verse_count = self.parent.manager.get_verse_count(bible, book,
             chapter_to)
         if chapter_from == chapter_to and verse_from > verse_to:
-            self.adjustComboBox(verse_from, verse_count, self.AdvancedToVerse)
+            self.adjustComboBox(verse_from, verse_count, self.advancedToVerse)
         else:
-            self.adjustComboBox(1, verse_count, self.AdvancedToVerse)
+            self.adjustComboBox(1, verse_count, self.advancedToVerse)
 
     def onAdvancedFromChapter(self):
-        bible = unicode(self.AdvancedVersionComboBox.currentText())
-        book = unicode(self.AdvancedBookComboBox.currentText())
-        chapter_from = int(self.AdvancedFromChapter.currentText())
-        chapter_to = int(self.AdvancedToChapter.currentText())
+        bible = unicode(self.advancedVersionComboBox.currentText())
+        book = unicode(self.advancedBookComboBox.currentText())
+        chapter_from = int(self.advancedFromChapter.currentText())
+        chapter_to = int(self.advancedToChapter.currentText())
         verse_count = self.parent.manager.get_verse_count(bible, book,
             chapter_from)
-        self.adjustComboBox(1, verse_count, self.AdvancedFromVerse)
+        self.adjustComboBox(1, verse_count, self.advancedFromVerse)
         if chapter_from > chapter_to:
-            self.adjustComboBox(1, verse_count, self.AdvancedToVerse)
+            self.adjustComboBox(1, verse_count, self.advancedToVerse)
             self.adjustComboBox(chapter_from, self.chapter_count,
-                self.AdvancedToChapter)
+                self.advancedToChapter)
         elif chapter_from == chapter_to:
             self.adjustComboBox(chapter_from, self.chapter_count,
-                self.AdvancedToChapter)
-            self.adjustComboBox(1, verse_count, self.AdvancedToVerse, True)
+                self.advancedToChapter)
+            self.adjustComboBox(1, verse_count, self.advancedToVerse, True)
         else:
             self.adjustComboBox(chapter_from, self.chapter_count,
-                self.AdvancedToChapter, True)
+                self.advancedToChapter, True)
 
     def adjustComboBox(self, range_from, range_to, combo, restore=False):
         """
@@ -541,14 +533,14 @@
         Does an advanced search and saves the search results.
         """
         log.debug(u'Advanced Search Button pressed')
-        self.AdvancedSearchButton.setEnabled(False)
-        bible = unicode(self.AdvancedVersionComboBox.currentText())
-        second_bible = unicode(self.AdvancedSecondBibleComboBox.currentText())
-        book = unicode(self.AdvancedBookComboBox.currentText())
-        chapter_from = self.AdvancedFromChapter.currentText()
-        chapter_to = self.AdvancedToChapter.currentText()
-        verse_from = self.AdvancedFromVerse.currentText()
-        verse_to = self.AdvancedToVerse.currentText()
+        self.advancedSearchButton.setEnabled(False)
+        bible = unicode(self.advancedVersionComboBox.currentText())
+        second_bible = unicode(self.advancedSecondComboBox.currentText())
+        book = unicode(self.advancedBookComboBox.currentText())
+        chapter_from = self.advancedFromChapter.currentText()
+        chapter_to = self.advancedToChapter.currentText()
+        verse_from = self.advancedFromVerse.currentText()
+        verse_to = self.advancedToVerse.currentText()
         verse_separator = get_reference_match(u'sep_v_display')
         range_separator = get_reference_match(u'sep_r_display')
         verse_range = chapter_from + verse_separator + verse_from + \
@@ -558,7 +550,7 @@
         if second_bible:
             self.second_search_results = self.parent.manager.get_verses(
                 second_bible, versetext)
-        if self.ClearAdvancedSearchComboBox.currentIndex() == 0:
+        if self.advancedClearComboBox.currentIndex() == 0:
             self.listView.clear()
         if self.listView.count() != 0:
             # Check if the first item is a second bible item or not.
@@ -578,7 +570,7 @@
                 self.displayResults(bible, second_bible)
         else:
             self.displayResults(bible, second_bible)
-        self.AdvancedSearchButton.setEnabled(True)
+        self.advancedSearchButton.setEnabled(True)
 
     def onQuickSearchButton(self):
         """
@@ -586,11 +578,11 @@
         either be "Verse Search" or "Text Search".
         """
         log.debug(u'Quick Search Button pressed')
-        self.QuickSearchButton.setEnabled(False)
-        bible = unicode(self.QuickVersionComboBox.currentText())
-        second_bible = unicode(self.QuickSecondBibleComboBox.currentText())
-        text = unicode(self.QuickSearchEdit.text())
-        if self.QuickSearchComboBox.currentIndex() == 0:
+        self.quickSearchButton.setEnabled(False)
+        bible = unicode(self.quickVersionComboBox.currentText())
+        second_bible = unicode(self.quickSecondComboBox.currentText())
+        text = unicode(self.quickSearchEdit.text())
+        if self.quickSearchComboBox.currentIndex() == 0:
             # We are doing a 'Verse Search'.
             self.search_results = self.parent.manager.get_verses(bible, text)
             if second_bible and self.search_results:
@@ -608,7 +600,7 @@
                         verse.verse))
                 self.second_search_results = \
                     bibles[second_bible].get_verses(text)
-        if self.ClearQuickSearchComboBox.currentIndex() == 0:
+        if self.quickClearComboBox.currentIndex() == 0:
             self.listView.clear()
         if self.listView.count() != 0 and self.search_results:
             bitem = self.listView.item(0)
@@ -627,13 +619,14 @@
                 self.displayResults(bible, second_bible)
         elif self.search_results:
             self.displayResults(bible, second_bible)
-        self.QuickSearchButton.setEnabled(True)
+        self.quickSearchButton.setEnabled(True)
 
     def displayResults(self, bible, second_bible=u''):
         """
         Displays the search results in the media manager. All data needed for
         further action is saved for/in each row.
         """
+        verse_separator = get_reference_match(u'sep_v_display')
         version = self.parent.manager.get_meta_data(bible, u'Version')
         copyright = self.parent.manager.get_meta_data(bible, u'Copyright')
         permissions = self.parent.manager.get_meta_data(bible, u'Permissions')
@@ -669,8 +662,8 @@
                     }
                 except IndexError:
                     break
-                bible_text = u' %s %d:%d (%s, %s)' % (verse.book.name,
-                    verse.chapter, verse.verse, version.value,
+                bible_text = u' %s %d%s%d (%s, %s)' % (verse.book.name,
+                    verse.chapter, verse_separator, verse.verse, version.value,
                     second_version.value)
             else:
                 vdict = {
@@ -688,8 +681,8 @@
                     'second_permissions': QtCore.QVariant(u''),
                     'second_text': QtCore.QVariant(u'')
                 }
-                bible_text = u'%s %d:%d (%s)' % (verse.book.name,
-                    verse.chapter, verse.verse, version.value)
+                bible_text = u'%s %d%s%d (%s)' % (verse.book.name,
+                    verse.chapter, verse_separator, verse.verse, version.value)
             bible_verse = QtGui.QListWidgetItem(bible_text)
             bible_verse.setData(QtCore.Qt.UserRole, QtCore.QVariant(vdict))
             self.listView.addItem(bible_verse)

=== modified file 'openlp/plugins/bibles/resources/osisbooks.csv'
--- openlp/plugins/bibles/resources/osisbooks.csv	2010-10-21 21:43:14 +0000
+++ openlp/plugins/bibles/resources/osisbooks.csv	2011-01-05 20:02:48 +0000
@@ -43,8 +43,8 @@
 John,John,John
 Acts,Acts,Acts
 Rom,Romans,Rom
-1Cor,1 Corinthans,1Cor
-2Cor,2 Corinthans,2Cor
+1Cor,1 Corinthians,1Cor
+2Cor,2 Corinthians,2Cor
 Gal,Galatians,Gal
 Eph,Ephesians,Eph
 Phil,Philippians,Phil

=== modified file 'openlp/plugins/custom/forms/editcustomdialog.py'
--- openlp/plugins/custom/forms/editcustomdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/custom/forms/editcustomdialog.py	2011-01-05 20:02:48 +0000
@@ -31,86 +31,73 @@
 class Ui_CustomEditDialog(object):
     def setupUi(self, customEditDialog):
         customEditDialog.setObjectName(u'customEditDialog')
-        customEditDialog.resize(590, 541)
+        customEditDialog.resize(450, 350)
         customEditDialog.setWindowIcon(
             build_icon(u':/icon/openlp.org-icon-32.bmp'))
-        self.gridLayout = QtGui.QGridLayout(customEditDialog)
-        self.gridLayout.setObjectName(u'gridLayout')
-        self.horizontalLayout3 = QtGui.QHBoxLayout()
-        self.horizontalLayout3.setObjectName(u'horizontalLayout3')
-        self.themeLabel = QtGui.QLabel(customEditDialog)
-        self.themeLabel.setObjectName(u'themeLabel')
-        self.horizontalLayout3.addWidget(self.themeLabel)
-        self.themeComboBox = QtGui.QComboBox(customEditDialog)
-        self.themeLabel.setBuddy(self.themeComboBox)
-        self.themeComboBox.setObjectName(u'themeComboBox')
-        self.horizontalLayout3.addWidget(self.themeComboBox)
-        self.gridLayout.addLayout(self.horizontalLayout3, 2, 0, 1, 1)
-        self.horizontalLayout2 = QtGui.QHBoxLayout()
-        self.horizontalLayout2.setObjectName(u'horizontalLayout2')
-        self.creditLabel = QtGui.QLabel(customEditDialog)
-        self.creditLabel.setObjectName(u'creditLabel')
-        self.horizontalLayout2.addWidget(self.creditLabel)
-        self.creditEdit = QtGui.QLineEdit(customEditDialog)
-        self.creditLabel.setBuddy(self.creditEdit)
-        self.creditEdit.setObjectName(u'creditEdit')
-        self.horizontalLayout2.addWidget(self.creditEdit)
-        self.gridLayout.addLayout(self.horizontalLayout2, 3, 0, 1, 1)
-        self.buttonBox = QtGui.QDialogButtonBox(customEditDialog)
-        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
-            QtGui.QDialogButtonBox.Save)
-        self.buttonBox.setObjectName(u'buttonBox')
-        self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1)
-        self.horizontalLayout4 = QtGui.QHBoxLayout()
-        self.horizontalLayout4.setObjectName(u'horizontalLayout4')
+        self.dialogLayout = QtGui.QVBoxLayout(customEditDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.titleLayout = QtGui.QHBoxLayout()
+        self.titleLayout.setObjectName(u'titleLayout')
+        self.titleLabel = QtGui.QLabel(customEditDialog)
+        self.titleLabel.setObjectName(u'titleLabel')
+        self.titleLayout.addWidget(self.titleLabel)
+        self.titleEdit = QtGui.QLineEdit(customEditDialog)
+        self.titleLabel.setBuddy(self.titleEdit)
+        self.titleEdit.setObjectName(u'titleEdit')
+        self.titleLayout.addWidget(self.titleEdit)
+        self.dialogLayout.addLayout(self.titleLayout)
+        self.centralLayout = QtGui.QHBoxLayout()
+        self.centralLayout.setObjectName(u'centralLayout')
         self.slideListView = QtGui.QListWidget(customEditDialog)
         self.slideListView.setAlternatingRowColors(True)
         self.slideListView.setObjectName(u'slideListView')
-        self.horizontalLayout4.addWidget(self.slideListView)
-        self.verticalLayout = QtGui.QVBoxLayout()
-        self.verticalLayout.setObjectName(u'verticalLayout')
+        self.centralLayout.addWidget(self.slideListView)
+        self.buttonLayout = QtGui.QVBoxLayout()
+        self.buttonLayout.setObjectName(u'buttonLayout')
         self.addButton = QtGui.QPushButton(customEditDialog)
         self.addButton.setObjectName(u'addButton')
-        self.verticalLayout.addWidget(self.addButton)
+        self.buttonLayout.addWidget(self.addButton)
         self.editButton = QtGui.QPushButton(customEditDialog)
         self.editButton.setObjectName(u'editButton')
-        self.verticalLayout.addWidget(self.editButton)
+        self.buttonLayout.addWidget(self.editButton)
         self.editAllButton = QtGui.QPushButton(customEditDialog)
         self.editAllButton.setObjectName(u'editAllButton')
-        self.verticalLayout.addWidget(self.editAllButton)
+        self.buttonLayout.addWidget(self.editAllButton)
         self.deleteButton = QtGui.QPushButton(customEditDialog)
         self.deleteButton.setObjectName(u'deleteButton')
-        self.verticalLayout.addWidget(self.deleteButton)
-        spacerItem = QtGui.QSpacerItem(20, 128, QtGui.QSizePolicy.Minimum,
-            QtGui.QSizePolicy.Expanding)
-        self.verticalLayout.addItem(spacerItem)
+        self.buttonLayout.addWidget(self.deleteButton)
+        self.buttonLayout.addStretch()
         self.upButton = QtGui.QPushButton(customEditDialog)
-        icon1 = QtGui.QIcon()
-        icon1.addPixmap(QtGui.QPixmap(u':/services/service_up.png'),
-            QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.upButton.setIcon(icon1)
+        self.upButton.setIcon(build_icon(u':/services/service_up.png'))
         self.upButton.setObjectName(u'upButton')
-        self.verticalLayout.addWidget(self.upButton)
+        self.buttonLayout.addWidget(self.upButton)
         self.downButton = QtGui.QPushButton(customEditDialog)
-        icon2 = QtGui.QIcon()
-        icon2.addPixmap(QtGui.QPixmap(u':/services/service_down.png'),
-            QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.downButton.setIcon(icon2)
+        self.downButton.setIcon(build_icon(u':/services/service_down.png'))
         self.downButton.setObjectName(u'downButton')
-        self.verticalLayout.addWidget(self.downButton)
-        self.horizontalLayout4.addLayout(self.verticalLayout)
-        self.gridLayout.addLayout(self.horizontalLayout4, 1, 0, 1, 1)
-        self.horizontalLayout = QtGui.QHBoxLayout()
-        self.horizontalLayout.setObjectName(u'horizontalLayout')
-        self.titleLabel = QtGui.QLabel(customEditDialog)
-        self.titleLabel.setObjectName(u'titleLabel')
-        self.horizontalLayout.addWidget(self.titleLabel)
-        self.titleEdit = QtGui.QLineEdit(customEditDialog)
-        self.titleLabel.setBuddy(self.titleEdit)
-        self.titleEdit.setObjectName(u'titleEdit')
-        self.horizontalLayout.addWidget(self.titleEdit)
-        self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1)
-
+        self.buttonLayout.addWidget(self.downButton)
+        self.centralLayout.addLayout(self.buttonLayout)
+        self.dialogLayout.addLayout(self.centralLayout)
+        self.bottomFormLayout = QtGui.QFormLayout()
+        self.bottomFormLayout.setObjectName(u'bottomFormLayout')
+        self.themeLabel = QtGui.QLabel(customEditDialog)
+        self.themeLabel.setObjectName(u'themeLabel')
+        self.themeComboBox = QtGui.QComboBox(customEditDialog)
+        self.themeComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
+        self.themeComboBox.setObjectName(u'themeComboBox')
+        self.themeLabel.setBuddy(self.themeComboBox)
+        self.bottomFormLayout.addRow(self.themeLabel, self.themeComboBox)
+        self.creditLabel = QtGui.QLabel(customEditDialog)
+        self.creditLabel.setObjectName(u'creditLabel')
+        self.creditEdit = QtGui.QLineEdit(customEditDialog)
+        self.creditEdit.setObjectName(u'creditEdit')
+        self.creditLabel.setBuddy(self.creditEdit)
+        self.bottomFormLayout.addRow(self.creditLabel, self.creditEdit)
+        self.dialogLayout.addLayout(self.bottomFormLayout)
+        self.buttonBox = QtGui.QDialogButtonBox(customEditDialog)
+        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
+            QtGui.QDialogButtonBox.Save)
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
         self.retranslateUi(customEditDialog)
         QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'),
             customEditDialog.accept)
@@ -152,4 +139,4 @@
         self.themeLabel.setText(
             translate('CustomPlugin.EditCustomForm', 'The&me:'))
         self.creditLabel.setText(
-            translate('CustomPlugin.EditCustomForm', '&Credits:'))
\ No newline at end of file
+            translate('CustomPlugin.EditCustomForm', '&Credits:'))

=== modified file 'openlp/plugins/custom/forms/editcustomslidedialog.py'
--- openlp/plugins/custom/forms/editcustomslidedialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/custom/forms/editcustomslidedialog.py	2011-01-05 20:02:48 +0000
@@ -31,19 +31,20 @@
 class Ui_CustomSlideEditDialog(object):
     def setupUi(self, customSlideEditDialog):
         customSlideEditDialog.setObjectName(u'customSlideEditDialog')
-        customSlideEditDialog.resize(474, 442)
+        customSlideEditDialog.resize(350, 300)
+        self.dialogLayout = QtGui.QVBoxLayout(customSlideEditDialog)
+        self.slideTextEdit = SpellTextEdit(self)
+        self.slideTextEdit.setObjectName(u'slideTextEdit')
+        self.dialogLayout.addWidget(self.slideTextEdit)
         self.buttonBox = QtGui.QDialogButtonBox(customSlideEditDialog)
-        self.buttonBox.setGeometry(QtCore.QRect(8, 407, 458, 32))
-        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
         self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
             QtGui.QDialogButtonBox.Save)
         self.buttonBox.setObjectName(u'buttonBox')
-        self.slideTextEdit = SpellTextEdit(self)
-        self.slideTextEdit.setGeometry(QtCore.QRect(8, 8, 458, 349))
-        self.slideTextEdit.setObjectName(u'slideTextEdit')
         self.splitButton = QtGui.QPushButton(customSlideEditDialog)
-        self.splitButton.setGeometry(QtCore.QRect(380, 370, 85, 27))
         self.splitButton.setObjectName(u'splitButton')
+        self.buttonBox.addButton(self.splitButton,
+            QtGui.QDialogButtonBox.ActionRole)
+        self.dialogLayout.addWidget(self.buttonBox)
         self.retranslateUi(customSlideEditDialog)
         QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'),
             customSlideEditDialog.accept)
@@ -56,4 +57,4 @@
             translate('CustomPlugin.EditCustomForm', 'Split Slide'))
         self.splitButton.setToolTip(
             translate('CustomPlugin.EditCustomForm', 'Split a slide into two '
-            'by inserting a slide splitter.'))
\ No newline at end of file
+            'by inserting a slide splitter.'))

=== modified file 'openlp/plugins/images/lib/mediaitem.py'
--- openlp/plugins/images/lib/mediaitem.py	2011-01-05 18:27:39 +0000
+++ openlp/plugins/images/lib/mediaitem.py	2011-01-05 20:02:48 +0000
@@ -63,6 +63,14 @@
         file_formats = get_images_filter()
         self.OnNewFileMasks = u'%s;;%s (*.*) (*)' % (file_formats,
             unicode(translate('ImagePlugin.MediaItem', 'All Files')))
+        self.replaceAction.setText(
+            translate('ImagePlugin.MediaItem', 'Replace Background'))
+        self.replaceAction.setToolTip(
+            translate('ImagePlugin.MediaItem', 'Replace Live Background'))
+        self.resetAction.setText(
+            translate('ImagePlugin.MediaItem', 'Reset Background'))
+        self.resetAction.setToolTip(
+            translate('ImagePlugin.MediaItem', 'Reset Live Background'))
 
     def requiredIcons(self):
         MediaManagerItem.requiredIcons(self)
@@ -88,35 +96,14 @@
     def addListViewToToolBar(self):
         MediaManagerItem.addListViewToToolBar(self)
         self.listView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
-        self.listView.addAction(
-            context_menu_action(
-                self.listView, u':/slides/slide_blank.png',
-                translate('ImagePlugin.MediaItem', 'Replace Live Background'),
-                self.onReplaceClick))
+        self.listView.addAction(self.replaceAction)
 
     def addEndHeaderBar(self):
-        self.ImageWidget = QtGui.QWidget(self)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.ImageWidget.sizePolicy().hasHeightForWidth())
-        self.ImageWidget.setSizePolicy(sizePolicy)
-        self.ImageWidget.setObjectName(u'ImageWidget')
-        self.blankButton = self.toolbar.addToolbarButton(
-            translate('ImagePlugin.MediaItem', 'Replace Background'),
-            u':/slides/slide_blank.png',
-            translate('ImagePlugin.MediaItem', 'Replace Live Background'),
-            self.onReplaceClick, False)
-        self.resetButton = self.toolbar.addToolbarButton(
-            translate('ImagePlugin.MediaItem', 'Reset Background'),
-            u':/system/system_close.png',
-            translate('ImagePlugin.MediaItem', 'Reset Live Background'),
-            self.onResetClick, False)
-        # Add the song widget to the page layout.
-        self.pageLayout.addWidget(self.ImageWidget)
-        self.resetButton.setVisible(False)
+        self.replaceAction = self.addToolbarButton(u'', u'',
+            u':/slides/slide_blank.png', self.onReplaceClick, False)
+        self.resetAction = self.addToolbarButton(u'', u'',
+            u':/system/system_close.png', self.onResetClick, False)
+        self.resetAction.setVisible(False)
 
     def onDeleteClick(self):
         """
@@ -204,7 +191,7 @@
             return False
 
     def onResetClick(self):
-        self.resetButton.setVisible(False)
+        self.resetAction.setVisible(False)
         self.parent.liveController.display.resetImage()
 
     def onReplaceClick(self):
@@ -220,6 +207,7 @@
             if os.path.exists(filename):
                 (path, name) = os.path.split(filename)
                 self.parent.liveController.display.directImage(name, filename)
+                self.resetAction.setVisible(True)
             else:
                 Receiver.send_message(u'openlp_error_message', {
                     u'title':  translate('ImagePlugin.MediaItem',
@@ -227,7 +215,6 @@
                     u'message': unicode(translate('ImagePlugin.MediaItem',
                     'There was a problem replacing your background, '
                     'the image file %s no longer exists.')) % filename})
-        self.resetButton.setVisible(True)
 
     def onPreviewClick(self):
         MediaManagerItem.onPreviewClick(self)

=== modified file 'openlp/plugins/media/lib/mediaitem.py'
--- openlp/plugins/media/lib/mediaitem.py	2011-01-05 18:27:39 +0000
+++ openlp/plugins/media/lib/mediaitem.py	2011-01-05 20:02:48 +0000
@@ -63,6 +63,14 @@
         self.OnNewFileMasks = unicode(translate('MediaPlugin.MediaItem',
             'Videos (%s);;Audio (%s);;All files (*)')) % \
             (self.parent.video_list, self.parent.audio_list)
+        self.replaceAction.setText(
+            translate('MediaPlugin.MediaItem', 'Replace Background'))
+        self.replaceAction.setToolTip(
+            translate('MediaPlugin.MediaItem', 'Replace Live Background'))
+        self.resetAction.setText(
+            translate('MediaPlugin.MediaItem', 'Reset Background'))
+        self.resetAction.setToolTip(
+            translate('ImagePlugin.MediaItem', 'Reset Live Background'))
 
     def requiredIcons(self):
         MediaManagerItem.requiredIcons(self)
@@ -73,37 +81,18 @@
     def addListViewToToolBar(self):
         MediaManagerItem.addListViewToToolBar(self)
         self.listView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
-        self.listView.addAction(
-            context_menu_action(self.listView, u':/slides/slide_blank.png',
-                translate('MediaPlugin.MediaItem', 'Replace Live Background'),
-                self.onReplaceClick))
+        self.listView.addAction(self.replaceAction)
 
     def addEndHeaderBar(self):
-        self.ImageWidget = QtGui.QWidget(self)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.ImageWidget.sizePolicy().hasHeightForWidth())
-        self.ImageWidget.setSizePolicy(sizePolicy)
-        self.ImageWidget.setObjectName(u'ImageWidget')
         # Replace backgrounds do not work at present so remove functionality.
-        self.blankButton = self.toolbar.addToolbarButton(
-            translate('MediaPlugin.MediaItem', 'Replace Background'),
-            u':/slides/slide_blank.png',
-            translate('MediaPlugin.MediaItem', 'Replace Live Background'),
-                self.onReplaceClick, False)
-        self.resetButton = self.toolbar.addToolbarButton(
-            u'Reset Background', u':/system/system_close.png',
-            translate('ImagePlugin.MediaItem', 'Reset Live Background'),
-                self.onResetClick, False)
-        # Add the song widget to the page layout
-        self.pageLayout.addWidget(self.ImageWidget)
-        self.resetButton.setVisible(False)
+        self.replaceAction = self.addToolbarButton(u'', u'',
+            u':/slides/slide_blank.png', self.onReplaceClick, False)
+        self.resetAction = self.addToolbarButton(u'', u'',
+            u':/system/system_close.png', self.onResetClick, False)
+        self.resetAction.setVisible(False)
 
     def onResetClick(self):
-        self.resetButton.setVisible(False)
+        self.resetAction.setVisible(False)
         self.parent.liveController.display.resetVideo()
 
     def onReplaceClick(self):
@@ -115,6 +104,7 @@
             if os.path.exists(filename):
                 (path, name) = os.path.split(filename)
                 self.parent.liveController.display.video(filename, 0, True)
+                self.resetAction.setVisible(True)
             else:
                 Receiver.send_message(u'openlp_error_message', {
                     u'title':  translate('MediaPlugin.MediaItem',
@@ -122,7 +112,6 @@
                     u'message': unicode(translate('MediaPlugin.MediaItem',
                     'There was a problem replacing your background, '
                     'the media file %s no longer exists.')) % filename})
-        self.resetButton.setVisible(True)
 
     def generateSlideData(self, service_item, item=None, xmlVersion=False):
         if item is None:

=== modified file 'openlp/plugins/presentations/lib/mediaitem.py'
--- openlp/plugins/presentations/lib/mediaitem.py	2011-01-01 12:49:38 +0000
+++ openlp/plugins/presentations/lib/mediaitem.py	2011-01-05 20:02:48 +0000
@@ -76,6 +76,8 @@
             'Select Presentation(s)')
         self.Automatic = translate('PresentationPlugin.MediaItem',
             'Automatic')
+        self.displayTypeLabel.setText(
+            translate('PresentationPlugin.MediaItem', 'Present using:'))
 
     def buildFileMaskString(self):
         """
@@ -106,27 +108,22 @@
         """
         Display custom media manager items for presentations
         """
-        self.PresentationWidget = QtGui.QWidget(self)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.PresentationWidget.sizePolicy().hasHeightForWidth())
-        self.PresentationWidget.setSizePolicy(sizePolicy)
-        self.PresentationWidget.setObjectName(u'PresentationWidget')
-        self.DisplayLayout = QtGui.QGridLayout(self.PresentationWidget)
-        self.DisplayLayout.setObjectName(u'DisplayLayout')
-        self.DisplayTypeComboBox = QtGui.QComboBox(self.PresentationWidget)
-        self.DisplayTypeComboBox.setObjectName(u'DisplayTypeComboBox')
-        self.DisplayLayout.addWidget(self.DisplayTypeComboBox, 0, 1, 1, 2)
-        self.DisplayTypeLabel = QtGui.QLabel(self.PresentationWidget)
-        self.DisplayTypeLabel.setObjectName(u'SearchTypeLabel')
-        self.DisplayLayout.addWidget(self.DisplayTypeLabel, 0, 0, 1, 1)
-        self.DisplayTypeLabel.setText(
-            translate('PresentationPlugin.MediaItem', 'Present using:'))
+        self.presentationWidget = QtGui.QWidget(self)
+        self.presentationWidget.setObjectName(u'presentationWidget')
+        self.displayLayout = QtGui.QFormLayout(self.presentationWidget)
+        self.displayLayout.setMargin(self.displayLayout.spacing())
+        self.displayLayout.setObjectName(u'displayLayout')
+        self.displayTypeLabel = QtGui.QLabel(self.presentationWidget)
+        self.displayTypeLabel.setObjectName(u'displayTypeLabel')
+        self.displayTypeComboBox = QtGui.QComboBox(self.presentationWidget)
+        self.displayTypeComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding,
+            QtGui.QSizePolicy.Fixed)
+        self.displayTypeComboBox.setObjectName(u'displayTypeComboBox')
+        self.displayTypeLabel.setBuddy(self.displayTypeComboBox)
+        self.displayLayout.addRow(self.displayTypeLabel,
+            self.displayTypeComboBox)
         # Add the Presentation widget to the page layout
-        self.pageLayout.addWidget(self.PresentationWidget)
+        self.pageLayout.addWidget(self.presentationWidget)
 
     def initialise(self):
         """
@@ -151,19 +148,19 @@
         Load the combobox with the enabled presentation controllers,
         allowing user to select a specific app if settings allow
         """
-        self.DisplayTypeComboBox.clear()
+        self.displayTypeComboBox.clear()
         for item in self.controllers:
             # load the drop down selection
             if self.controllers[item].enabled():
-                self.DisplayTypeComboBox.addItem(item)
-        if self.DisplayTypeComboBox.count() > 1:
-            self.DisplayTypeComboBox.insertItem(0, self.Automatic)
-            self.DisplayTypeComboBox.setCurrentIndex(0)
+                self.displayTypeComboBox.addItem(item)
+        if self.displayTypeComboBox.count() > 1:
+            self.displayTypeComboBox.insertItem(0, self.Automatic)
+            self.displayTypeComboBox.setCurrentIndex(0)
         if QtCore.QSettings().value(self.settingsSection + u'/override app',
             QtCore.QVariant(QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
-            self.PresentationWidget.show()
+            self.presentationWidget.show()
         else:
-            self.PresentationWidget.hide()
+            self.presentationWidget.hide()
 
     def loadList(self, list, initialLoad=False):
         """
@@ -247,8 +244,8 @@
         items = self.listView.selectedIndexes()
         if len(items) > 1:
             return False
-        service_item.title = unicode(self.DisplayTypeComboBox.currentText())
-        service_item.shortname = unicode(self.DisplayTypeComboBox.currentText())
+        service_item.title = unicode(self.displayTypeComboBox.currentText())
+        service_item.shortname = unicode(self.displayTypeComboBox.currentText())
         service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
         shortname = service_item.shortname
         if shortname:

=== modified file 'openlp/plugins/songs/forms/authorsdialog.py'
--- openlp/plugins/songs/forms/authorsdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/authorsdialog.py	2011-01-05 20:02:48 +0000
@@ -29,58 +29,51 @@
 from openlp.core.lib import translate
 
 class Ui_AuthorsDialog(object):
-    def setupUi(self, AuthorsDialog):
-        AuthorsDialog.setObjectName(u'AuthorsDialog')
-        AuthorsDialog.resize(393, 147)
-        self.AuthorsLayout = QtGui.QFormLayout(AuthorsDialog)
-        self.AuthorsLayout.setMargin(8)
-        self.AuthorsLayout.setSpacing(8)
-        self.AuthorsLayout.setObjectName(u'AuthorsLayout')
-        self.FirstNameLabel = QtGui.QLabel(AuthorsDialog)
-        self.FirstNameLabel.setObjectName(u'FirstNameLabel')
-        self.AuthorsLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.FirstNameLabel)
-        self.FirstNameEdit = QtGui.QLineEdit(AuthorsDialog)
-        self.FirstNameEdit.setObjectName(u'FirstNameEdit')
-        self.AuthorsLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.FirstNameEdit)
-        self.LastNameLabel = QtGui.QLabel(AuthorsDialog)
-        self.LastNameLabel.setObjectName(u'LastNameLabel')
-        self.AuthorsLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.LastNameLabel)
-        self.LastNameEdit = QtGui.QLineEdit(AuthorsDialog)
-        self.LastNameEdit.setObjectName(u'LastNameEdit')
-        self.AuthorsLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.LastNameEdit)
-        self.DisplayLabel = QtGui.QLabel(AuthorsDialog)
-        self.DisplayLabel.setObjectName(u'DisplayLabel')
-        self.AuthorsLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.DisplayLabel)
-        self.DisplayEdit = QtGui.QLineEdit(AuthorsDialog)
-        self.DisplayEdit.setObjectName(u'DisplayEdit')
-        self.AuthorsLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.DisplayEdit)
-        self.AuthorButtonBox = QtGui.QDialogButtonBox(AuthorsDialog)
-        self.AuthorButtonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.AuthorButtonBox.setStandardButtons(
-            QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save)
-        self.AuthorButtonBox.setObjectName(u'AuthorButtonBox')
-        self.AuthorsLayout.setWidget(3,
-            QtGui.QFormLayout.FieldRole, self.AuthorButtonBox)
-
-        self.retranslateUi(AuthorsDialog)
-        QtCore.QObject.connect(self.AuthorButtonBox,
-            QtCore.SIGNAL(u'accepted()'), AuthorsDialog.accept)
-        QtCore.QObject.connect(self.AuthorButtonBox,
-            QtCore.SIGNAL(u'rejected()'), AuthorsDialog.reject)
-        QtCore.QMetaObject.connectSlotsByName(AuthorsDialog)
-
-    def retranslateUi(self, AuthorsDialog):
-        AuthorsDialog.setWindowTitle(
+    def setupUi(self, authorsDialog):
+        authorsDialog.setObjectName(u'AuthorsDialog')
+        authorsDialog.resize(300, 10)
+        self.dialogLayout = QtGui.QVBoxLayout(authorsDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.authorLayout = QtGui.QFormLayout()
+        self.authorLayout.setObjectName(u'authorLayout')
+        self.firstNameLabel = QtGui.QLabel(authorsDialog)
+        self.firstNameLabel.setObjectName(u'firstNameLabel')
+        self.firstNameEdit = QtGui.QLineEdit(authorsDialog)
+        self.firstNameEdit.setObjectName(u'firstNameEdit')
+        self.firstNameLabel.setBuddy(self.firstNameEdit)
+        self.authorLayout.addRow(self.firstNameLabel, self.firstNameEdit)
+        self.lastNameLabel = QtGui.QLabel(authorsDialog)
+        self.lastNameLabel.setObjectName(u'lastNameLabel')
+        self.lastNameEdit = QtGui.QLineEdit(authorsDialog)
+        self.lastNameEdit.setObjectName(u'lastNameEdit')
+        self.lastNameLabel.setBuddy(self.lastNameEdit)
+        self.authorLayout.addRow(self.lastNameLabel, self.lastNameEdit)
+        self.displayLabel = QtGui.QLabel(authorsDialog)
+        self.displayLabel.setObjectName(u'displayLabel')
+        self.displayEdit = QtGui.QLineEdit(authorsDialog)
+        self.displayEdit.setObjectName(u'displayEdit')
+        self.displayLabel.setBuddy(self.displayEdit)
+        self.authorLayout.addRow(self.displayLabel, self.displayEdit)
+        self.dialogLayout.addLayout(self.authorLayout) 
+        self.buttonBox = QtGui.QDialogButtonBox(authorsDialog)
+        self.buttonBox.setStandardButtons(
+            QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel)
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
+        self.retranslateUi(authorsDialog)
+        authorsDialog.setMaximumHeight(authorsDialog.sizeHint().height())
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'accepted()'), authorsDialog.accept)
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'rejected()'), authorsDialog.reject)
+        QtCore.QMetaObject.connectSlotsByName(authorsDialog)
+
+    def retranslateUi(self, authorsDialog):
+        authorsDialog.setWindowTitle(
             translate('SongsPlugin.AuthorsForm', 'Author Maintenance'))
-        self.DisplayLabel.setText(
+        self.displayLabel.setText(
             translate('SongsPlugin.AuthorsForm', 'Display name:'))
-        self.FirstNameLabel.setText(
+        self.firstNameLabel.setText(
             translate('SongsPlugin.AuthorsForm', 'First name:'))
-        self.LastNameLabel.setText(
-            translate('SongsPlugin.AuthorsForm', 'Last name:'))
\ No newline at end of file
+        self.lastNameLabel.setText(
+            translate('SongsPlugin.AuthorsForm', 'Last name:'))

=== modified file 'openlp/plugins/songs/forms/authorsform.py'
--- openlp/plugins/songs/forms/authorsform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/authorsform.py	2011-01-05 20:02:48 +0000
@@ -40,36 +40,36 @@
         QtGui.QDialog.__init__(self, parent)
         self.setupUi(self)
         self._autoDisplayName = False
-        QtCore.QObject.connect(self.FirstNameEdit,
+        QtCore.QObject.connect(self.firstNameEdit,
             QtCore.SIGNAL(u'textEdited(QString)'),
             self.onFirstNameEditTextEdited)
-        QtCore.QObject.connect(self.LastNameEdit,
+        QtCore.QObject.connect(self.lastNameEdit,
             QtCore.SIGNAL(u'textEdited(QString)'),
             self.onLastNameEditTextEdited)
 
     def exec_(self, clear=True):
         if clear:
-            self.FirstNameEdit.clear()
-            self.LastNameEdit.clear()
-            self.DisplayEdit.clear()
-        self.FirstNameEdit.setFocus()
+            self.firstNameEdit.clear()
+            self.lastNameEdit.clear()
+            self.displayEdit.clear()
+        self.firstNameEdit.setFocus()
         return QtGui.QDialog.exec_(self)
 
     def onFirstNameEditTextEdited(self, text):
         if not self._autoDisplayName:
             return
         display_name = text
-        if self.LastNameEdit.text() != u'':
-            display_name = display_name + u' ' + self.LastNameEdit.text()
-        self.DisplayEdit.setText(display_name)
+        if self.lastNameEdit.text() != u'':
+            display_name = display_name + u' ' + self.lastNameEdit.text()
+        self.displayEdit.setText(display_name)
 
     def onLastNameEditTextEdited(self, text):
         if not self._autoDisplayName:
             return
         display_name = text
-        if self.FirstNameEdit.text() != u'':
-            display_name = self.FirstNameEdit.text() + u' ' + display_name
-        self.DisplayEdit.setText(display_name)
+        if self.firstNameEdit.text() != u'':
+            display_name = self.firstNameEdit.text() + u' ' + display_name
+        self.displayEdit.setText(display_name)
 
     def autoDisplayName(self):
         return self._autoDisplayName
@@ -78,21 +78,21 @@
         self._autoDisplayName = on
 
     def accept(self):
-        if not self.FirstNameEdit.text():
+        if not self.firstNameEdit.text():
             QtGui.QMessageBox.critical(
                 self, translate('SongsPlugin.AuthorsForm', 'Error'),
                 translate('SongsPlugin.AuthorsForm',
                     'You need to type in the first name of the author.'))
-            self.FirstNameEdit.setFocus()
+            self.firstNameEdit.setFocus()
             return False
-        elif not self.LastNameEdit.text():
+        elif not self.lastNameEdit.text():
             QtGui.QMessageBox.critical(
                 self, translate('SongsPlugin.AuthorsForm', 'Error'),
                 translate('SongsPlugin.AuthorsForm',
                     'You need to type in the last name of the author.'))
-            self.LastNameEdit.setFocus()
+            self.lastNameEdit.setFocus()
             return False
-        elif not self.DisplayEdit.text():
+        elif not self.displayEdit.text():
             if QtGui.QMessageBox.critical(
                     self, translate('SongsPlugin.AuthorsForm', 'Error'),
                     translate('SongsPlugin.AuthorsForm',
@@ -101,11 +101,11 @@
                     QtGui.QMessageBox.StandardButtons(
                         QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
                     ) == QtGui.QMessageBox.Yes:
-                self.DisplayEdit.setText(self.FirstNameEdit.text() + \
-                    u' ' + self.LastNameEdit.text())
+                self.displayEdit.setText(self.firstNameEdit.text() + \
+                    u' ' + self.lastNameEdit.text())
                 return QtGui.QDialog.accept(self)
             else:
-                self.DisplayEdit.setFocus()
+                self.displayEdit.setFocus()
                 return False
         else:
-            return QtGui.QDialog.accept(self)
\ No newline at end of file
+            return QtGui.QDialog.accept(self)

=== modified file 'openlp/plugins/songs/forms/editsongdialog.py'
--- openlp/plugins/songs/forms/editsongdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/editsongdialog.py	2011-01-05 20:02:48 +0000
@@ -29,445 +29,309 @@
 from openlp.core.lib import build_icon, translate
 
 class Ui_EditSongDialog(object):
-    def setupUi(self, EditSongDialog):
-        EditSongDialog.setObjectName(u'EditSongDialog')
-        EditSongDialog.resize(645, 417)
-        icon = build_icon(u':/icon/openlp.org-icon-32.bmp')
-        EditSongDialog.setWindowIcon(icon)
-        EditSongDialog.setModal(True)
-        self.verticalLayout = QtGui.QVBoxLayout(EditSongDialog)
-        self.verticalLayout.setMargin(8)
-        self.verticalLayout.setObjectName(u'verticalLayout')
-        self.SongTabWidget = QtGui.QTabWidget(EditSongDialog)
-        self.SongTabWidget.setObjectName(u'SongTabWidget')
-        self.LyricsTab = QtGui.QWidget()
-        self.LyricsTab.setObjectName(u'LyricsTab')
-        self.LyricsTabLayout = QtGui.QGridLayout(self.LyricsTab)
-        self.LyricsTabLayout.setMargin(8)
-        self.LyricsTabLayout.setSpacing(8)
-        self.LyricsTabLayout.setObjectName(u'LyricsTabLayout')
-        self.TitleLabel = QtGui.QLabel(self.LyricsTab)
-        self.TitleLabel.setObjectName(u'TitleLabel')
-        self.LyricsTabLayout.addWidget(self.TitleLabel, 0, 0, 1, 1)
-        self.TitleEditItem = QtGui.QLineEdit(self.LyricsTab)
-        self.TitleLabel.setBuddy(self.TitleEditItem)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.TitleEditItem.sizePolicy().hasHeightForWidth())
-        self.TitleEditItem.setSizePolicy(sizePolicy)
-        self.TitleEditItem.setObjectName(u'TitleEditItem')
-        self.LyricsTabLayout.addWidget(self.TitleEditItem, 0, 1, 1, 2)
-        self.AlternativeTitleLabel = QtGui.QLabel(self.LyricsTab)
-        self.AlternativeTitleLabel.setObjectName(u'AlternativeTitleLabel')
-        self.LyricsTabLayout.addWidget(self.AlternativeTitleLabel, 1, 0, 1, 1)
-        self.AlternativeEdit = QtGui.QLineEdit(self.LyricsTab)
-        self.AlternativeTitleLabel.setBuddy(self.AlternativeEdit)
-        self.AlternativeEdit.setObjectName(u'AlternativeEdit')
-        self.LyricsTabLayout.addWidget(self.AlternativeEdit, 1, 1, 1, 2)
-        self.LyricsLabel = QtGui.QLabel(self.LyricsTab)
-        self.LyricsLabel.setAlignment(
-            QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
-        self.LyricsLabel.setObjectName(u'LyricsLabel')
-        self.LyricsTabLayout.addWidget(self.LyricsLabel, 2, 0, 1, 1)
-        self.VerseListWidget = QtGui.QTableWidget(self.LyricsTab)
-        self.LyricsLabel.setBuddy(self.VerseListWidget)
-        self.VerseListWidget.setColumnCount(1)
-        self.VerseListWidget.horizontalHeader().setVisible(False)
-        self.VerseListWidget.setSelectionBehavior(1)
-        self.VerseListWidget.setEditTriggers(
+    def setupUi(self, editSongDialog):
+        editSongDialog.setObjectName(u'editSongDialog')
+        editSongDialog.resize(650, 400)
+        editSongDialog.setWindowIcon(
+            build_icon(u':/icon/openlp.org-icon-32.bmp'))
+        editSongDialog.setModal(True)
+        self.dialogLayout = QtGui.QVBoxLayout(editSongDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.songTabWidget = QtGui.QTabWidget(editSongDialog)
+        self.songTabWidget.setObjectName(u'songTabWidget')
+        # lyrics tab
+        self.lyricsTab = QtGui.QWidget()
+        self.lyricsTab.setObjectName(u'lyricsTab')
+        self.lyricsTabLayout = QtGui.QGridLayout(self.lyricsTab)
+        self.lyricsTabLayout.setObjectName(u'lyricsTabLayout')
+        self.titleLabel = QtGui.QLabel(self.lyricsTab)
+        self.titleLabel.setObjectName(u'titleLabel')
+        self.lyricsTabLayout.addWidget(self.titleLabel, 0, 0)
+        self.titleEdit = QtGui.QLineEdit(self.lyricsTab)
+        self.titleEdit.setObjectName(u'titleEdit')
+        self.titleLabel.setBuddy(self.titleEdit)
+        self.lyricsTabLayout.addWidget(self.titleEdit, 0, 1, 1, 2)
+        self.alternativeTitleLabel = QtGui.QLabel(self.lyricsTab)
+        self.alternativeTitleLabel.setObjectName(u'alternativeTitleLabel')
+        self.lyricsTabLayout.addWidget(self.alternativeTitleLabel, 1, 0)
+        self.alternativeEdit = QtGui.QLineEdit(self.lyricsTab)
+        self.alternativeEdit.setObjectName(u'alternativeEdit')
+        self.alternativeTitleLabel.setBuddy(self.alternativeEdit)
+        self.lyricsTabLayout.addWidget(self.alternativeEdit, 1, 1, 1, 2)
+        self.lyricsLabel = QtGui.QLabel(self.lyricsTab)
+        self.lyricsLabel.setFixedHeight(self.titleEdit.sizeHint().height())
+        self.lyricsLabel.setObjectName(u'lyricsLabel')
+        self.lyricsTabLayout.addWidget(self.lyricsLabel, 2, 0,
+            QtCore.Qt.AlignTop)
+        self.verseListWidget = QtGui.QTableWidget(self.lyricsTab)
+        self.verseListWidget.horizontalHeader().setVisible(False)
+        self.verseListWidget.setAlternatingRowColors(True)
+        self.verseListWidget.setColumnCount(1)
+        self.verseListWidget.setSelectionBehavior(
+            QtGui.QAbstractItemView.SelectRows)
+        self.verseListWidget.setEditTriggers(
             QtGui.QAbstractItemView.NoEditTriggers)
-        self.VerseListWidget.setAlternatingRowColors(True)
-        self.VerseListWidget.setObjectName(u'VerseListWidget')
-        self.LyricsTabLayout.addWidget(self.VerseListWidget, 2, 1, 1, 1)
-        self.VerseOrderLabel = QtGui.QLabel(self.LyricsTab)
-        self.VerseOrderLabel.setObjectName(u'VerseOrderLabel')
-        self.LyricsTabLayout.addWidget(self.VerseOrderLabel, 4, 0, 1, 1)
-        self.VerseOrderEdit = QtGui.QLineEdit(self.LyricsTab)
-        self.VerseOrderLabel.setBuddy(self.VerseOrderEdit)
-        self.VerseOrderEdit.setObjectName(u'VerseOrderEdit')
-        self.LyricsTabLayout.addWidget(self.VerseOrderEdit, 4, 1, 1, 2)
-        self.VerseButtonWidget = QtGui.QWidget(self.LyricsTab)
-        self.VerseButtonWidget.setObjectName(u'VerseButtonWidget')
-        self.VerseButtonsLayout = QtGui.QVBoxLayout(self.VerseButtonWidget)
-        self.VerseButtonsLayout.setSpacing(8)
-        self.VerseButtonsLayout.setMargin(0)
-        self.VerseButtonsLayout.setObjectName(u'VerseButtonsLayout')
-        self.VerseAddButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.VerseAddButton.setObjectName(u'VerseAddButton')
-        self.VerseButtonsLayout.addWidget(self.VerseAddButton)
-        self.VerseEditButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.VerseEditButton.setObjectName(u'VerseEditButton')
-        self.VerseButtonsLayout.addWidget(self.VerseEditButton)
-        self.VerseEditAllButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.VerseEditAllButton.setObjectName(u'VerseEditAllButton')
-        self.VerseButtonsLayout.addWidget(self.VerseEditAllButton)
-        self.VerseDeleteButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.VerseDeleteButton.setObjectName(u'VerseDeleteButton')
-        self.VerseButtonsLayout.addWidget(self.VerseDeleteButton)
-        spacerItem = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.VerseButtonsLayout.addItem(spacerItem)
-        self.LyricsTabLayout.addWidget(self.VerseButtonWidget, 2, 2, 1, 1)
-        self.SongTabWidget.addTab(self.LyricsTab, u'')
-        self.AuthorsTab = QtGui.QWidget()
-        self.AuthorsTab.setObjectName(u'AuthorsTab')
-        self.AuthorsTabLayout = QtGui.QHBoxLayout(self.AuthorsTab)
-        self.AuthorsTabLayout.setSpacing(8)
-        self.AuthorsTabLayout.setMargin(8)
-        self.AuthorsTabLayout.setObjectName(u'AuthorsTabLayout')
-        self.AuthorsMaintenanceWidget = QtGui.QWidget(self.AuthorsTab)
-        self.AuthorsMaintenanceWidget.setObjectName(u'AuthorsMaintenanceWidget')
-        self.AuthorsMaintenanceLayout = QtGui.QVBoxLayout(
-            self.AuthorsMaintenanceWidget)
-        self.AuthorsMaintenanceLayout.setSpacing(8)
-        self.AuthorsMaintenanceLayout.setMargin(0)
-        self.AuthorsMaintenanceLayout.setObjectName(u'AuthorsMaintenanceLayout')
-        self.AuthorsGroupBox = QtGui.QGroupBox(self.AuthorsMaintenanceWidget)
-        self.AuthorsGroupBox.setObjectName(u'AuthorsGroupBox')
-        self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsGroupBox)
-        self.AuthorsLayout.setSpacing(8)
-        self.AuthorsLayout.setMargin(8)
-        self.AuthorsLayout.setObjectName(u'AuthorsLayout')
-        self.AuthorAddWidget = QtGui.QWidget(self.AuthorsGroupBox)
-        self.AuthorAddWidget.setObjectName(u'AuthorAddWidget')
-        self.AuthorAddLayout = QtGui.QHBoxLayout(self.AuthorAddWidget)
-        self.AuthorAddLayout.setSpacing(8)
-        self.AuthorAddLayout.setMargin(0)
-        self.AuthorAddLayout.setObjectName(u'AuthorAddLayout')
-        self.AuthorsSelectionComboItem = QtGui.QComboBox(self.AuthorAddWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.AuthorsSelectionComboItem.sizePolicy().hasHeightForWidth())
-        self.AuthorsSelectionComboItem.setSizePolicy(sizePolicy)
-        self.AuthorsSelectionComboItem.setEditable(True)
-        self.AuthorsSelectionComboItem.setInsertPolicy(QtGui.QComboBox.NoInsert)
-        self.AuthorsSelectionComboItem.setSizeAdjustPolicy(
-            QtGui.QComboBox.AdjustToMinimumContentsLength)
-        self.AuthorsSelectionComboItem.setMinimumContentsLength(8)
-        self.AuthorsSelectionComboItem.setObjectName(
-            u'AuthorsSelectionComboItem')
-        self.AuthorAddLayout.addWidget(self.AuthorsSelectionComboItem)
-        self.AuthorAddButton = QtGui.QPushButton(self.AuthorAddWidget)
-        self.AuthorAddButton.setMaximumSize(QtCore.QSize(110, 16777215))
-        self.AuthorAddButton.setObjectName(u'AuthorAddButton')
-        self.AuthorAddLayout.addWidget(self.AuthorAddButton)
-        self.AuthorsLayout.addWidget(self.AuthorAddWidget)
-        self.AuthorsListView = QtGui.QListWidget(self.AuthorsGroupBox)
-        self.AuthorsListView.setAlternatingRowColors(True)
-        self.AuthorsListView.setObjectName(u'AuthorsListView')
-        self.AuthorsLayout.addWidget(self.AuthorsListView)
-        self.AuthorRemoveWidget = QtGui.QWidget(self.AuthorsGroupBox)
-        self.AuthorRemoveWidget.setObjectName(u'AuthorRemoveWidget')
-        self.AuthorRemoveLayout = QtGui.QHBoxLayout(self.AuthorRemoveWidget)
-        self.AuthorRemoveLayout.setSpacing(8)
-        self.AuthorRemoveLayout.setMargin(0)
-        self.AuthorRemoveLayout.setObjectName(u'AuthorRemoveLayout')
-        spacerItem1 = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.AuthorRemoveLayout.addItem(spacerItem1)
-        self.AuthorRemoveButton = QtGui.QPushButton(self.AuthorRemoveWidget)
-        self.AuthorRemoveButton.setObjectName(u'AuthorRemoveButton')
-        self.AuthorRemoveLayout.addWidget(self.AuthorRemoveButton)
-        self.AuthorsLayout.addWidget(self.AuthorRemoveWidget)
-        self.AuthorsMaintenanceLayout.addWidget(self.AuthorsGroupBox)
-        self.MaintenanceWidget = QtGui.QWidget(self.AuthorsMaintenanceWidget)
-        self.MaintenanceWidget.setObjectName(u'MaintenanceWidget')
-        self.MaintenanceLayout = QtGui.QHBoxLayout(self.MaintenanceWidget)
-        self.MaintenanceLayout.setSpacing(0)
-        self.MaintenanceLayout.setMargin(0)
-        self.MaintenanceLayout.setObjectName(u'MaintenanceLayout')
-        self.MaintenanceButton = QtGui.QPushButton(self.MaintenanceWidget)
-        self.MaintenanceButton.setObjectName(u'MaintenanceButton')
-        self.MaintenanceLayout.addWidget(self.MaintenanceButton)
-        spacerItem2 = QtGui.QSpacerItem(66, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.MaintenanceLayout.addItem(spacerItem2)
-        self.AuthorsMaintenanceLayout.addWidget(self.MaintenanceWidget)
-        self.AuthorsTabLayout.addWidget(self.AuthorsMaintenanceWidget)
-        self.TopicBookWidget = QtGui.QWidget(self.AuthorsTab)
-        self.TopicBookWidget.setObjectName(u'TopicBookWidget')
-        self.TopicBookLayout = QtGui.QVBoxLayout(self.TopicBookWidget)
-        self.TopicBookLayout.setSpacing(8)
-        self.TopicBookLayout.setMargin(0)
-        self.TopicBookLayout.setObjectName(u'TopicBookLayout')
-        self.TopicGroupBox = QtGui.QGroupBox(self.TopicBookWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.TopicGroupBox.sizePolicy().hasHeightForWidth())
-        self.TopicGroupBox.setSizePolicy(sizePolicy)
-        self.TopicGroupBox.setObjectName(u'TopicGroupBox')
-        self.TopicLayout = QtGui.QVBoxLayout(self.TopicGroupBox)
-        self.TopicLayout.setSpacing(8)
-        self.TopicLayout.setMargin(8)
-        self.TopicLayout.setObjectName(u'TopicLayout')
-        self.TopicAddWidget = QtGui.QWidget(self.TopicGroupBox)
-        self.TopicAddWidget.setObjectName(u'TopicAddWidget')
-        self.TopicAddLayout = QtGui.QHBoxLayout(self.TopicAddWidget)
-        self.TopicAddLayout.setSpacing(8)
-        self.TopicAddLayout.setMargin(0)
-        self.TopicAddLayout.setObjectName(u'TopicAddLayout')
-        self.SongTopicCombo = QtGui.QComboBox(self.TopicAddWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.SongTopicCombo.sizePolicy().hasHeightForWidth())
-        self.SongTopicCombo.setEditable(True)
-        self.SongTopicCombo.setInsertPolicy(QtGui.QComboBox.NoInsert)
-        self.SongTopicCombo.setSizePolicy(sizePolicy)
-        self.SongTopicCombo.setObjectName(u'SongTopicCombo')
-        self.TopicAddLayout.addWidget(self.SongTopicCombo)
-        self.TopicAddButton = QtGui.QPushButton(self.TopicAddWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.TopicAddButton.sizePolicy().hasHeightForWidth())
-        self.TopicAddButton.setSizePolicy(sizePolicy)
-        self.TopicAddButton.setObjectName(u'TopicAddButton')
-        self.TopicAddLayout.addWidget(self.TopicAddButton)
-        self.TopicLayout.addWidget(self.TopicAddWidget)
-        self.TopicsListView = QtGui.QListWidget(self.TopicGroupBox)
-        self.TopicsListView.setAlternatingRowColors(True)
-        self.TopicsListView.setObjectName(u'TopicsListView')
-        self.TopicLayout.addWidget(self.TopicsListView)
-        self.TopicRemoveWidget = QtGui.QWidget(self.TopicGroupBox)
-        self.TopicRemoveWidget.setObjectName(u'TopicRemoveWidget')
-        self.TopicRemoveLayout = QtGui.QHBoxLayout(self.TopicRemoveWidget)
-        self.TopicRemoveLayout.setSpacing(8)
-        self.TopicRemoveLayout.setMargin(0)
-        self.TopicRemoveLayout.setObjectName(u'TopicRemoveLayout')
-        spacerItem3 = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.TopicRemoveLayout.addItem(spacerItem3)
-        self.TopicRemoveButton = QtGui.QPushButton(self.TopicRemoveWidget)
-        self.TopicRemoveButton.setObjectName(u'TopicRemoveButton')
-        self.TopicRemoveLayout.addWidget(self.TopicRemoveButton)
-        self.TopicLayout.addWidget(self.TopicRemoveWidget)
-        self.TopicBookLayout.addWidget(self.TopicGroupBox)
-        self.SongBookGroup = QtGui.QGroupBox(self.TopicBookWidget)
-        self.SongBookGroup.setObjectName(u'SongBookGroup')
-        self.SongbookLayout = QtGui.QFormLayout(self.SongBookGroup)
-        self.SongbookLayout.setMargin(8)
-        self.SongbookLayout.setSpacing(8)
-        self.SongbookLayout.setObjectName(u'SongbookLayout')
-        self.SongbookNameLabel = QtGui.QLabel(self.SongBookGroup)
-        self.SongbookCombo = QtGui.QComboBox(self.SongBookGroup)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
-            QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.SongbookCombo.sizePolicy().hasHeightForWidth())
-        self.SongbookCombo.setEditable(True)
-        self.SongbookCombo.setInsertPolicy(QtGui.QComboBox.NoInsert)
-        self.SongbookCombo.setSizePolicy(sizePolicy)
-        self.SongbookCombo.setObjectName(u'SongbookCombo')
-        self.SongbookLayout.addRow(self.SongbookNameLabel, self.SongbookCombo)
-        self.songBookNumberLabel = QtGui.QLabel(self.SongBookGroup)
-        self.songBookNumberEdit = QtGui.QLineEdit(self.SongBookGroup)
-        self.SongbookLayout.addRow(self.songBookNumberLabel,
+        self.verseListWidget.setObjectName(u'verseListWidget')
+        self.lyricsLabel.setBuddy(self.verseListWidget)
+        self.lyricsTabLayout.addWidget(self.verseListWidget, 2, 1)
+        self.verseOrderLabel = QtGui.QLabel(self.lyricsTab)
+        self.verseOrderLabel.setObjectName(u'verseOrderLabel')
+        self.lyricsTabLayout.addWidget(self.verseOrderLabel, 3, 0)
+        self.verseOrderEdit = QtGui.QLineEdit(self.lyricsTab)
+        self.verseOrderEdit.setObjectName(u'verseOrderEdit')
+        self.verseOrderLabel.setBuddy(self.verseOrderEdit)
+        self.lyricsTabLayout.addWidget(self.verseOrderEdit, 3, 1, 1, 2)
+        self.verseButtonsLayout = QtGui.QVBoxLayout()
+        self.verseButtonsLayout.setObjectName(u'verseButtonsLayout')
+        self.verseAddButton = QtGui.QPushButton(self.lyricsTab)
+        self.verseAddButton.setObjectName(u'verseAddButton')
+        self.verseButtonsLayout.addWidget(self.verseAddButton)
+        self.verseEditButton = QtGui.QPushButton(self.lyricsTab)
+        self.verseEditButton.setObjectName(u'verseEditButton')
+        self.verseButtonsLayout.addWidget(self.verseEditButton)
+        self.verseEditAllButton = QtGui.QPushButton(self.lyricsTab)
+        self.verseEditAllButton.setObjectName(u'verseEditAllButton')
+        self.verseButtonsLayout.addWidget(self.verseEditAllButton)
+        self.verseDeleteButton = QtGui.QPushButton(self.lyricsTab)
+        self.verseDeleteButton.setObjectName(u'verseDeleteButton')
+        self.verseButtonsLayout.addWidget(self.verseDeleteButton)
+        self.verseButtonsLayout.addStretch()
+        self.lyricsTabLayout.addLayout(self.verseButtonsLayout, 2, 2)
+        self.songTabWidget.addTab(self.lyricsTab, u'')
+        # authors tab
+        self.authorsTab = QtGui.QWidget()
+        self.authorsTab.setObjectName(u'authorsTab')
+        self.authorsTabLayout = QtGui.QHBoxLayout(self.authorsTab)
+        self.authorsTabLayout.setObjectName(u'authorsTabLayout')
+        self.authorsLeftLayout = QtGui.QVBoxLayout()
+        self.authorsLeftLayout.setObjectName(u'authorsLeftLayout')
+        self.authorsGroupBox = QtGui.QGroupBox(self.authorsTab)
+        self.authorsGroupBox.setObjectName(u'authorsGroupBox')
+        self.authorsLayout = QtGui.QVBoxLayout(self.authorsGroupBox)
+        self.authorsLayout.setObjectName(u'authorsLayout')
+        self.authorAddLayout = QtGui.QHBoxLayout()
+        self.authorAddLayout.setObjectName(u'authorAddLayout')
+        self.authorsComboBox = QtGui.QComboBox(self.authorsGroupBox)
+        self.authorsComboBox.setSizeAdjustPolicy(
+            QtGui.QComboBox.AdjustToMinimumContentsLength)
+        self.authorsComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding,
+            QtGui.QSizePolicy.Fixed)
+        self.authorsComboBox.setEditable(True)
+        self.authorsComboBox.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.authorsComboBox.setObjectName(u'authorsComboBox')
+        self.authorAddLayout.addWidget(self.authorsComboBox)
+        self.authorAddButton = QtGui.QPushButton(self.authorsGroupBox)
+        self.authorAddButton.setObjectName(u'authorAddButton')
+        self.authorAddLayout.addWidget(self.authorAddButton)
+        self.authorsLayout.addLayout(self.authorAddLayout)
+        self.authorsListView = QtGui.QListWidget(self.authorsGroupBox)
+        self.authorsListView.setAlternatingRowColors(True)
+        self.authorsListView.setObjectName(u'authorsListView')
+        self.authorsLayout.addWidget(self.authorsListView)
+        self.authorRemoveLayout = QtGui.QHBoxLayout()
+        self.authorRemoveLayout.setObjectName(u'authorRemoveLayout')
+        self.authorRemoveLayout.addStretch()
+        self.authorRemoveButton = QtGui.QPushButton(self.authorsGroupBox)
+        self.authorRemoveButton.setObjectName(u'authorRemoveButton')
+        self.authorRemoveLayout.addWidget(self.authorRemoveButton)
+        self.authorsLayout.addLayout(self.authorRemoveLayout)
+        self.authorsLeftLayout.addWidget(self.authorsGroupBox)
+        self.maintenanceLayout = QtGui.QHBoxLayout()
+        self.maintenanceLayout.setObjectName(u'maintenanceLayout')
+        self.maintenanceButton = QtGui.QPushButton(self.authorsTab)
+        self.maintenanceButton.setObjectName(u'maintenanceButton')
+        self.maintenanceLayout.addWidget(self.maintenanceButton)
+        self.maintenanceLayout.addStretch()
+        self.authorsLeftLayout.addLayout(self.maintenanceLayout)
+        self.authorsTabLayout.addLayout(self.authorsLeftLayout)
+        self.authorsRightLayout = QtGui.QVBoxLayout()
+        self.authorsRightLayout.setObjectName(u'authorsRightLayout')
+        self.topicsGroupBox = QtGui.QGroupBox(self.authorsTab)
+        self.topicsGroupBox.setObjectName(u'topicsGroupBox')
+        self.topicsLayout = QtGui.QVBoxLayout(self.topicsGroupBox)
+        self.topicsLayout.setObjectName(u'topicsLayout')
+        self.topicAddLayout = QtGui.QHBoxLayout()
+        self.topicAddLayout.setObjectName(u'topicAddLayout')
+        self.topicsComboBox = QtGui.QComboBox(self.topicsGroupBox)
+        self.topicsComboBox.setSizeAdjustPolicy(
+            QtGui.QComboBox.AdjustToMinimumContentsLength)
+        self.topicsComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding,
+            QtGui.QSizePolicy.Fixed)
+        self.topicsComboBox.setEditable(True)
+        self.topicsComboBox.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.topicsComboBox.setObjectName(u'topicsComboBox')
+        self.topicAddLayout.addWidget(self.topicsComboBox)
+        self.topicAddButton = QtGui.QPushButton(self.topicsGroupBox)
+        self.topicAddButton.setObjectName(u'topicAddButton')
+        self.topicAddLayout.addWidget(self.topicAddButton)
+        self.topicsLayout.addLayout(self.topicAddLayout)
+        self.topicsListView = QtGui.QListWidget(self.topicsGroupBox)
+        self.topicsListView.setAlternatingRowColors(True)
+        self.topicsListView.setObjectName(u'topicsListView')
+        self.topicsLayout.addWidget(self.topicsListView)
+        self.topicRemoveLayout = QtGui.QHBoxLayout()
+        self.topicRemoveLayout.setObjectName(u'topicRemoveLayout')
+        self.topicRemoveLayout.addStretch()
+        self.topicRemoveButton = QtGui.QPushButton(self.topicsGroupBox)
+        self.topicRemoveButton.setObjectName(u'topicRemoveButton')
+        self.topicRemoveLayout.addWidget(self.topicRemoveButton)
+        self.topicsLayout.addLayout(self.topicRemoveLayout)
+        self.authorsRightLayout.addWidget(self.topicsGroupBox)
+        self.songBookGroupBox = QtGui.QGroupBox(self.authorsTab)
+        self.songBookGroupBox.setObjectName(u'songBookGroupBox')
+        self.songBookLayout = QtGui.QFormLayout(self.songBookGroupBox)
+        self.songBookLayout.setObjectName(u'songBookLayout')
+        self.songBookNameLabel = QtGui.QLabel(self.songBookGroupBox)
+        self.songBookNameLabel.setObjectName(u'songBookNameLabel')
+        self.songBookComboBox = QtGui.QComboBox(self.songBookGroupBox)
+        self.songBookComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding,
+            QtGui.QSizePolicy.Fixed)
+        self.songBookComboBox.setEditable(True)
+        self.songBookComboBox.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.songBookComboBox.setObjectName(u'songBookComboBox')
+        self.songBookNameLabel.setBuddy(self.songBookComboBox)
+        self.songBookLayout.addRow(self.songBookNameLabel,
+            self.songBookComboBox)
+        self.songBookNumberLabel = QtGui.QLabel(self.songBookGroupBox)
+        self.songBookNumberLabel.setObjectName(u'songBookNumberLabel')
+        self.songBookNumberEdit = QtGui.QLineEdit(self.songBookGroupBox)
+        self.songBookNumberEdit.setObjectName(u'songBookNumberEdit')
+        self.songBookNumberLabel.setBuddy(self.songBookNumberEdit)
+        self.songBookLayout.addRow(self.songBookNumberLabel,
             self.songBookNumberEdit)
-        self.TopicBookLayout.addWidget(self.SongBookGroup)
-        self.AuthorsTabLayout.addWidget(self.TopicBookWidget)
-        self.SongTabWidget.addTab(self.AuthorsTab, u'')
-        self.ThemeTab = QtGui.QWidget()
-        self.ThemeTab.setObjectName(u'ThemeTab')
-        self.ThemeTabLayout = QtGui.QVBoxLayout(self.ThemeTab)
-        self.ThemeTabLayout.setSpacing(8)
-        self.ThemeTabLayout.setMargin(8)
-        self.ThemeTabLayout.setObjectName(u'ThemeTabLayout')
-        self.ThemeCopyCommentsWidget = QtGui.QWidget(self.ThemeTab)
-        self.ThemeCopyCommentsWidget.setObjectName(u'ThemeCopyCommentsWidget')
-        self.ThemeCopyCommentsLayout = QtGui.QHBoxLayout(
-            self.ThemeCopyCommentsWidget)
-        self.ThemeCopyCommentsLayout.setSpacing(8)
-        self.ThemeCopyCommentsLayout.setMargin(0)
-        self.ThemeCopyCommentsLayout.setObjectName(u'ThemeCopyCommentsLayout')
-        self.TextWidget = QtGui.QWidget(self.ThemeCopyCommentsWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.TextWidget.sizePolicy().hasHeightForWidth())
-        self.TextWidget.setSizePolicy(sizePolicy)
-        self.TextWidget.setObjectName(u'TextWidget')
-        self.DetailsLayout = QtGui.QVBoxLayout(self.TextWidget)
-        self.DetailsLayout.setSpacing(8)
-        self.DetailsLayout.setMargin(0)
-        self.DetailsLayout.setObjectName(u'DetailsLayout')
-        self.ThemeGroupBox = QtGui.QGroupBox(self.TextWidget)
-        self.ThemeGroupBox.setObjectName(u'ThemeGroupBox')
-        self.ThemeLayout = QtGui.QHBoxLayout(self.ThemeGroupBox)
-        self.ThemeLayout.setSpacing(8)
-        self.ThemeLayout.setMargin(8)
-        self.ThemeLayout.setObjectName(u'ThemeLayout')
-        self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
-        self.ThemeSelectionComboItem.setEditable(True)
-        self.ThemeSelectionComboItem.setInsertPolicy(QtGui.QComboBox.NoInsert)
-        self.ThemeSelectionComboItem.setObjectName(u'ThemeSelectionComboItem')
-        self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
-        self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox)
-        self.ThemeAddButton.setMaximumSize(QtCore.QSize(110, 16777215))
-        self.ThemeAddButton.setObjectName(u'ThemeAddButton')
-        self.ThemeLayout.addWidget(self.ThemeAddButton)
-        self.DetailsLayout.addWidget(self.ThemeGroupBox)
-        self.CopyrightGroupBox = QtGui.QGroupBox(self.TextWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.CopyrightGroupBox.sizePolicy().hasHeightForWidth())
-        self.CopyrightGroupBox.setSizePolicy(sizePolicy)
-        self.CopyrightGroupBox.setObjectName(u'CopyrightGroupBox')
-        self.CopyrightLayout = QtGui.QVBoxLayout(self.CopyrightGroupBox)
-        self.CopyrightLayout.setSpacing(8)
-        self.CopyrightLayout.setMargin(8)
-        self.CopyrightLayout.setObjectName(u'CopyrightLayout')
-        self.CopyrightWidget = QtGui.QWidget(self.CopyrightGroupBox)
-        self.CopyrightWidget.setObjectName(u'CopyrightWidget')
-        self.CopyLayout = QtGui.QHBoxLayout(self.CopyrightWidget)
-        self.CopyLayout.setSpacing(8)
-        self.CopyLayout.setMargin(0)
-        self.CopyLayout.setObjectName(u'CopyLayout')
-        self.CopyrightEditItem = QtGui.QLineEdit(self.CopyrightWidget)
-        self.CopyrightEditItem.setObjectName(u'CopyrightEditItem')
-        self.CopyLayout.addWidget(self.CopyrightEditItem)
-        self.CopyrightInsertButton = QtGui.QPushButton(self.CopyrightWidget)
-        self.CopyrightInsertButton.setMaximumSize(QtCore.QSize(29, 16777215))
-        self.CopyrightInsertButton.setObjectName(u'CopyrightInsertButton')
-        self.CopyLayout.addWidget(self.CopyrightInsertButton)
-        self.CopyrightLayout.addWidget(self.CopyrightWidget)
-        self.CcliWidget = QtGui.QWidget(self.CopyrightGroupBox)
-        self.CcliWidget.setObjectName(u'CcliWidget')
-        self.CCLILayout = QtGui.QHBoxLayout(self.CcliWidget)
-        self.CCLILayout.setSpacing(8)
-        self.CCLILayout.setMargin(0)
+        self.authorsRightLayout.addWidget(self.songBookGroupBox)
+        self.authorsTabLayout.addLayout(self.authorsRightLayout)
+        self.songTabWidget.addTab(self.authorsTab, u'')
+        # theme tab
+        self.themeTab = QtGui.QWidget()
+        self.themeTab.setObjectName(u'themeTab')
+        self.themeTabLayout = QtGui.QHBoxLayout(self.themeTab)
+        self.themeTabLayout.setObjectName(u'themeTabLayout')
+        self.themeLeftLayout = QtGui.QVBoxLayout()
+        self.themeLeftLayout.setObjectName(u'themeLeftLayout')
+        self.themeGroupBox = QtGui.QGroupBox(self.themeTab)
+        self.themeGroupBox.setObjectName(u'themeGroupBox')
+        self.themeLayout = QtGui.QHBoxLayout(self.themeGroupBox)
+        self.themeLayout.setObjectName(u'themeLayout')
+        self.themeComboBox = QtGui.QComboBox(self.themeGroupBox)
+        self.themeComboBox.setSizeAdjustPolicy(
+            QtGui.QComboBox.AdjustToMinimumContentsLength)
+        self.themeComboBox.setSizePolicy(QtGui.QSizePolicy.Expanding,
+            QtGui.QSizePolicy.Fixed)
+        self.themeComboBox.setEditable(True)
+        self.themeComboBox.setInsertPolicy(QtGui.QComboBox.NoInsert)
+        self.themeComboBox.setObjectName(u'themeComboBox')
+        self.themeLayout.addWidget(self.themeComboBox)
+        self.themeAddButton = QtGui.QPushButton(self.themeGroupBox)
+        self.themeAddButton.setObjectName(u'themeAddButton')
+        self.themeLayout.addWidget(self.themeAddButton)
+        self.themeLeftLayout.addWidget(self.themeGroupBox)
+        self.rightsGroupBox = QtGui.QGroupBox(self.themeTab)
+        self.rightsGroupBox.setObjectName(u'rightsGroupBox')
+        self.rightsLayout = QtGui.QVBoxLayout(self.rightsGroupBox)
+        self.rightsLayout.setObjectName(u'rightsLayout')
+        self.copyrightLayout = QtGui.QHBoxLayout()
+        self.copyrightLayout.setObjectName(u'copyrightLayout')
+        self.copyrightEdit = QtGui.QLineEdit(self.rightsGroupBox)
+        self.copyrightEdit.setObjectName(u'copyrightEdit')
+        self.copyrightLayout.addWidget(self.copyrightEdit)
+        self.copyrightInsertButton = QtGui.QToolButton(self.rightsGroupBox)
+        self.copyrightInsertButton.setObjectName(u'copyrightInsertButton')
+        self.copyrightLayout.addWidget(self.copyrightInsertButton)
+        self.rightsLayout.addLayout(self.copyrightLayout)
+        self.CCLILayout = QtGui.QHBoxLayout()
         self.CCLILayout.setObjectName(u'CCLILayout')
-        self.CCLILabel = QtGui.QLabel(self.CcliWidget)
+        self.CCLILabel = QtGui.QLabel(self.rightsGroupBox)
         self.CCLILabel.setObjectName(u'CCLILabel')
         self.CCLILayout.addWidget(self.CCLILabel)
-        self.CCLNumberEdit = QtGui.QLineEdit(self.CcliWidget)
+        self.CCLNumberEdit = QtGui.QLineEdit(self.rightsGroupBox)
         self.CCLNumberEdit.setObjectName(u'CCLNumberEdit')
         self.CCLILayout.addWidget(self.CCLNumberEdit)
-        self.CopyrightLayout.addWidget(self.CcliWidget)
-        self.DetailsLayout.addWidget(self.CopyrightGroupBox)
-        spacerItem4 = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.DetailsLayout.addItem(spacerItem4)
-        self.ThemeCopyCommentsLayout.addWidget(self.TextWidget)
-        self.CommentsGroupBox = QtGui.QGroupBox(self.ThemeCopyCommentsWidget)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
-            QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.CommentsGroupBox.sizePolicy().hasHeightForWidth())
-        self.CommentsGroupBox.setSizePolicy(sizePolicy)
-        self.CommentsGroupBox.setObjectName(u'CommentsGroupBox')
-        self.CommentsLayout = QtGui.QVBoxLayout(self.CommentsGroupBox)
-        self.CommentsLayout.setSpacing(0)
-        self.CommentsLayout.setMargin(8)
-        self.CommentsLayout.setObjectName(u'CommentsLayout')
-        self.CommentsEdit = QtGui.QTextEdit(self.CommentsGroupBox)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
-            QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.CommentsEdit.sizePolicy().hasHeightForWidth())
-        self.CommentsEdit.setSizePolicy(sizePolicy)
-        self.CommentsEdit.setMaximumSize(QtCore.QSize(16777215, 16777215))
-        self.CommentsEdit.setObjectName(u'CommentsEdit')
-        self.CommentsLayout.addWidget(self.CommentsEdit)
-        self.ThemeCopyCommentsLayout.addWidget(self.CommentsGroupBox)
-        self.ThemeTabLayout.addWidget(self.ThemeCopyCommentsWidget)
-        self.SongTabWidget.addTab(self.ThemeTab, u'')
-        self.verticalLayout.addWidget(self.SongTabWidget)
-        self.ButtonBox = QtGui.QDialogButtonBox(EditSongDialog)
-        self.ButtonBox.setStandardButtons(
+        self.rightsLayout.addLayout(self.CCLILayout)
+        self.themeLeftLayout.addWidget(self.rightsGroupBox)
+        self.themeLeftLayout.addStretch()
+        self.themeTabLayout.addLayout(self.themeLeftLayout)
+        self.commentsGroupBox = QtGui.QGroupBox(self.themeTab)
+        self.commentsGroupBox.setObjectName(u'commentsGroupBox')
+        self.commentsLayout = QtGui.QVBoxLayout(self.commentsGroupBox)
+        self.commentsLayout.setObjectName(u'commentsLayout')
+        self.commentsEdit = QtGui.QTextEdit(self.commentsGroupBox)
+        self.commentsEdit.setObjectName(u'commentsEdit')
+        self.commentsLayout.addWidget(self.commentsEdit)
+        self.themeTabLayout.addWidget(self.commentsGroupBox)
+        self.songTabWidget.addTab(self.themeTab, u'')
+        self.dialogLayout.addWidget(self.songTabWidget)
+        self.buttonBox = QtGui.QDialogButtonBox(editSongDialog)
+        self.buttonBox.setStandardButtons(
             QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Save)
-        self.ButtonBox.setObjectName(u'ButtonBox')
-        self.verticalLayout.addWidget(self.ButtonBox)
-        self.retranslateUi(EditSongDialog)
-        QtCore.QObject.connect(self.ButtonBox,
-            QtCore.SIGNAL(u'rejected()'), EditSongDialog.closePressed)
-        QtCore.QObject.connect(self.ButtonBox,
-            QtCore.SIGNAL(u'accepted()'), EditSongDialog.accept)
-        QtCore.QMetaObject.connectSlotsByName(EditSongDialog)
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
+        self.retranslateUi(editSongDialog)
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'rejected()'), editSongDialog.closePressed)
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'accepted()'), editSongDialog.accept)
+        QtCore.QMetaObject.connectSlotsByName(editSongDialog)
 
-    def retranslateUi(self, EditSongDialog):
-        EditSongDialog.setWindowTitle(
+    def retranslateUi(self, editSongDialog):
+        editSongDialog.setWindowTitle(
             translate('SongsPlugin.EditSongForm', 'Song Editor'))
-        self.TitleLabel.setText(
+        self.titleLabel.setText(
             translate('SongsPlugin.EditSongForm', '&Title:'))
-        self.AlternativeTitleLabel.setText(
+        self.alternativeTitleLabel.setText(
             translate('SongsPlugin.EditSongForm', 'Alt&ernate title:'))
-        self.LyricsLabel.setText(
+        self.lyricsLabel.setText(
             translate('SongsPlugin.EditSongForm', '&Lyrics:'))
-        self.VerseOrderLabel.setText(
+        self.verseOrderLabel.setText(
             translate('SongsPlugin.EditSongForm', '&Verse order:'))
-        self.VerseAddButton.setText(
+        self.verseAddButton.setText(
             translate('SongsPlugin.EditSongForm', '&Add'))
-        self.VerseEditButton.setText(
+        self.verseEditButton.setText(
             translate('SongsPlugin.EditSongForm', '&Edit'))
-        self.VerseEditAllButton.setText(
+        self.verseEditAllButton.setText(
             translate('SongsPlugin.EditSongForm', 'Ed&it All'))
-        self.VerseDeleteButton.setText(
+        self.verseDeleteButton.setText(
             translate('SongsPlugin.EditSongForm', '&Delete'))
-        self.SongTabWidget.setTabText(
-            self.SongTabWidget.indexOf(self.LyricsTab),
+        self.songTabWidget.setTabText(
+            self.songTabWidget.indexOf(self.lyricsTab),
             translate('SongsPlugin.EditSongForm', 'Title && Lyrics'))
-        self.AuthorsGroupBox.setTitle(
+        self.authorsGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Authors'))
-        self.AuthorAddButton.setText(
+        self.authorAddButton.setText(
             translate('SongsPlugin.EditSongForm', '&Add to Song'))
-        self.AuthorRemoveButton.setText(
+        self.authorRemoveButton.setText(
             translate('SongsPlugin.EditSongForm', '&Remove'))
-        self.MaintenanceButton.setText(translate('SongsPlugin.EditSongForm',
+        self.maintenanceButton.setText(translate('SongsPlugin.EditSongForm',
             '&Manage Authors, Topics, Song Books'))
-        self.TopicGroupBox.setTitle(
+        self.topicsGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Topic'))
-        self.TopicAddButton.setText(
+        self.topicAddButton.setText(
             translate('SongsPlugin.EditSongForm', 'A&dd to Song'))
-        self.TopicRemoveButton.setText(
+        self.topicRemoveButton.setText(
             translate('SongsPlugin.EditSongForm', 'R&emove'))
-        self.SongBookGroup.setTitle(
+        self.songBookGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Song Book'))
-        self.SongbookNameLabel.setText(translate('SongsPlugin.EditSongForm',
+        self.songBookNameLabel.setText(translate('SongsPlugin.EditSongForm',
             'Book:'))
         self.songBookNumberLabel.setText(translate('SongsPlugin.EditSongForm',
             'Number:'))
-        self.SongTabWidget.setTabText(
-            self.SongTabWidget.indexOf(self.AuthorsTab),
+        self.songTabWidget.setTabText(
+            self.songTabWidget.indexOf(self.authorsTab),
             translate('SongsPlugin.EditSongForm',
                 'Authors, Topics && Song Book'))
-        self.ThemeGroupBox.setTitle(
+        self.themeGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Theme'))
-        self.ThemeAddButton.setText(
+        self.themeAddButton.setText(
             translate('SongsPlugin.EditSongForm', 'New &Theme'))
-        self.CopyrightGroupBox.setTitle(
+        self.rightsGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Copyright Information'))
-        self.CopyrightInsertButton.setText(
+        self.copyrightInsertButton.setText(
             translate('SongsPlugin.EditSongForm', '\xa9'))
         self.CCLILabel.setText(
             translate('SongsPlugin.EditSongForm', 'CCLI number:'))
-        self.CommentsGroupBox.setTitle(
+        self.commentsGroupBox.setTitle(
             translate('SongsPlugin.EditSongForm', 'Comments'))
-        self.SongTabWidget.setTabText(
-            self.SongTabWidget.indexOf(self.ThemeTab),
+        self.songTabWidget.setTabText(
+            self.songTabWidget.indexOf(self.themeTab),
             translate('SongsPlugin.EditSongForm',
-                'Theme, Copyright Info && Comments'))
\ No newline at end of file
+                'Theme, Copyright Info && Comments'))

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2011-01-02 08:03:42 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2011-01-05 20:02:48 +0000
@@ -54,40 +54,40 @@
         self.width = 400
         self.setupUi(self)
         # Connecting signals and slots
-        QtCore.QObject.connect(self.AuthorAddButton,
+        QtCore.QObject.connect(self.authorAddButton,
             QtCore.SIGNAL(u'clicked()'), self.onAuthorAddButtonClicked)
-        QtCore.QObject.connect(self.AuthorRemoveButton,
+        QtCore.QObject.connect(self.authorRemoveButton,
             QtCore.SIGNAL(u'clicked()'), self.onAuthorRemoveButtonClicked)
-        QtCore.QObject.connect(self.AuthorsListView,
+        QtCore.QObject.connect(self.authorsListView,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'),
             self.onAuthorsListViewPressed)
-        QtCore.QObject.connect(self.TopicAddButton,
+        QtCore.QObject.connect(self.topicAddButton,
             QtCore.SIGNAL(u'clicked()'), self.onTopicAddButtonClicked)
-        QtCore.QObject.connect(self.TopicRemoveButton,
+        QtCore.QObject.connect(self.topicRemoveButton,
             QtCore.SIGNAL(u'clicked()'), self.onTopicRemoveButtonClicked)
-        QtCore.QObject.connect(self.TopicsListView,
+        QtCore.QObject.connect(self.topicsListView,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'),
             self.onTopicListViewPressed)
-        QtCore.QObject.connect(self.CopyrightInsertButton,
+        QtCore.QObject.connect(self.copyrightInsertButton,
             QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertButtonTriggered)
-        QtCore.QObject.connect(self.VerseAddButton,
+        QtCore.QObject.connect(self.verseAddButton,
             QtCore.SIGNAL(u'clicked()'), self.onVerseAddButtonClicked)
-        QtCore.QObject.connect(self.VerseListWidget,
+        QtCore.QObject.connect(self.verseListWidget,
             QtCore.SIGNAL(u'doubleClicked(QModelIndex)'),
             self.onVerseEditButtonClicked)
-        QtCore.QObject.connect(self.VerseEditButton,
+        QtCore.QObject.connect(self.verseEditButton,
             QtCore.SIGNAL(u'clicked()'), self.onVerseEditButtonClicked)
-        QtCore.QObject.connect(self.VerseEditAllButton,
+        QtCore.QObject.connect(self.verseEditAllButton,
             QtCore.SIGNAL(u'clicked()'), self.onVerseEditAllButtonClicked)
-        QtCore.QObject.connect(self.VerseDeleteButton,
+        QtCore.QObject.connect(self.verseDeleteButton,
             QtCore.SIGNAL(u'clicked()'), self.onVerseDeleteButtonClicked)
-        QtCore.QObject.connect(self.VerseListWidget,
+        QtCore.QObject.connect(self.verseListWidget,
             QtCore.SIGNAL(u'itemClicked(QTableWidgetItem*)'),
             self.onVerseListViewPressed)
-        QtCore.QObject.connect(self.ThemeAddButton,
+        QtCore.QObject.connect(self.themeAddButton,
             QtCore.SIGNAL(u'clicked()'),
             self.parent.parent.renderManager.theme_manager.onAddTheme)
-        QtCore.QObject.connect(self.MaintenanceButton,
+        QtCore.QObject.connect(self.maintenanceButton,
             QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'theme_update_list'), self.loadThemes)
@@ -95,102 +95,102 @@
         self.previewButton.setObjectName(u'previewButton')
         self.previewButton.setText(
             translate('SongsPlugin.EditSongForm', 'Save && Preview'))
-        self.ButtonBox.addButton(
+        self.buttonBox.addButton(
             self.previewButton, QtGui.QDialogButtonBox.ActionRole)
-        QtCore.QObject.connect(self.ButtonBox,
+        QtCore.QObject.connect(self.buttonBox,
             QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview)
         # Create other objects and forms
         self.manager = manager
         self.verse_form = EditVerseForm(self)
         self.initialise()
-        self.AuthorsListView.setSortingEnabled(False)
-        self.AuthorsListView.setAlternatingRowColors(True)
-        self.TopicsListView.setSortingEnabled(False)
-        self.TopicsListView.setAlternatingRowColors(True)
+        self.authorsListView.setSortingEnabled(False)
+        self.authorsListView.setAlternatingRowColors(True)
+        self.topicsListView.setSortingEnabled(False)
+        self.topicsListView.setAlternatingRowColors(True)
         self.findVerseSplit = re.compile(u'---\[\]---\n', re.UNICODE)
         self.whitespace = re.compile(r'\W+', re.UNICODE)
 
     def initialise(self):
-        self.VerseEditButton.setEnabled(False)
-        self.VerseDeleteButton.setEnabled(False)
-        self.AuthorRemoveButton.setEnabled(False)
-        self.TopicRemoveButton.setEnabled(False)
+        self.verseEditButton.setEnabled(False)
+        self.verseDeleteButton.setEnabled(False)
+        self.authorRemoveButton.setEnabled(False)
+        self.topicRemoveButton.setEnabled(False)
 
     def loadAuthors(self):
         authors = self.manager.get_all_objects(Author,
             order_by_ref=Author.display_name)
-        self.AuthorsSelectionComboItem.clear()
-        self.AuthorsSelectionComboItem.addItem(u'')
+        self.authorsComboBox.clear()
+        self.authorsComboBox.addItem(u'')
         self.authors = []
         for author in authors:
-            row = self.AuthorsSelectionComboItem.count()
-            self.AuthorsSelectionComboItem.addItem(author.display_name)
-            self.AuthorsSelectionComboItem.setItemData(
+            row = self.authorsComboBox.count()
+            self.authorsComboBox.addItem(author.display_name)
+            self.authorsComboBox.setItemData(
                 row, QtCore.QVariant(author.id))
             self.authors.append(author.display_name)
         completer = QtGui.QCompleter(self.authors)
         completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
-        self.AuthorsSelectionComboItem.setCompleter(completer)
+        self.authorsComboBox.setCompleter(completer)
 
     def loadTopics(self):
         topics = self.manager.get_all_objects(Topic, order_by_ref=Topic.name)
-        self.SongTopicCombo.clear()
-        self.SongTopicCombo.addItem(u'')
+        self.topicsComboBox.clear()
+        self.topicsComboBox.addItem(u'')
         self.topics = []
         for topic in topics:
-            row = self.SongTopicCombo.count()
-            self.SongTopicCombo.addItem(topic.name)
+            row = self.topicsComboBox.count()
+            self.topicsComboBox.addItem(topic.name)
             self.topics.append(topic.name)
-            self.SongTopicCombo.setItemData(row, QtCore.QVariant(topic.id))
+            self.topicsComboBox.setItemData(row, QtCore.QVariant(topic.id))
         completer = QtGui.QCompleter(self.topics)
         completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
-        self.SongTopicCombo.setCompleter(completer)
+        self.topicsComboBox.setCompleter(completer)
 
     def loadBooks(self):
         books = self.manager.get_all_objects(Book, order_by_ref=Book.name)
-        self.SongbookCombo.clear()
-        self.SongbookCombo.addItem(u'')
+        self.songBookComboBox.clear()
+        self.songBookComboBox.addItem(u'')
         self.books = []
         for book in books:
-            row = self.SongbookCombo.count()
-            self.SongbookCombo.addItem(book.name)
+            row = self.songBookComboBox.count()
+            self.songBookComboBox.addItem(book.name)
             self.books.append(book.name)
-            self.SongbookCombo.setItemData(row, QtCore.QVariant(book.id))
+            self.songBookComboBox.setItemData(row, QtCore.QVariant(book.id))
         completer = QtGui.QCompleter(self.books)
         completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
-        self.SongbookCombo.setCompleter(completer)
+        self.songBookComboBox.setCompleter(completer)
 
     def loadThemes(self, theme_list):
-        self.ThemeSelectionComboItem.clear()
-        self.ThemeSelectionComboItem.addItem(u'')
+        self.themeComboBox.clear()
+        self.themeComboBox.addItem(u'')
         self.themes = []
         for theme in theme_list:
-            self.ThemeSelectionComboItem.addItem(theme)
+            self.themeComboBox.addItem(theme)
             self.themes.append(theme)
         completer = QtGui.QCompleter(self.themes)
         completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
-        self.ThemeSelectionComboItem.setCompleter(completer)
+        self.themeComboBox.setCompleter(completer)
 
     def newSong(self):
         log.debug(u'New Song')
         self.initialise()
-        self.SongTabWidget.setCurrentIndex(0)
-        self.TitleEditItem.setText(u'')
-        self.AlternativeEdit.setText(u'')
-        self.CopyrightEditItem.setText(u'')
-        self.VerseOrderEdit.setText(u'')
-        self.CommentsEdit.setText(u'')
+        self.songTabWidget.setCurrentIndex(0)
+        self.titleEdit.setText(u'')
+        self.alternativeEdit.setText(u'')
+        self.copyrightEdit.setText(u'')
+        self.verseOrderEdit.setText(u'')
+        self.commentsEdit.setText(u'')
         self.CCLNumberEdit.setText(u'')
-        self.VerseListWidget.clear()
-        self.VerseListWidget.setRowCount(0)
-        self.AuthorsListView.clear()
-        self.TopicsListView.clear()
-        self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)
+        self.verseListWidget.clear()
+        self.verseListWidget.setRowCount(0)
+        self.authorsListView.clear()
+        self.topicsListView.clear()
+        self.titleEdit.setFocus(QtCore.Qt.OtherFocusReason)
         self.songBookNumberEdit.setText(u'')
         self.loadAuthors()
         self.loadTopics()
         self.loadBooks()
-        self.ThemeSelectionComboItem.setCurrentIndex(0)
+        self.themeComboBox.setCurrentIndex(0)
         # it's a new song to preview is not possible
         self.previewButton.setVisible(False)
 
@@ -206,46 +206,46 @@
         """
         log.debug(u'Load Song')
         self.initialise()
-        self.SongTabWidget.setCurrentIndex(0)
+        self.songTabWidget.setCurrentIndex(0)
         self.loadAuthors()
         self.loadTopics()
         self.loadBooks()
         self.song = self.manager.get_object(Song, id)
-        self.TitleEditItem.setText(self.song.title)
+        self.titleEdit.setText(self.song.title)
         if self.song.alternate_title:
-            self.AlternativeEdit.setText(self.song.alternate_title)
+            self.alternativeEdit.setText(self.song.alternate_title)
         else:
-            self.AlternativeEdit.setText(u'')
+            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.SongbookCombo.findText(
+            id = self.songBookComboBox.findText(
                 unicode(book_name.name), QtCore.Qt.MatchExactly)
             if id == -1:
                 # Not Found
                 id = 0
-            self.SongbookCombo.setCurrentIndex(id)
+            self.songBookComboBox.setCurrentIndex(id)
         if self.song.theme_name:
-            id = self.ThemeSelectionComboItem.findText(
+            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.ThemeSelectionComboItem.setCurrentIndex(id)
+            self.themeComboBox.setCurrentIndex(id)
         if self.song.copyright:
-            self.CopyrightEditItem.setText(self.song.copyright)
+            self.copyrightEdit.setText(self.song.copyright)
         else:
-            self.CopyrightEditItem.setText(u'')
-        self.VerseListWidget.clear()
-        self.VerseListWidget.setRowCount(0)
+            self.copyrightEdit.setText(u'')
+        self.verseListWidget.clear()
+        self.verseListWidget.setRowCount(0)
         if self.song.verse_order:
-            self.VerseOrderEdit.setText(self.song.verse_order)
+            self.verseOrderEdit.setText(self.song.verse_order)
         else:
-            self.VerseOrderEdit.setText(u'')
+            self.verseOrderEdit.setText(u'')
         if self.song.comments:
-            self.CommentsEdit.setPlainText(self.song.comments)
+            self.commentsEdit.setPlainText(self.song.comments)
         else:
-            self.CommentsEdit.setPlainText(u'')
+            self.commentsEdit.setPlainText(u'')
         if self.song.ccli_number:
             self.CCLNumberEdit.setText(self.song.ccli_number)
         else:
@@ -256,9 +256,9 @@
             self.songBookNumberEdit.setText(u'')
 
         # lazy xml migration for now
-        self.VerseListWidget.clear()
-        self.VerseListWidget.setRowCount(0)
-        self.VerseListWidget.setColumnWidth(0, self.width)
+        self.verseListWidget.clear()
+        self.verseListWidget.setRowCount(0)
+        self.verseListWidget.setColumnWidth(0, self.width)
         # This is just because occasionally the lyrics come back as a "buffer"
         if isinstance(self.song.lyrics, buffer):
             self.song.lyrics = unicode(self.song.lyrics)
@@ -266,37 +266,37 @@
             songXML = SongXMLParser(self.song.lyrics)
             verseList = songXML.get_verses()
             for count, verse in enumerate(verseList):
-                self.VerseListWidget.setRowCount(
-                    self.VerseListWidget.rowCount() + 1)
+                self.verseListWidget.setRowCount(
+                    self.verseListWidget.rowCount() + 1)
                 variant = u'%s:%s' % (verse[0][u'type'], verse[0][u'label'])
                 item = QtGui.QTableWidgetItem(verse[1])
                 item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
-                self.VerseListWidget.setItem(count, 0, item)
+                self.verseListWidget.setItem(count, 0, item)
         else:
             verses = self.song.lyrics.split(u'\n\n')
             for count, verse in enumerate(verses):
-                self.VerseListWidget.setRowCount(
-                    self.VerseListWidget.rowCount() + 1)
+                self.verseListWidget.setRowCount(
+                    self.verseListWidget.rowCount() + 1)
                 item = QtGui.QTableWidgetItem(verse)
                 variant = u'%s:%s' % \
                     (VerseType.to_string(VerseType.Verse), unicode(count + 1))
                 item.setData(QtCore.Qt.UserRole, QtCore.QVariant(variant))
-                self.VerseListWidget.setItem(count, 0, item)
-        self.VerseListWidget.resizeRowsToContents()
+                self.verseListWidget.setItem(count, 0, item)
+        self.verseListWidget.resizeRowsToContents()
         self.tagRows()
         # clear the results
-        self.AuthorsListView.clear()
+        self.authorsListView.clear()
         for author in self.song.authors:
             author_name = QtGui.QListWidgetItem(unicode(author.display_name))
             author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
-            self.AuthorsListView.addItem(author_name)
+            self.authorsListView.addItem(author_name)
         # clear the results
-        self.TopicsListView.clear()
+        self.topicsListView.clear()
         for topic in self.song.topics:
             topic_name = QtGui.QListWidgetItem(unicode(topic.name))
             topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
-            self.TopicsListView.addItem(topic_name)
-        self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)
+            self.topicsListView.addItem(topic_name)
+        self.titleEdit.setFocus(QtCore.Qt.OtherFocusReason)
         # if not preview hide the preview button
         self.previewButton.setVisible(False)
         if preview:
@@ -307,17 +307,17 @@
         Tag the Song List rows based on the verse list
         """
         rowLabel = []
-        for row in range(0, self.VerseListWidget.rowCount()):
-            item = self.VerseListWidget.item(row, 0)
+        for row in range(0, self.verseListWidget.rowCount()):
+            item = self.verseListWidget.item(row, 0)
             data = unicode(item.data(QtCore.Qt.UserRole).toString())
             bit = data.split(u':')
             rowTag = u'%s%s' % (bit[0][0:1], bit[1])
             rowLabel.append(rowTag)
-        self.VerseListWidget.setVerticalHeaderLabels(rowLabel)
+        self.verseListWidget.setVerticalHeaderLabels(rowLabel)
 
     def onAuthorAddButtonClicked(self):
-        item = int(self.AuthorsSelectionComboItem.currentIndex())
-        text = unicode(self.AuthorsSelectionComboItem.currentText())
+        item = int(self.authorsComboBox.currentIndex())
+        text = unicode(self.authorsComboBox.currentText())
         if item == 0 and text:
             if QtGui.QMessageBox.question(self,
                 translate('SongsPlugin.EditSongForm', 'Add Author'),
@@ -336,15 +336,15 @@
                     unicode(author.display_name))
                 author_item.setData(QtCore.Qt.UserRole,
                     QtCore.QVariant(author.id))
-                self.AuthorsListView.addItem(author_item)
+                self.authorsListView.addItem(author_item)
                 self.loadAuthors()
-                self.AuthorsSelectionComboItem.setCurrentIndex(0)
+                self.authorsComboBox.setCurrentIndex(0)
             else:
                 return
         elif item > 0:
-            item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0]
+            item_id = (self.authorsComboBox.itemData(item)).toInt()[0]
             author = self.manager.get_object(Author, item_id)
-            if self.AuthorsListView.findItems(unicode(author.display_name),
+            if self.authorsListView.findItems(unicode(author.display_name),
                 QtCore.Qt.MatchExactly):
                 QtGui.QMessageBox.warning(self,
                     translate('SongsPlugin.EditSongForm', 'Error'),
@@ -355,8 +355,8 @@
                     author.display_name))
                 author_item.setData(QtCore.Qt.UserRole,
                     QtCore.QVariant(author.id))
-                self.AuthorsListView.addItem(author_item)
-            self.AuthorsSelectionComboItem.setCurrentIndex(0)
+                self.authorsListView.addItem(author_item)
+            self.authorsComboBox.setCurrentIndex(0)
         else:
             QtGui.QMessageBox.warning(self,
                 translate('SongsPlugin.EditSongForm', 'No Author Selected'),
@@ -366,18 +366,18 @@
                 'Song" button to add the new author.'))
 
     def onAuthorsListViewPressed(self):
-        if self.AuthorsListView.count() > 1:
-            self.AuthorRemoveButton.setEnabled(True)
+        if self.authorsListView.count() > 1:
+            self.authorRemoveButton.setEnabled(True)
 
     def onAuthorRemoveButtonClicked(self):
-        self.AuthorRemoveButton.setEnabled(False)
-        item = self.AuthorsListView.currentItem()
-        row = self.AuthorsListView.row(item)
-        self.AuthorsListView.takeItem(row)
+        self.authorRemoveButton.setEnabled(False)
+        item = self.authorsListView.currentItem()
+        row = self.authorsListView.row(item)
+        self.authorsListView.takeItem(row)
 
     def onTopicAddButtonClicked(self):
-        item = int(self.SongTopicCombo.currentIndex())
-        text = unicode(self.SongTopicCombo.currentText())
+        item = int(self.topicsComboBox.currentIndex())
+        text = unicode(self.topicsComboBox.currentText())
         if item == 0 and text:
             if QtGui.QMessageBox.question(self,
                 translate('SongsPlugin.EditSongForm', 'Add Topic'),
@@ -390,15 +390,15 @@
                 topic_item = QtGui.QListWidgetItem(unicode(topic.name))
                 topic_item.setData(QtCore.Qt.UserRole,
                     QtCore.QVariant(topic.id))
-                self.TopicsListView.addItem(topic_item)
+                self.topicsListView.addItem(topic_item)
                 self.loadTopics()
-                self.SongTopicCombo.setCurrentIndex(0)
+                self.topicsComboBox.setCurrentIndex(0)
             else:
                 return
         elif item > 0:
-            item_id = (self.SongTopicCombo.itemData(item)).toInt()[0]
+            item_id = (self.topicsComboBox.itemData(item)).toInt()[0]
             topic = self.manager.get_object(Topic, item_id)
-            if self.TopicsListView.findItems(unicode(topic.name),
+            if self.topicsListView.findItems(unicode(topic.name),
                 QtCore.Qt.MatchExactly):
                 QtGui.QMessageBox.warning(self,
                     translate('SongsPlugin.EditSongForm', 'Error'),
@@ -408,8 +408,8 @@
                 topic_item = QtGui.QListWidgetItem(unicode(topic.name))
                 topic_item.setData(QtCore.Qt.UserRole,
                     QtCore.QVariant(topic.id))
-                self.TopicsListView.addItem(topic_item)
-            self.SongTopicCombo.setCurrentIndex(0)
+                self.topicsListView.addItem(topic_item)
+            self.topicsComboBox.setCurrentIndex(0)
         else:
             QtGui.QMessageBox.warning(self,
                 translate('SongsPlugin.EditSongForm', 'No Topic Selected'),
@@ -419,17 +419,17 @@
                 'button to add the new topic.'))
 
     def onTopicListViewPressed(self):
-        self.TopicRemoveButton.setEnabled(True)
+        self.topicRemoveButton.setEnabled(True)
 
     def onTopicRemoveButtonClicked(self):
-        self.TopicRemoveButton.setEnabled(False)
-        item = self.TopicsListView.currentItem()
-        row = self.TopicsListView.row(item)
-        self.TopicsListView.takeItem(row)
+        self.topicRemoveButton.setEnabled(False)
+        item = self.topicsListView.currentItem()
+        row = self.topicsListView.row(item)
+        self.topicsListView.takeItem(row)
 
     def onVerseListViewPressed(self):
-        self.VerseEditButton.setEnabled(True)
-        self.VerseDeleteButton.setEnabled(True)
+        self.verseEditButton.setEnabled(True)
+        self.verseDeleteButton.setEnabled(True)
 
     def onVerseAddButtonClicked(self):
         self.verse_form.setVerse(u'', True)
@@ -439,16 +439,16 @@
             item = QtGui.QTableWidgetItem(afterText)
             item.setData(QtCore.Qt.UserRole, QtCore.QVariant(data))
             item.setText(afterText)
-            self.VerseListWidget.setRowCount(
-                self.VerseListWidget.rowCount() + 1)
-            self.VerseListWidget.setItem(
-                int(self.VerseListWidget.rowCount() - 1), 0, item)
-        self.VerseListWidget.setColumnWidth(0, self.width)
-        self.VerseListWidget.resizeRowsToContents()
+            self.verseListWidget.setRowCount(
+                self.verseListWidget.rowCount() + 1)
+            self.verseListWidget.setItem(
+                int(self.verseListWidget.rowCount() - 1), 0, item)
+        self.verseListWidget.setColumnWidth(0, self.width)
+        self.verseListWidget.resizeRowsToContents()
         self.tagRows()
 
     def onVerseEditButtonClicked(self):
-        item = self.VerseListWidget.currentItem()
+        item = self.verseListWidget.currentItem()
         if item:
             tempText = item.text()
             verseId = unicode(item.data(QtCore.Qt.UserRole).toString())
@@ -462,24 +462,24 @@
                 if len(tempText.split(u'\n')) != len(afterText.split(u'\n')):
                     tempList = {}
                     tempId = {}
-                    for row in range(0, self.VerseListWidget.rowCount()):
-                        tempList[row] = self.VerseListWidget.item(row, 0).text()
-                        tempId[row] = self.VerseListWidget.item(row, 0).\
+                    for row in range(0, self.verseListWidget.rowCount()):
+                        tempList[row] = self.verseListWidget.item(row, 0).text()
+                        tempId[row] = self.verseListWidget.item(row, 0).\
                             data(QtCore.Qt.UserRole)
-                    self.VerseListWidget.clear()
+                    self.verseListWidget.clear()
                     for row in range (0, len(tempList)):
                         item = QtGui.QTableWidgetItem(tempList[row], 0)
                         item.setData(QtCore.Qt.UserRole, tempId[row])
-                        self.VerseListWidget.setItem(row, 0, item)
-                    self.VerseListWidget.resizeRowsToContents()
-                    self.VerseListWidget.repaint()
+                        self.verseListWidget.setItem(row, 0, item)
+                    self.verseListWidget.resizeRowsToContents()
+                    self.verseListWidget.repaint()
         self.tagRows()
 
     def onVerseEditAllButtonClicked(self):
         verse_list = u''
-        if self.VerseListWidget.rowCount() > 0:
-            for row in range(0, self.VerseListWidget.rowCount()):
-                item = self.VerseListWidget.item(row, 0)
+        if self.verseListWidget.rowCount() > 0:
+            for row in range(0, self.verseListWidget.rowCount()):
+                item = self.verseListWidget.item(row, 0)
                 field = unicode(item.data(QtCore.Qt.UserRole).toString())
                 verse_list += u'---[%s]---\n' % field
                 verse_list += item.text()
@@ -490,8 +490,8 @@
         if self.verse_form.exec_():
             verse_list = self.verse_form.getVerseAll()
             verse_list = unicode(verse_list.replace(u'\r\n', u'\n'))
-            self.VerseListWidget.clear()
-            self.VerseListWidget.setRowCount(0)
+            self.verseListWidget.clear()
+            self.verseListWidget.setRowCount(0)
             for row in self.findVerseSplit.split(verse_list):
                 for match in row.split(u'---['):
                     for count, parts in enumerate(match.split(u']---\n')):
@@ -506,22 +506,22 @@
                                 item = QtGui.QTableWidgetItem(parts)
                                 item.setData(QtCore.Qt.UserRole,
                                     QtCore.QVariant(variant))
-                                self.VerseListWidget.setRowCount(
-                                    self.VerseListWidget.rowCount() + 1)
-                                self.VerseListWidget.setItem(
-                                    int(self.VerseListWidget.rowCount() - 1),
+                                self.verseListWidget.setRowCount(
+                                    self.verseListWidget.rowCount() + 1)
+                                self.verseListWidget.setItem(
+                                    int(self.verseListWidget.rowCount() - 1),
                                     0, item)
-            self.VerseListWidget.setColumnWidth(0, self.width)
-            self.VerseListWidget.resizeRowsToContents()
-            self.VerseListWidget.repaint()
+            self.verseListWidget.setColumnWidth(0, self.width)
+            self.verseListWidget.resizeRowsToContents()
+            self.verseListWidget.repaint()
             self.tagRows()
-            self.VerseEditButton.setEnabled(False)
-            self.VerseDeleteButton.setEnabled(False)
+            self.verseEditButton.setEnabled(False)
+            self.verseDeleteButton.setEnabled(False)
 
     def onVerseDeleteButtonClicked(self):
-        self.VerseListWidget.removeRow(self.VerseListWidget.currentRow())
-        self.VerseEditButton.setEnabled(False)
-        self.VerseDeleteButton.setEnabled(False)
+        self.verseListWidget.removeRow(self.verseListWidget.currentRow())
+        self.verseEditButton.setEnabled(False)
+        self.verseDeleteButton.setEnabled(False)
 
     def _validate_song(self):
         """
@@ -530,25 +530,25 @@
         """
         log.debug(u'Validate Song')
         # Lets be nice and assume the data is correct.
-        if len(self.TitleEditItem.displayText()) == 0:
-            self.SongTabWidget.setCurrentIndex(0)
-            self.TitleEditItem.setFocus()
+        if len(self.titleEdit.displayText()) == 0:
+            self.songTabWidget.setCurrentIndex(0)
+            self.titleEdit.setFocus()
             QtGui.QMessageBox.critical(self,
                 translate('SongsPlugin.EditSongForm', 'Error'),
                 translate('SongsPlugin.EditSongForm',
                 'You need to type in a song title.'))
             return False
-        if self.VerseListWidget.rowCount() == 0:
-            self.SongTabWidget.setCurrentIndex(0)
-            self.VerseListWidget.setFocus()
+        if self.verseListWidget.rowCount() == 0:
+            self.songTabWidget.setCurrentIndex(0)
+            self.verseListWidget.setFocus()
             QtGui.QMessageBox.critical(self,
                 translate('SongsPlugin.EditSongForm', 'Error'),
                 translate('SongsPlugin.EditSongForm',
                 'You need to type in at least one verse.'))
             return False
-        if self.AuthorsListView.count() == 0:
-            self.SongTabWidget.setCurrentIndex(1)
-            self.AuthorsListView.setFocus()
+        if self.authorsListView.count() == 0:
+            self.songTabWidget.setCurrentIndex(1)
+            self.authorsListView.setFocus()
             QtGui.QMessageBox.critical(self,
                 translate('SongsPlugin.EditSongForm', 'Warning'),
                 translate('SongsPlugin.EditSongForm',
@@ -564,8 +564,8 @@
                     order.append(item.lower())
             verses = []
             verse_names = []
-            for index in range (0, self.VerseListWidget.rowCount()):
-                verse = self.VerseListWidget.item(index, 0)
+            for index in range (0, self.verseListWidget.rowCount()):
+                verse = self.verseListWidget.item(index, 0)
                 verse = unicode(verse.data(QtCore.Qt.UserRole).toString())
                 if verse not in verse_names:
                     verses.append(
@@ -573,8 +573,8 @@
                     verse_names.append(verse)
             for count, item in enumerate(order):
                 if item not in verses:
-                    self.SongTabWidget.setCurrentIndex(0)
-                    self.VerseOrderEdit.setFocus()
+                    self.songTabWidget.setCurrentIndex(0)
+                    self.verseOrderEdit.setFocus()
                     valid = verses.pop(0)
                     for verse in verses:
                         valid = valid + u', ' + verse
@@ -587,8 +587,8 @@
                     return False
             for count, verse in enumerate(verses):
                 if verse not in order:
-                    self.SongTabWidget.setCurrentIndex(0)
-                    self.VerseOrderEdit.setFocus()
+                    self.songTabWidget.setCurrentIndex(0)
+                    self.verseOrderEdit.setFocus()
                     answer = QtGui.QMessageBox.warning(self,
                         translate('SongsPlugin.EditSongForm', 'Warning'),
                         unicode(translate('SongsPlugin.EditSongForm',
@@ -601,17 +601,18 @@
         return True
 
     def onCopyrightInsertButtonTriggered(self):
-        text = self.CopyrightEditItem.text()
-        pos = self.CopyrightEditItem.cursorPosition()
-        text = text[:pos] + '\xa9' + text[pos:]
-        self.CopyrightEditItem.setText(text)
-        self.CopyrightEditItem.setFocus()
-        self.CopyrightEditItem.setCursorPosition(pos + 1)
+        text = self.copyrightEdit.text()
+        pos = self.copyrightEdit.cursorPosition()
+        sign = translate('SongsPlugin.EditSongForm', '\xa9')
+        text = text[:pos] + sign + text[pos:]
+        self.copyrightEdit.setText(text)
+        self.copyrightEdit.setFocus()
+        self.copyrightEdit.setCursorPosition(pos + len(sign))
 
     def onMaintenanceButtonClicked(self):
         temp_song_book = None
-        item = int(self.SongbookCombo.currentIndex())
-        text = unicode(self.SongbookCombo.currentText())
+        item = int(self.songBookComboBox.currentIndex())
+        text = unicode(self.songBookComboBox.currentText())
         if item == 0 and text:
             temp_song_book = text
         self.parent.song_maintenance_form.exec_()
@@ -619,7 +620,7 @@
         self.loadBooks()
         self.loadTopics()
         if temp_song_book:
-            self.SongbookCombo.setEditText(temp_song_book)
+            self.songBookComboBox.setEditText(temp_song_book)
 
     def onPreview(self, button):
         """
@@ -659,9 +660,9 @@
         self.clearCaches()
         if not self.song:
             self.song = Song()
-        item = int(self.SongbookCombo.currentIndex())
-        text = unicode(self.SongbookCombo.currentText())
-        if self.SongbookCombo.findText(text, QtCore.Qt.MatchExactly) < 0:
+        item = int(self.songBookComboBox.currentIndex())
+        text = unicode(self.songBookComboBox.currentText())
+        if self.songBookComboBox.findText(text, QtCore.Qt.MatchExactly) < 0:
             if QtGui.QMessageBox.question(self,
                 translate('SongsPlugin.EditSongForm', 'Add Book'),
                 translate('SongsPlugin.EditSongForm', 'This song book does '
@@ -684,25 +685,25 @@
         ``preview``
             Should be ``True`` if the song is also previewed (boolean).
         """
-        self.song.title = unicode(self.TitleEditItem.text())
-        self.song.alternate_title = unicode(self.AlternativeEdit.text())
-        self.song.copyright = unicode(self.CopyrightEditItem.text())
+        self.song.title = unicode(self.titleEdit.text())
+        self.song.alternate_title = unicode(self.alternativeEdit.text())
+        self.song.copyright = unicode(self.copyrightEdit.text())
         if self.song.alternate_title:
             self.song.search_title = self.song.title + u'@' + \
                 self.song.alternate_title
         else:
             self.song.search_title = self.song.title
-        self.song.comments = unicode(self.CommentsEdit.toPlainText())
-        self.song.verse_order = unicode(self.VerseOrderEdit.text())
+        self.song.comments = unicode(self.commentsEdit.toPlainText())
+        self.song.verse_order = unicode(self.verseOrderEdit.text())
         self.song.ccli_number = unicode(self.CCLNumberEdit.text())
         self.song.song_number = unicode(self.songBookNumberEdit.text())
-        book_name = unicode(self.SongbookCombo.currentText())
+        book_name = unicode(self.songBookComboBox.currentText())
         if book_name:
             self.song.book = self.manager.get_object_filtered(Book,
                 Book.name == book_name)
         else:
             self.song.book = None
-        theme_name = unicode(self.ThemeSelectionComboItem.currentText())
+        theme_name = unicode(self.themeComboBox.currentText())
         if theme_name:
             self.song.theme_name = theme_name
         else:
@@ -711,14 +712,14 @@
             self.processLyrics()
             self.processTitle()
             self.song.authors = []
-            for row in range(self.AuthorsListView.count()):
-                item = self.AuthorsListView.item(row)
+            for row in range(self.authorsListView.count()):
+                item = self.authorsListView.item(row)
                 authorId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
                 self.song.authors.append(self.manager.get_object(Author,
                     authorId))
             self.song.topics = []
-            for row in range(self.TopicsListView.count()):
-                item = self.TopicsListView.item(row)
+            for row in range(self.topicsListView.count()):
+                item = self.topicsListView.item(row)
                 topicId = (item.data(QtCore.Qt.UserRole)).toInt()[0]
                 self.song.topics.append(self.manager.get_object(Topic, topicId))
             self.manager.save_object(self.song)
@@ -733,13 +734,13 @@
             sxml = SongXMLBuilder()
             text = u''
             multiple = []
-            for i in range(0, self.VerseListWidget.rowCount()):
-                item = self.VerseListWidget.item(i, 0)
+            for i in range(0, self.verseListWidget.rowCount()):
+                item = self.verseListWidget.item(i, 0)
                 verseId = unicode(item.data(QtCore.Qt.UserRole).toString())
                 bits = verseId.split(u':')
                 sxml.add_verse_to_lyrics(bits[0], bits[1], unicode(item.text()))
                 text = text + self.whitespace.sub(u' ',
-                    unicode(self.VerseListWidget.item(i, 0).text())) + u' '
+                    unicode(self.verseListWidget.item(i, 0).text())) + u' '
                 if (bits[1] > u'1') and (bits[0][0] not in multiple):
                     multiple.append(bits[0][0])
             self.song.search_lyrics = text.lower()

=== modified file 'openlp/plugins/songs/forms/editversedialog.py'
--- openlp/plugins/songs/forms/editversedialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/editversedialog.py	2011-01-05 20:02:48 +0000
@@ -32,31 +32,22 @@
 class Ui_EditVerseDialog(object):
     def setupUi(self, editVerseDialog):
         editVerseDialog.setObjectName(u'editVerseDialog')
-        editVerseDialog.resize(474, 442)
+        editVerseDialog.resize(400, 400)
         editVerseDialog.setModal(True)
-        self.editVerseLayout = QtGui.QVBoxLayout(editVerseDialog)
-        self.editVerseLayout.setSpacing(8)
-        self.editVerseLayout.setMargin(8)
-        self.editVerseLayout.setObjectName(u'editVerseLayout')
+        self.dialogLayout = QtGui.QVBoxLayout(editVerseDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
         self.verseTextEdit = SpellTextEdit(editVerseDialog)
         self.verseTextEdit.setObjectName(u'verseTextEdit')
-        self.editVerseLayout.addWidget(self.verseTextEdit)
+        self.dialogLayout.addWidget(self.verseTextEdit)
         self.verseTypeLayout = QtGui.QHBoxLayout()
-        self.verseTypeLayout.setSpacing(8)
         self.verseTypeLayout.setObjectName(u'verseTypeLayout')
         self.verseTypeLabel = QtGui.QLabel(editVerseDialog)
         self.verseTypeLabel.setObjectName(u'verseTypeLabel')
         self.verseTypeLayout.addWidget(self.verseTypeLabel)
         self.verseTypeComboBox = QtGui.QComboBox(editVerseDialog)
+        self.verseTypeComboBox.addItems([u'', u'', u'', u'', u'', u'', u''])
         self.verseTypeComboBox.setObjectName(u'verseTypeComboBox')
         self.verseTypeLabel.setBuddy(self.verseTypeComboBox)
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
-        self.verseTypeComboBox.addItem(u'')
         self.verseTypeLayout.addWidget(self.verseTypeComboBox)
         self.verseNumberBox = QtGui.QSpinBox(editVerseDialog)
         self.verseNumberBox.setMinimum(1)
@@ -66,21 +57,18 @@
         self.insertButton.setIcon(build_icon(u':/general/general_add.png'))
         self.insertButton.setObjectName(u'insertButton')
         self.verseTypeLayout.addWidget(self.insertButton)
-        self.verseTypeSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.verseTypeLayout.addItem(self.verseTypeSpacer)
-        self.editVerseLayout.addLayout(self.verseTypeLayout)
-        self.editButtonBox = QtGui.QDialogButtonBox(editVerseDialog)
-        self.editButtonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.editButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
+        self.verseTypeLayout.addStretch()
+        self.dialogLayout.addLayout(self.verseTypeLayout)
+        self.buttonBox = QtGui.QDialogButtonBox(editVerseDialog)
+        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
+        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel |
             QtGui.QDialogButtonBox.Save)
-        self.editButtonBox.setObjectName(u'editButtonBox')
-        self.editVerseLayout.addWidget(self.editButtonBox)
-
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
         self.retranslateUi(editVerseDialog)
-        QtCore.QObject.connect(self.editButtonBox, QtCore.SIGNAL(u'accepted()'),
+        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'),
             editVerseDialog.accept)
-        QtCore.QObject.connect(self.editButtonBox, QtCore.SIGNAL(u'rejected()'),
+        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
             editVerseDialog.reject)
         QtCore.QMetaObject.connectSlotsByName(editVerseDialog)
 
@@ -104,4 +92,4 @@
         self.verseTypeComboBox.setItemText(6,
             VerseType.to_string(VerseType.Other))
         self.insertButton.setText(
-            translate('SongsPlugin.EditVerseForm', '&Insert'))
\ No newline at end of file
+            translate('SongsPlugin.EditVerseForm', '&Insert'))

=== modified file 'openlp/plugins/songs/forms/editverseform.py'
--- openlp/plugins/songs/forms/editverseform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/editverseform.py	2011-01-05 20:02:48 +0000
@@ -172,4 +172,4 @@
                 translate('SongsPlugin.EditSongForm',
                 'You need to type some text in to the verse.'))
             return False
-        QtGui.QDialog.accept(self)
\ No newline at end of file
+        QtGui.QDialog.accept(self)

=== modified file 'openlp/plugins/songs/forms/songbookdialog.py'
--- openlp/plugins/songs/forms/songbookdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/songbookdialog.py	2011-01-05 20:02:48 +0000
@@ -29,49 +29,42 @@
 from openlp.core.lib import translate
 
 class Ui_SongBookDialog(object):
-    def setupUi(self, SongBookDialog):
-        SongBookDialog.setObjectName(u'SongBookDialog')
-        SongBookDialog.resize(367, 120)
-        self.SongBookLayout = QtGui.QFormLayout(SongBookDialog)
-        self.SongBookLayout.setMargin(8)
-        self.SongBookLayout.setSpacing(8)
-        self.SongBookLayout.setObjectName(u'SongBookLayout')
-        self.NameLabel = QtGui.QLabel(SongBookDialog)
-        self.NameLabel.setObjectName(u'NameLabel')
-        self.SongBookLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.NameLabel)
-        self.NameEdit = QtGui.QLineEdit(SongBookDialog)
-        self.NameEdit.setObjectName(u'NameEdit')
-        self.NameLabel.setBuddy(self.NameEdit)
-        self.SongBookLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.NameEdit)
-        self.PublisherLabel = QtGui.QLabel(SongBookDialog)
-        self.PublisherLabel.setObjectName(u'PublisherLabel')
-        self.SongBookLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.PublisherLabel)
-        self.PublisherEdit = QtGui.QLineEdit(SongBookDialog)
-        self.PublisherEdit.setObjectName(u'PublisherEdit')
-        self.PublisherLabel.setBuddy(self.PublisherEdit)
-        self.SongBookLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.PublisherEdit)
-        self.ButtonBox = QtGui.QDialogButtonBox(SongBookDialog)
-        self.ButtonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.ButtonBox.setStandardButtons(
+    def setupUi(self, songBookDialog):
+        songBookDialog.setObjectName(u'songBookDialog')
+        songBookDialog.resize(300, 10)
+        self.dialogLayout = QtGui.QVBoxLayout(songBookDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.bookLayout = QtGui.QFormLayout()
+        self.bookLayout.setObjectName(u'bookLayout')
+        self.nameLabel = QtGui.QLabel(songBookDialog)
+        self.nameLabel.setObjectName(u'nameLabel')
+        self.nameEdit = QtGui.QLineEdit(songBookDialog)
+        self.nameEdit.setObjectName(u'nameEdit')
+        self.nameLabel.setBuddy(self.nameEdit)
+        self.bookLayout.addRow(self.nameLabel, self.nameEdit)
+        self.publisherLabel = QtGui.QLabel(songBookDialog)
+        self.publisherLabel.setObjectName(u'publisherLabel')
+        self.publisherEdit = QtGui.QLineEdit(songBookDialog)
+        self.publisherEdit.setObjectName(u'publisherEdit')
+        self.publisherLabel.setBuddy(self.publisherEdit)
+        self.bookLayout.addRow(self.publisherLabel, self.publisherEdit)
+        self.dialogLayout.addLayout(self.bookLayout)
+        self.buttonBox = QtGui.QDialogButtonBox(songBookDialog)
+        self.buttonBox.setStandardButtons(
             QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel)
-        self.ButtonBox.setObjectName(u'ButtonBox')
-        self.SongBookLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.ButtonBox)
-
-        self.retranslateUi(SongBookDialog)
-        QtCore.QObject.connect(self.ButtonBox,
-            QtCore.SIGNAL(u'accepted()'), SongBookDialog.accept)
-        QtCore.QObject.connect(self.ButtonBox,
-            QtCore.SIGNAL(u'rejected()'), SongBookDialog.reject)
-        QtCore.QMetaObject.connectSlotsByName(SongBookDialog)
-
-    def retranslateUi(self, SongBookDialog):
-        SongBookDialog.setWindowTitle(
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
+        self.retranslateUi(songBookDialog)
+        songBookDialog.setMaximumHeight(songBookDialog.sizeHint().height())
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'accepted()'), songBookDialog.accept)
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'rejected()'), songBookDialog.reject)
+        QtCore.QMetaObject.connectSlotsByName(songBookDialog)
+
+    def retranslateUi(self, songBookDialog):
+        songBookDialog.setWindowTitle(
             translate('SongsPlugin.SongBookForm', 'Song Book Maintenance'))
-        self.NameLabel.setText(translate('SongsPlugin.SongBookForm', '&Name:'))
-        self.PublisherLabel.setText(
-            translate('SongsPlugin.SongBookForm', '&Publisher:'))
\ No newline at end of file
+        self.nameLabel.setText(translate('SongsPlugin.SongBookForm', '&Name:'))
+        self.publisherLabel.setText(
+            translate('SongsPlugin.SongBookForm', '&Publisher:'))

=== modified file 'openlp/plugins/songs/forms/songbookform.py'
--- openlp/plugins/songs/forms/songbookform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/songbookform.py	2011-01-05 20:02:48 +0000
@@ -42,18 +42,18 @@
 
     def exec_(self, clear=True):
         if clear:
-            self.NameEdit.clear()
-            self.PublisherEdit.clear()
-        self.NameEdit.setFocus()
+            self.nameEdit.clear()
+            self.publisherEdit.clear()
+        self.nameEdit.setFocus()
         return QtGui.QDialog.exec_(self)
 
     def accept(self):
-        if not self.NameEdit.text():
+        if not self.nameEdit.text():
             QtGui.QMessageBox.critical(
                 self, translate('SongsPlugin.SongBookForm', 'Error'),
                 translate('SongsPlugin.SongBookForm',
                     'You need to type in a name for the book.'))
-            self.NameEdit.setFocus()
+            self.nameEdit.setFocus()
             return False
         else:
-            return QtGui.QDialog.accept(self)
\ No newline at end of file
+            return QtGui.QDialog.accept(self)

=== modified file 'openlp/plugins/songs/forms/songmaintenancedialog.py'
--- openlp/plugins/songs/forms/songmaintenancedialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/songmaintenancedialog.py	2011-01-05 20:02:48 +0000
@@ -29,211 +29,145 @@
 from openlp.core.lib import build_icon, translate
 
 class Ui_SongMaintenanceDialog(object):
-    def setupUi(self, SongMaintenanceDialog):
-        SongMaintenanceDialog.setObjectName(u'SongMaintenanceDialog')
-        SongMaintenanceDialog.setWindowModality(QtCore.Qt.ApplicationModal)
-        SongMaintenanceDialog.resize(582, 361)
-        self.DialogLayout = QtGui.QVBoxLayout(SongMaintenanceDialog)
-        self.DialogLayout.setSpacing(8)
-        self.DialogLayout.setMargin(8)
-        self.DialogLayout.setObjectName(u'DialogLayout')
-        self.ContentWidget = QtGui.QWidget(SongMaintenanceDialog)
-        self.ContentWidget.setObjectName(u'ContentWidget')
-        self.ContentLayout = QtGui.QHBoxLayout(self.ContentWidget)
-        self.ContentLayout.setSpacing(8)
-        self.ContentLayout.setMargin(0)
-        self.ContentLayout.setObjectName(u'ContentLayout')
-        self.TypeListWidget = QtGui.QListWidget(self.ContentWidget)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.TypeListWidget.sizePolicy().hasHeightForWidth())
-        self.TypeListWidget.setSizePolicy(sizePolicy)
-        self.TypeListWidget.setViewMode(QtGui.QListView.ListMode)
-        self.TypeListWidget.setIconSize(QtCore.QSize(32, 32))
-        self.TypeListWidget.setMovement(QtGui.QListView.Static)
-        self.TypeListWidget.setMaximumWidth(172)
-        self.TypeListWidget.setSpacing(0)
-        self.TypeListWidget.setSortingEnabled(False)
-        self.TypeListWidget.setUniformItemSizes(True)
-        self.TypeListWidget.setObjectName(u'TypeListWidget')
-        icon = build_icon(u':/songs/author_maintenance.png')
-        item = QtGui.QListWidgetItem(self.TypeListWidget)
-        item.setIcon(icon)
-        icon1 = build_icon(u':/songs/topic_maintenance.png')
-        item = QtGui.QListWidgetItem(self.TypeListWidget)
-        item.setIcon(icon1)
-        icon2 = build_icon(u':/songs/book_maintenance.png')
-        item = QtGui.QListWidgetItem(self.TypeListWidget)
-        item.setIcon(icon2)
-        self.ContentLayout.addWidget(self.TypeListWidget)
-        self.TypeStackedWidget = QtGui.QStackedWidget(self.ContentWidget)
-        self.TypeStackedWidget.setObjectName(u'TypeStackedWidget')
-        self.AuthorsPage = QtGui.QWidget()
-        self.AuthorsPage.setObjectName(u'AuthorsPage')
-        self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsPage)
-        self.AuthorsLayout.setSpacing(4)
-        self.AuthorsLayout.setMargin(0)
-        self.AuthorsLayout.setObjectName(u'AuthorsLayout')
-        self.AuthorsListWidget = QtGui.QListWidget(self.AuthorsPage)
-        self.AuthorsListWidget.setObjectName(u'AuthorsListWidget')
-        self.AuthorsLayout.addWidget(self.AuthorsListWidget)
-        self.AuthorButtonWidget = QtGui.QWidget(self.AuthorsPage)
-        self.AuthorButtonWidget.setObjectName(u'AuthorButtonWidget')
-        self.AuthorButtonsLayout = QtGui.QHBoxLayout(self.AuthorButtonWidget)
-        self.AuthorButtonsLayout.setSpacing(8)
-        self.AuthorButtonsLayout.setMargin(0)
-        self.AuthorButtonsLayout.setObjectName(u'AuthorButtonsLayout')
-        spacerItem = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.AuthorButtonsLayout.addItem(spacerItem)
-        self.AuthorAddButton = QtGui.QPushButton(self.AuthorButtonWidget)
-        icon3 = build_icon(u':/songs/author_add.png')
-        self.AuthorAddButton.setIcon(icon3)
-        self.AuthorAddButton.setObjectName(u'AuthorAddButton')
-        self.AuthorButtonsLayout.addWidget(self.AuthorAddButton)
-        self.AuthorEditButton = QtGui.QPushButton(self.AuthorButtonWidget)
-        icon4 = build_icon(u':/songs/author_edit.png')
-        self.AuthorEditButton.setIcon(icon4)
-        self.AuthorEditButton.setObjectName(u'AuthorEditButton')
-        self.AuthorButtonsLayout.addWidget(self.AuthorEditButton)
-        self.AuthorDeleteButton = QtGui.QPushButton(self.AuthorButtonWidget)
-        icon5 = build_icon(u':/songs/author_delete.png')
-        self.AuthorDeleteButton.setIcon(icon5)
-        self.AuthorDeleteButton.setObjectName(u'AuthorDeleteButton')
-        self.AuthorButtonsLayout.addWidget(self.AuthorDeleteButton)
-        self.AuthorsLayout.addWidget(self.AuthorButtonWidget)
-        self.AuthorsLine = QtGui.QFrame(self.AuthorsPage)
-        self.AuthorsLine.setFrameShape(QtGui.QFrame.HLine)
-        self.AuthorsLine.setFrameShadow(QtGui.QFrame.Sunken)
-        self.AuthorsLine.setObjectName(u'AuthorsLine')
-        self.AuthorsLayout.addWidget(self.AuthorsLine)
-        self.TypeStackedWidget.addWidget(self.AuthorsPage)
-        self.TopicsPage = QtGui.QWidget()
-        self.TopicsPage.setObjectName(u'TopicsPage')
-        self.TopicLayout = QtGui.QVBoxLayout(self.TopicsPage)
-        self.TopicLayout.setSpacing(4)
-        self.TopicLayout.setMargin(0)
-        self.TopicLayout.setObjectName(u'TopicLayout')
-        self.TopicsListWidget = QtGui.QListWidget(self.TopicsPage)
-        self.TopicsListWidget.setObjectName(u'TopicsListWidget')
-        self.TopicLayout.addWidget(self.TopicsListWidget)
-        self.TopicButtonWidget = QtGui.QWidget(self.TopicsPage)
-        self.TopicButtonWidget.setObjectName(u'TopicButtonWidget')
-        self.TopicButtonLayout = QtGui.QHBoxLayout(self.TopicButtonWidget)
-        self.TopicButtonLayout.setSpacing(8)
-        self.TopicButtonLayout.setMargin(0)
-        self.TopicButtonLayout.setObjectName(u'TopicButtonLayout')
-        TopicSpacerItem = QtGui.QSpacerItem(54, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.TopicButtonLayout.addItem(TopicSpacerItem)
-        self.TopicAddButton = QtGui.QPushButton(self.TopicButtonWidget)
-        icon6 = build_icon(u':/songs/topic_add.png')
-        self.TopicAddButton.setIcon(icon6)
-        self.TopicAddButton.setObjectName(u'TopicAddButton')
-        self.TopicButtonLayout.addWidget(self.TopicAddButton)
-        self.TopicEditButton = QtGui.QPushButton(self.TopicButtonWidget)
-        icon7 = build_icon(u':/songs/topic_edit.png')
-        self.TopicEditButton.setIcon(icon7)
-        self.TopicEditButton.setObjectName(u'TopicEditButton')
-        self.TopicButtonLayout.addWidget(self.TopicEditButton)
-        self.TopicDeleteButton = QtGui.QPushButton(self.TopicButtonWidget)
-        icon8 = build_icon(u':/songs/topic_delete.png')
-        self.TopicDeleteButton.setIcon(icon8)
-        self.TopicDeleteButton.setObjectName(u'TopicDeleteButton')
-        self.TopicButtonLayout.addWidget(self.TopicDeleteButton)
-        self.TopicLayout.addWidget(self.TopicButtonWidget)
-        self.TopicsLine = QtGui.QFrame(self.TopicsPage)
-        self.TopicsLine.setFrameShape(QtGui.QFrame.HLine)
-        self.TopicsLine.setFrameShadow(QtGui.QFrame.Sunken)
-        self.TopicsLine.setObjectName(u'TopicsLine')
-        self.TopicLayout.addWidget(self.TopicsLine)
-        self.TypeStackedWidget.addWidget(self.TopicsPage)
-        self.BooksPage = QtGui.QWidget()
-        self.BooksPage.setObjectName(u'BooksPage')
-        self.BookLayout = QtGui.QVBoxLayout(self.BooksPage)
-        self.BookLayout.setSpacing(4)
-        self.BookLayout.setMargin(0)
-        self.BookLayout.setObjectName(u'BookLayout')
-        self.BooksListWidget = QtGui.QListWidget(self.BooksPage)
-        self.BooksListWidget.setObjectName(u'BooksListWidget')
-        self.BookLayout.addWidget(self.BooksListWidget)
-        self.BookButtonWidget = QtGui.QWidget(self.BooksPage)
-        self.BookButtonWidget.setObjectName(u'BookButtonWidget')
-        self.BookButtonLayout = QtGui.QHBoxLayout(self.BookButtonWidget)
-        self.BookButtonLayout.setSpacing(8)
-        self.BookButtonLayout.setMargin(0)
-        self.BookButtonLayout.setObjectName(u'BookButtonLayout')
-        spacerItem2 = QtGui.QSpacerItem(54, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.BookButtonLayout.addItem(spacerItem2)
-        self.BookAddButton = QtGui.QPushButton(self.BookButtonWidget)
-        icon9 = build_icon(u':/songs/book_add.png')
-        self.BookAddButton.setIcon(icon9)
-        self.BookAddButton.setObjectName(u'BookAddButton')
-        self.BookButtonLayout.addWidget(self.BookAddButton)
-        self.BookEditButton = QtGui.QPushButton(self.BookButtonWidget)
-        icon10 = build_icon(u':/songs/book_edit.png')
-        self.BookEditButton.setIcon(icon10)
-        self.BookEditButton.setObjectName(u'BookEditButton')
-        self.BookButtonLayout.addWidget(self.BookEditButton)
-        self.BookDeleteButton = QtGui.QPushButton(self.BookButtonWidget)
-        icon11 = build_icon(u':/songs/book_delete.png')
-        self.BookDeleteButton.setIcon(icon11)
-        self.BookDeleteButton.setObjectName(u'BookDeleteButton')
-        self.BookButtonLayout.addWidget(self.BookDeleteButton)
-        self.BookLayout.addWidget(self.BookButtonWidget)
-        self.BooksLine = QtGui.QFrame(self.BooksPage)
-        self.BooksLine.setFrameShape(QtGui.QFrame.HLine)
-        self.BooksLine.setFrameShadow(QtGui.QFrame.Sunken)
-        self.BooksLine.setObjectName(u'BooksLine')
-        self.BookLayout.addWidget(self.BooksLine)
-        self.TypeStackedWidget.addWidget(self.BooksPage)
-        self.ContentLayout.addWidget(self.TypeStackedWidget)
-        self.DialogLayout.addWidget(self.ContentWidget)
-        self.MaintenanceButtonBox = QtGui.QDialogButtonBox(
-            SongMaintenanceDialog)
-        self.MaintenanceButtonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.MaintenanceButtonBox.setStandardButtons(
-            QtGui.QDialogButtonBox.Close)
-        self.MaintenanceButtonBox.setObjectName(u'MaintenanceButtonBox')
-        self.DialogLayout.addWidget(self.MaintenanceButtonBox)
-
-        self.retranslateUi(SongMaintenanceDialog)
-        self.TypeStackedWidget.setCurrentIndex(0)
-        QtCore.QObject.connect(self.MaintenanceButtonBox,
-            QtCore.SIGNAL(u'rejected()'), SongMaintenanceDialog.accept)
-        QtCore.QObject.connect(self.TypeListWidget,
+    def setupUi(self, songMaintenanceDialog):
+        songMaintenanceDialog.setObjectName(u'songMaintenanceDialog')
+        songMaintenanceDialog.setWindowModality(QtCore.Qt.ApplicationModal)
+        songMaintenanceDialog.resize(10, 350)
+        self.dialogLayout = QtGui.QGridLayout(songMaintenanceDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.typeListWidget = QtGui.QListWidget(songMaintenanceDialog)
+        # Caution: fixed widget width
+        self.typeListWidget.setFixedWidth(172)
+        self.typeListWidget.setIconSize(QtCore.QSize(32, 32))
+        self.typeListWidget.setUniformItemSizes(True)
+        self.typeListWidget.setObjectName(u'typeListWidget')
+        self.listItemAuthors = QtGui.QListWidgetItem(self.typeListWidget)
+        self.listItemAuthors.setIcon(
+            build_icon(u':/songs/author_maintenance.png'))
+        self.listItemTopics = QtGui.QListWidgetItem(self.typeListWidget)
+        self.listItemTopics.setIcon(
+            build_icon(u':/songs/topic_maintenance.png'))
+        self.listItemBooks = QtGui.QListWidgetItem(self.typeListWidget)
+        self.listItemBooks.setIcon(
+            build_icon(u':/songs/book_maintenance.png'))
+        self.dialogLayout.addWidget(self.typeListWidget, 0, 0)
+        self.stackedLayout = QtGui.QStackedLayout()
+        self.stackedLayout.setObjectName(u'stackedLayout')
+        # authors page
+        self.authorsPage = QtGui.QWidget(songMaintenanceDialog)
+        self.authorsPage.setObjectName(u'authorsPage')
+        self.authorsLayout = QtGui.QVBoxLayout(self.authorsPage)
+        self.authorsLayout.setObjectName(u'authorsLayout')
+        self.authorsListWidget = QtGui.QListWidget(self.authorsPage)
+        self.authorsListWidget.setObjectName(u'authorsListWidget')
+        self.authorsLayout.addWidget(self.authorsListWidget)
+        self.authorsButtonsLayout = QtGui.QHBoxLayout()
+        self.authorsButtonsLayout.setObjectName(u'authorsButtonsLayout')
+        self.authorsButtonsLayout.addStretch()
+        self.authorsAddButton = QtGui.QPushButton(self.authorsPage)
+        self.authorsAddButton.setIcon(build_icon(u':/songs/author_add.png'))
+        self.authorsAddButton.setObjectName(u'authorsAddButton')
+        self.authorsButtonsLayout.addWidget(self.authorsAddButton)
+        self.authorsEditButton = QtGui.QPushButton(self.authorsPage)
+        self.authorsEditButton.setIcon(build_icon(u':/songs/author_edit.png'))
+        self.authorsEditButton.setObjectName(u'authorsEditButton')
+        self.authorsButtonsLayout.addWidget(self.authorsEditButton)
+        self.authorsDeleteButton = QtGui.QPushButton(self.authorsPage)
+        self.authorsDeleteButton.setIcon(
+            build_icon(u':/songs/author_delete.png'))
+        self.authorsDeleteButton.setObjectName(u'authorsDeleteButton')
+        self.authorsButtonsLayout.addWidget(self.authorsDeleteButton)
+        self.authorsLayout.addLayout(self.authorsButtonsLayout)
+        self.stackedLayout.addWidget(self.authorsPage)
+        # topics page
+        self.topicsPage = QtGui.QWidget(songMaintenanceDialog)
+        self.topicsPage.setObjectName(u'topicsPage')
+        self.topicsLayout = QtGui.QVBoxLayout(self.topicsPage)
+        self.topicsLayout.setObjectName(u'topicsLayout')
+        self.topicsListWidget = QtGui.QListWidget(self.topicsPage)
+        self.topicsListWidget.setObjectName(u'topicsListWidget')
+        self.topicsLayout.addWidget(self.topicsListWidget)
+        self.topicsButtonsLayout = QtGui.QHBoxLayout()
+        self.topicsButtonsLayout.setObjectName(u'topicsButtonLayout')
+        self.topicsButtonsLayout.addStretch()
+        self.topicsAddButton = QtGui.QPushButton(self.topicsPage)
+        self.topicsAddButton.setIcon(build_icon(u':/songs/topic_add.png'))
+        self.topicsAddButton.setObjectName(u'topicsAddButton')
+        self.topicsButtonsLayout.addWidget(self.topicsAddButton)
+        self.topicsEditButton = QtGui.QPushButton(self.topicsPage)
+        self.topicsEditButton.setIcon(build_icon(u':/songs/topic_edit.png'))
+        self.topicsEditButton.setObjectName(u'topicsEditButton')
+        self.topicsButtonsLayout.addWidget(self.topicsEditButton)
+        self.topicsDeleteButton = QtGui.QPushButton(self.topicsPage)
+        self.topicsDeleteButton.setIcon(build_icon(u':/songs/topic_delete.png'))
+        self.topicsDeleteButton.setObjectName(u'topicsDeleteButton')
+        self.topicsButtonsLayout.addWidget(self.topicsDeleteButton)
+        self.topicsLayout.addLayout(self.topicsButtonsLayout)
+        self.stackedLayout.addWidget(self.topicsPage)
+        # song books page
+        self.booksPage = QtGui.QWidget(songMaintenanceDialog)
+        self.booksPage.setObjectName(u'booksPage')
+        self.booksLayout = QtGui.QVBoxLayout(self.booksPage)
+        self.booksLayout.setObjectName(u'booksLayout')
+        self.booksListWidget = QtGui.QListWidget(self.booksPage)
+        self.booksListWidget.setObjectName(u'booksListWidget')
+        self.booksLayout.addWidget(self.booksListWidget)
+        self.booksButtonsLayout = QtGui.QHBoxLayout()
+        self.booksButtonsLayout.setObjectName(u'booksButtonLayout')
+        self.booksButtonsLayout.addStretch()
+        self.booksAddButton = QtGui.QPushButton(self.booksPage)
+        self.booksAddButton.setIcon(build_icon(u':/songs/book_add.png'))
+        self.booksAddButton.setObjectName(u'booksAddButton')
+        self.booksButtonsLayout.addWidget(self.booksAddButton)
+        self.booksEditButton = QtGui.QPushButton(self.booksPage)
+        self.booksEditButton.setIcon(build_icon(u':/songs/book_edit.png'))
+        self.booksEditButton.setObjectName(u'booksEditButton')
+        self.booksButtonsLayout.addWidget(self.booksEditButton)
+        self.booksDeleteButton = QtGui.QPushButton(self.booksPage)
+        self.booksDeleteButton.setIcon(build_icon(u':/songs/book_delete.png'))
+        self.booksDeleteButton.setObjectName(u'booksDeleteButton')
+        self.booksButtonsLayout.addWidget(self.booksDeleteButton)
+        self.booksLayout.addLayout(self.booksButtonsLayout)
+        self.stackedLayout.addWidget(self.booksPage)
+        #
+        self.dialogLayout.addLayout(self.stackedLayout, 0, 1)
+        self.buttonBox = QtGui.QDialogButtonBox(songMaintenanceDialog)
+        self.buttonBox.addButton(QtGui.QDialogButtonBox.Close)
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox, 1, 0, 1, 2)
+        self.retranslateUi(songMaintenanceDialog)
+        self.stackedLayout.setCurrentIndex(0)
+        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'),
+            songMaintenanceDialog.accept)
+        QtCore.QObject.connect(self.typeListWidget,
             QtCore.SIGNAL(u'currentRowChanged(int)'),
-            self.TypeStackedWidget.setCurrentIndex)
-        QtCore.QMetaObject.connectSlotsByName(SongMaintenanceDialog)
+            self.stackedLayout.setCurrentIndex)
+        QtCore.QMetaObject.connectSlotsByName(songMaintenanceDialog)
 
-    def retranslateUi(self, SongMaintenanceDialog):
-        SongMaintenanceDialog.setWindowTitle(
+    def retranslateUi(self, songMaintenanceDialog):
+        songMaintenanceDialog.setWindowTitle(
             translate('SongsPlugin.SongMaintenanceForm', 'Song Maintenance'))
-        self.TypeListWidget.item(0).setText(
+        self.listItemAuthors.setText(
             translate('SongsPlugin.SongMaintenanceForm', 'Authors'))
-        self.TypeListWidget.item(1).setText(
+        self.listItemTopics.setText(
             translate('SongsPlugin.SongMaintenanceForm', 'Topics'))
-        self.TypeListWidget.item(2).setText(
+        self.listItemBooks.setText(
             translate('SongsPlugin.SongMaintenanceForm', 'Song Books'))
-        self.AuthorAddButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
-        self.AuthorEditButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
-        self.AuthorDeleteButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
-        self.TopicAddButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
-        self.TopicEditButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
-        self.TopicDeleteButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
-        self.BookAddButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
-        self.BookEditButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
-        self.BookDeleteButton.setText(
-            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
\ No newline at end of file
+        self.authorsAddButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
+        self.authorsEditButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
+        self.authorsDeleteButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
+        self.topicsAddButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
+        self.topicsEditButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
+        self.topicsDeleteButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))
+        self.booksAddButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Add'))
+        self.booksEditButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Edit'))
+        self.booksDeleteButton.setText(
+            translate('SongsPlugin.SongMaintenanceForm', '&Delete'))

=== modified file 'openlp/plugins/songs/forms/songmaintenanceform.py'
--- openlp/plugins/songs/forms/songmaintenanceform.py	2011-01-04 16:04:55 +0000
+++ openlp/plugins/songs/forms/songmaintenanceform.py	2011-01-05 20:02:48 +0000
@@ -46,31 +46,31 @@
         self.authorform = AuthorsForm(self)
         self.topicform = TopicsForm(self)
         self.bookform = SongBookForm(self)
-        QtCore.QObject.connect(self.AuthorAddButton,
+        QtCore.QObject.connect(self.authorsAddButton,
             QtCore.SIGNAL(u'pressed()'), self.onAuthorAddButtonClick)
-        QtCore.QObject.connect(self.TopicAddButton,
+        QtCore.QObject.connect(self.topicsAddButton,
             QtCore.SIGNAL(u'pressed()'), self.onTopicAddButtonClick)
-        QtCore.QObject.connect(self.BookAddButton,
+        QtCore.QObject.connect(self.booksAddButton,
             QtCore.SIGNAL(u'pressed()'), self.onBookAddButtonClick)
-        QtCore.QObject.connect(self.AuthorEditButton,
+        QtCore.QObject.connect(self.authorsEditButton,
             QtCore.SIGNAL(u'pressed()'), self.onAuthorEditButtonClick)
-        QtCore.QObject.connect(self.TopicEditButton,
+        QtCore.QObject.connect(self.topicsEditButton,
             QtCore.SIGNAL(u'pressed()'), self.onTopicEditButtonClick)
-        QtCore.QObject.connect(self.BookEditButton,
+        QtCore.QObject.connect(self.booksEditButton,
             QtCore.SIGNAL(u'pressed()'), self.onBookEditButtonClick)
-        QtCore.QObject.connect(self.AuthorDeleteButton,
+        QtCore.QObject.connect(self.authorsDeleteButton,
             QtCore.SIGNAL(u'pressed()'), self.onAuthorDeleteButtonClick)
-        QtCore.QObject.connect(self.TopicDeleteButton,
+        QtCore.QObject.connect(self.topicsDeleteButton,
             QtCore.SIGNAL(u'pressed()'), self.onTopicDeleteButtonClick)
-        QtCore.QObject.connect(self.BookDeleteButton,
+        QtCore.QObject.connect(self.booksDeleteButton,
             QtCore.SIGNAL(u'pressed()'), self.onBookDeleteButtonClick)
 
     def exec_(self):
-        self.TypeListWidget.setCurrentRow(0)
+        self.typeListWidget.setCurrentRow(0)
         self.resetAuthors()
         self.resetTopics()
         self.resetBooks()
-        self.TypeListWidget.setFocus()
+        self.typeListWidget.setFocus()
         return QtGui.QDialog.exec_(self)
 
     def _getCurrentItemId(self, ListWidget):
@@ -101,7 +101,7 @@
         """
         Reloads the Authors list.
         """
-        self.AuthorsListWidget.clear()
+        self.authorsListWidget.clear()
         authors = self.manager.get_all_objects(Author,
             order_by_ref=Author.display_name)
         for author in authors:
@@ -111,48 +111,48 @@
                 author_name = QtGui.QListWidgetItem(
                     u' '.join([author.first_name, author.last_name]))
             author_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(author.id))
-            self.AuthorsListWidget.addItem(author_name)
-        if self.AuthorsListWidget.count() == 0:
-            self.AuthorDeleteButton.setEnabled(False)
-            self.AuthorEditButton.setEnabled(False)
+            self.authorsListWidget.addItem(author_name)
+        if self.authorsListWidget.count() == 0:
+            self.authorsDeleteButton.setEnabled(False)
+            self.authorsEditButton.setEnabled(False)
         else:
-            self.AuthorDeleteButton.setEnabled(True)
-            self.AuthorEditButton.setEnabled(True)
+            self.authorsDeleteButton.setEnabled(True)
+            self.authorsEditButton.setEnabled(True)
 
     def resetTopics(self):
         """
         Reloads the Topics list.
         """
-        self.TopicsListWidget.clear()
+        self.topicsListWidget.clear()
         topics = self.manager.get_all_objects(Topic, order_by_ref=Topic.name)
         for topic in topics:
             topic_name = QtGui.QListWidgetItem(topic.name)
             topic_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(topic.id))
-            self.TopicsListWidget.addItem(topic_name)
-        if self.TopicsListWidget.count() == 0:
-            self.TopicDeleteButton.setEnabled(False)
-            self.TopicEditButton.setEnabled(False)
+            self.topicsListWidget.addItem(topic_name)
+        if self.topicsListWidget.count() == 0:
+            self.topicsDeleteButton.setEnabled(False)
+            self.topicsEditButton.setEnabled(False)
         else:
-            self.TopicDeleteButton.setEnabled(True)
-            self.TopicEditButton.setEnabled(True)
+            self.topicsDeleteButton.setEnabled(True)
+            self.topicsEditButton.setEnabled(True)
 
     def resetBooks(self):
         """
         Reloads the Books list.
         """
-        self.BooksListWidget.clear()
+        self.booksListWidget.clear()
         books = self.manager.get_all_objects(Book, order_by_ref=Book.name)
         for book in books:
             book_name = QtGui.QListWidgetItem(u'%s (%s)' % (book.name,
                 book.publisher))
             book_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(book.id))
-            self.BooksListWidget.addItem(book_name)
-        if self.BooksListWidget.count() == 0:
-            self.BookDeleteButton.setEnabled(False)
-            self.BookEditButton.setEnabled(False)
+            self.booksListWidget.addItem(book_name)
+        if self.booksListWidget.count() == 0:
+            self.booksDeleteButton.setEnabled(False)
+            self.booksEditButton.setEnabled(False)
         else:
-            self.BookDeleteButton.setEnabled(True)
-            self.BookEditButton.setEnabled(True)
+            self.booksDeleteButton.setEnabled(True)
+            self.booksEditButton.setEnabled(True)
 
     def checkAuthor(self, new_author, edit=False):
         """
@@ -222,9 +222,9 @@
         self.authorform.setAutoDisplayName(True)
         if self.authorform.exec_():
             author = Author.populate(
-                first_name=unicode(self.authorform.FirstNameEdit.text()),
-                last_name=unicode(self.authorform.LastNameEdit.text()),
-                display_name=unicode(self.authorform.DisplayEdit.text()))
+                first_name=unicode(self.authorform.firstNameEdit.text()),
+                last_name=unicode(self.authorform.lastNameEdit.text()),
+                display_name=unicode(self.authorform.displayEdit.text()))
             if self.checkAuthor(author):
                 if self.manager.save_object(author):
                     self.resetAuthors()
@@ -241,7 +241,7 @@
 
     def onTopicAddButtonClick(self):
         if self.topicform.exec_():
-            topic = Topic.populate(name=unicode(self.topicform.NameEdit.text()))
+            topic = Topic.populate(name=unicode(self.topicform.nameEdit.text()))
             if self.checkTopic(topic):
                 if self.manager.save_object(topic):
                     self.resetTopics()
@@ -258,8 +258,8 @@
 
     def onBookAddButtonClick(self):
         if self.bookform.exec_():
-            book = Book.populate(name=unicode(self.bookform.NameEdit.text()),
-                publisher=unicode(self.bookform.PublisherEdit.text()))
+            book = Book.populate(name=unicode(self.bookform.nameEdit.text()),
+                publisher=unicode(self.bookform.publisherEdit.text()))
             if self.checkBook(book):
                 if self.manager.save_object(book):
                     self.resetBooks()
@@ -275,13 +275,13 @@
                     'This book already exists.'))
 
     def onAuthorEditButtonClick(self):
-        author_id = self._getCurrentItemId(self.AuthorsListWidget)
+        author_id = self._getCurrentItemId(self.authorsListWidget)
         if author_id != -1:
             author = self.manager.get_object(Author, author_id)
             self.authorform.setAutoDisplayName(False)
-            self.authorform.FirstNameEdit.setText(author.first_name)
-            self.authorform.LastNameEdit.setText(author.last_name)
-            self.authorform.DisplayEdit.setText(author.display_name)
+            self.authorform.firstNameEdit.setText(author.first_name)
+            self.authorform.lastNameEdit.setText(author.last_name)
+            self.authorform.displayEdit.setText(author.display_name)
             # Save the author's first and last name as well as the display name
             # for the case that they have to be restored.
             temp_first_name = author.first_name
@@ -289,10 +289,10 @@
             temp_display_name = author.display_name
             if self.authorform.exec_(False):
                 author.first_name = unicode(
-                    self.authorform.FirstNameEdit.text())
-                author.last_name = unicode(self.authorform.LastNameEdit.text())
+                    self.authorform.firstNameEdit.text())
+                author.last_name = unicode(self.authorform.lastNameEdit.text())
                 author.display_name = unicode(
-                    self.authorform.DisplayEdit.text())
+                    self.authorform.displayEdit.text())
                 if self.checkAuthor(author, True):
                     if self.manager.save_object(author):
                         self.resetAuthors()
@@ -328,14 +328,14 @@
                         'author already exists.'))
 
     def onTopicEditButtonClick(self):
-        topic_id = self._getCurrentItemId(self.TopicsListWidget)
+        topic_id = self._getCurrentItemId(self.topicsListWidget)
         if topic_id != -1:
             topic = self.manager.get_object(Topic, topic_id)
-            self.topicform.NameEdit.setText(topic.name)
+            self.topicform.nameEdit.setText(topic.name)
             # Save the topic's name for the case that he has to be restored.
             temp_name = topic.name
             if self.topicform.exec_(False):
-                topic.name = unicode(self.topicform.NameEdit.text())
+                topic.name = unicode(self.topicform.nameEdit.text())
                 if self.checkTopic(topic, True):
                     if self.manager.save_object(topic):
                         self.resetTopics()
@@ -365,20 +365,20 @@
                         'already exists.'))
 
     def onBookEditButtonClick(self):
-        book_id = self._getCurrentItemId(self.BooksListWidget)
+        book_id = self._getCurrentItemId(self.booksListWidget)
         if book_id != -1:
             book = self.manager.get_object(Book, book_id)
             if book.publisher is None:
                 book.publisher = u''
-            self.bookform.NameEdit.setText(book.name)
-            self.bookform.PublisherEdit.setText(book.publisher)
+            self.bookform.nameEdit.setText(book.name)
+            self.bookform.publisherEdit.setText(book.publisher)
             # Save the book's name and publisher for the case that they have to
             # be restored.
             temp_name = book.name
             temp_publisher = book.publisher
             if self.bookform.exec_(False):
-                book.name = unicode(self.bookform.NameEdit.text())
-                book.publisher = unicode(self.bookform.PublisherEdit.text())
+                book.name = unicode(self.bookform.nameEdit.text())
+                book.publisher = unicode(self.bookform.publisherEdit.text())
                 if self.checkBook(book, True):
                     if self.manager.save_object(book):
                         self.resetBooks()
@@ -466,7 +466,7 @@
         """
         Delete the author if the author is not attached to any songs.
         """
-        self._deleteItem(Author, self.AuthorsListWidget, self.resetAuthors,
+        self._deleteItem(Author, self.authorsListWidget, self.resetAuthors,
             translate('SongsPlugin.SongMaintenanceForm', 'Delete Author'),
             translate('SongsPlugin.SongMaintenanceForm',
                 'Are you sure you want to delete the selected author?'),
@@ -479,7 +479,7 @@
         """
         Delete the Book is the Book is not attached to any songs.
         """
-        self._deleteItem(Topic, self.TopicsListWidget, self.resetTopics,
+        self._deleteItem(Topic, self.topicsListWidget, self.resetTopics,
             translate('SongsPlugin.SongMaintenanceForm', 'Delete Topic'),
             translate('SongsPlugin.SongMaintenanceForm',
                 'Are you sure you want to delete the selected topic?'),
@@ -492,7 +492,7 @@
         """
         Delete the Book is the Book is not attached to any songs.
         """
-        self._deleteItem(Book, self.BooksListWidget, self.resetBooks,
+        self._deleteItem(Book, self.booksListWidget, self.resetBooks,
             translate('SongsPlugin.SongMaintenanceForm', 'Delete Book'),
             translate('SongsPlugin.SongMaintenanceForm',
                 'Are you sure you want to delete the selected book?'),

=== modified file 'openlp/plugins/songs/forms/topicsdialog.py'
--- openlp/plugins/songs/forms/topicsdialog.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/topicsdialog.py	2011-01-05 20:02:48 +0000
@@ -29,40 +29,35 @@
 from openlp.core.lib import translate
 
 class Ui_TopicsDialog(object):
-    def setupUi(self, TopicsDialog):
-        TopicsDialog.setObjectName(u'TopicsDialog')
-        TopicsDialog.resize(365, 77)
-        self.TopicLayout = QtGui.QFormLayout(TopicsDialog)
-        self.TopicLayout.setFieldGrowthPolicy(
-            QtGui.QFormLayout.ExpandingFieldsGrow)
-        self.TopicLayout.setMargin(8)
-        self.TopicLayout.setSpacing(8)
-        self.TopicLayout.setObjectName(u'TopicLayout')
-        self.NameLabel = QtGui.QLabel(TopicsDialog)
-        self.NameLabel.setObjectName(u'NameLabel')
-        self.TopicLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.NameLabel)
-        self.NameEdit = QtGui.QLineEdit(TopicsDialog)
-        self.NameEdit.setObjectName(u'NameEdit')
-        self.TopicLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.NameEdit)
-        self.TopicButtonBox = QtGui.QDialogButtonBox(TopicsDialog)
-        self.TopicButtonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.TopicButtonBox.setStandardButtons(
+    def setupUi(self, topicsDialog):
+        topicsDialog.setObjectName(u'topicsDialog')
+        topicsDialog.resize(300, 10)
+        self.dialogLayout = QtGui.QVBoxLayout(topicsDialog)
+        self.dialogLayout.setObjectName(u'dialogLayout')
+        self.nameLayout = QtGui.QFormLayout()
+        self.nameLayout.setObjectName(u'nameLayout')
+        self.nameLabel = QtGui.QLabel(topicsDialog)
+        self.nameLabel.setObjectName(u'nameLabel')
+        self.nameEdit = QtGui.QLineEdit(topicsDialog)
+        self.nameEdit.setObjectName(u'nameEdit')
+        self.nameLabel.setBuddy(self.nameEdit)
+        self.nameLayout.addRow(self.nameLabel, self.nameEdit)
+        self.dialogLayout.addLayout(self.nameLayout)
+        self.buttonBox = QtGui.QDialogButtonBox(topicsDialog)
+        self.buttonBox.setStandardButtons(
             QtGui.QDialogButtonBox.Save | QtGui.QDialogButtonBox.Cancel)
-        self.TopicButtonBox.setObjectName(u'TopicButtonBox')
-        self.TopicLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.TopicButtonBox)
-
-        self.retranslateUi(TopicsDialog)
-        QtCore.QObject.connect(self.TopicButtonBox,
-            QtCore.SIGNAL(u'accepted()'), TopicsDialog.accept)
-        QtCore.QObject.connect(self.TopicButtonBox,
-            QtCore.SIGNAL(u'rejected()'), TopicsDialog.reject)
-        QtCore.QMetaObject.connectSlotsByName(TopicsDialog)
-
-    def retranslateUi(self, TopicsDialog):
-        TopicsDialog.setWindowTitle(
+        self.buttonBox.setObjectName(u'buttonBox')
+        self.dialogLayout.addWidget(self.buttonBox)
+        self.retranslateUi(topicsDialog)
+        topicsDialog.setMaximumHeight(topicsDialog.sizeHint().height())
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'accepted()'), topicsDialog.accept)
+        QtCore.QObject.connect(self.buttonBox,
+            QtCore.SIGNAL(u'rejected()'), topicsDialog.reject)
+        QtCore.QMetaObject.connectSlotsByName(topicsDialog)
+
+    def retranslateUi(self, topicsDialog):
+        topicsDialog.setWindowTitle(
             translate('SongsPlugin.TopicsForm', 'Topic Maintenance'))
-        self.NameLabel.setText(
-            translate('SongsPlugin.TopicsForm', 'Topic name:'))
\ No newline at end of file
+        self.nameLabel.setText(
+            translate('SongsPlugin.TopicsForm', 'Topic name:'))

=== modified file 'openlp/plugins/songs/forms/topicsform.py'
--- openlp/plugins/songs/forms/topicsform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/topicsform.py	2011-01-05 20:02:48 +0000
@@ -42,17 +42,17 @@
 
     def exec_(self, clear=True):
         if clear:
-            self.NameEdit.clear()
-        self.NameEdit.setFocus()
+            self.nameEdit.clear()
+        self.nameEdit.setFocus()
         return QtGui.QDialog.exec_(self)
 
     def accept(self):
-        if not self.NameEdit.text():
+        if not self.nameEdit.text():
             QtGui.QMessageBox.critical(
                 self, translate('SongsPlugin.TopicsForm', 'Error'),
                 translate('SongsPlugin.TopicsForm',
                     'You need to type in a topic name.'))
-            self.NameEdit.setFocus()
+            self.nameEdit.setFocus()
             return False
         else:
-            return QtGui.QDialog.accept(self)
\ No newline at end of file
+            return QtGui.QDialog.accept(self)

=== modified file 'openlp/plugins/songs/lib/__init__.py'
--- openlp/plugins/songs/lib/__init__.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/lib/__init__.py	2011-01-05 20:02:48 +0000
@@ -24,6 +24,7 @@
 # Temple Place, Suite 330, Boston, MA 02111-1307 USA                          #
 ###############################################################################
 
+from PyQt4 import QtGui
 from openlp.core.lib import translate
 
 class VerseType(object):
@@ -123,6 +124,57 @@
             unicode(VerseType.to_string(VerseType.Other)).lower():
             return VerseType.Other
 
+
+def retrieve_windows_encoding(recommendation=None):
+    # map chardet result to compatible windows standard code page
+    codepage_mapping = {'IBM866': u'cp866', 'TIS-620': u'cp874',
+        'SHIFT_JIS': u'cp932', 'GB2312': u'cp936', 'HZ-GB-2312': u'cp936',
+        'EUC-KR': u'cp949', 'Big5': u'cp950', 'ISO-8859-2': u'cp1250',
+        'windows-1250': u'cp1250', 'windows-1251': u'cp1251',
+        'windows-1252': u'cp1252', 'ISO-8859-7': u'cp1253',
+        'windows-1253': u'cp1253', 'ISO-8859-8': u'cp1255',
+        'windows-1255': u'cp1255'}
+    if recommendation in codepage_mapping:
+        recommendation = codepage_mapping[recommendation]
+
+    # Show dialog for encoding selection
+    encodings = [(u'cp1256', translate('SongsPlugin', 'Arabic (CP-1256)')),
+        (u'cp1257', translate('SongsPlugin', 'Baltic (CP-1257)')),
+        (u'cp1250', translate('SongsPlugin', 'Central European (CP-1250)')),
+        (u'cp1251', translate('SongsPlugin', 'Cyrillic (CP-1251)')),
+        (u'cp1253', translate('SongsPlugin', 'Greek (CP-1253)')),
+        (u'cp1255', translate('SongsPlugin', 'Hebrew (CP-1255)')),
+        (u'cp932', translate('SongsPlugin', 'Japanese (CP-932)')),
+        (u'cp949', translate('SongsPlugin', 'Korean (CP-949)')),
+        (u'cp936', translate('SongsPlugin', 'Simplified Chinese (CP-936)')),
+        (u'cp874', translate('SongsPlugin', 'Thai (CP-874)')),
+        (u'cp950', translate('SongsPlugin', 'Traditional Chinese (CP-950)')),
+        (u'cp1254', translate('SongsPlugin', 'Turkish (CP-1254)')),
+        (u'cp1258', translate('SongsPlugin', 'Vietnam (CP-1258)')),
+        (u'cp1252', translate('SongsPlugin', 'Western European (CP-1252)'))]
+    recommended_index = -1
+    if recommendation:
+        for index in range(len(encodings)):
+            if recommendation == encodings[index][0]:
+                recommended_index = index
+                break
+    if recommended_index > 0:
+        choice = QtGui.QInputDialog.getItem(None,
+            translate('SongsPlugin', 'Character Encoding'),
+            translate('SongsPlugin', 'The codepage setting is responsible\n'
+                'for the correct character representation.\n'
+                'Usually you are fine with the preselected choise.'),
+            [pair[1] for pair in encodings], recommended_index, False)
+    else:
+        choice = QtGui.QInputDialog.getItem(None,
+            translate('SongsPlugin', 'Character Encoding'),
+            translate('SongsPlugin', 'Please choose the character encoding.\n'
+                'The encoding is responsible for the correct character '
+                'representation.'), [pair[1] for pair in encodings], 0, False)
+    if not choice[1]:
+        return None
+    return filter(lambda item: item[1] == choice[0], encodings)[0][0]
+
 from xml import LyricsXML, SongXMLBuilder, SongXMLParser, OpenLyricsParser
 from songstab import SongsTab
-from mediaitem import SongMediaItem
\ No newline at end of file
+from mediaitem import SongMediaItem

=== modified file 'openlp/plugins/songs/lib/ewimport.py'
--- openlp/plugins/songs/lib/ewimport.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/lib/ewimport.py	2011-01-05 20:02:48 +0000
@@ -32,6 +32,7 @@
 import struct
 
 from openlp.core.lib import translate
+from openlp.plugins.songs.lib import retrieve_windows_encoding
 from songimport import SongImport
 
 def strip_rtf(blob, encoding):
@@ -163,22 +164,25 @@
             self.encoding = u'cp1250'
         # The following codepage to actual encoding mappings have not been
         #  observed, but merely guessed.  Actual example files are needed.
-        #if code_page == 737:
-        #    self.encoding = u'cp1253'
-        #if code_page == 775:
-        #    self.encoding = u'cp1257'
-        #if code_page == 855:
-        #    self.encoding = u'cp1251'
-        #if code_page == 857:
-        #    self.encoding = u'cp1254'
-        #if code_page == 866:
-        #    self.encoding = u'cp1251'
-        #if code_page == 869:
-        #    self.encoding = u'cp1253'
-        #if code_page == 862:
-        #    self.encoding = u'cp1255'
-        #if code_page == 874:
-        #    self.encoding = u'cp874'
+        elif code_page == 737:
+            self.encoding = u'cp1253'
+        elif code_page == 775:
+            self.encoding = u'cp1257'
+        elif code_page == 855:
+            self.encoding = u'cp1251'
+        elif code_page == 857:
+            self.encoding = u'cp1254'
+        elif code_page == 866:
+            self.encoding = u'cp1251'
+        elif code_page == 869:
+            self.encoding = u'cp1253'
+        elif code_page == 862:
+            self.encoding = u'cp1255'
+        elif code_page == 874:
+            self.encoding = u'cp874'
+        self.encoding = retrieve_windows_encoding(self.encoding)
+        if not self.encoding:
+            return False
         # There does not appear to be a _reliable_ way of getting the number
         # of songs/records, so let's use file blocks for measuring progress.
         total_blocks = (db_size - header_size) / (block_size * 1024)
@@ -347,4 +351,4 @@
                 return u''
             return self.memo_file.read(blob_size)
         else:
-            return 0
\ No newline at end of file
+            return 0

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2010-12-31 19:22:41 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2011-01-05 20:02:48 +0000
@@ -74,46 +74,37 @@
     def addEndHeaderBar(self):
         self.addToolbarSeparator()
         ## Song Maintenance Button ##
-        self.addToolbarButton(
-            translate('SongsPlugin.MediaItem', 'Song Maintenance'),
-            translate('SongsPlugin.MediaItem',
-            'Maintain the lists of authors, topics and books'),
+        self.maintenanceAction = self.addToolbarButton(u'', u'',
             ':/songs/song_maintenance.png', self.onSongMaintenanceClick)
-        self.pageLayout.setSpacing(4)
-        self.SearchLayout = QtGui.QFormLayout()
-        self.SearchLayout.setMargin(0)
-        self.SearchLayout.setSpacing(4)
-        self.SearchLayout.setObjectName(u'SearchLayout')
-        self.SearchTextLabel = QtGui.QLabel(self)
-        self.SearchTextLabel.setAlignment(
-            QtCore.Qt.AlignBottom|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft)
-        self.SearchTextLabel.setObjectName(u'SearchTextLabel')
-        self.SearchLayout.setWidget(
-            0, QtGui.QFormLayout.LabelRole, self.SearchTextLabel)
-        self.SearchTextEdit = SearchEdit(self)
-        self.SearchTextEdit.setObjectName(u'SearchTextEdit')
-        self.SearchLayout.setWidget(
-            0, QtGui.QFormLayout.FieldRole, self.SearchTextEdit)
-        self.pageLayout.addLayout(self.SearchLayout)
-        self.SearchButtonLayout = QtGui.QHBoxLayout()
-        self.SearchButtonLayout.setMargin(0)
-        self.SearchButtonLayout.setSpacing(4)
-        self.SearchButtonLayout.setObjectName(u'SearchButtonLayout')
-        self.SearchButtonSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.SearchButtonLayout.addItem(self.SearchButtonSpacer)
-        self.SearchTextButton = QtGui.QPushButton(self)
-        self.SearchTextButton.setObjectName(u'SearchTextButton')
-        self.SearchButtonLayout.addWidget(self.SearchTextButton)
-        self.pageLayout.addLayout(self.SearchButtonLayout)
+        self.searchWidget = QtGui.QWidget(self)
+        self.searchWidget.setObjectName(u'searchWidget')
+        self.searchLayout = QtGui.QVBoxLayout(self.searchWidget)
+        self.searchLayout.setObjectName(u'searchLayout')
+        self.searchTextLayout = QtGui.QFormLayout()
+        self.searchTextLayout.setObjectName(u'searchTextLayout')
+        self.searchTextLabel = QtGui.QLabel(self.searchWidget)
+        self.searchTextLabel.setObjectName(u'searchTextLabel')
+        self.searchTextEdit = SearchEdit(self.searchWidget)
+        self.searchTextEdit.setObjectName(u'searchTextEdit')
+        self.searchTextLabel.setBuddy(self.searchTextEdit)
+        self.searchTextLayout.addRow(self.searchTextLabel, self.searchTextEdit)
+        self.searchLayout.addLayout(self.searchTextLayout)
+        self.searchButtonLayout = QtGui.QHBoxLayout()
+        self.searchButtonLayout.setObjectName(u'searchButtonLayout')
+        self.searchButtonLayout.addStretch()
+        self.searchTextButton = QtGui.QPushButton(self.searchWidget)
+        self.searchTextButton.setObjectName(u'searchTextButton')
+        self.searchButtonLayout.addWidget(self.searchTextButton)
+        self.searchLayout.addLayout(self.searchButtonLayout)
+        self.pageLayout.addWidget(self.searchWidget)
         # Signals and slots
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'plugin_list_refresh'), self.onSearchTextButtonClick)
-        QtCore.QObject.connect(self.SearchTextEdit,
+        QtCore.QObject.connect(self.searchTextEdit,
             QtCore.SIGNAL(u'returnPressed()'), self.onSearchTextButtonClick)
-        QtCore.QObject.connect(self.SearchTextButton,
+        QtCore.QObject.connect(self.searchTextButton,
             QtCore.SIGNAL(u'pressed()'), self.onSearchTextButtonClick)
-        QtCore.QObject.connect(self.SearchTextEdit,
+        QtCore.QObject.connect(self.searchTextEdit,
             QtCore.SIGNAL(u'textChanged(const QString&)'),
             self.onSearchTextEditChanged)
         QtCore.QObject.connect(Receiver.get_receiver(),
@@ -126,9 +117,9 @@
             QtCore.SIGNAL(u'songs_edit'), self.onRemoteEdit)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'songs_edit_clear'), self.onRemoteEditClear)
-        QtCore.QObject.connect(self.SearchTextEdit,
+        QtCore.QObject.connect(self.searchTextEdit,
             QtCore.SIGNAL(u'cleared()'), self.onClearTextButtonClick)
-        QtCore.QObject.connect(self.SearchTextEdit,
+        QtCore.QObject.connect(self.searchTextEdit,
             QtCore.SIGNAL(u'searchTypeChanged(int)'),
             self.onSearchTextButtonClick)
 
@@ -144,25 +135,32 @@
             QtCore.QVariant(u'True')).toBool()
 
     def retranslateUi(self):
-        self.SearchTextLabel.setText(
+        self.searchTextLabel.setText(
             translate('SongsPlugin.MediaItem', 'Search:'))
-        self.SearchTextButton.setText(
+        self.searchTextButton.setText(
             translate('SongsPlugin.MediaItem', 'Search'))
+        self.maintenanceAction.setText(
+            translate('SongsPlugin.MediaItem', 'Song Maintenance'))
+        self.maintenanceAction.setToolTip(translate('SongsPlugin.MediaItem',
+            'Maintain the lists of authors, topics and books'))
 
     def initialise(self):
-        self.SearchTextEdit.setSearchTypes([
-            (1, u':/songs/song_search_all.png', translate('SongsPlugin.MediaItem', 'Entire Song')),
-            (2, u':/songs/song_search_title.png', translate('SongsPlugin.MediaItem', 'Titles')),
-            (3, u':/songs/song_search_lyrics.png', translate('SongsPlugin.MediaItem', 'Lyrics')),
-            (4, u':/songs/song_search_author.png', translate('SongsPlugin.MediaItem', 'Authors'))
-        ])
+        self.searchTextEdit.setSearchTypes([
+            (1, u':/songs/song_search_all.png',
+                translate('SongsPlugin.MediaItem', 'Entire Song')),
+            (2, u':/songs/song_search_title.png',
+                translate('SongsPlugin.MediaItem', 'Titles')),
+            (3, u':/songs/song_search_lyrics.png',
+                translate('SongsPlugin.MediaItem', 'Lyrics')),
+            (4, u':/songs/song_search_author.png',
+                translate('SongsPlugin.MediaItem', 'Authors'))])
         self.configUpdated()
 
     def onSearchTextButtonClick(self):
-        search_keywords = unicode(self.SearchTextEdit.displayText())
+        search_keywords = unicode(self.searchTextEdit.displayText())
         search_results = []
-        # search_type = self.SearchTypeComboBox.currentIndex()
-        search_type = self.SearchTextEdit.currentSearchType()
+        # search_type = self.searchTypeComboBox.currentIndex()
+        search_type = self.searchTextEdit.currentSearchType()
         if search_type == 1:
             log.debug(u'Entire Song Search')
             search_results = self.parent.manager.get_all_objects(Song,
@@ -241,7 +239,7 @@
         """
         Clear the search text.
         """
-        self.SearchTextEdit.clear()
+        self.searchTextEdit.clear()
         self.onSearchTextButtonClick()
 
     def onSearchTextEditChanged(self, text):
@@ -252,9 +250,9 @@
         """
         if self.searchAsYouType:
             search_length = 1
-            if self.SearchTextEdit.currentSearchType() == 1:
+            if self.searchTextEdit.currentSearchType() == 1:
                 search_length = 3
-            elif self.SearchTextEdit.currentSearchType() == 3:
+            elif self.searchTextEdit.currentSearchType() == 3:
                 search_length = 7
             if len(text) > search_length:
                 self.onSearchTextButtonClick()

=== modified file 'openlp/plugins/songs/lib/olp1import.py'
--- openlp/plugins/songs/lib/olp1import.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/lib/olp1import.py	2011-01-05 20:02:48 +0000
@@ -28,13 +28,12 @@
 openlp.org 1.x song databases into the current installation database.
 """
 
-from PyQt4 import QtGui
-
 import logging
 from chardet.universaldetector import UniversalDetector
 import sqlite
 
 from openlp.core.lib import translate
+from openlp.plugins.songs.lib import retrieve_windows_encoding
 from songimport import SongImport
 
 log = logging.getLogger(__name__)
@@ -185,64 +184,4 @@
                     detector.close()
                     return detector.result[u'encoding']
         detector.close()
-        guess = detector.result[u'encoding']
-
-        # map chardet result to compatible windows standard code page
-        codepage_mapping = {'IBM866': u'cp866', 'TIS-620': u'cp874',
-            'SHIFT_JIS': u'cp932', 'GB2312': u'cp936', 'HZ-GB-2312': u'cp936',
-            'EUC-KR': u'cp949', 'Big5': u'cp950', 'ISO-8859-2': u'cp1250',
-            'windows-1250': u'cp1250', 'windows-1251': u'cp1251',
-            'windows-1252': u'cp1252', 'ISO-8859-7': u'cp1253',
-            'windows-1253': u'cp1253', 'ISO-8859-8': u'cp1255',
-            'windows-1255': u'cp1255'}
-        if guess in codepage_mapping:
-            guess = codepage_mapping[guess]
-        else:
-            guess = u'cp1252'
-
-        # Show dialog for encoding selection
-        encodings = [(u'cp1256', translate('SongsPlugin.OpenLP1SongImport',
-                'Arabic (CP-1256)')),
-            (u'cp1257', translate('SongsPlugin.OpenLP1SongImport',
-                'Baltic (CP-1257)')),
-            (u'cp1250', translate('SongsPlugin.OpenLP1SongImport',
-                'Central European (CP-1250)')),
-            (u'cp1251', translate('SongsPlugin.OpenLP1SongImport',
-                'Cyrillic (CP-1251)')),
-            (u'cp1253', translate('SongsPlugin.OpenLP1SongImport',
-                'Greek (CP-1253)')),
-            (u'cp1255', translate('SongsPlugin.OpenLP1SongImport',
-                'Hebrew (CP-1255)')),
-            (u'cp932', translate('SongsPlugin.OpenLP1SongImport',
-                'Japanese (CP-932)')),
-            (u'cp949', translate('SongsPlugin.OpenLP1SongImport',
-                'Korean (CP-949)')),
-            (u'cp936', translate('SongsPlugin.OpenLP1SongImport',
-                'Simplified Chinese (CP-936)')),
-            (u'cp874', translate('SongsPlugin.OpenLP1SongImport',
-                'Thai (CP-874)')),
-            (u'cp950', translate('SongsPlugin.OpenLP1SongImport',
-                'Traditional Chinese (CP-950)')),
-            (u'cp1254', translate('SongsPlugin.OpenLP1SongImport',
-                'Turkish (CP-1254)')),
-            (u'cp1258', translate('SongsPlugin.OpenLP1SongImport',
-                'Vietnam (CP-1258)')),
-            (u'cp1252', translate('SongsPlugin.OpenLP1SongImport',
-                'Western European (CP-1252)'))]
-        encoding_index = 0
-        for index in range(len(encodings)):
-            if guess == encodings[index][0]:
-                encoding_index = index
-                break
-        chosen_encoding = QtGui.QInputDialog.getItem(None,
-            translate('SongsPlugin.OpenLP1SongImport',
-                'Database Character Encoding'),
-            translate('SongsPlugin.OpenLP1SongImport',
-                'The codepage setting is responsible\n'
-                'for the correct character representation.\n'
-                'Usually you are fine with the preselected choise.'),
-            [pair[1] for pair in encodings], encoding_index, False)
-        if not chosen_encoding[1]:
-            return None
-        return filter(lambda item: item[1] == chosen_encoding[0],
-            encodings)[0][0]
\ No newline at end of file
+        return retrieve_windows_encoding(detector.result[u'encoding'])


Follow ups