← Back to team overview

openlp-core team mailing list archive

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

 

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

Requested reviews:
    openlp.org Core (openlp-core)
-- 
https://code.launchpad.net/~raoul-snyman/openlp/songmaintenance/+merge/9784
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2009-07-21 18:10:14 +0000
+++ openlp/core/ui/maindisplay.py	2009-08-06 14:51:38 +0000
@@ -24,8 +24,20 @@
 from openlp.core.lib import translate
 
 class MainDisplay(QtGui.QWidget):
-
-    def __init__(self, parent , screens):
+    """
+    This is the form that is used to display things on the projector.
+    """
+
+    def __init__(self, parent, screens):
+        """
+        The constructor for the display form.
+
+        ``parent``
+            The parent widget.
+
+        ``screens``
+            The list of screens.
+        """
         QtGui.QWidget.__init__(self, parent)
         self.setWindowTitle(u'OpenLP Display')
         self.screens = screens
@@ -37,7 +49,7 @@
         self.display.setScaledContents(True)
         self.layout.addWidget(self.display)
         self.displayBlank = False
-        self.blankFrame= None
+        self.blankFrame = None
         self.alertactive = False
         self.alerttext = u''
         self.alertTab = None
@@ -48,6 +60,10 @@
         Sets up the screen on a particular screen.
         @param (integer) screen This is the screen number.
         """
+        # Temporary fix until I can speak to Tim Bentley.
+        if screenNumber not in self.screens:
+            screenNumber = 0
+        # /Temporary fix
         screen = self.screens[screenNumber]
         if screen[u'number'] != screenNumber:
             # We will most probably never actually hit this bit, but just in
@@ -70,7 +86,8 @@
         painter_image.begin(self.InitialFrame)
         painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white)
         painter_image.drawImage((screen[u'size'].width() - splash_image.width()) / 2,
-                                (screen[u'size'].height() - splash_image.height()) / 2  , splash_image)
+                                (screen[u'size'].height() - splash_image.height()) / 2,
+                                splash_image)
         self.frameView(self.InitialFrame)
         #Build a Black screen
         painter = QtGui.QPainter()
@@ -86,7 +103,6 @@
         ``frame``
             Image frame to be rendered
         """
-
         self.frame = frame
         if self.timer_id != 0 :
             self.displayAlert()
@@ -119,7 +135,9 @@
         alertframe = QtGui.QPixmap.fromImage(self.frame)
         painter = QtGui.QPainter(alertframe)
         top = alertframe.rect().height() * 0.9
-        painter.fillRect(QtCore.QRect(0, top , alertframe.rect().width(), alertframe.rect().height() - top), QtGui.QColor(self.alertTab.bg_color))
+        painter.fillRect(
+            QtCore.QRect(0, top, alertframe.rect().width(), alertframe.rect().height() - top),
+            QtGui.QColor(self.alertTab.bg_color))
         font = QtGui.QFont()
         font.setFamily(self.alertTab.font_face)
         font.setBold(True)
@@ -128,12 +146,13 @@
         painter.setPen(QtGui.QColor(self.alertTab.font_color))
         x, y = (0, top)
         metrics=QtGui.QFontMetrics(font)
-        painter.drawText(x, y+metrics.height()-metrics.descent()-1, self.alerttext)
+        painter.drawText(
+            x, y + metrics.height() - metrics.descent() - 1, self.alerttext)
         painter.end()
         self.display.setPixmap(alertframe)
         # check to see if we have a timer running
         if self.timer_id == 0:
-            self.timer_id =  self.startTimer(int(self.alertTab.timeout) * 1000)
+            self.timer_id = self.startTimer(int(self.alertTab.timeout) * 1000)
 
     def timerEvent(self, event):
         if event.timerId() == self.timer_id:

=== modified file 'openlp/core/ui/mainwindow.py'
--- openlp/core/ui/mainwindow.py	2009-07-18 05:43:50 +0000
+++ openlp/core/ui/mainwindow.py	2009-08-06 13:17:36 +0000
@@ -129,13 +129,20 @@
         Hook to close the main window and display windows on exit
         """
         if self.oosNotSaved == True:
-            box = QtGui.QMessageBox()
-            box.setWindowTitle(translate(u'mainWindow', u'Question?'))
-            box.setText(translate(u'mainWindow', u'Save changes to Order of Service?'))
-            box.setIcon(QtGui.QMessageBox.Question)
-            box.setStandardButtons(QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Cancel);
-            box.setDefaultButton(QtGui.QMessageBox.Save);
-            ret = box.exec_()
+            ret = QtGui.QMessageBox.question(self,
+                translate(u'mainWindow', u'Save Changes to Service?'),
+                translate(u'mainWindow', u'Your service has been changed, do you want to save those changes?'),
+                QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Save),
+                QtGui.QMessageBox.Save)
+#
+#
+#            box = QtGui.QMessageBox()
+#            box.setWindowTitle(translate(u'mainWindow', u'Question?'))
+#            box.setText(translate(u'mainWindow', u'Save changes to Order of Service?'))
+#            box.setIcon(QtGui.QMessageBox.Question)
+#            box.setStandardButtons(QtGui.QMessageBox.Save | QtGui.QMessageBox.Discard | QtGui.QMessageBox.Cancel);
+#            box.setDefaultButton(QtGui.QMessageBox.Save);
+#            ret = box.exec_()
             if ret == QtGui.QMessageBox.Save:
                 self.ServiceManagerContents.onSaveService()
                 self.mainDisplay.close()

=== modified file 'openlp/core/ui/settingsform.py'
--- openlp/core/ui/settingsform.py	2009-06-16 18:21:24 +0000
+++ openlp/core/ui/settingsform.py	2009-08-06 13:17:36 +0000
@@ -24,7 +24,6 @@
 from openlp.core.lib import SettingsTab
 from openlp.core.resources import *
 from openlp.core.ui import GeneralTab, ThemesTab, AlertsTab
-
 from settingsdialog import Ui_SettingsDialog
 
 log = logging.getLogger(u'SettingsForm')
@@ -49,6 +48,6 @@
         self.SettingsTabWidget.addTab(tab, tab.title())
 
     def accept(self):
-        for tab_index in range(0,  self.SettingsTabWidget.count()):
+        for tab_index in range(0, self.SettingsTabWidget.count()):
             self.SettingsTabWidget.widget(tab_index).save()
-        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	2009-07-18 05:43:50 +0000
+++ openlp/plugins/songs/forms/editsongdialog.py	2009-08-04 20:23:33 +0000
@@ -1,151 +1,111 @@
 # -*- coding: utf-8 -*-
-# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
-"""
-OpenLP - Open Source Lyrics Projection
-Copyright (c) 2008 Raoul Snyman
-Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
-
-This program is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; version 2 of the License.
-
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program; if not, write to the Free Software Foundation, Inc., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-"""
-from openlp.core.lib import  translate
+
+# Form implementation generated from reading ui file '/home/raoul/Projects/openlp/songmaintenance/resources/forms/editsongdialog.ui'
+#
+# Created: Mon Jul 27 22:18:20 2009
+#      by: PyQt4 UI code generator 4.4.4
+#
+# WARNING! All changes made in this file will be lost!
+
 from PyQt4 import QtCore, QtGui
 
 class Ui_EditSongDialog(object):
     def setupUi(self, EditSongDialog):
-        EditSongDialog.setObjectName(u'EditSongDialog')
-        EditSongDialog.resize(786, 704)
+        EditSongDialog.setObjectName("EditSongDialog")
+        EditSongDialog.resize(645, 417)
         icon = QtGui.QIcon()
-        icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        icon.addPixmap(QtGui.QPixmap(":/icon/openlp.org-icon-32.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
         EditSongDialog.setWindowIcon(icon)
         EditSongDialog.setModal(True)
-        self.EditSongLayout = QtGui.QVBoxLayout(EditSongDialog)
-        self.EditSongLayout.setSpacing(8)
-        self.EditSongLayout.setMargin(8)
-        self.EditSongLayout.setObjectName(u'EditSongLayout')
-        self.TopWidget = QtGui.QWidget(EditSongDialog)
-        self.TopWidget.setObjectName(u'TopWidget')
-        self.TopLayout = QtGui.QHBoxLayout(self.TopWidget)
-        self.TopLayout.setSpacing(8)
-        self.TopLayout.setMargin(0)
-        self.TopLayout.setObjectName(u'TopLayout')
-        self.TextWidget = QtGui.QWidget(self.TopWidget)
-        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.TitleLabel = QtGui.QLabel(self.TextWidget)
-        self.TitleLabel.setObjectName(u'TitleLabel')
-        self.DetailsLayout.addWidget(self.TitleLabel)
-        self.TitleEditItem = QtGui.QLineEdit(self.TextWidget)
+        self.verticalLayout = QtGui.QVBoxLayout(EditSongDialog)
+        self.verticalLayout.setMargin(8)
+        self.verticalLayout.setObjectName("verticalLayout")
+        self.SongTabWidget = QtGui.QTabWidget(EditSongDialog)
+        self.SongTabWidget.setObjectName("SongTabWidget")
+        self.LyricsTab = QtGui.QWidget()
+        self.LyricsTab.setObjectName("LyricsTab")
+        self.LyricsTabLayout = QtGui.QGridLayout(self.LyricsTab)
+        self.LyricsTabLayout.setMargin(8)
+        self.LyricsTabLayout.setSpacing(8)
+        self.LyricsTabLayout.setObjectName("LyricsTabLayout")
+        self.TitleLabel = QtGui.QLabel(self.LyricsTab)
+        self.TitleLabel.setObjectName("TitleLabel")
+        self.LyricsTabLayout.addWidget(self.TitleLabel, 0, 0, 1, 1)
+        self.TitleEditItem = QtGui.QLineEdit(self.LyricsTab)
         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.DetailsLayout.addWidget(self.TitleEditItem)
-        self.AlternativeTitleLabel = QtGui.QLabel(self.TextWidget)
-        self.AlternativeTitleLabel.setObjectName(u'AlternativeTitleLabel')
-        self.DetailsLayout.addWidget(self.AlternativeTitleLabel)
-        self.AlternativeEdit = QtGui.QLineEdit(self.TextWidget)
-        self.AlternativeEdit.setObjectName(u'AlternativeEdit')
-        self.DetailsLayout.addWidget(self.AlternativeEdit)
-        self.LyricsLabel = QtGui.QLabel(self.TextWidget)
-        self.LyricsLabel.setObjectName(u'LyricsLabel')
-        self.DetailsLayout.addWidget(self.LyricsLabel)
-        self.VerseEditWidget = QtGui.QWidget(self.TextWidget)
-        self.VerseEditWidget.setObjectName(u'VerseEditWidget')
-        self.VerseEditLayout = QtGui.QVBoxLayout(self.VerseEditWidget)
-        self.VerseEditLayout.setSpacing(8)
-        self.VerseEditLayout.setMargin(0)
-        self.VerseEditLayout.setObjectName(u'VerseEditLayout')
-        self.VerseListWidget = QtGui.QListWidget(self.VerseEditWidget)
-        self.VerseListWidget.setObjectName(u'VerseListWidget')
+        self.TitleEditItem.setObjectName("TitleEditItem")
+        self.LyricsTabLayout.addWidget(self.TitleEditItem, 0, 1, 1, 2)
+        self.AlternativeTitleLabel = QtGui.QLabel(self.LyricsTab)
+        self.AlternativeTitleLabel.setObjectName("AlternativeTitleLabel")
+        self.LyricsTabLayout.addWidget(self.AlternativeTitleLabel, 1, 0, 1, 1)
+        self.AlternativeEdit = QtGui.QLineEdit(self.LyricsTab)
+        self.AlternativeEdit.setObjectName("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("LyricsLabel")
+        self.LyricsTabLayout.addWidget(self.LyricsLabel, 2, 0, 1, 1)
+        self.VerseListWidget = QtGui.QListWidget(self.LyricsTab)
+        self.VerseListWidget.setSpacing(2)
         self.VerseListWidget.setAlternatingRowColors(True)
-        self.VerseEditLayout.addWidget(self.VerseListWidget)
-        self.VerseButtonWidget = QtGui.QWidget(self.VerseEditWidget)
-        self.VerseButtonWidget.setObjectName(u'VerseButtonWidget')
-        self.VerseButtonLayout = QtGui.QHBoxLayout(self.VerseButtonWidget)
-        self.VerseButtonLayout.setSpacing(8)
-        self.VerseButtonLayout.setMargin(0)
-        self.VerseButtonLayout.setObjectName(u'VerseButtonLayout')
-        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.VerseButtonLayout.addItem(spacerItem)
-        self.AddButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.AddButton.setObjectName(u'AddButton')
-        self.VerseButtonLayout.addWidget(self.AddButton)
-        self.EditButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.EditButton.setObjectName(u'EditButton')
-        self.VerseButtonLayout.addWidget(self.EditButton)
-        self.DeleteButton = QtGui.QPushButton(self.VerseButtonWidget)
-        self.DeleteButton.setObjectName(u'DeleteButton')
-        self.VerseButtonLayout.addWidget(self.DeleteButton)
-        self.VerseEditLayout.addWidget(self.VerseButtonWidget)
-        self.DetailsLayout.addWidget(self.VerseEditWidget)
-        self.VerseOrderLabel = QtGui.QLabel(self.TextWidget)
-        self.VerseOrderLabel.setObjectName(u'VerseOrderLabel')
-        self.DetailsLayout.addWidget(self.VerseOrderLabel)
-        self.VerseOrderEdit = QtGui.QLineEdit(self.TextWidget)
-        self.VerseOrderEdit.setObjectName(u'VerseOrderEdit')
-        self.DetailsLayout.addWidget(self.VerseOrderEdit)
-        self.CommentsLabel = QtGui.QLabel(self.TextWidget)
-        self.CommentsLabel.setObjectName(u'CommentsLabel')
-        self.DetailsLayout.addWidget(self.CommentsLabel)
-        self.CommentsEdit = QtGui.QTextEdit(self.TextWidget)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.CommentsEdit.sizePolicy().hasHeightForWidth())
-        self.CommentsEdit.setSizePolicy(sizePolicy)
-        self.CommentsEdit.setMaximumSize(QtCore.QSize(16777215, 84))
-        self.CommentsEdit.setObjectName(u'CommentsEdit')
-        self.DetailsLayout.addWidget(self.CommentsEdit)
-        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.setObjectName(u'ThemeSelectionComboItem')
-        self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
-        self.DetailsLayout.addWidget(self.ThemeGroupBox)
-        self.TopLayout.addWidget(self.TextWidget)
-        self.AdditionalWidget = QtGui.QWidget(self.TopWidget)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.AdditionalWidget.sizePolicy().hasHeightForWidth())
-        self.AdditionalWidget.setSizePolicy(sizePolicy)
-        self.AdditionalWidget.setMinimumSize(QtCore.QSize(100, 0))
-        self.AdditionalWidget.setObjectName(u'AdditionalWidget')
-        self.AdditionalLayout = QtGui.QVBoxLayout(self.AdditionalWidget)
-        self.AdditionalLayout.setSpacing(8)
-        self.AdditionalLayout.setMargin(0)
-        self.AdditionalLayout.setObjectName(u'AdditionalLayout')
-        self.AuthorsGroupBox = QtGui.QGroupBox(self.AdditionalWidget)
-        self.AuthorsGroupBox.setObjectName(u'AuthorsGroupBox')
+        self.VerseListWidget.setObjectName("VerseListWidget")
+        self.LyricsTabLayout.addWidget(self.VerseListWidget, 2, 1, 1, 1)
+        self.VerseOrderLabel = QtGui.QLabel(self.LyricsTab)
+        self.VerseOrderLabel.setObjectName("VerseOrderLabel")
+        self.LyricsTabLayout.addWidget(self.VerseOrderLabel, 4, 0, 1, 1)
+        self.VerseOrderEdit = QtGui.QLineEdit(self.LyricsTab)
+        self.VerseOrderEdit.setObjectName("VerseOrderEdit")
+        self.LyricsTabLayout.addWidget(self.VerseOrderEdit, 4, 1, 1, 2)
+        self.VerseButtonWidget = QtGui.QWidget(self.LyricsTab)
+        self.VerseButtonWidget.setObjectName("VerseButtonWidget")
+        self.VerseButtonsLayout = QtGui.QVBoxLayout(self.VerseButtonWidget)
+        self.VerseButtonsLayout.setSpacing(8)
+        self.VerseButtonsLayout.setMargin(0)
+        self.VerseButtonsLayout.setObjectName("VerseButtonsLayout")
+        self.VerseAddButton = QtGui.QPushButton(self.VerseButtonWidget)
+        self.VerseAddButton.setObjectName("VerseAddButton")
+        self.VerseButtonsLayout.addWidget(self.VerseAddButton)
+        self.VerseEditButton = QtGui.QPushButton(self.VerseButtonWidget)
+        self.VerseEditButton.setObjectName("VerseEditButton")
+        self.VerseButtonsLayout.addWidget(self.VerseEditButton)
+        self.VerseEditAllButton = QtGui.QPushButton(self.VerseButtonWidget)
+        self.VerseEditAllButton.setObjectName("VerseEditAllButton")
+        self.VerseButtonsLayout.addWidget(self.VerseEditAllButton)
+        self.VerseDeleteButton = QtGui.QPushButton(self.VerseButtonWidget)
+        self.VerseDeleteButton.setObjectName("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, "")
+        self.AuthorsTab = QtGui.QWidget()
+        self.AuthorsTab.setObjectName("AuthorsTab")
+        self.AuthorsTabLayout = QtGui.QHBoxLayout(self.AuthorsTab)
+        self.AuthorsTabLayout.setSpacing(8)
+        self.AuthorsTabLayout.setMargin(8)
+        self.AuthorsTabLayout.setObjectName("AuthorsTabLayout")
+        self.AuthorsMaintenanceWidget = QtGui.QWidget(self.AuthorsTab)
+        self.AuthorsMaintenanceWidget.setObjectName("AuthorsMaintenanceWidget")
+        self.AuthorsMaintenanceLayout = QtGui.QVBoxLayout(self.AuthorsMaintenanceWidget)
+        self.AuthorsMaintenanceLayout.setSpacing(8)
+        self.AuthorsMaintenanceLayout.setMargin(0)
+        self.AuthorsMaintenanceLayout.setObjectName("AuthorsMaintenanceLayout")
+        self.AuthorsGroupBox = QtGui.QGroupBox(self.AuthorsMaintenanceWidget)
+        self.AuthorsGroupBox.setObjectName("AuthorsGroupBox")
         self.AuthorsLayout = QtGui.QVBoxLayout(self.AuthorsGroupBox)
         self.AuthorsLayout.setSpacing(8)
         self.AuthorsLayout.setMargin(8)
-        self.AuthorsLayout.setObjectName(u'AuthorsLayout')
+        self.AuthorsLayout.setObjectName("AuthorsLayout")
         self.AuthorAddWidget = QtGui.QWidget(self.AuthorsGroupBox)
-        self.AuthorAddWidget.setObjectName(u'AuthorAddWidget')
-        self.AddAuthorLayout = QtGui.QHBoxLayout(self.AuthorAddWidget)
-        self.AddAuthorLayout.setSpacing(8)
-        self.AddAuthorLayout.setMargin(0)
-        self.AddAuthorLayout.setObjectName(u'AddAuthorLayout')
+        self.AuthorAddWidget.setObjectName("AuthorAddWidget")
+        self.AuthorAddLayout = QtGui.QHBoxLayout(self.AuthorAddWidget)
+        self.AuthorAddLayout.setSpacing(8)
+        self.AuthorAddLayout.setMargin(0)
+        self.AuthorAddLayout.setObjectName("AuthorAddLayout")
         self.AuthorsSelectionComboItem = QtGui.QComboBox(self.AuthorAddWidget)
         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
         sizePolicy.setHorizontalStretch(0)
@@ -156,194 +116,283 @@
         self.AuthorsSelectionComboItem.setInsertPolicy(QtGui.QComboBox.InsertAlphabetically)
         self.AuthorsSelectionComboItem.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
         self.AuthorsSelectionComboItem.setMinimumContentsLength(8)
-        self.AuthorsSelectionComboItem.setObjectName(u'AuthorsSelectionComboItem')
-        self.AddAuthorLayout.addWidget(self.AuthorsSelectionComboItem)
-        self.AuthorAddtoSongItem = QtGui.QPushButton(self.AuthorAddWidget)
-        self.AuthorAddtoSongItem.setMaximumSize(QtCore.QSize(110, 16777215))
-        self.AuthorAddtoSongItem.setObjectName(u'AuthorAddtoSongItem')
-        self.AddAuthorLayout.addWidget(self.AuthorAddtoSongItem)
+        self.AuthorsSelectionComboItem.setObjectName("AuthorsSelectionComboItem")
+        self.AuthorAddLayout.addWidget(self.AuthorsSelectionComboItem)
+        self.AuthorAddButton = QtGui.QPushButton(self.AuthorAddWidget)
+        self.AuthorAddButton.setMaximumSize(QtCore.QSize(110, 16777215))
+        self.AuthorAddButton.setObjectName("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.AuthorsListView.setObjectName("AuthorsListView")
         self.AuthorsLayout.addWidget(self.AuthorsListView)
         self.AuthorRemoveWidget = QtGui.QWidget(self.AuthorsGroupBox)
-        self.AuthorRemoveWidget.setObjectName(u'AuthorRemoveWidget')
+        self.AuthorRemoveWidget.setObjectName("AuthorRemoveWidget")
         self.AuthorRemoveLayout = QtGui.QHBoxLayout(self.AuthorRemoveWidget)
         self.AuthorRemoveLayout.setSpacing(8)
         self.AuthorRemoveLayout.setMargin(0)
-        self.AuthorRemoveLayout.setObjectName(u'AuthorRemoveLayout')
+        self.AuthorRemoveLayout.setObjectName("AuthorRemoveLayout")
         spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
         self.AuthorRemoveLayout.addItem(spacerItem1)
-        self.AuthorRemoveItem = QtGui.QPushButton(self.AuthorRemoveWidget)
-        self.AuthorRemoveItem.setObjectName(u'AuthorRemoveItem')
-        self.AuthorRemoveLayout.addWidget(self.AuthorRemoveItem)
-#        self.AddAuthorsButton = QtGui.QPushButton(self.AuthorRemoveWidget)
-#        self.AddAuthorsButton.setObjectName(u'AddAuthorsButton')
-#        self.AuthorRemoveLayout.addWidget(self.AddAuthorsButton)
+        self.AuthorRemoveButton = QtGui.QPushButton(self.AuthorRemoveWidget)
+        self.AuthorRemoveButton.setObjectName("AuthorRemoveButton")
+        self.AuthorRemoveLayout.addWidget(self.AuthorRemoveButton)
         self.AuthorsLayout.addWidget(self.AuthorRemoveWidget)
-        self.AdditionalLayout.addWidget(self.AuthorsGroupBox)
-        self.SongBookGroup = QtGui.QGroupBox(self.AdditionalWidget)
-        self.SongBookGroup.setObjectName(u'SongBookGroup')
-        self.SongbookLayout = QtGui.QGridLayout(self.SongBookGroup)
-        self.SongbookLayout.setMargin(8)
-        self.SongbookLayout.setSpacing(8)
-        self.SongbookLayout.setObjectName(u'SongbookLayout')
-        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.setSizePolicy(sizePolicy)
-        self.SongbookCombo.setObjectName(u'SongbookCombo')
-        self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
-#        self.AddSongBookButton = QtGui.QPushButton(self.SongBookGroup)
-#        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
-#        sizePolicy.setHorizontalStretch(0)
-#        sizePolicy.setVerticalStretch(0)
-#        sizePolicy.setHeightForWidth(self.AddSongBookButton.sizePolicy().hasHeightForWidth())
-#        self.AddSongBookButton.setSizePolicy(sizePolicy)
-#        self.AddSongBookButton.setObjectName(u'AddSongBookButton')
-#        self.SongbookLayout.addWidget(self.AddSongBookButton, 0, 1, 1, 1)
-        self.AdditionalLayout.addWidget(self.SongBookGroup)
-        self.TopicGroupBox = QtGui.QGroupBox(self.AdditionalWidget)
+        self.AuthorsMaintenanceLayout.addWidget(self.AuthorsGroupBox)
+        self.MaintenanceWidget = QtGui.QWidget(self.AuthorsMaintenanceWidget)
+        self.MaintenanceWidget.setObjectName("MaintenanceWidget")
+        self.MaintenanceLayout = QtGui.QHBoxLayout(self.MaintenanceWidget)
+        self.MaintenanceLayout.setSpacing(0)
+        self.MaintenanceLayout.setMargin(0)
+        self.MaintenanceLayout.setObjectName("MaintenanceLayout")
+        self.MaintenanceButton = QtGui.QPushButton(self.MaintenanceWidget)
+        self.MaintenanceButton.setObjectName("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("TopicBookWidget")
+        self.TopicBookLayout = QtGui.QVBoxLayout(self.TopicBookWidget)
+        self.TopicBookLayout.setSpacing(8)
+        self.TopicBookLayout.setMargin(0)
+        self.TopicBookLayout.setObjectName("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.TopicGroupBox.setObjectName("TopicGroupBox")
         self.TopicLayout = QtGui.QVBoxLayout(self.TopicGroupBox)
         self.TopicLayout.setSpacing(8)
         self.TopicLayout.setMargin(8)
-        self.TopicLayout.setObjectName(u'TopicLayout')
+        self.TopicLayout.setObjectName("TopicLayout")
         self.TopicAddWidget = QtGui.QWidget(self.TopicGroupBox)
-        self.TopicAddWidget.setObjectName(u'TopicAddWidget')
+        self.TopicAddWidget.setObjectName("TopicAddWidget")
         self.TopicAddLayout = QtGui.QHBoxLayout(self.TopicAddWidget)
         self.TopicAddLayout.setSpacing(8)
         self.TopicAddLayout.setMargin(0)
-        self.TopicAddLayout.setObjectName(u'TopicAddLayout')
+        self.TopicAddLayout.setObjectName("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.setSizePolicy(sizePolicy)
-        self.SongTopicCombo.setObjectName(u'SongTopicCombo')
+        self.SongTopicCombo.setObjectName("SongTopicCombo")
         self.TopicAddLayout.addWidget(self.SongTopicCombo)
-        self.AddTopicsToSongButton = QtGui.QPushButton(self.TopicAddWidget)
+        self.TopicAddButton = QtGui.QPushButton(self.TopicAddWidget)
         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred)
         sizePolicy.setHorizontalStretch(0)
         sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.AddTopicsToSongButton.sizePolicy().hasHeightForWidth())
-        self.AddTopicsToSongButton.setSizePolicy(sizePolicy)
-        self.AddTopicsToSongButton.setObjectName(u'AddTopicsToSongButton')
-        self.TopicAddLayout.addWidget(self.AddTopicsToSongButton)
+        sizePolicy.setHeightForWidth(self.TopicAddButton.sizePolicy().hasHeightForWidth())
+        self.TopicAddButton.setSizePolicy(sizePolicy)
+        self.TopicAddButton.setObjectName("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.TopicsListView.setObjectName("TopicsListView")
         self.TopicLayout.addWidget(self.TopicsListView)
         self.TopicRemoveWidget = QtGui.QWidget(self.TopicGroupBox)
-        self.TopicRemoveWidget.setObjectName(u'TopicRemoveWidget')
+        self.TopicRemoveWidget.setObjectName("TopicRemoveWidget")
         self.TopicRemoveLayout = QtGui.QHBoxLayout(self.TopicRemoveWidget)
         self.TopicRemoveLayout.setSpacing(8)
         self.TopicRemoveLayout.setMargin(0)
-        self.TopicRemoveLayout.setObjectName(u'TopicRemoveLayout')
-        spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.TopicRemoveLayout.addItem(spacerItem2)
-        self.TopicRemoveItem = QtGui.QPushButton(self.TopicRemoveWidget)
-        self.TopicRemoveItem.setObjectName(u'TopicRemoveItem')
-        self.TopicRemoveLayout.addWidget(self.TopicRemoveItem)
-#        self.AddTopicButton = QtGui.QPushButton(self.TopicRemoveWidget)
-#        self.AddTopicButton.setObjectName(u'AddTopicButton')
-#        self.TopicRemoveLayout.addWidget(self.AddTopicButton)
+        self.TopicRemoveLayout.setObjectName("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("TopicRemoveButton")
+        self.TopicRemoveLayout.addWidget(self.TopicRemoveButton)
         self.TopicLayout.addWidget(self.TopicRemoveWidget)
-        self.AdditionalLayout.addWidget(self.TopicGroupBox)
-        self.CopyrightgroupBox = QtGui.QGroupBox(self.AdditionalWidget)
-        self.CopyrightgroupBox.setObjectName(u'CopyrightgroupBox')
-        self.CopyrightLayout = QtGui.QVBoxLayout(self.CopyrightgroupBox)
+        self.TopicBookLayout.addWidget(self.TopicGroupBox)
+        self.SongBookGroup = QtGui.QGroupBox(self.TopicBookWidget)
+        self.SongBookGroup.setObjectName("SongBookGroup")
+        self.SongbookLayout = QtGui.QGridLayout(self.SongBookGroup)
+        self.SongbookLayout.setMargin(8)
+        self.SongbookLayout.setSpacing(8)
+        self.SongbookLayout.setObjectName("SongbookLayout")
+        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.setSizePolicy(sizePolicy)
+        self.SongbookCombo.setObjectName("SongbookCombo")
+        self.SongbookLayout.addWidget(self.SongbookCombo, 0, 0, 1, 1)
+        self.TopicBookLayout.addWidget(self.SongBookGroup)
+        self.AuthorsTabLayout.addWidget(self.TopicBookWidget)
+        self.SongTabWidget.addTab(self.AuthorsTab, "")
+        self.ThemeTab = QtGui.QWidget()
+        self.ThemeTab.setObjectName("ThemeTab")
+        self.ThemeTabLayout = QtGui.QVBoxLayout(self.ThemeTab)
+        self.ThemeTabLayout.setSpacing(8)
+        self.ThemeTabLayout.setMargin(8)
+        self.ThemeTabLayout.setObjectName("ThemeTabLayout")
+        self.ThemeCopyCommentsWidget = QtGui.QWidget(self.ThemeTab)
+        self.ThemeCopyCommentsWidget.setObjectName("ThemeCopyCommentsWidget")
+        self.ThemeCopyCommentsLayout = QtGui.QHBoxLayout(self.ThemeCopyCommentsWidget)
+        self.ThemeCopyCommentsLayout.setSpacing(8)
+        self.ThemeCopyCommentsLayout.setMargin(0)
+        self.ThemeCopyCommentsLayout.setObjectName("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("TextWidget")
+        self.DetailsLayout = QtGui.QVBoxLayout(self.TextWidget)
+        self.DetailsLayout.setSpacing(8)
+        self.DetailsLayout.setMargin(0)
+        self.DetailsLayout.setObjectName("DetailsLayout")
+        self.ThemeGroupBox = QtGui.QGroupBox(self.TextWidget)
+        self.ThemeGroupBox.setObjectName("ThemeGroupBox")
+        self.ThemeLayout = QtGui.QHBoxLayout(self.ThemeGroupBox)
+        self.ThemeLayout.setSpacing(8)
+        self.ThemeLayout.setMargin(8)
+        self.ThemeLayout.setObjectName("ThemeLayout")
+        self.ThemeSelectionComboItem = QtGui.QComboBox(self.ThemeGroupBox)
+        self.ThemeSelectionComboItem.setObjectName("ThemeSelectionComboItem")
+        self.ThemeLayout.addWidget(self.ThemeSelectionComboItem)
+        self.ThemeAddButton = QtGui.QPushButton(self.ThemeGroupBox)
+        self.ThemeAddButton.setMaximumSize(QtCore.QSize(110, 16777215))
+        self.ThemeAddButton.setObjectName("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("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.CopyrightLayout.setObjectName("CopyrightLayout")
+        self.CopyrightWidget = QtGui.QWidget(self.CopyrightGroupBox)
+        self.CopyrightWidget.setObjectName("CopyrightWidget")
         self.CopyLayout = QtGui.QHBoxLayout(self.CopyrightWidget)
         self.CopyLayout.setSpacing(8)
         self.CopyLayout.setMargin(0)
-        self.CopyLayout.setObjectName(u'CopyLayout')
+        self.CopyLayout.setObjectName("CopyLayout")
         self.CopyrightEditItem = QtGui.QLineEdit(self.CopyrightWidget)
-        self.CopyrightEditItem.setObjectName(u'CopyrightEditItem')
+        self.CopyrightEditItem.setObjectName("CopyrightEditItem")
         self.CopyLayout.addWidget(self.CopyrightEditItem)
-        self.CopyrightInsertItem = QtGui.QPushButton(self.CopyrightWidget)
-        self.CopyrightInsertItem.setMaximumSize(QtCore.QSize(29, 16777215))
-        self.CopyrightInsertItem.setObjectName(u'CopyrightInsertItem')
-        self.CopyLayout.addWidget(self.CopyrightInsertItem)
+        self.CopyrightInsertButton = QtGui.QPushButton(self.CopyrightWidget)
+        self.CopyrightInsertButton.setMaximumSize(QtCore.QSize(29, 16777215))
+        self.CopyrightInsertButton.setObjectName("CopyrightInsertButton")
+        self.CopyLayout.addWidget(self.CopyrightInsertButton)
         self.CopyrightLayout.addWidget(self.CopyrightWidget)
-        self.CcliWidget = QtGui.QWidget(self.CopyrightgroupBox)
-        self.CcliWidget.setObjectName(u'CcliWidget')
+        self.CcliWidget = QtGui.QWidget(self.CopyrightGroupBox)
+        self.CcliWidget.setObjectName("CcliWidget")
         self.CCLILayout = QtGui.QHBoxLayout(self.CcliWidget)
         self.CCLILayout.setSpacing(8)
         self.CCLILayout.setMargin(0)
-        self.CCLILayout.setObjectName(u'CCLILayout')
+        self.CCLILayout.setObjectName("CCLILayout")
         self.CCLILabel = QtGui.QLabel(self.CcliWidget)
-        self.CCLILabel.setObjectName(u'CCLILabel')
+        self.CCLILabel.setObjectName("CCLILabel")
         self.CCLILayout.addWidget(self.CCLILabel)
         self.CCLNumberEdit = QtGui.QLineEdit(self.CcliWidget)
-        self.CCLNumberEdit.setObjectName(u'CCLNumberEdit')
+        self.CCLNumberEdit.setObjectName("CCLNumberEdit")
         self.CCLILayout.addWidget(self.CCLNumberEdit)
         self.CopyrightLayout.addWidget(self.CcliWidget)
-        self.AdditionalLayout.addWidget(self.CopyrightgroupBox)
-        self.TopLayout.addWidget(self.AdditionalWidget)
-        self.EditSongLayout.addWidget(self.TopWidget)
+        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("CommentsGroupBox")
+        self.CommentsLayout = QtGui.QVBoxLayout(self.CommentsGroupBox)
+        self.CommentsLayout.setSpacing(0)
+        self.CommentsLayout.setMargin(8)
+        self.CommentsLayout.setObjectName("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("CommentsEdit")
+        self.CommentsLayout.addWidget(self.CommentsEdit)
+        self.ThemeCopyCommentsLayout.addWidget(self.CommentsGroupBox)
+        self.ThemeTabLayout.addWidget(self.ThemeCopyCommentsWidget)
+        spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
+        self.ThemeTabLayout.addItem(spacerItem5)
+        self.SongTabWidget.addTab(self.ThemeTab, "")
+        self.verticalLayout.addWidget(self.SongTabWidget)
         self.ButtonBox = QtGui.QDialogButtonBox(EditSongDialog)
         self.ButtonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save)
-        self.ButtonBox.setObjectName(u'ButtonBox')
-        self.EditSongLayout.addWidget(self.ButtonBox)
+        self.ButtonBox.setObjectName("ButtonBox")
+        self.verticalLayout.addWidget(self.ButtonBox)
 
         self.retranslateUi(EditSongDialog)
-        QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'rejected()'), EditSongDialog.close)
-        QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL(u'accepted()'), self.onAccept)
+        self.SongTabWidget.setCurrentIndex(0)
+        QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("rejected()"), EditSongDialog.close)
+        QtCore.QObject.connect(self.ButtonBox, QtCore.SIGNAL("accepted()"), EditSongDialog.close)
         QtCore.QMetaObject.connectSlotsByName(EditSongDialog)
+        EditSongDialog.setTabOrder(self.SongTabWidget, self.TitleEditItem)
         EditSongDialog.setTabOrder(self.TitleEditItem, self.AlternativeEdit)
-        EditSongDialog.setTabOrder(self.AlternativeEdit, self.VerseOrderEdit)
-        EditSongDialog.setTabOrder(self.VerseOrderEdit, self.CommentsEdit)
-        EditSongDialog.setTabOrder(self.CommentsEdit, self.ThemeSelectionComboItem)
-        EditSongDialog.setTabOrder(self.ThemeSelectionComboItem, self.AuthorAddtoSongItem)
-        EditSongDialog.setTabOrder(self.AuthorAddtoSongItem, self.AuthorsListView)
-        EditSongDialog.setTabOrder(self.AuthorsListView, self.AuthorRemoveItem)
-        EditSongDialog.setTabOrder(self.AuthorRemoveItem, self.SongbookCombo)
-        #EditSongDialog.setTabOrder(self.SongbookCombo, self.AddSongBookButton)
-        #EditSongDialog.setTabOrder(self.AddSongBookButton, self.SongTopicCombo)
-        EditSongDialog.setTabOrder(self.SongbookCombo, self.SongTopicCombo)
-        EditSongDialog.setTabOrder(self.SongTopicCombo, self.TopicsListView)
-        EditSongDialog.setTabOrder(self.TopicsListView, self.TopicRemoveItem)
-        EditSongDialog.setTabOrder(self.TopicRemoveItem, self.CopyrightEditItem)
-        EditSongDialog.setTabOrder(self.CopyrightEditItem, self.CopyrightInsertItem)
-        EditSongDialog.setTabOrder(self.CopyrightInsertItem, self.CCLNumberEdit)
-        EditSongDialog.setTabOrder(self.CCLNumberEdit, self.ButtonBox)
+        EditSongDialog.setTabOrder(self.AlternativeEdit, self.VerseListWidget)
+        EditSongDialog.setTabOrder(self.VerseListWidget, self.VerseAddButton)
+        EditSongDialog.setTabOrder(self.VerseAddButton, self.VerseEditButton)
+        EditSongDialog.setTabOrder(self.VerseEditButton, self.VerseEditAllButton)
+        EditSongDialog.setTabOrder(self.VerseEditAllButton, self.VerseDeleteButton)
+        EditSongDialog.setTabOrder(self.VerseDeleteButton, self.VerseOrderEdit)
+        EditSongDialog.setTabOrder(self.VerseOrderEdit, self.AuthorsSelectionComboItem)
+        EditSongDialog.setTabOrder(self.AuthorsSelectionComboItem, self.AuthorAddButton)
+        EditSongDialog.setTabOrder(self.AuthorAddButton, self.AuthorsListView)
+        EditSongDialog.setTabOrder(self.AuthorsListView, self.AuthorRemoveButton)
+        EditSongDialog.setTabOrder(self.AuthorRemoveButton, self.MaintenanceButton)
+        EditSongDialog.setTabOrder(self.MaintenanceButton, self.SongTopicCombo)
+        EditSongDialog.setTabOrder(self.SongTopicCombo, self.TopicAddButton)
+        EditSongDialog.setTabOrder(self.TopicAddButton, self.TopicsListView)
+        EditSongDialog.setTabOrder(self.TopicsListView, self.TopicRemoveButton)
+        EditSongDialog.setTabOrder(self.TopicRemoveButton, self.SongbookCombo)
+        EditSongDialog.setTabOrder(self.SongbookCombo, self.ThemeSelectionComboItem)
+        EditSongDialog.setTabOrder(self.ThemeSelectionComboItem, self.ThemeAddButton)
+        EditSongDialog.setTabOrder(self.ThemeAddButton, self.CopyrightEditItem)
+        EditSongDialog.setTabOrder(self.CopyrightEditItem, self.CopyrightInsertButton)
+        EditSongDialog.setTabOrder(self.CopyrightInsertButton, self.CCLNumberEdit)
+        EditSongDialog.setTabOrder(self.CCLNumberEdit, self.CommentsEdit)
+        EditSongDialog.setTabOrder(self.CommentsEdit, self.ButtonBox)
 
     def retranslateUi(self, EditSongDialog):
-        EditSongDialog.setWindowTitle(translate(u'EditSongDialog', u'Song Editor'))
-        self.TitleLabel.setText(translate(u'EditSongDialog', u'Title:'))
-        self.AlternativeTitleLabel.setText(translate(u'EditSongDialog', u'Alternative Title:'))
-        self.LyricsLabel.setText(translate(u'EditSongDialog', u'Lyrics:'))
-        self.AddButton.setText(translate(u'EditSongDialog', u'Add'))
-        self.EditButton.setText(translate(u'EditSongDialog', u'Edit'))
-        self.DeleteButton.setText(translate(u'EditSongDialog', u'Delete'))
-        self.VerseOrderLabel.setText(translate(u'EditSongDialog', u'Verse Order:'))
-        self.CommentsLabel.setText(translate(u'EditSongDialog', u'Comments:'))
-        self.ThemeGroupBox.setTitle(translate(u'EditSongDialog', u'Theme'))
-        self.AuthorsGroupBox.setTitle(translate(u'EditSongDialog', u'Authors'))
-        self.AuthorAddtoSongItem.setText(translate(u'EditSongDialog', u'Add to Song'))
-        self.AuthorRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
-        #self.AddAuthorsButton.setText(translate(u'EditSongDialog', u'Manage Authors'))
-        self.SongBookGroup.setTitle(translate(u'EditSongDialog', u'Song Book'))
-        #self.AddSongBookButton.setText(translate(u'EditSongDialog', u'Manage Song Books'))
-        self.TopicGroupBox.setTitle(translate(u'EditSongDialog', u'Topic'))
-        self.AddTopicsToSongButton.setText(translate(u'EditSongDialog', u'Add to Song'))
-        self.TopicRemoveItem.setText(translate(u'EditSongDialog', u'Remove'))
-        #self.AddTopicButton.setText(translate(u'EditSongDialog', u'Manage Topics'))
-        self.CopyrightgroupBox.setTitle(translate(u'EditSongDialog', u'Copyright Infomaton'))
-        self.CopyrightInsertItem.setText(translate(u'EditSongDialog', u'(c)'))
-        self.CCLILabel.setText(translate(u'EditSongDialog', u'CCLI Number:'))
+        EditSongDialog.setWindowTitle(QtGui.QApplication.translate("EditSongDialog", "Song Editor", None, QtGui.QApplication.UnicodeUTF8))
+        self.TitleLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Title:", None, QtGui.QApplication.UnicodeUTF8))
+        self.AlternativeTitleLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Alternative Title:", None, QtGui.QApplication.UnicodeUTF8))
+        self.LyricsLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Lyrics:", None, QtGui.QApplication.UnicodeUTF8))
+        self.VerseOrderLabel.setText(QtGui.QApplication.translate("EditSongDialog", "Verse Order:", None, QtGui.QApplication.UnicodeUTF8))
+        self.VerseAddButton.setText(QtGui.QApplication.translate("EditSongDialog", "Add", None, QtGui.QApplication.UnicodeUTF8))
+        self.VerseEditButton.setText(QtGui.QApplication.translate("EditSongDialog", "Edit", None, QtGui.QApplication.UnicodeUTF8))
+        self.VerseEditAllButton.setText(QtGui.QApplication.translate("EditSongDialog", "Edit All", None, QtGui.QApplication.UnicodeUTF8))
+        self.VerseDeleteButton.setText(QtGui.QApplication.translate("EditSongDialog", "Delete", None, QtGui.QApplication.UnicodeUTF8))
+        self.SongTabWidget.setTabText(self.SongTabWidget.indexOf(self.LyricsTab), QtGui.QApplication.translate("EditSongDialog", "Title && Lyrics", None, QtGui.QApplication.UnicodeUTF8))
+        self.AuthorsGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Authors", None, QtGui.QApplication.UnicodeUTF8))
+        self.AuthorAddButton.setText(QtGui.QApplication.translate("EditSongDialog", "&Add to Song", None, QtGui.QApplication.UnicodeUTF8))
+        self.AuthorRemoveButton.setText(QtGui.QApplication.translate("EditSongDialog", "&Remove", None, QtGui.QApplication.UnicodeUTF8))
+        self.MaintenanceButton.setText(QtGui.QApplication.translate("EditSongDialog", "&Manage Authors, Topics, Books", None, QtGui.QApplication.UnicodeUTF8))
+        self.TopicGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Topic", None, QtGui.QApplication.UnicodeUTF8))
+        self.TopicAddButton.setText(QtGui.QApplication.translate("EditSongDialog", "A&dd to Song", None, QtGui.QApplication.UnicodeUTF8))
+        self.TopicRemoveButton.setText(QtGui.QApplication.translate("EditSongDialog", "R&emove", None, QtGui.QApplication.UnicodeUTF8))
+        self.SongBookGroup.setTitle(QtGui.QApplication.translate("EditSongDialog", "Song Book", None, QtGui.QApplication.UnicodeUTF8))
+        self.SongTabWidget.setTabText(self.SongTabWidget.indexOf(self.AuthorsTab), QtGui.QApplication.translate("EditSongDialog", "Authors, Topics && Book", None, QtGui.QApplication.UnicodeUTF8))
+        self.ThemeGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Theme", None, QtGui.QApplication.UnicodeUTF8))
+        self.ThemeAddButton.setText(QtGui.QApplication.translate("EditSongDialog", "Add a Theme", None, QtGui.QApplication.UnicodeUTF8))
+        self.CopyrightGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Copyright Information", None, QtGui.QApplication.UnicodeUTF8))
+        self.CopyrightInsertButton.setText(QtGui.QApplication.translate("EditSongDialog", "©", None, QtGui.QApplication.UnicodeUTF8))
+        self.CCLILabel.setText(QtGui.QApplication.translate("EditSongDialog", "CCLI Number:", None, QtGui.QApplication.UnicodeUTF8))
+        self.CommentsGroupBox.setTitle(QtGui.QApplication.translate("EditSongDialog", "Comments", None, QtGui.QApplication.UnicodeUTF8))
+        self.SongTabWidget.setTabText(self.SongTabWidget.indexOf(self.ThemeTab), QtGui.QApplication.translate("EditSongDialog", "Theme, Copyright Info && Comments", None, QtGui.QApplication.UnicodeUTF8))
+

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2009-08-02 16:13:59 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2009-08-06 14:51:38 +0000
@@ -18,12 +18,13 @@
 Place, Suite 330, Boston, MA 02111-1307 USA
 """
 import logging
+
 from PyQt4 import Qt, QtCore, QtGui
-from openlp.core.lib import SongXMLBuilder, SongXMLParser, Event, EventType, EventManager
-from openlp.plugins.songs.forms import AuthorsForm, TopicsForm, SongBookForm, \
-    EditVerseForm
+
+from openlp.core.lib import SongXMLBuilder, SongXMLParser, Event, \
+    EventType, EventManager
+from openlp.plugins.songs.forms import EditVerseForm
 from openlp.plugins.songs.lib.models import Song
-
 from editsongdialog import Ui_EditSongDialog
 
 class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
@@ -33,44 +34,46 @@
     global log
     log = logging.getLogger(u'EditSongForm')
     log.info(u'Song Editor loaded')
-    def __init__(self, songmanager, eventmanager,  parent=None):
+
+    def __init__(self, songmanager, eventmanager, parent=None):
         """
         Constructor
         """
         QtGui.QDialog.__init__(self, parent)
         self.setupUi(self)
         # Connecting signals and slots
-#        QtCore.QObject.connect(self.AddAuthorsButton,
-#            QtCore.SIGNAL(u'clicked()'), self.onAddAuthorsButtonClicked)
-        QtCore.QObject.connect(self.AuthorAddtoSongItem,
-            QtCore.SIGNAL(u'clicked()'), self.onAuthorAddtoSongItemClicked)
-        QtCore.QObject.connect(self.AuthorRemoveItem,
-            QtCore.SIGNAL(u'clicked()'), self.onAuthorRemovefromSongItemClicked)
+        QtCore.QObject.connect(self.AuthorAddButton,
+            QtCore.SIGNAL(u'clicked()'), self.onAuthorAddButtonClicked)
+        QtCore.QObject.connect(self.AuthorRemoveButton,
+            QtCore.SIGNAL(u'clicked()'), self.onAuthorRemoveButtonClicked)
         QtCore.QObject.connect(self.AuthorsListView,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onAuthorsListViewPressed)
-        QtCore.QObject.connect(self.AddTopicsToSongButton,
-            QtCore.SIGNAL(u'clicked()'), self.onTopicAddtoSongItemClicked)
-        QtCore.QObject.connect(self.TopicRemoveItem,
-            QtCore.SIGNAL(u'clicked()'), self.onTopicRemovefromSongItemClicked)
+        QtCore.QObject.connect(self.TopicAddButton,
+            QtCore.SIGNAL(u'clicked()'), self.onTopicAddButtonClicked)
+        QtCore.QObject.connect(self.TopicRemoveButton,
+            QtCore.SIGNAL(u'clicked()'), self.onTopicRemoveButtonClicked)
         QtCore.QObject.connect(self.TopicsListView,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onTopicListViewPressed)
-        QtCore.QObject.connect(self.CopyrightInsertItem,
-            QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertItemTriggered)
-        QtCore.QObject.connect(self.AddButton,
-            QtCore.SIGNAL(u'clicked()'), self.onAddVerseButtonClicked)
-        QtCore.QObject.connect(self.EditButton,
-            QtCore.SIGNAL(u'clicked()'), self.onEditVerseButtonClicked)
-        QtCore.QObject.connect(self.DeleteButton,
-            QtCore.SIGNAL(u'clicked()'), self.onDeleteVerseButtonClicked)
+        QtCore.QObject.connect(self.CopyrightInsertButton,
+            QtCore.SIGNAL(u'clicked()'), self.onCopyrightInsertButtonTriggered)
+        QtCore.QObject.connect(self.VerseAddButton,
+            QtCore.SIGNAL(u'clicked()'), self.onVerseAddButtonClicked)
+        QtCore.QObject.connect(self.VerseEditButton,
+            QtCore.SIGNAL(u'clicked()'), self.onVerseEditButtonClicked)
+        QtCore.QObject.connect(self.VerseDeleteButton,
+            QtCore.SIGNAL(u'clicked()'), self.onVerseDeleteButtonClicked)
         QtCore.QObject.connect(self.VerseListWidget,
             QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onVerseListViewPressed)
         QtCore.QObject.connect(self.SongbookCombo,
             QtCore.SIGNAL(u'activated(int)'), self.onSongBookComboChanged)
         QtCore.QObject.connect(self.ThemeSelectionComboItem,
             QtCore.SIGNAL(u'activated(int)'), self.onThemeComboChanged)
+        QtCore.QObject.connect(self.MaintenanceButton,
+            QtCore.SIGNAL(u'clicked()'), self.onMaintenanceButtonClicked)
         # Create other objects and forms
         self.songmanager = songmanager
         self.eventmanager = eventmanager
+        self.parent = parent
         self.verse_form = EditVerseForm()
         self.initialise()
         self.AuthorsListView.setSortingEnabled(False)
@@ -79,10 +82,10 @@
         self.TopicsListView.setAlternatingRowColors(True)
 
     def initialise(self):
-        self.EditButton.setEnabled(False)
-        self.DeleteButton.setEnabled(False)
-        self.AuthorRemoveItem.setEnabled(False)
-        self.TopicRemoveItem.setEnabled(False)
+        self.VerseEditButton.setEnabled(False)
+        self.VerseDeleteButton.setEnabled(False)
+        self.AuthorRemoveButton.setEnabled(False)
+        self.TopicRemoveButton.setEnabled(False)
         self.title_change = False
 
     def loadAuthors(self):
@@ -177,7 +180,7 @@
             self.CCLNumberEdit.setText(u'')
         #lazy xml migration for now
         if self.song.lyrics.startswith(u'<?xml version='):
-            songXML=SongXMLParser(self.song.lyrics)
+            songXML = SongXMLParser(self.song.lyrics)
             verseList = songXML.get_verses()
             for verse in verseList:
                 self.VerseListWidget.addItem(verse[1])
@@ -201,7 +204,7 @@
         self.title_change = False
         self.TitleEditItem.setFocus(QtCore.Qt.OtherFocusReason)
 
-    def onAuthorAddtoSongItemClicked(self):
+    def onAuthorAddButtonClicked(self):
         item = int(self.AuthorsSelectionComboItem.currentIndex())
         if item > -1:
             item_id = (self.AuthorsSelectionComboItem.itemData(item)).toInt()[0]
@@ -213,9 +216,9 @@
 
     def onAuthorsListViewPressed(self):
         if self.AuthorsListView.count() > 1:
-            self.AuthorRemoveItem.setEnabled(True)
+            self.AuthorRemoveButton.setEnabled(True)
 
-    def onAuthorRemovefromSongItemClicked(self):
+    def onAuthorRemoveButtonClicked(self):
         self.AuthorRemoveItem.setEnabled(False)
         item = self.AuthorsListView.currentItem()
         author_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
@@ -224,7 +227,7 @@
         row = self.AuthorsListView.row(item)
         self.AuthorsListView.takeItem(row)
 
-    def onTopicAddtoSongItemClicked(self):
+    def onTopicAddButtonClicked(self):
         item = int(self.SongTopicCombo.currentIndex())
         if item > -1:
             item_id = (self.SongTopicCombo.itemData(item)).toInt()[0]
@@ -235,10 +238,10 @@
             self.TopicsListView.addItem(topic_item)
 
     def onTopicListViewPressed(self):
-        self.TopicRemoveItem.setEnabled(True)
+        self.TopicRemoveButton.setEnabled(True)
 
-    def onTopicRemovefromSongItemClicked(self):
-        self.TopicRemoveItem.setEnabled(False)
+    def onTopicRemoveButtonClicked(self):
+        self.TopicRemoveButton.setEnabled(False)
         item = self.TopicsListView.currentItem()
         topic_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
         topic = self.songmanager.get_topic(topic_id)
@@ -262,29 +265,29 @@
             self.song.theme_name = them_name
 
     def onVerseListViewPressed(self):
-        self.EditButton.setEnabled(True)
-        self.DeleteButton.setEnabled(True)
+        self.VerseEditButton.setEnabled(True)
+        self.VerseDeleteButton.setEnabled(True)
 
-    def onAddVerseButtonClicked(self):
+    def onVerseAddButtonClicked(self):
         self.verse_form.setVerse(u'')
         self.verse_form.exec_()
         self.VerseListWidget.addItem(self.verse_form.getVerse())
 
-    def onEditVerseButtonClicked(self):
+    def onVerseEditButtonClicked(self):
         item = self.VerseListWidget.currentItem()
         if item is not None:
             self.verse_form.setVerse(item.text())
             self.verse_form.exec_()
             item.setText(self.verse_form.getVerse())
         self.VerseListWidget.repaint()
-        self.EditButton.setEnabled(False)
-        self.DeleteButton.setEnabled(False)
+        self.VerseEditButton.setEnabled(False)
+        self.VerseDeleteButton.setEnabled(False)
 
-    def onDeleteVerseButtonClicked(self):
+    def onVerseDeleteButtonClicked(self):
         item = self.VerseListWidget.takeItem(self.VerseListWidget.currentRow())
         item = None
-        self.EditButton.setEnabled(False)
-        self.DeleteButton.setEnabled(False)
+        self.VerseEditButton.setEnabled(False)
+        self.VerseDeleteButton.setEnabled(False)
 
     def _validate_song(self):
         """
@@ -323,7 +326,7 @@
     def on_CCLNumberEdit_lostFocus(self):
         self.song.ccli_number = self.CCLNumberEdit.text()
 
-    def onCopyrightInsertItemTriggered(self):
+    def onCopyrightInsertButtonTriggered(self):
         text = self.CopyrightEditItem.displayText()
         pos = self.CopyrightEditItem.cursorPosition()
         text = text[:pos] + u'©' + text[pos:]
@@ -331,6 +334,12 @@
         self.CopyrightEditItem.setFocus()
         self.CopyrightEditItem.setCursorPosition(pos + 1)
 
+    def onMaintenanceButtonClicked(self):
+        self.parent.song_maintenance_form.exec_()
+        self.loadAuthors()
+        self.loadBooks()
+        self.loadTopics()
+
     def onAccept(self):
         log.debug(u'OnAccept')
         if not self._validate_song():

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2009-07-26 13:02:37 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2009-08-06 13:17:36 +0000
@@ -20,14 +20,14 @@
 import logging
 
 from PyQt4 import QtCore, QtGui
+
 from openlp.core.lib import MediaManagerItem, translate, ServiceItem, \
     SongXMLParser, contextMenuAction, contextMenuSeparator
-from openlp.plugins.songs.forms import EditSongForm, AuthorsForm, \
-    TopicsForm, SongBookForm, SongMaintenanceForm
+from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm
 
 class SongList(QtGui.QListWidget):
 
-    def __init__(self,parent=None,name=None):
+    def __init__(self, parent=None, name=None):
         QtGui.QListWidget.__init__(self,parent)
 
     def mouseMoveEvent(self, event):
@@ -59,7 +59,7 @@
         self.PluginTextShort = u'Song'
         self.ConfigSection = u'song'
         MediaManagerItem.__init__(self, parent, icon, title)
-        self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager)
+        self.edit_song_form = EditSongForm(self.parent.songmanager, self.parent.event_manager, self)
         self.song_maintenance_form = SongMaintenanceForm(self.parent.songmanager, self)
 
     def setupUi(self):

=== modified file 'openlp/plugins/songs/songsplugin.py'
--- openlp/plugins/songs/songsplugin.py	2009-06-26 18:54:05 +0000
+++ openlp/plugins/songs/songsplugin.py	2009-08-06 14:51:38 +0000
@@ -71,15 +71,22 @@
         self.ImportSongMenu.setTitle(translate(u'main_window', u'&Song'))
         self.ImportOpenSongItem.setText(translate(u'main_window', u'OpenSong'))
         self.ImportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0'))
-        self.ImportOpenlp1Item.setToolTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
-        self.ImportOpenlp1Item.setStatusTip(translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
+        self.ImportOpenlp1Item.setToolTip(
+            translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
+        self.ImportOpenlp1Item.setStatusTip(
+            translate(u'main_window', u'Export songs in openlp.org 1.0 format'))
         self.ImportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0'))
-        self.ImportOpenlp2Item.setToolTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
-        self.ImportOpenlp2Item.setStatusTip(translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
+        self.ImportOpenlp2Item.setToolTip(
+            translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
+        self.ImportOpenlp2Item.setStatusTip(
+            translate(u'main_window', u'Export songs in OpenLP 2.0 format'))
         # Signals and slots
-        QtCore.QObject.connect(self.ImportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
-        QtCore.QObject.connect(self.ImportOpenlp2Item, QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
-        QtCore.QObject.connect(self.ImportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onImportOpenSongItemClick)
+        QtCore.QObject.connect(self.ImportOpenlp1Item,
+            QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
+        QtCore.QObject.connect(self.ImportOpenlp2Item,
+            QtCore.SIGNAL(u'triggered()'), self.onImportOpenlp1ItemClick)
+        QtCore.QObject.connect(self.ImportOpenSongItem,
+            QtCore.SIGNAL(u'triggered()'), self.onImportOpenSongItemClick)
 
     def add_export_menu_item(self, export_menu):
         self.ExportSongMenu = QtGui.QMenu(export_menu)
@@ -101,8 +108,10 @@
         self.ExportOpenlp1Item.setText(translate(u'main_window', u'openlp.org 1.0'))
         self.ExportOpenlp2Item.setText(translate(u'main_window', u'OpenLP 2.0'))
         # Signals and slots
-        QtCore.QObject.connect(self.ExportOpenlp1Item, QtCore.SIGNAL(u'triggered()'), self.onExportOpenlp1ItemClicked)
-        QtCore.QObject.connect(self.ExportOpenSongItem, QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked)
+        QtCore.QObject.connect(self.ExportOpenlp1Item,
+            QtCore.SIGNAL(u'triggered()'), self.onExportOpenlp1ItemClicked)
+        QtCore.QObject.connect(self.ExportOpenSongItem,
+            QtCore.SIGNAL(u'triggered()'), self.onExportOpenSongItemClicked)
 
     def initialise(self):
         self.media_item.displayResultsSong(self.songmanager.get_songs())

=== modified file 'resources/forms/editsongdialog.ui'
--- resources/forms/editsongdialog.ui	2009-03-07 21:38:59 +0000
+++ resources/forms/editsongdialog.ui	2009-08-04 20:23:33 +0000
@@ -1,554 +1,653 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
  <class>EditSongDialog</class>
- <widget class="QDialog" name="EditSongDialog" >
-  <property name="geometry" >
+ <widget class="QDialog" name="EditSongDialog">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>786</width>
-    <height>704</height>
+    <width>645</width>
+    <height>417</height>
    </rect>
   </property>
-  <property name="windowTitle" >
+  <property name="windowTitle">
    <string>Song Editor</string>
   </property>
-  <property name="windowIcon" >
-   <iconset resource="../images/openlp-2.qrc" >
+  <property name="windowIcon">
+   <iconset>
     <normaloff>:/icon/openlp.org-icon-32.bmp</normaloff>:/icon/openlp.org-icon-32.bmp</iconset>
   </property>
-  <property name="modal" >
+  <property name="modal">
    <bool>true</bool>
   </property>
-  <layout class="QVBoxLayout" name="EditSongLayout" >
-   <property name="spacing" >
-    <number>8</number>
-   </property>
-   <property name="margin" >
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="margin">
     <number>8</number>
    </property>
    <item>
-    <widget class="QWidget" native="1" name="TopWidget" >
-     <layout class="QHBoxLayout" name="TopLayout" >
-      <property name="spacing" >
-       <number>8</number>
-      </property>
-      <property name="margin" >
-       <number>0</number>
-      </property>
-      <item>
-       <widget class="QWidget" native="1" name="TextWidget" >
-        <layout class="QVBoxLayout" name="DetailsLayout" >
-         <property name="spacing" >
-          <number>8</number>
-         </property>
-         <property name="margin" >
-          <number>0</number>
-         </property>
-         <item>
-          <widget class="QLabel" name="TitleLabel" >
-           <property name="text" >
-            <string>Title:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLineEdit" name="TitleEditItem" >
-           <property name="sizePolicy" >
-            <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="AlternativeTitleLabel" >
-           <property name="text" >
-            <string>Alternative Title:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLineEdit" name="AlternativeEdit" />
-         </item>
-         <item>
-          <widget class="QLabel" name="LyricsLabel" >
-           <property name="text" >
-            <string>Lyrics:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QWidget" native="1" name="VerseEditWidget" >
-           <layout class="QVBoxLayout" name="VerseEditLayout" >
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <property name="margin" >
-             <number>0</number>
-            </property>
-            <item>
-             <widget class="QListWidget" name="VerseListWidget" />
-            </item>
-            <item>
-             <widget class="QWidget" native="1" name="VerseButtonWidget" >
-              <layout class="QHBoxLayout" name="VerseButtonLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <spacer name="ButtonSpacer" >
-                 <property name="orientation" >
-                  <enum>Qt::Horizontal</enum>
-                 </property>
-                 <property name="sizeHint" stdset="0" >
-                  <size>
-                   <width>40</width>
-                   <height>20</height>
-                  </size>
-                 </property>
-                </spacer>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AddButton" >
-                 <property name="text" >
-                  <string>Add</string>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="EditButton" >
-                 <property name="text" >
-                  <string>Edit</string>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="DeleteButton" >
-                 <property name="text" >
-                  <string>Delete</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="VerseOrderLabel" >
-           <property name="text" >
-            <string>Verse Order:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLineEdit" name="VerseOrderEdit" />
-         </item>
-         <item>
-          <widget class="QLabel" name="CommentsLabel" >
-           <property name="text" >
-            <string>Comments:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QTextEdit" name="CommentsEdit" >
-           <property name="sizePolicy" >
-            <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="maximumSize" >
-            <size>
-             <width>16777215</width>
-             <height>84</height>
-            </size>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QGroupBox" name="ThemeGroupBox" >
-           <property name="title" >
-            <string>Theme</string>
-           </property>
-           <layout class="QHBoxLayout" name="ThemeLayout" >
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <property name="margin" >
-             <number>8</number>
-            </property>
-            <item>
-             <widget class="QComboBox" name="ThemeSelectionComboItem" />
-            </item>
-            <item>
-             <widget class="QPushButton" name="ThemeAddItem" >
-              <property name="maximumSize" >
-               <size>
-                <width>110</width>
-                <height>16777215</height>
-               </size>
-              </property>
-              <property name="text" >
-               <string>Add a Theme</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-        </layout>
-       </widget>
-      </item>
-      <item>
-       <widget class="QWidget" native="1" name="AdditionalWidget" >
-        <property name="sizePolicy" >
-         <sizepolicy vsizetype="Preferred" hsizetype="Minimum" >
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize" >
-         <size>
-          <width>100</width>
-          <height>0</height>
-         </size>
-        </property>
-        <layout class="QVBoxLayout" name="AdditionalLayout" >
-         <property name="spacing" >
-          <number>8</number>
-         </property>
-         <property name="margin" >
-          <number>0</number>
-         </property>
-         <item>
-          <widget class="QGroupBox" name="AuthorsGroupBox" >
-           <property name="title" >
-            <string>Authors</string>
-           </property>
-           <layout class="QVBoxLayout" name="AuthorsLayout" >
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <property name="margin" >
-             <number>8</number>
-            </property>
-            <item>
-             <widget class="QWidget" native="1" name="AuthorAddWidget" >
-              <layout class="QHBoxLayout" name="AddAuthorLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <widget class="QComboBox" name="AuthorsSelectionComboItem" >
-                 <property name="sizePolicy" >
-                  <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
-                 <property name="editable" >
-                  <bool>false</bool>
-                 </property>
-                 <property name="insertPolicy" >
-                  <enum>QComboBox::InsertAlphabetically</enum>
-                 </property>
-                 <property name="sizeAdjustPolicy" >
-                  <enum>QComboBox::AdjustToMinimumContentsLength</enum>
-                 </property>
-                 <property name="minimumContentsLength" >
-                  <number>8</number>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AuthorAddtoSongItem" >
-                 <property name="maximumSize" >
-                  <size>
-                   <width>110</width>
-                   <height>16777215</height>
-                  </size>
-                 </property>
-                 <property name="text" >
-                  <string>Add to Song</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-            <item>
-             <widget class="QTableWidget" name="AuthorsListView" >
-              <property name="alternatingRowColors" >
-               <bool>true</bool>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QWidget" native="1" name="AuthorRemoveWidget" >
-              <layout class="QHBoxLayout" name="AuthorRemoveLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <spacer name="AuthorsSpacer" >
-                 <property name="orientation" >
-                  <enum>Qt::Horizontal</enum>
-                 </property>
-                 <property name="sizeHint" stdset="0" >
-                  <size>
-                   <width>40</width>
-                   <height>20</height>
-                  </size>
-                 </property>
-                </spacer>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AuthorRemoveItem" >
-                 <property name="text" >
-                  <string>Remove</string>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AddAuthorsButton" >
-                 <property name="text" >
-                  <string>Manage Authors</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-         <item>
-          <widget class="QGroupBox" name="SongBookGroup" >
-           <property name="title" >
-            <string>Song Book</string>
-           </property>
-           <layout class="QGridLayout" name="SongbookLayout" >
-            <property name="margin" >
-             <number>8</number>
-            </property>
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <item row="0" column="0" >
-             <widget class="QComboBox" name="SongbookCombo" >
-              <property name="sizePolicy" >
-               <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1" >
-             <widget class="QPushButton" name="AddSongBookButton" >
-              <property name="sizePolicy" >
-               <sizepolicy vsizetype="Minimum" hsizetype="Minimum" >
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-              <property name="text" >
-               <string>Manage Song Books</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-         <item>
-          <widget class="QGroupBox" name="TopicGroupBox" >
-           <property name="sizePolicy" >
-            <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
-           </property>
-           <property name="title" >
-            <string>Topic</string>
-           </property>
-           <layout class="QVBoxLayout" name="TopicLayout" >
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <property name="margin" >
-             <number>8</number>
-            </property>
-            <item>
-             <widget class="QWidget" native="1" name="TopicAddWidget" >
-              <layout class="QHBoxLayout" name="TopicAddLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <widget class="QComboBox" name="SongTopicCombo" >
-                 <property name="sizePolicy" >
-                  <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AddTopicsToSongButton" >
-                 <property name="sizePolicy" >
-                  <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
-                 <property name="text" >
-                  <string>Add to Song</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-            <item>
-             <widget class="QTableWidget" name="ToticsListView" >
-              <property name="alternatingRowColors" >
-               <bool>true</bool>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QWidget" native="1" name="TopicRemoveWidget" >
-              <layout class="QHBoxLayout" name="TopicRemoveLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <spacer name="TopicsSpacer" >
-                 <property name="orientation" >
-                  <enum>Qt::Horizontal</enum>
-                 </property>
-                 <property name="sizeHint" stdset="0" >
-                  <size>
-                   <width>40</width>
-                   <height>20</height>
-                  </size>
-                 </property>
-                </spacer>
-               </item>
-               <item>
-                <widget class="QPushButton" name="pushButton" >
-                 <property name="text" >
-                  <string>Remove</string>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QPushButton" name="AddTopicButton" >
-                 <property name="text" >
-                  <string>Manage Topics</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-         <item>
-          <widget class="QGroupBox" name="CopyrightgroupBox" >
-           <property name="title" >
-            <string>Copyright Infomaton</string>
-           </property>
-           <layout class="QVBoxLayout" name="CopyrightLayout" >
-            <property name="spacing" >
-             <number>8</number>
-            </property>
-            <property name="margin" >
-             <number>8</number>
-            </property>
-            <item>
-             <widget class="QWidget" native="1" name="CopyrightWidget" >
-              <layout class="QHBoxLayout" name="CopyLayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <widget class="QLineEdit" name="CopyrightEditItem" />
-               </item>
-               <item>
-                <widget class="QPushButton" name="CopyrightInsertItem" >
-                 <property name="maximumSize" >
-                  <size>
-                   <width>29</width>
-                   <height>16777215</height>
-                  </size>
-                 </property>
-                 <property name="text" >
-                  <string>©</string>
-                 </property>
-                </widget>
-               </item>
-              </layout>
-             </widget>
-            </item>
-            <item>
-             <widget class="QWidget" native="1" name="CcliWidget" >
-              <layout class="QHBoxLayout" name="CCLILayout" >
-               <property name="spacing" >
-                <number>8</number>
-               </property>
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <item>
-                <widget class="QLabel" name="CCLILabel" >
-                 <property name="text" >
-                  <string>CCLI Number:</string>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QLineEdit" name="CCLNumberEdit" />
-               </item>
-              </layout>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </item>
-        </layout>
-       </widget>
-      </item>
-     </layout>
+    <widget class="QTabWidget" name="SongTabWidget">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="LyricsTab">
+      <attribute name="title">
+       <string>Title &amp;&amp; Lyrics</string>
+      </attribute>
+      <layout class="QGridLayout" name="LyricsTabLayout">
+       <property name="margin">
+        <number>8</number>
+       </property>
+       <property name="spacing">
+        <number>8</number>
+       </property>
+       <item row="0" column="0">
+        <widget class="QLabel" name="TitleLabel">
+         <property name="text">
+          <string>Title:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="1" colspan="2">
+        <widget class="QLineEdit" name="TitleEditItem">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="AlternativeTitleLabel">
+         <property name="text">
+          <string>Alternative Title:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" colspan="2">
+        <widget class="QLineEdit" name="AlternativeEdit"/>
+       </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="LyricsLabel">
+         <property name="text">
+          <string>Lyrics:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1">
+        <widget class="QListWidget" name="VerseListWidget"/>
+       </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="VerseOrderLabel">
+         <property name="text">
+          <string>Verse Order:</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="1" colspan="2">
+        <widget class="QLineEdit" name="VerseOrderEdit"/>
+       </item>
+       <item row="2" column="2">
+        <widget class="QWidget" name="VerseButtonWidget" native="true">
+         <layout class="QVBoxLayout" name="VerseButtonsLayout">
+          <property name="spacing">
+           <number>8</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QPushButton" name="VerseAddButton">
+            <property name="text">
+             <string>Add</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="VerseEditButton">
+            <property name="text">
+             <string>Edit</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="VerseEditAllButton">
+            <property name="text">
+             <string>Edit All</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QPushButton" name="VerseDeleteButton">
+            <property name="text">
+             <string>Delete</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <spacer name="VerseSpacer">
+            <property name="orientation">
+             <enum>Qt::Vertical</enum>
+            </property>
+            <property name="sizeHint" stdset="0">
+             <size>
+              <width>20</width>
+              <height>40</height>
+             </size>
+            </property>
+           </spacer>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="AuthorsTab">
+      <attribute name="title">
+       <string>Authors, Topics &amp;&amp; Book</string>
+      </attribute>
+      <layout class="QHBoxLayout" name="AuthorsTabLayout">
+       <property name="spacing">
+        <number>8</number>
+       </property>
+       <property name="margin">
+        <number>8</number>
+       </property>
+       <item>
+        <widget class="QWidget" name="AuthorsMaintenanceWidget" native="true">
+         <layout class="QVBoxLayout" name="AuthorsMaintenanceLayout">
+          <property name="spacing">
+           <number>8</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QGroupBox" name="AuthorsGroupBox">
+            <property name="title">
+             <string>Authors</string>
+            </property>
+            <layout class="QVBoxLayout" name="AuthorsLayout">
+             <property name="spacing">
+              <number>8</number>
+             </property>
+             <property name="margin">
+              <number>8</number>
+             </property>
+             <item>
+              <widget class="QWidget" name="AuthorAddWidget" native="true">
+               <layout class="QHBoxLayout" name="AuthorAddLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QComboBox" name="AuthorsSelectionComboItem">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="editable">
+                   <bool>false</bool>
+                  </property>
+                  <property name="insertPolicy">
+                   <enum>QComboBox::InsertAlphabetically</enum>
+                  </property>
+                  <property name="sizeAdjustPolicy">
+                   <enum>QComboBox::AdjustToMinimumContentsLength</enum>
+                  </property>
+                  <property name="minimumContentsLength">
+                   <number>8</number>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="AuthorAddButton">
+                  <property name="maximumSize">
+                   <size>
+                    <width>110</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>&amp;Add to Song</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <widget class="QListWidget" name="AuthorsListView">
+               <property name="alternatingRowColors">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QWidget" name="AuthorRemoveWidget" native="true">
+               <layout class="QHBoxLayout" name="AuthorRemoveLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <spacer name="AuthorsSpacer">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="AuthorRemoveButton">
+                  <property name="text">
+                   <string>&amp;Remove</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="QWidget" name="MaintenanceWidget" native="true">
+            <layout class="QHBoxLayout" name="MaintenanceLayout">
+             <property name="spacing">
+              <number>0</number>
+             </property>
+             <property name="margin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QPushButton" name="MaintenanceButton">
+               <property name="text">
+                <string>&amp;Manage Authors, Topics, Books</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <spacer name="MaintenanceSpacer">
+               <property name="orientation">
+                <enum>Qt::Horizontal</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>66</width>
+                 <height>20</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QWidget" name="TopicBookWidget" native="true">
+         <layout class="QVBoxLayout" name="TopicBookLayout">
+          <property name="spacing">
+           <number>8</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QGroupBox" name="TopicGroupBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="title">
+             <string>Topic</string>
+            </property>
+            <layout class="QVBoxLayout" name="TopicLayout">
+             <property name="spacing">
+              <number>8</number>
+             </property>
+             <property name="margin">
+              <number>8</number>
+             </property>
+             <item>
+              <widget class="QWidget" name="TopicAddWidget" native="true">
+               <layout class="QHBoxLayout" name="TopicAddLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QComboBox" name="SongTopicCombo">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="TopicAddButton">
+                  <property name="sizePolicy">
+                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                   </sizepolicy>
+                  </property>
+                  <property name="text">
+                   <string>A&amp;dd to Song</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <widget class="QListWidget" name="TopicsListView">
+               <property name="alternatingRowColors">
+                <bool>true</bool>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QWidget" name="TopicRemoveWidget" native="true">
+               <layout class="QHBoxLayout" name="TopicRemoveLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <spacer name="TopicsSpacer">
+                  <property name="orientation">
+                   <enum>Qt::Horizontal</enum>
+                  </property>
+                  <property name="sizeHint" stdset="0">
+                   <size>
+                    <width>40</width>
+                    <height>20</height>
+                   </size>
+                  </property>
+                 </spacer>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="TopicRemoveButton">
+                  <property name="text">
+                   <string>R&amp;emove</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="QGroupBox" name="SongBookGroup">
+            <property name="title">
+             <string>Song Book</string>
+            </property>
+            <layout class="QGridLayout" name="SongbookLayout">
+             <property name="margin">
+              <number>8</number>
+             </property>
+             <property name="spacing">
+              <number>8</number>
+             </property>
+             <item row="0" column="0">
+              <widget class="QComboBox" name="SongbookCombo">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="ThemeTab">
+      <attribute name="title">
+       <string>Theme, Copyright Info &amp;&amp; Comments</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="ThemeTabLayout">
+       <property name="spacing">
+        <number>8</number>
+       </property>
+       <property name="margin">
+        <number>8</number>
+       </property>
+       <item>
+        <widget class="QWidget" name="ThemeCopyCommentsWidget" native="true">
+         <layout class="QHBoxLayout" name="ThemeCopyCommentsLayout">
+          <property name="spacing">
+           <number>8</number>
+          </property>
+          <property name="margin">
+           <number>0</number>
+          </property>
+          <item>
+           <widget class="QWidget" name="TextWidget" native="true">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <layout class="QVBoxLayout" name="DetailsLayout">
+             <property name="spacing">
+              <number>8</number>
+             </property>
+             <property name="margin">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QGroupBox" name="ThemeGroupBox">
+               <property name="title">
+                <string>Theme</string>
+               </property>
+               <layout class="QHBoxLayout" name="ThemeLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>8</number>
+                </property>
+                <item>
+                 <widget class="QComboBox" name="ThemeSelectionComboItem"/>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="ThemeAddButton">
+                  <property name="maximumSize">
+                   <size>
+                    <width>110</width>
+                    <height>16777215</height>
+                   </size>
+                  </property>
+                  <property name="text">
+                   <string>Add a Theme</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <widget class="QGroupBox" name="CopyrightGroupBox">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="title">
+                <string>Copyright Information</string>
+               </property>
+               <layout class="QVBoxLayout" name="CopyrightLayout">
+                <property name="spacing">
+                 <number>8</number>
+                </property>
+                <property name="margin">
+                 <number>8</number>
+                </property>
+                <item>
+                 <widget class="QWidget" name="CopyrightWidget" native="true">
+                  <layout class="QHBoxLayout" name="CopyLayout">
+                   <property name="spacing">
+                    <number>8</number>
+                   </property>
+                   <property name="margin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QLineEdit" name="CopyrightEditItem"/>
+                   </item>
+                   <item>
+                    <widget class="QPushButton" name="CopyrightInsertButton">
+                     <property name="maximumSize">
+                      <size>
+                       <width>29</width>
+                       <height>16777215</height>
+                      </size>
+                     </property>
+                     <property name="text">
+                      <string>©</string>
+                     </property>
+                    </widget>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QWidget" name="CcliWidget" native="true">
+                  <layout class="QHBoxLayout" name="CCLILayout">
+                   <property name="spacing">
+                    <number>8</number>
+                   </property>
+                   <property name="margin">
+                    <number>0</number>
+                   </property>
+                   <item>
+                    <widget class="QLabel" name="CCLILabel">
+                     <property name="text">
+                      <string>CCLI Number:</string>
+                     </property>
+                    </widget>
+                   </item>
+                   <item>
+                    <widget class="QLineEdit" name="CCLNumberEdit"/>
+                   </item>
+                  </layout>
+                 </widget>
+                </item>
+               </layout>
+              </widget>
+             </item>
+             <item>
+              <spacer name="ThemeCopySpacer">
+               <property name="orientation">
+                <enum>Qt::Vertical</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>20</width>
+                 <height>40</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
+            </layout>
+           </widget>
+          </item>
+          <item>
+           <widget class="QGroupBox" name="CommentsGroupBox">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="title">
+             <string>Comments</string>
+            </property>
+            <layout class="QVBoxLayout" name="CommentsLayout">
+             <property name="spacing">
+              <number>0</number>
+             </property>
+             <property name="margin">
+              <number>8</number>
+             </property>
+             <item>
+              <widget class="QTextEdit" name="CommentsEdit">
+               <property name="sizePolicy">
+                <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="maximumSize">
+                <size>
+                 <width>16777215</width>
+                 <height>16777215</height>
+                </size>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <spacer name="ThemeTabSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="ButtonBox" >
-     <property name="standardButtons" >
+    <widget class="QDialogButtonBox" name="ButtonBox">
+     <property name="standardButtons">
       <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
      </property>
     </widget>
@@ -556,27 +655,35 @@
   </layout>
  </widget>
  <tabstops>
+  <tabstop>SongTabWidget</tabstop>
   <tabstop>TitleEditItem</tabstop>
   <tabstop>AlternativeEdit</tabstop>
+  <tabstop>VerseListWidget</tabstop>
+  <tabstop>VerseAddButton</tabstop>
+  <tabstop>VerseEditButton</tabstop>
+  <tabstop>VerseEditAllButton</tabstop>
+  <tabstop>VerseDeleteButton</tabstop>
   <tabstop>VerseOrderEdit</tabstop>
-  <tabstop>CommentsEdit</tabstop>
-  <tabstop>ThemeSelectionComboItem</tabstop>
-  <tabstop>ThemeAddItem</tabstop>
-  <tabstop>AuthorAddtoSongItem</tabstop>
+  <tabstop>AuthorsSelectionComboItem</tabstop>
+  <tabstop>AuthorAddButton</tabstop>
   <tabstop>AuthorsListView</tabstop>
-  <tabstop>AuthorRemoveItem</tabstop>
+  <tabstop>AuthorRemoveButton</tabstop>
+  <tabstop>MaintenanceButton</tabstop>
+  <tabstop>SongTopicCombo</tabstop>
+  <tabstop>TopicAddButton</tabstop>
+  <tabstop>TopicsListView</tabstop>
+  <tabstop>TopicRemoveButton</tabstop>
   <tabstop>SongbookCombo</tabstop>
-  <tabstop>AddSongBookButton</tabstop>
-  <tabstop>SongTopicCombo</tabstop>
-  <tabstop>ToticsListView</tabstop>
-  <tabstop>pushButton</tabstop>
+  <tabstop>ThemeSelectionComboItem</tabstop>
+  <tabstop>ThemeAddButton</tabstop>
   <tabstop>CopyrightEditItem</tabstop>
-  <tabstop>CopyrightInsertItem</tabstop>
+  <tabstop>CopyrightInsertButton</tabstop>
   <tabstop>CCLNumberEdit</tabstop>
+  <tabstop>CommentsEdit</tabstop>
   <tabstop>ButtonBox</tabstop>
  </tabstops>
  <resources>
-  <include location="../images/openlp-2.qrc" />
+  <include location="../images/openlp-2.qrc"/>
  </resources>
  <connections>
   <connection>
@@ -585,11 +692,11 @@
    <receiver>EditSongDialog</receiver>
    <slot>close()</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>607</x>
      <y>456</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>578</x>
      <y>-15</y>
     </hint>
@@ -601,11 +708,11 @@
    <receiver>EditSongDialog</receiver>
    <slot>close()</slot>
    <hints>
-    <hint type="sourcelabel" >
+    <hint type="sourcelabel">
      <x>549</x>
      <y>461</y>
     </hint>
-    <hint type="destinationlabel" >
+    <hint type="destinationlabel">
      <x>91</x>
      <y>-50</y>
     </hint>


Follow ups