← Back to team overview

openlp-core team mailing list archive

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

 

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

Requested reviews:
  Raoul Snyman (raoul-snyman)
Related bugs:
  #661867 Invalid author added in song dialog
  https://bugs.launchpad.net/bugs/661867
  #686103 Labels in theme wizard out of alignment on Windows
  https://bugs.launchpad.net/bugs/686103

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

Bug #686103: the layout was distorted because of several manual formating instructions. I limited all format instructions to the necessary minimum. Furthermore I aligned all QFormLayouts towards each other.
It should contain no functional changes except of bug fixes (traped exceptions).
Some widgets ans slots are renamed for a consistent naming scheme.
Small fixes: removed two consecutive spaces and string introducing double quotes from python code of the whole OpenLP.
-- 
https://code.launchpad.net/~m2j/openlp/work/+merge/44761
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/settingstab.py'
--- openlp/core/lib/settingstab.py	2010-12-26 11:04:47 +0000
+++ openlp/core/lib/settingstab.py	2010-12-27 23:11:17 +0000
@@ -31,7 +31,7 @@
     SettingsTab is a helper widget for plugins to define Tabs for the settings
     dialog.
     """
-    def __init__(self, title,  visible_title=None):
+    def __init__(self, title, visible_title=None):
         """
         Constructor to create the Settings tab item.
 
@@ -95,4 +95,4 @@
             Indicates if called before or after updates.
 
         """
-        pass
\ No newline at end of file
+        pass

=== modified file 'openlp/core/ui/exceptionform.py'
--- openlp/core/ui/exceptionform.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/exceptionform.py	2010-12-27 23:11:17 +0000
@@ -84,7 +84,7 @@
             u'lxml: %s\n' % etree.__version__ + \
             u'Chardet: %s\n' % chardet_version + \
             u'PyEnchant: %s\n' % enchant_version + \
-            u'PySQLite: %s\n' %  sqlite_version
+            u'PySQLite: %s\n' % sqlite_version
         if platform.system() == u'Linux':
             if os.environ.get(u'KDE_FULL_SESSION') == u'true':
                 system = system + u'Desktop: KDE SC\n'
@@ -144,4 +144,4 @@
                 exception = line.split(u'\n')[-1].split(u':')[0]
         subject = u'Bug report: %s in %s' % (exception, source)
         mailto(address=u'bugs@xxxxxxxxxx', subject=subject,
-            body=body % content)
\ No newline at end of file
+            body=body % content)

=== modified file 'openlp/core/ui/generaltab.py'
--- openlp/core/ui/generaltab.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/generaltab.py	2010-12-27 23:11:17 +0000
@@ -141,10 +141,10 @@
         self.settingsLayout.addWidget(self.autoPreviewCheckBox, 1, 0, 1, 2)
         # Moved here from image tab
         self.timeoutLabel = QtGui.QLabel(self.settingsGroupBox)
-        self.timeoutLabel.setObjectName("timeoutLabel")
+        self.timeoutLabel.setObjectName(u'timeoutLabel')
         self.settingsLayout.addWidget(self.timeoutLabel, 2, 0, 1, 1)
         self.timeoutSpinBox = QtGui.QSpinBox(self.settingsGroupBox)
-        self.timeoutSpinBox.setObjectName("timeoutSpinBox")
+        self.timeoutSpinBox.setObjectName(u'timeoutSpinBox')
         self.settingsLayout.addWidget(self.timeoutSpinBox, 2, 1, 1, 1)
         self.generalLeftLayout.addWidget(self.settingsGroupBox)
         self.generalLeftSpacer = QtGui.QSpacerItem(20, 40,
@@ -530,4 +530,4 @@
         """
         Called when the width, height, x position or y position has changed.
         """
-        self.overrideChanged = True
\ No newline at end of file
+        self.overrideChanged = True

=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/maindisplay.py	2010-12-27 23:11:17 +0000
@@ -209,7 +209,7 @@
             shrink = True
         else:
             shrink = False
-        js =  u'show_alert("%s", "%s")' % (
+        js = u'show_alert("%s", "%s")' % (
             text.replace(u'\\', u'\\\\').replace(u'\"', u'\\\"'),
             u'top' if shrink else u'')
         height = self.frame.evaluateJavaScript(js)
@@ -235,8 +235,8 @@
 
     def image(self, name):
         """
-        Add an image as the background.  The image is converted to a
-        bytestream on route.
+        Add an image as the background.  The image is converted to a bytestream
+        on route.
 
         `Image`
             The Image to be displayed can be QImage or QPixmap
@@ -421,8 +421,8 @@
         Display the Footer
         """
         log.debug(u'footer')
-        js =  "show_footer('" + \
-            text.replace("\\", "\\\\").replace("\'", "\\\'") + "')"
+        js = u'show_footer(\'' + \
+            text.replace(u'\\', u'\\\\').replace(u'\'', u'\\\'') + u'\')'
         self.frame.evaluateJavaScript(js)
 
     def hideDisplay(self, mode=HideMode.Screen):

=== modified file 'openlp/core/ui/shortcutlistform.py'
--- openlp/core/ui/shortcutlistform.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/shortcutlistform.py	2010-12-27 23:11:17 +0000
@@ -71,7 +71,7 @@
         if event.modifiers() & Qt.ShiftModifier == Qt.ShiftModifier:
             key_string = u'Shift+' + key_string
         key_sequence = QtGui.QKeySequence(key_string)
-        existing_key = QtGui.QKeySequence("Ctrl+Shift+F8")
+        existing_key = QtGui.QKeySequence(u'Ctrl+Shift+F8')
         if key_sequence == existing_key:
             QtGui.QMessageBox.warning(
                 self,

=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/slidecontroller.py	2010-12-27 23:11:17 +0000
@@ -184,14 +184,14 @@
                     'Blank Screen'), self.HideMenu)
             self.BlankScreen.setCheckable(True)
             QtCore.QObject.connect(self.BlankScreen,
-                QtCore.SIGNAL("triggered(bool)"), self.onBlankDisplay)
+                QtCore.SIGNAL(u'triggered(bool)'), self.onBlankDisplay)
             self.ThemeScreen = QtGui.QAction(QtGui.QIcon(
                 u':/slides/slide_theme.png'),
                 translate('OpenLP.SlideController',
                     'Blank to Theme'), self.HideMenu)
             self.ThemeScreen.setCheckable(True)
             QtCore.QObject.connect(self.ThemeScreen,
-                QtCore.SIGNAL("triggered(bool)"), self.onThemeDisplay)
+                QtCore.SIGNAL(u'triggered(bool)'), self.onThemeDisplay)
             if self.screens.display_count > 1:
                 self.DesktopScreen = QtGui.QAction(QtGui.QIcon(
                     u':/slides/slide_desktop.png'),
@@ -199,7 +199,7 @@
                         'Show Desktop'), self.HideMenu)
                 self.DesktopScreen.setCheckable(True)
                 QtCore.QObject.connect(self.DesktopScreen,
-                    QtCore.SIGNAL("triggered(bool)"), self.onHideDisplay)
+                    QtCore.SIGNAL(u'triggered(bool)'), self.onHideDisplay)
             self.HideMenu.setDefaultAction(self.BlankScreen)
             self.HideMenu.menu().addAction(self.BlankScreen)
             self.HideMenu.menu().addAction(self.ThemeScreen)
@@ -1033,4 +1033,4 @@
             self.mediaObject.clearQueue()
             self.video.hide()
         self.SlidePreview.clear()
-        self.SlidePreview.show()
\ No newline at end of file
+        self.SlidePreview.show()

=== modified file 'openlp/core/ui/themeform.py'
--- openlp/core/ui/themeform.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/themeform.py	2010-12-27 23:11:17 +0000
@@ -56,90 +56,70 @@
         self.registerFields()
         self.accepted = False
         self.updateThemeAllowed = True
-        QtCore.QObject.connect(self.backgroundTypeComboBox,
+        QtCore.QObject.connect(self.backgroundComboBox,
             QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.onBackgroundComboBox)
+            self.onBackgroundComboBoxCurrentIndexChanged)
         QtCore.QObject.connect(self.gradientComboBox,
             QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.onGradientComboBox)
+            self.onGradientComboBoxCurrentIndexChanged)
         QtCore.QObject.connect(self.colorButton,
-            QtCore.SIGNAL(u'pressed()'),
+            QtCore.SIGNAL(u'clicked()'),
             self.onColorButtonClicked)
         QtCore.QObject.connect(self.gradientStartButton,
-            QtCore.SIGNAL(u'pressed()'),
+            QtCore.SIGNAL(u'clicked()'),
             self.onGradientStartButtonClicked)
         QtCore.QObject.connect(self.gradientEndButton,
-            QtCore.SIGNAL(u'pressed()'),
+            QtCore.SIGNAL(u'clicked()'),
             self.onGradientEndButtonClicked)
         QtCore.QObject.connect(self.imageBrowseButton,
-            QtCore.SIGNAL(u'pressed()'),
+            QtCore.SIGNAL(u'clicked()'),
             self.onImageBrowseButtonClicked)
-        QtCore.QObject.connect(self.mainColorPushButton,
-            QtCore.SIGNAL(u'pressed()'),
-            self.onMainColourPushButtonClicked)
-        QtCore.QObject.connect(self.outlineColorPushButton,
-            QtCore.SIGNAL(u'pressed()'),
-            self.onOutlineColourPushButtonClicked)
-        QtCore.QObject.connect(self.shadowColorPushButton,
-            QtCore.SIGNAL(u'pressed()'),
-            self.onShadowColourPushButtonClicked)
+        QtCore.QObject.connect(self.mainColorButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onMainColorButtonClicked)
+        QtCore.QObject.connect(self.outlineColorButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onOutlineColorButtonClicked)
+        QtCore.QObject.connect(self.shadowColorButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onShadowColorButtonClicked)
         QtCore.QObject.connect(self.outlineCheckBox,
             QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onOutlineCheckCheckBoxChanged)
+            self.onOutlineCheckCheckBoxStateChanged)
         QtCore.QObject.connect(self.shadowCheckBox,
             QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onShadowCheckCheckBoxChanged)
-        QtCore.QObject.connect(self.footerColorPushButton,
-            QtCore.SIGNAL(u'pressed()'),
-            self.onFooterColourPushButtonClicked)
-        QtCore.QObject.connect(self.mainDefaultPositionCheckBox,
-            QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onMainDefaultPositionCheckBox)
-        QtCore.QObject.connect(self.footerDefaultPositionCheckBox,
-            QtCore.SIGNAL(u'stateChanged(int)'),
-            self.onFooterDefaultPositionCheckBox)
+            self.onShadowCheckCheckBoxStateChanged)
+        QtCore.QObject.connect(self.footerColorButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onFooterColorButtonClicked)
+        QtCore.QObject.connect(self.mainPositionCheckBox,
+            QtCore.SIGNAL(u'stateChanged(int)'),
+            self.onMainPositionCheckBoxStateChanged)
+        QtCore.QObject.connect(self.footerPositionCheckBox,
+            QtCore.SIGNAL(u'stateChanged(int)'),
+            self.onFooterPositionCheckBoxStateChanged)
         QtCore.QObject.connect(self,
             QtCore.SIGNAL(u'currentIdChanged(int)'),
-            self.pageChanged)
+            self.onCurrentIdChanged)
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'theme_line_count'),
             self.updateLinesText)
         QtCore.QObject.connect(self.mainSizeSpinBox,
             QtCore.SIGNAL(u'valueChanged(int)'),
             self.calculateLines)
-        QtCore.QObject.connect(self.mainSizeSpinBox,
-            QtCore.SIGNAL(u'editingFinished()'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.lineSpacingSpinBox,
-            QtCore.SIGNAL(u'valueChanged(int)'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.lineSpacingSpinBox,
-            QtCore.SIGNAL(u'editingFinished()'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.outlineSizeSpinBox,
-            QtCore.SIGNAL(u'valueChanged(int)'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.outlineSizeSpinBox,
-            QtCore.SIGNAL(u'editingFinished()'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.shadowSizeSpinBox,
-            QtCore.SIGNAL(u'valueChanged(int)'),
-            self.calculateLines)
-        QtCore.QObject.connect(self.shadowSizeSpinBox,
-            QtCore.SIGNAL(u'editingFinished()'),
+        QtCore.QObject.connect(self.lineSpacingSpinBox,
+            QtCore.SIGNAL(u'valueChanged(int)'),
+            self.calculateLines)
+        QtCore.QObject.connect(self.outlineSizeSpinBox,
+            QtCore.SIGNAL(u'valueChanged(int)'),
+            self.calculateLines)
+        QtCore.QObject.connect(self.shadowSizeSpinBox,
+            QtCore.SIGNAL(u'valueChanged(int)'),
             self.calculateLines)
         QtCore.QObject.connect(self.mainFontComboBox,
             QtCore.SIGNAL(u'activated(int)'),
             self.calculateLines)
-
-    def pageChanged(self, pageId):
-        """
-        Detects Page changes and updates as approprate.
-        """
-        if pageId == 6:
-            self.updateTheme()
-            frame = self.thememanager.generateImage(self.theme)
-            self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
+        QtCore.QObject.connect(self, QtCore.SIGNAL(u'accepted()'), self.accept)
 
     def setDefaults(self):
         """
@@ -159,7 +139,7 @@
         Map field names to screen names,
         """
         self.backgroundPage.registerField(
-            u'background_type', self.backgroundTypeComboBox)
+            u'background_type', self.backgroundComboBox)
         self.backgroundPage.registerField(
             u'color', self.colorButton)
         self.backgroundPage.registerField(
@@ -167,11 +147,11 @@
         self.backgroundPage.registerField(
             u'grandient_end', self.gradientEndButton)
         self.backgroundPage.registerField(
-            u'background_image', self.imageLineEdit)
+            u'background_image', self.imageFileEdit)
         self.backgroundPage.registerField(
             u'gradient', self.gradientComboBox)
         self.mainAreaPage.registerField(
-            u'mainColorPushButton', self.mainColorPushButton)
+            u'mainColorButton', self.mainColorButton)
         self.mainAreaPage.registerField(
             u'mainSizeSpinBox', self.mainSizeSpinBox)
         self.mainAreaPage.registerField(
@@ -179,17 +159,17 @@
         self.mainAreaPage.registerField(
             u'outlineCheckBox', self.outlineCheckBox)
         self.mainAreaPage.registerField(
-            u'outlineColorPushButton', self.outlineColorPushButton)
+            u'outlineColorButton', self.outlineColorButton)
         self.mainAreaPage.registerField(
             u'outlineSizeSpinBox', self.outlineSizeSpinBox)
         self.mainAreaPage.registerField(
             u'shadowCheckBox', self.shadowCheckBox)
         self.mainAreaPage.registerField(
-            u'boldCheckBox', self.boldCheckBox)
-        self.mainAreaPage.registerField(
-            u'italicsCheckBox', self.italicsCheckBox)
-        self.mainAreaPage.registerField(
-            u'shadowColorPushButton', self.shadowColorPushButton)
+            u'mainBoldCheckBox', self.mainBoldCheckBox)
+        self.mainAreaPage.registerField(
+            u'mainItalicsCheckBox', self.mainItalicsCheckBox)
+        self.mainAreaPage.registerField(
+            u'shadowColorButton', self.shadowColorButton)
         self.mainAreaPage.registerField(
             u'shadowSizeSpinBox', self.shadowSizeSpinBox)
         self.mainAreaPage.registerField(
@@ -224,7 +204,7 @@
         Calculate the number of lines on a page by rendering text
         """
         # Do not trigger on start up
-        if self.page != 0:
+        if self.currentPage != self.welcomePage:
             self.updateTheme()
             frame = self.thememanager.generateImage(self.theme, True)
 
@@ -235,7 +215,16 @@
         self.mainLineCountLabel.setText(unicode(translate('OpenLP.ThemeForm', \
             '(%d lines per slide)' % int(lines))))
 
-    def onOutlineCheckCheckBoxChanged(self, state):
+    def onCurrentIdChanged(self, pageId):
+        """
+        Detects Page changes and updates as approprate.
+        """
+        if self.page(pageId) == self.previewPage:
+            self.updateTheme()
+            frame = self.thememanager.generateImage(self.theme)
+            self.previewBoxLabel.setPixmap(QtGui.QPixmap.fromImage(frame))
+
+    def onOutlineCheckCheckBoxStateChanged(self, state):
         """
         Change state as Outline check box changed
         """
@@ -243,11 +232,11 @@
             self.theme.font_main_outline = True
         else:
             self.theme.font_main_outline = False
-        self.outlineColorPushButton.setEnabled(self.theme.font_main_outline)
+        self.outlineColorButton.setEnabled(self.theme.font_main_outline)
         self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
         self.calculateLines()
 
-    def onShadowCheckCheckBoxChanged(self, state):
+    def onShadowCheckCheckBoxStateChanged(self, state):
         """
         Change state as Shadow check box changed
         """
@@ -255,35 +244,21 @@
             self.theme.font_main_shadow = True
         else:
             self.theme.font_main_shadow = False
-        self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow)
+        self.shadowColorButton.setEnabled(self.theme.font_main_shadow)
         self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
         self.calculateLines()
 
-    def onMainDefaultPositionCheckBox(self, value):
+    def onMainPositionCheckBoxStateChanged(self, value):
         """
         Change state as Main Area Position check box changed
         """
-        if value == QtCore.Qt.Checked:
-            self.theme.font_main_override = False
-        else:
-            self.theme.font_main_override = True
-        self.mainXSpinBox.setEnabled(self.theme.font_main_override)
-        self.mainYSpinBox.setEnabled(self.theme.font_main_override)
-        self.mainHeightSpinBox.setEnabled(self.theme.font_main_override)
-        self.mainWidthSpinBox.setEnabled(self.theme.font_main_override)
+        self.theme.font_main_override = (value == QtCore.Qt.Checked)
 
-    def onFooterDefaultPositionCheckBox(self, value):
+    def onFooterPositionCheckBoxStateChanged(self, value):
         """
         Change state as Footer Area Position check box changed
         """
-        if value == QtCore.Qt.Checked:
-            self.theme.font_footer_override = False
-        else:
-            self.theme.font_footer_override = True
-        self.footerXSpinBox.setEnabled(self.theme.font_footer_override)
-        self.footerYSpinBox.setEnabled(self.theme.font_footer_override)
-        self.footerHeightSpinBox.setEnabled(self.theme.font_footer_override)
-        self.footerWidthSpinBox.setEnabled(self.theme.font_footer_override)
+        self.theme.font_footer_override = (value == QtCore.Qt.Checked)
 
     def exec_(self, edit=False):
         """
@@ -302,16 +277,16 @@
         Set up the pages for Initial run through dialog
         """
         log.debug(u'initializePage %s' % id)
-        self.page = id
-        if id == 1:
+        wizardPage = self.page(id)
+        if wizardPage == self.backgroundPage:
             self.setBackgroundTabValues()
-        elif id == 2:
+        elif wizardPage == self.mainAreaPage:
             self.setMainAreaTabValues()
-        elif id == 3:
+        elif wizardPage == self.footerAreaPage:
             self.setFooterAreaTabValues()
-        elif id == 4:
+        elif wizardPage == self.alignmentPage:
             self.setAlignmentTabValues()
-        elif id == 5:
+        elif wizardPage == self.areaPositionPage:
             self.setPositionTabValues()
 
     def setBackgroundTabValues(self):
@@ -331,7 +306,7 @@
                     self.theme.background_end_color)
             self.setField(u'background_type', QtCore.QVariant(1))
         else:
-            self.imageLineEdit.setText(self.theme.background_filename)
+            self.imageFileEdit.setText(self.theme.background_filename)
             self.setField(u'background_type', QtCore.QVariant(2))
         if self.theme.background_direction == \
             BackgroundGradientType.to_string(BackgroundGradientType.Horizontal):
@@ -354,41 +329,28 @@
         """
         self.mainFontComboBox.setCurrentFont(
             QtGui.QFont(self.theme.font_main_name))
-        self.mainColorPushButton.setStyleSheet(u'background-color: %s' %
+        self.mainColorButton.setStyleSheet(u'background-color: %s' %
             self.theme.font_main_color)
-        self.setField(u'mainSizeSpinBox', \
+        self.setField(u'mainSizeSpinBox',
             QtCore.QVariant(self.theme.font_main_size))
-        self.setField(u'lineSpacingSpinBox', \
+        self.setField(u'lineSpacingSpinBox',
             QtCore.QVariant(self.theme.font_main_line_adjustment))
-        self.setField(u'outlineCheckBox', \
+        self.setField(u'outlineCheckBox',
             QtCore.QVariant(self.theme.font_main_outline))
-        self.outlineColorPushButton.setStyleSheet(u'background-color: %s' %
+        self.outlineColorButton.setStyleSheet(u'background-color: %s' %
             self.theme.font_main_outline_color)
-        self.setField(u'outlineSizeSpinBox', \
+        self.setField(u'outlineSizeSpinBox',
             QtCore.QVariant(self.theme.font_main_outline_size))
-        self.setField(u'shadowCheckBox', \
+        self.setField(u'shadowCheckBox',
             QtCore.QVariant(self.theme.font_main_shadow))
-        self.shadowColorPushButton.setStyleSheet(u'background-color: %s' %
+        self.shadowColorButton.setStyleSheet(u'background-color: %s' %
             self.theme.font_main_shadow_color)
-        self.setField(u'shadowSizeSpinBox', \
+        self.setField(u'shadowSizeSpinBox',
             QtCore.QVariant(self.theme.font_main_shadow_size))
-        self.setField(u'boldCheckBox', \
+        self.setField(u'mainBoldCheckBox',
             QtCore.QVariant(self.theme.font_main_bold))
-        self.setField(u'italicsCheckBox', \
+        self.setField(u'mainItalicsCheckBox',
             QtCore.QVariant(self.theme.font_main_italics))
-        # Set up field states
-        if self.theme.font_main_outline:
-            self.setField(u'outlineCheckBox', QtCore.QVariant(False))
-        else:
-            self.setField(u'outlineCheckBox', QtCore.QVariant(True))
-        self.outlineColorPushButton.setEnabled(self.theme.font_main_outline)
-        self.outlineSizeSpinBox.setEnabled(self.theme.font_main_outline)
-        if self.theme.font_main_shadow:
-            self.setField(u'shadowCheckBox', QtCore.QVariant(False))
-        else:
-            self.setField(u'shadowCheckBox', QtCore.QVariant(True))
-        self.shadowColorPushButton.setEnabled(self.theme.font_main_shadow)
-        self.shadowSizeSpinBox.setEnabled(self.theme.font_main_shadow)
 
     def setFooterAreaTabValues(self):
         """
@@ -396,9 +358,9 @@
         """
         self.footerFontComboBox.setCurrentFont(
             QtGui.QFont(self.theme.font_main_name))
-        self.footerColorPushButton.setStyleSheet(u'background-color: %s' %
+        self.footerColorButton.setStyleSheet(u'background-color: %s' %
             self.theme.font_footer_color)
-        self.setField(u'footerSizeSpinBox', \
+        self.setField(u'footerSizeSpinBox',
             QtCore.QVariant(self.theme.font_footer_size))
 
     def setPositionTabValues(self):
@@ -406,58 +368,49 @@
         Handle the display and State of the Position tab.
         """
         # Main Area
-        if self.theme.font_main_override:
-            self.mainDefaultPositionCheckBox.setChecked(False)
-        else:
-            self.mainDefaultPositionCheckBox.setChecked(True)
-        self.setField(u'mainPositionX', \
-            QtCore.QVariant(self.theme.font_main_x))
-        self.setField(u'mainPositionY', \
-            QtCore.QVariant(self.theme.font_main_y))
-        self.setField(u'mainPositionHeight', \
+        self.mainPositionCheckBox.setChecked(not self.theme.font_main_override)
+        self.setField(u'mainPositionX', QtCore.QVariant(self.theme.font_main_x))
+        self.setField(u'mainPositionY', QtCore.QVariant(self.theme.font_main_y))
+        self.setField(u'mainPositionHeight',
             QtCore.QVariant(self.theme.font_main_height))
-        self.setField(u'mainPositionWidth', \
+        self.setField(u'mainPositionWidth',
             QtCore.QVariant(self.theme.font_main_width))
         # Footer
-        if self.theme.font_footer_override:
-            self.footerDefaultPositionCheckBox.setChecked(False)
-        else:
-            self.footerDefaultPositionCheckBox.setChecked(True)
-        self.setField(u'footerPositionX', \
+        self.footerPositionCheckBox.setChecked(
+            not self.theme.font_footer_override)
+        self.setField(u'footerPositionX',
             QtCore.QVariant(self.theme.font_footer_x))
-        self.setField(u'footerPositionY', \
+        self.setField(u'footerPositionY',
             QtCore.QVariant(self.theme.font_footer_y))
-        self.setField(u'footerPositionHeight', \
+        self.setField(u'footerPositionHeight',
             QtCore.QVariant(self.theme.font_footer_height))
-        self.setField(u'footerPositionWidth', \
+        self.setField(u'footerPositionWidth',
             QtCore.QVariant(self.theme.font_footer_width))
 
     def setAlignmentTabValues(self):
         """
         Define the Tab Alignments Page
         """
-        self.setField(u'horizontal', \
+        self.setField(u'horizontal',
             QtCore.QVariant(self.theme.display_horizontal_align))
-        self.setField(u'vertical', \
+        self.setField(u'vertical',
             QtCore.QVariant(self.theme.display_vertical_align))
-        self.setField(u'slideTransition', \
+        self.setField(u'slideTransition',
             QtCore.QVariant(self.theme.display_slide_transition))
 
     def setPreviewTabValues(self):
         self.setField(u'name', QtCore.QVariant(self.theme.theme_name))
-        if len(self.theme.theme_name) > 0:
-            self.themeNameEdit.setEnabled(False)
-        else:
-            self.themeNameEdit.setEnabled(True)
+        self.themeNameEdit.setReadOnly(len(self.theme.theme_name) != 0)
+        self.themeNameEdit.setFrame(len(self.theme.theme_name) == 0)
 
-    def onBackgroundComboBox(self, index):
+    def onBackgroundComboBoxCurrentIndexChanged(self, index):
         """
         Background style Combo box has changed.
         """
         self.theme.background_type = BackgroundType.to_string(index)
         self.setBackgroundTabValues()
 
-    def onGradientComboBox(self, index):
+    def onGradientComboBoxCurrentIndexChanged(self, index):
         """
         Background gradient Combo box has changed.
         """
@@ -503,22 +456,22 @@
             self.theme.background_filename = unicode(filename)
         self.setBackgroundTabValues()
 
-    def onMainColourPushButtonClicked(self):
+    def onMainColorButtonClicked(self):
         self.theme.font_main_color = \
             self._colorButton(self.theme.font_main_color)
         self.setMainAreaTabValues()
 
-    def onOutlineColourPushButtonClicked(self):
+    def onOutlineColorButtonClicked(self):
         self.theme.font_main_outline_color = \
             self._colorButton(self.theme.font_main_outline_color)
         self.setMainAreaTabValues()
 
-    def onShadowColourPushButtonClicked(self):
+    def onShadowColorButtonClicked(self):
         self.theme.font_main_shadow_color = \
             self._colorButton(self.theme.font_main_shadow_color)
         self.setMainAreaTabValues()
 
-    def onFooterColourPushButtonClicked(self):
+    def onFooterColorButtonClicked(self):
         self.theme.font_footer_color = \
             self._colorButton(self.theme.font_footer_color)
         self.setFooterAreaTabValues()
@@ -543,9 +496,9 @@
         self.theme.font_main_shadow_size = \
             self.field(u'shadowSizeSpinBox').toInt()[0]
         self.theme.font_main_bold = \
-            self.field(u'boldCheckBox').toBool()
+            self.field(u'mainBoldCheckBox').toBool()
         self.theme.font_main_italics = \
-            self.field(u'italicsCheckBox').toBool()
+            self.field(u'mainItalicsCheckBox').toBool()
         # footer page
         self.theme.font_footer_name = \
             unicode(self.footerFontComboBox.currentFont().family())
@@ -620,4 +573,4 @@
             QtGui.QColor(field), self)
         if new_color.isValid():
             field = new_color.name()
-        return field
\ No newline at end of file
+        return field

=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/thememanager.py	2010-12-27 23:11:17 +0000
@@ -35,7 +35,7 @@
 from openlp.core.ui import FileRenameForm, ThemeForm
 from openlp.core.theme import Theme
 from openlp.core.lib import OpenLPToolbar, ThemeXML, get_text_file_string, \
-    build_icon, Receiver, SettingsManager, translate, check_item_selected,  \
+    build_icon, Receiver, SettingsManager, translate, check_item_selected, \
     BackgroundType, BackgroundGradientType
 from openlp.core.utils import AppLocation, get_filesystem_encoding
 
@@ -230,7 +230,7 @@
             self.fileRenameForm.fileNameEdit.setText(oldThemeName)
             self.saveThemeName = oldThemeName
             if self.fileRenameForm.exec_():
-                newThemeName =  unicode(self.fileRenameForm.fileNameEdit.text())
+                newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
                 oldThemeData = self.getThemeData(oldThemeName)
                 self.deleteTheme(oldThemeName)
                 self.cloneThemeData(oldThemeData, newThemeName)
@@ -244,7 +244,7 @@
         self.fileRenameForm.fileNameEdit.setText(oldThemeName)
         self.saveThemeName = u''
         if self.fileRenameForm.exec_(True):
-            newThemeName =  unicode(self.fileRenameForm.fileNameEdit.text())
+            newThemeName = unicode(self.fileRenameForm.fileNameEdit.text())
             themeData = self.getThemeData(oldThemeName)
             self.cloneThemeData(themeData, newThemeName)
             self.loadThemes()
@@ -331,7 +331,7 @@
         theme = unicode(item.data(QtCore.Qt.UserRole).toString())
         path = QtGui.QFileDialog.getExistingDirectory(self,
             unicode(translate('OpenLP.ThemeManager',
-            'Save Theme - (%s)')) %  theme,
+            'Save Theme - (%s)')) % theme,
             SettingsManager.get_last_dir(self.settingsSection, 1))
         path = unicode(path)
         if path:
@@ -795,4 +795,4 @@
                         unicode(translate('OpenLP.ThemeManager',
                         'Theme %s is used by the service manager.')) % theme)
                     return False
-        return True
\ No newline at end of file
+        return True

=== modified file 'openlp/core/ui/themewizard.py'
--- openlp/core/ui/themewizard.py	2010-12-26 11:04:47 +0000
+++ openlp/core/ui/themewizard.py	2010-12-27 23:11:17 +0000
@@ -31,592 +31,393 @@
 class Ui_ThemeWizard(object):
     def setupUi(self, ThemeWizard):
         ThemeWizard.setObjectName(u'OpenLP.ThemeWizard')
-        ThemeWizard.resize(550, 386)
         ThemeWizard.setModal(True)
         ThemeWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
         ThemeWizard.setOptions(
             QtGui.QWizard.IndependentPages |
             QtGui.QWizard.NoBackButtonOnStartPage)
+        # Welcome Page
         self.welcomePage = QtGui.QWizardPage()
-        self.welcomePage.setTitle(u'')
-        self.welcomePage.setSubTitle(u'')
-        self.welcomePage.setObjectName(u'welcomePage')
         self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
             QtGui.QPixmap(u':/wizards/wizard_createtheme.bmp'))
-        self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage)
-        self.welcomeLayout.setSpacing(8)
-        self.welcomeLayout.setMargin(0)
-        self.welcomeLayout.setObjectName(u'welcomeLayout')
-        self.welcomePageLayout = QtGui.QVBoxLayout()
-        self.welcomePageLayout.setSpacing(8)
-        self.welcomePageLayout.setObjectName(u'welcomePageLayout')
+        self.welcomePage.setObjectName(u'WelcomePage')
+        self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
+        self.welcomeLayout.setObjectName(u'WelcomeLayout')
         self.titleLabel = QtGui.QLabel(self.welcomePage)
-        self.titleLabel.setObjectName(u'titleLabel')
-        self.welcomePageLayout.addWidget(self.titleLabel)
-        self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        self.welcomePageLayout.addItem(self.welcomeTopSpacer)
+        self.titleLabel.setObjectName(u'TitleLabel')
+        self.welcomeLayout.addWidget(self.titleLabel)
+        self.welcomeLayout.addSpacing(40)
         self.informationLabel = QtGui.QLabel(self.welcomePage)
         self.informationLabel.setWordWrap(True)
-        self.informationLabel.setMargin(10)
-        self.informationLabel.setObjectName(u'informationLabel')
-        self.welcomePageLayout.addWidget(self.informationLabel)
-        self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.welcomePageLayout.addItem(self.welcomeBottomSpacer)
-        self.welcomeLayout.addLayout(self.welcomePageLayout)
+        self.informationLabel.setObjectName(u'InformationLabel')
+        self.welcomeLayout.addWidget(self.informationLabel)
+        self.welcomeLayout.addStretch()
         ThemeWizard.addPage(self.welcomePage)
+        # Background Page
         self.backgroundPage = QtGui.QWizardPage()
-        self.backgroundPage.setObjectName(u'backgroundPage')
+        self.backgroundPage.setObjectName(u'BackgroundPage')
         self.backgroundLayout = QtGui.QVBoxLayout(self.backgroundPage)
-        self.backgroundLayout.setSpacing(8)
-        self.backgroundLayout.setMargin(20)
-        self.backgroundLayout.setObjectName(u'backgroundLayout')
-        self.backgroundTypeLayout = QtGui.QHBoxLayout()
-        self.backgroundTypeLayout.setSpacing(8)
-        self.backgroundTypeLayout.setObjectName(u'backgroundTypeLayout')
-        self.backgroundTypeLabel = QtGui.QLabel(self.backgroundPage)
-        self.backgroundTypeLabel.setObjectName(u'backgroundTypeLabel')
-        self.backgroundTypeLayout.addWidget(self.backgroundTypeLabel)
-        self.backgroundTypeComboBox = QtGui.QComboBox(self.backgroundPage)
-        self.backgroundTypeComboBox.setObjectName(u'backgroundTypeComboBox')
-        self.backgroundTypeComboBox.addItem(u'')
-        self.backgroundTypeComboBox.addItem(u'')
-        self.backgroundTypeComboBox.addItem(u'')
-        self.backgroundTypeLayout.addWidget(self.backgroundTypeComboBox)
-        self.backgroundTypeSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.backgroundTypeLayout.addItem(self.backgroundTypeSpacer)
+        self.backgroundLayout.setObjectName(u'BackgroundLayout')
+        self.backgroundTypeLayout = QtGui.QFormLayout()
+        self.backgroundTypeLayout.setObjectName(u'BackgroundTypeLayout')
+        self.backgroundLabel = QtGui.QLabel(self.backgroundPage)
+        self.backgroundLabel.setObjectName(u'BackgroundLabel')
+        self.backgroundComboBox = QtGui.QComboBox(self.backgroundPage)
+        self.backgroundComboBox.addItems([u'', u'', u''])
+        self.backgroundComboBox.setObjectName(u'BackgroundComboBox')
+        self.backgroundTypeLayout.addRow(self.backgroundLabel,
+            self.backgroundComboBox)
+        self.backgroundTypeSpacer = QtGui.QSpacerItem(10, 0,
+            QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum)
+        self.backgroundTypeLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.backgroundTypeSpacer)
         self.backgroundLayout.addLayout(self.backgroundTypeLayout)
-        self.backgroundStackedWidget = QtGui.QStackedWidget(
-            self.backgroundPage)
-        self.backgroundStackedWidget.setObjectName(u'backgroundStackedWidget')
-        self.colorPage = QtGui.QWidget()
-        self.colorPage.setObjectName(u'colorPage')
-        self.colorLayout = QtGui.QFormLayout(self.colorPage)
+        self.backgroundStack = QtGui.QStackedLayout()
+        self.backgroundStack.setObjectName(u'BackgroundStack')
+        self.colorWidget = QtGui.QWidget(self.backgroundPage)
+        self.colorWidget.setObjectName(u'ColorWidget')
+        self.colorLayout = QtGui.QFormLayout(self.colorWidget)
         self.colorLayout.setMargin(0)
-        self.colorLayout.setSpacing(8)
-        self.colorLayout.setObjectName(u'colorLayout')
-        self.colorLabel = QtGui.QLabel(self.colorPage)
-        self.colorLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.colorLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.colorLabel.setObjectName(u'colorLabel')
-        self.colorLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.colorLabel)
-        self.colorButton = QtGui.QPushButton(self.colorPage)
-        self.colorButton.setText(u'')
-        self.colorButton.setObjectName(u'colorButton')
-        self.colorLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.colorButton)
-        self.backgroundStackedWidget.addWidget(self.colorPage)
-        self.gradientPage = QtGui.QWidget()
-        self.gradientPage.setObjectName(u'gradientPage')
-        self.gradientLayout = QtGui.QFormLayout(self.gradientPage)
+        self.colorLayout.setObjectName(u'ColorLayout')
+        self.colorLabel = QtGui.QLabel(self.colorWidget)
+        self.colorLabel.setObjectName(u'ColorLabel')
+        self.colorButton = QtGui.QPushButton(self.colorWidget)
+        self.colorButton.setObjectName(u'ColorButton')
+        self.colorLayout.addRow(self.colorLabel, self.colorButton)
+        self.colorSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.colorLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.colorSpacer)
+        self.backgroundStack.addWidget(self.colorWidget)
+        self.gradientWidget = QtGui.QWidget(self.backgroundPage)
+        self.gradientWidget.setObjectName(u'GradientWidget')
+        self.gradientLayout = QtGui.QFormLayout(self.gradientWidget)
         self.gradientLayout.setMargin(0)
-        self.gradientLayout.setSpacing(8)
-        self.gradientLayout.setObjectName(u'gradientLayout')
-        self.gradientStartLabel = QtGui.QLabel(self.gradientPage)
-        self.gradientStartLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.gradientStartLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.gradientStartLabel.setObjectName(u'gradientStartLabel')
-        self.gradientLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.gradientStartLabel)
-        self.gradientStartButton = QtGui.QPushButton(self.gradientPage)
-        self.gradientStartButton.setText(u'')
-        self.gradientStartButton.setObjectName(u'gradientStartButton')
-        self.gradientLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.gradientStartButton)
-        self.gradientEndLabel = QtGui.QLabel(self.gradientPage)
-        self.gradientEndLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.gradientEndLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.gradientEndLabel.setObjectName(u'gradientEndLabel')
-        self.gradientLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.gradientEndLabel)
-        self.gradientEndButton = QtGui.QPushButton(self.gradientPage)
-        self.gradientEndButton.setText(u'')
-        self.gradientEndButton.setObjectName(u'gradientEndButton')
-        self.gradientLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.gradientEndButton)
-        self.gradientTypeLabel = QtGui.QLabel(self.gradientPage)
-        self.gradientTypeLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.gradientTypeLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.gradientTypeLabel.setObjectName(u'gradientTypeLabel')
-        self.gradientLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.gradientTypeLabel)
-        self.gradientComboBox = QtGui.QComboBox(self.gradientPage)
-        self.gradientComboBox.setObjectName(u'gradientComboBox')
-        self.gradientComboBox.addItem(u'')
-        self.gradientComboBox.addItem(u'')
-        self.gradientComboBox.addItem(u'')
-        self.gradientComboBox.addItem(u'')
-        self.gradientComboBox.addItem(u'')
-        self.gradientLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.gradientComboBox)
-        self.backgroundStackedWidget.addWidget(self.gradientPage)
-        self.imagePage = QtGui.QWidget()
-        self.imagePage.setObjectName(u'imagePage')
-        self.imageLayout = QtGui.QFormLayout(self.imagePage)
+        self.gradientLayout.setObjectName(u'GradientLayout')
+        self.gradientStartLabel = QtGui.QLabel(self.gradientWidget)
+        self.gradientStartLabel.setObjectName(u'GradientStartLabel')
+        self.gradientStartButton = QtGui.QPushButton(self.gradientWidget)
+        self.gradientStartButton.setObjectName(u'GradientStartButton')
+        self.gradientLayout.addRow(self.gradientStartLabel,
+            self.gradientStartButton)
+        self.gradientEndLabel = QtGui.QLabel(self.gradientWidget)
+        self.gradientEndLabel.setObjectName(u'GradientEndLabel')
+        self.gradientEndButton = QtGui.QPushButton(self.gradientWidget)
+        self.gradientEndButton.setObjectName(u'GradientEndButton')
+        self.gradientLayout.addRow(self.gradientEndLabel,
+            self.gradientEndButton)
+        self.gradientTypeLabel = QtGui.QLabel(self.gradientWidget)
+        self.gradientTypeLabel.setObjectName(u'GradientTypeLabel')
+        self.gradientComboBox = QtGui.QComboBox(self.gradientWidget)
+        self.gradientComboBox.setObjectName(u'GradientComboBox')
+        self.gradientComboBox.addItems([u'', u'', u'', u'', u''])
+        self.gradientLayout.addRow(self.gradientTypeLabel,
+            self.gradientComboBox)
+        self.gradientSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.gradientLayout.setItem(3, QtGui.QFormLayout.LabelRole,
+            self.gradientSpacer)
+        self.backgroundStack.addWidget(self.gradientWidget)
+        self.imageWidget = QtGui.QWidget(self.backgroundPage)
+        self.imageWidget.setObjectName(u'ImageWidget')
+        self.imageLayout = QtGui.QFormLayout(self.imageWidget)
         self.imageLayout.setMargin(0)
-        self.imageLayout.setSpacing(8)
-        self.imageLayout.setObjectName(u'imageLayout')
-        self.imageLabel = QtGui.QLabel(self.imagePage)
-        self.imageLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.imageLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.imageLabel.setObjectName(u'imageLabel')
-        self.imageLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.imageLabel)
+        self.imageLayout.setObjectName(u'ImageLayout')
+        self.imageLabel = QtGui.QLabel(self.imageWidget)
+        self.imageLabel.setObjectName(u'ImageLabel')
         self.imageFileLayout = QtGui.QHBoxLayout()
-        self.imageFileLayout.setSpacing(8)
-        self.imageFileLayout.setObjectName(u'imageFileLayout')
-        self.imageLineEdit = QtGui.QLineEdit(self.imagePage)
-        self.imageLineEdit.setObjectName(u'imageLineEdit')
-        self.imageFileLayout.addWidget(self.imageLineEdit)
-        self.imageBrowseButton = QtGui.QToolButton(self.imagePage)
-        self.imageBrowseButton.setText(u'')
+        self.imageFileLayout.setObjectName(u'ImageFileLayout')
+        self.imageFileEdit = QtGui.QLineEdit(self.imageWidget)
+        self.imageFileEdit.setObjectName(u'ImageFileEdit')
+        self.imageFileLayout.addWidget(self.imageFileEdit)
+        self.imageBrowseButton = QtGui.QToolButton(self.imageWidget)
+        self.imageBrowseButton.setObjectName(u'ImageBrowseButton')
         self.imageBrowseButton.setIcon(
             build_icon(u':/general/general_open.png'))
-        self.imageBrowseButton.setObjectName(u'imageBrowseButton')
         self.imageFileLayout.addWidget(self.imageBrowseButton)
-        self.imageLayout.setLayout(0,
-            QtGui.QFormLayout.FieldRole, self.imageFileLayout)
-        self.backgroundStackedWidget.addWidget(self.imagePage)
-        self.backgroundLayout.addWidget(self.backgroundStackedWidget)
+        self.imageLayout.addRow(self.imageLabel, self.imageFileLayout)
+        self.imageSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.imageLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.imageSpacer)
+        self.backgroundStack.addWidget(self.imageWidget)
+        self.backgroundLayout.addLayout(self.backgroundStack)
         ThemeWizard.addPage(self.backgroundPage)
+        # Main Area Page
         self.mainAreaPage = QtGui.QWizardPage()
-        self.mainAreaPage.setObjectName(u'mainAreaPage')
+        self.mainAreaPage.setObjectName(u'MainAreaPage')
         self.mainAreaLayout = QtGui.QFormLayout(self.mainAreaPage)
-        self.mainAreaLayout.setFormAlignment(QtCore.Qt.AlignLeading |
-            QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
-        self.mainAreaLayout.setMargin(20)
-        self.mainAreaLayout.setSpacing(8)
-        self.mainAreaLayout.setObjectName(u'mainAreaLayout')
+        self.mainAreaLayout.setObjectName(u'MainAreaLayout')
         self.mainFontLabel = QtGui.QLabel(self.mainAreaPage)
-        self.mainFontLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.mainFontLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.mainFontLabel.setObjectName(u'mainFontLabel')
-        self.mainAreaLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.mainFontLabel)
+        self.mainFontLabel.setObjectName(u'MainFontLabel')
         self.mainFontComboBox = QtGui.QFontComboBox(self.mainAreaPage)
-        self.mainFontComboBox.setObjectName(u'mainFontComboBox')
-        self.mainAreaLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.mainFontComboBox)
+        self.mainFontComboBox.setObjectName(u'MainFontComboBox')
+        self.mainAreaLayout.addRow(self.mainFontLabel, self.mainFontComboBox)
         self.mainColorLabel = QtGui.QLabel(self.mainAreaPage)
-        self.mainColorLabel.setObjectName(u'mainColorLabel')
-        self.mainAreaLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.mainColorLabel)
-        self.fontPropertiesLayout = QtGui.QHBoxLayout()
-        self.fontPropertiesLayout.setSpacing(24)
-        self.fontPropertiesLayout.setObjectName(u'fontPropertiesLayout')
-        self.mainColorPushButton = QtGui.QPushButton(self.mainAreaPage)
-        self.mainColorPushButton.setText(u'')
-        self.mainColorPushButton.setObjectName(u'mainColorPushButton')
-        self.fontPropertiesLayout.addWidget(self.mainColorPushButton)
-        self.boldCheckBox = QtGui.QCheckBox(self.mainAreaPage)
-        self.boldCheckBox.setObjectName(u'boldCheckBox')
-        self.fontPropertiesLayout.addWidget(self.boldCheckBox)
-        self.italicsCheckBox = QtGui.QCheckBox(self.mainAreaPage)
-        self.italicsCheckBox.setObjectName(u'italicsCheckBox')
-        self.fontPropertiesLayout.addWidget(self.italicsCheckBox)
-        self.mainAreaLayout.setLayout(1,
-            QtGui.QFormLayout.FieldRole, self.fontPropertiesLayout)
+        self.mainColorLabel.setObjectName(u'MainColorLabel')
+        self.mainPropertiesLayout = QtGui.QHBoxLayout()
+        self.mainPropertiesLayout.setObjectName(u'MainPropertiesLayout')
+        self.mainColorButton = QtGui.QPushButton(self.mainAreaPage)
+        self.mainColorButton.setObjectName(u'MainColorButton')
+        self.mainPropertiesLayout.addWidget(self.mainColorButton)
+        self.mainPropertiesLayout.addSpacing(20)
+        self.mainBoldCheckBox = QtGui.QCheckBox(self.mainAreaPage)
+        self.mainBoldCheckBox.setObjectName(u'MainBoldCheckBox')
+        self.mainPropertiesLayout.addWidget(self.mainBoldCheckBox)
+        self.mainPropertiesLayout.addSpacing(20)
+        self.mainItalicsCheckBox = QtGui.QCheckBox(self.mainAreaPage)
+        self.mainItalicsCheckBox.setObjectName(u'MainItalicsCheckBox')
+        self.mainPropertiesLayout.addWidget(self.mainItalicsCheckBox)
+        self.mainAreaLayout.addRow(self.mainColorLabel,
+            self.mainPropertiesLayout)
         self.mainSizeLabel = QtGui.QLabel(self.mainAreaPage)
-        self.mainSizeLabel.setObjectName(u'mainSizeLabel')
-        self.mainAreaLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.mainSizeLabel)
+        self.mainSizeLabel.setObjectName(u'MainSizeLabel')
         self.mainSizeLayout = QtGui.QHBoxLayout()
-        self.mainSizeLayout.setSpacing(8)
-        self.mainSizeLayout.setMargin(0)
-        self.mainSizeLayout.setObjectName(u'mainSizeLayout')
+        self.mainSizeLayout.setObjectName(u'MainSizeLayout')
         self.mainSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.mainSizeSpinBox.sizePolicy().hasHeightForWidth())
-        self.mainSizeSpinBox.setSizePolicy(sizePolicy)
-        self.mainSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
         self.mainSizeSpinBox.setMaximum(999)
-        self.mainSizeSpinBox.setProperty(u'value', 16)
-        self.mainSizeSpinBox.setObjectName(u'mainSizeSpinBox')
+        self.mainSizeSpinBox.setValue(16)
+        self.mainSizeSpinBox.setObjectName(u'MainSizeSpinBox')
         self.mainSizeLayout.addWidget(self.mainSizeSpinBox)
         self.mainLineCountLabel = QtGui.QLabel(self.mainAreaPage)
-        self.mainLineCountLabel.setObjectName(u'mainLineCountLabel')
+        self.mainLineCountLabel.setObjectName(u'MainLineCountLabel')
         self.mainSizeLayout.addWidget(self.mainLineCountLabel)
-        self.mainAreaLayout.setLayout(2,
-            QtGui.QFormLayout.FieldRole, self.mainSizeLayout)
+        self.mainAreaLayout.addRow(self.mainSizeLabel, self.mainSizeLayout)
         self.lineSpacingLabel = QtGui.QLabel(self.mainAreaPage)
-        self.lineSpacingLabel.setObjectName(u'lineSpacingLabel')
-        self.mainAreaLayout.setWidget(3,
-            QtGui.QFormLayout.LabelRole, self.lineSpacingLabel)
+        self.lineSpacingLabel.setObjectName(u'LineSpacingLabel')
         self.lineSpacingSpinBox = QtGui.QSpinBox(self.mainAreaPage)
         self.lineSpacingSpinBox.setMinimum(-50)
         self.lineSpacingSpinBox.setMaximum(50)
-        self.lineSpacingSpinBox.setObjectName(u'lineSpacingSpinBox')
-        self.mainAreaLayout.setWidget(3,
-            QtGui.QFormLayout.FieldRole, self.lineSpacingSpinBox)
+        self.lineSpacingSpinBox.setObjectName(u'LineSpacingSpinBox')
+        self.mainAreaLayout.addRow(self.lineSpacingLabel,
+            self.lineSpacingSpinBox)
         self.outlineCheckBox = QtGui.QCheckBox(self.mainAreaPage)
-        self.outlineCheckBox.setObjectName(u'outlineCheckBox')
-        self.mainAreaLayout.setWidget(4,
-            QtGui.QFormLayout.LabelRole, self.outlineCheckBox)
+        self.outlineCheckBox.setObjectName(u'OutlineCheckBox')
         self.outlineLayout = QtGui.QHBoxLayout()
-        self.outlineLayout.setObjectName(u'outlineLayout')
-        self.outlineColorPushButton = QtGui.QPushButton(self.mainAreaPage)
-        self.outlineColorPushButton.setEnabled(True)
-        self.outlineColorPushButton.setText(u'')
-        self.outlineColorPushButton.setObjectName(u'outlineColorPushButton')
-        self.outlineLayout.addWidget(self.outlineColorPushButton)
+        self.outlineLayout.setObjectName(u'OutlineLayout')
+        self.outlineColorButton = QtGui.QPushButton(self.mainAreaPage)
+        self.outlineColorButton.setEnabled(False)
+        self.outlineColorButton.setObjectName(u'OutlineColorButton')
+        self.outlineLayout.addWidget(self.outlineColorButton)
+        self.outlineLayout.addSpacing(20)
         self.outlineSizeLabel = QtGui.QLabel(self.mainAreaPage)
-        self.outlineSizeLabel.setObjectName(u'outlineSizeLabel')
+        self.outlineSizeLabel.setObjectName(u'OutlineSizeLabel')
         self.outlineLayout.addWidget(self.outlineSizeLabel)
         self.outlineSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
-        self.outlineSizeSpinBox.setObjectName(u'outlineSizeSpinBox')
+        self.outlineSizeSpinBox.setEnabled(False)
+        self.outlineSizeSpinBox.setObjectName(u'OutlineSizeSpinBox')
         self.outlineLayout.addWidget(self.outlineSizeSpinBox)
-        self.mainAreaLayout.setLayout(4,
-            QtGui.QFormLayout.FieldRole, self.outlineLayout)
+        self.mainAreaLayout.addRow(self.outlineCheckBox, self.outlineLayout)
         self.shadowCheckBox = QtGui.QCheckBox(self.mainAreaPage)
-        self.shadowCheckBox.setObjectName(u'shadowCheckBox')
-        self.mainAreaLayout.setWidget(5,
-            QtGui.QFormLayout.LabelRole, self.shadowCheckBox)
+        self.shadowCheckBox.setObjectName(u'ShadowCheckBox')
         self.shadowLayout = QtGui.QHBoxLayout()
-        self.shadowLayout.setObjectName(u'shadowLayout')
-        self.shadowColorPushButton = QtGui.QPushButton(self.mainAreaPage)
-        self.shadowColorPushButton.setEnabled(True)
-        self.shadowColorPushButton.setText(u'')
-        self.shadowColorPushButton.setObjectName(u'shadowColorPushButton')
-        self.shadowLayout.addWidget(self.shadowColorPushButton)
+        self.shadowLayout.setObjectName(u'ShadowLayout')
+        self.shadowColorButton = QtGui.QPushButton(self.mainAreaPage)
+        self.shadowColorButton.setEnabled(False)
+        self.shadowColorButton.setObjectName(u'shadowColorButton')
+        self.shadowLayout.addWidget(self.shadowColorButton)
+        self.shadowLayout.addSpacing(20)
         self.shadowSizeLabel = QtGui.QLabel(self.mainAreaPage)
-        self.shadowSizeLabel.setObjectName(u'shadowSizeLabel')
+        self.shadowSizeLabel.setObjectName(u'ShadowSizeLabel')
         self.shadowLayout.addWidget(self.shadowSizeLabel)
         self.shadowSizeSpinBox = QtGui.QSpinBox(self.mainAreaPage)
-        self.shadowSizeSpinBox.setObjectName(u'shadowSizeSpinBox')
+        self.shadowSizeSpinBox.setEnabled(False)
+        self.shadowSizeSpinBox.setObjectName(u'ShadowSizeSpinBox')
         self.shadowLayout.addWidget(self.shadowSizeSpinBox)
-        self.mainAreaLayout.setLayout(5,
-            QtGui.QFormLayout.FieldRole, self.shadowLayout)
+        self.mainAreaLayout.addRow(self.shadowCheckBox, self.shadowLayout)
         ThemeWizard.addPage(self.mainAreaPage)
+        # Footer Area Page
         self.footerAreaPage = QtGui.QWizardPage()
-        self.footerAreaPage.setObjectName(u'footerAreaPage')
-        self.footerLayout = QtGui.QFormLayout(self.footerAreaPage)
-        self.footerLayout.setFieldGrowthPolicy(
-            QtGui.QFormLayout.ExpandingFieldsGrow)
-        self.footerLayout.setMargin(20)
-        self.footerLayout.setSpacing(8)
-        self.footerLayout.setObjectName(u'footerLayout')
+        self.footerAreaPage.setObjectName(u'FooterAreaPage')
+        self.footerAreaLayout = QtGui.QFormLayout(self.footerAreaPage)
+        self.footerAreaLayout.setObjectName(u'FooterAreaLayout')
         self.footerFontLabel = QtGui.QLabel(self.footerAreaPage)
-        self.footerFontLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.footerFontLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.footerFontLabel.setObjectName(u'footerFontLabel')
-        self.footerLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.footerFontLabel)
+        self.footerFontLabel.setObjectName(u'FooterFontLabel')
         self.footerFontComboBox = QtGui.QFontComboBox(self.footerAreaPage)
         self.footerFontComboBox.setObjectName(u'footerFontComboBox')
-        self.footerLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.footerFontComboBox)
+        self.footerAreaLayout.addRow(self.footerFontLabel,
+            self.footerFontComboBox)
         self.footerColorLabel = QtGui.QLabel(self.footerAreaPage)
-        self.footerColorLabel.setObjectName(u'footerColorLabel')
-        self.footerLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.footerColorLabel)
-        self.footerColorPushButton = QtGui.QPushButton(self.footerAreaPage)
-        self.footerColorPushButton.setText(u'')
-        self.footerColorPushButton.setObjectName(u'footerColorPushButton')
-        self.footerLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.footerColorPushButton)
+        self.footerColorLabel.setObjectName(u'FooterColorLabel')
+        self.footerColorButton = QtGui.QPushButton(self.footerAreaPage)
+        self.footerColorButton.setObjectName(u'footerColorButton')
+        self.footerAreaLayout.addRow(self.footerColorLabel,
+            self.footerColorButton)
         self.footerSizeLabel = QtGui.QLabel(self.footerAreaPage)
-        self.footerSizeLabel.setObjectName(u'footerSizeLabel')
-        self.footerLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.footerSizeLabel)
+        self.footerSizeLabel.setObjectName(u'FooterSizeLabel')
         self.footerSizeSpinBox = QtGui.QSpinBox(self.footerAreaPage)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.footerSizeSpinBox.sizePolicy().hasHeightForWidth())
-        self.footerSizeSpinBox.setSizePolicy(sizePolicy)
-        self.footerSizeSpinBox.setMinimumSize(QtCore.QSize(70, 0))
         self.footerSizeSpinBox.setMaximum(999)
-        self.footerSizeSpinBox.setProperty(u'value', 10)
-        self.footerSizeSpinBox.setObjectName(u'footerSizeSpinBox')
-        self.footerLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.footerSizeSpinBox)
+        self.footerSizeSpinBox.setValue(10)
+        self.footerSizeSpinBox.setObjectName(u'FooterSizeSpinBox')
+        self.footerAreaLayout.addRow(self.footerSizeLabel, self.footerSizeSpinBox)
         ThemeWizard.addPage(self.footerAreaPage)
+        # Alignment Page
         self.alignmentPage = QtGui.QWizardPage()
-        self.alignmentPage.setObjectName(u'alignmentPage')
+        self.alignmentPage.setObjectName(u'AlignmentPage')
         self.alignmentLayout = QtGui.QFormLayout(self.alignmentPage)
-        self.alignmentLayout.setMargin(20)
-        self.alignmentLayout.setSpacing(8)
-        self.alignmentLayout.setObjectName(u'alignmentLayout')
+        self.alignmentLayout.setObjectName(u'AlignmentLayout')
         self.horizontalLabel = QtGui.QLabel(self.alignmentPage)
-        self.horizontalLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.horizontalLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.horizontalLabel.setObjectName(u'horizontalLabel')
-        self.alignmentLayout.setWidget(0,
-            QtGui.QFormLayout.LabelRole, self.horizontalLabel)
+        self.horizontalLabel.setObjectName(u'HorizontalLabel')
         self.horizontalComboBox = QtGui.QComboBox(self.alignmentPage)
-        self.horizontalComboBox.setEditable(False)
-        self.horizontalComboBox.setObjectName(u'horizontalComboBox')
-        self.horizontalComboBox.addItem(u'')
-        self.horizontalComboBox.addItem(u'')
-        self.horizontalComboBox.addItem(u'')
-        self.alignmentLayout.setWidget(0,
-            QtGui.QFormLayout.FieldRole, self.horizontalComboBox)
+        self.horizontalComboBox.addItems([u'', u'', u''])
+        self.horizontalComboBox.setObjectName(u'HorizontalComboBox')
+        self.alignmentLayout.addRow(self.horizontalLabel,
+            self.horizontalComboBox)
         self.verticalLabel = QtGui.QLabel(self.alignmentPage)
-        self.verticalLabel.setObjectName(u'verticalLabel')
-        self.alignmentLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.verticalLabel)
+        self.verticalLabel.setObjectName(u'VerticalLabel')
         self.verticalComboBox = QtGui.QComboBox(self.alignmentPage)
-        self.verticalComboBox.setObjectName(u'verticalComboBox')
-        self.verticalComboBox.addItem(u'')
-        self.verticalComboBox.addItem(u'')
-        self.verticalComboBox.addItem(u'')
-        self.alignmentLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.verticalComboBox)
+        self.verticalComboBox.addItems([u'', u'', u''])
+        self.verticalComboBox.setObjectName(u'VerticalComboBox')
+        self.alignmentLayout.addRow(self.verticalLabel, self.verticalComboBox)
         self.transitionsCheckBox = QtGui.QCheckBox(self.alignmentPage)
-        self.transitionsCheckBox.setObjectName(u'transitionsCheckBox')
-        self.alignmentLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.transitionsCheckBox)
+        self.transitionsCheckBox.setObjectName(u'TransitionsCheckBox')
+        self.alignmentLayout.addRow(self.transitionsCheckBox)
         ThemeWizard.addPage(self.alignmentPage)
+        # Area Position Page
         self.areaPositionPage = QtGui.QWizardPage()
-        self.areaPositionPage.setObjectName(u'areaPositionPage')
-        self.areaPositionLayout = QtGui.QGridLayout(self.areaPositionPage)
-        self.areaPositionLayout.setMargin(20)
-        self.areaPositionLayout.setSpacing(8)
-        self.areaPositionLayout.setObjectName(u'areaPositionLayout')
+        self.areaPositionPage.setObjectName(u'AreaPositionPage')
+        self.areaPositionLayout = QtGui.QHBoxLayout(self.areaPositionPage)
+        self.areaPositionLayout.setObjectName(u'AreaPositionLayout')
         self.mainPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
-        self.mainPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0))
-        self.mainPositionGroupBox.setObjectName(u'mainPositionGroupBox')
+        self.mainPositionGroupBox.setObjectName(u'MainPositionGroupBox')
         self.mainPositionLayout = QtGui.QFormLayout(self.mainPositionGroupBox)
-        self.mainPositionLayout.setMargin(8)
-        self.mainPositionLayout.setSpacing(8)
-        self.mainPositionLayout.setObjectName(u'mainPositionLayout')
-        self.mainDefaultPositionCheckBox = QtGui.QCheckBox(
-            self.mainPositionGroupBox)
-        self.mainDefaultPositionCheckBox.setChecked(True)
-        self.mainDefaultPositionCheckBox.setTristate(False)
-        self.mainDefaultPositionCheckBox.setObjectName(
-            u'mainDefaultPositionCheckBox')
-        self.mainPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
-            self.mainDefaultPositionCheckBox)
-        self.nainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
-        self.nainXLabel.setObjectName(u'nainXLabel')
-        self.mainPositionLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.nainXLabel)
+        self.mainPositionLayout.setObjectName(u'MainPositionLayout')
+        self.mainPositionCheckBox = QtGui.QCheckBox(self.mainPositionGroupBox)
+        self.mainPositionCheckBox.setObjectName(u'MainPositionCheckBox')
+        self.mainPositionLayout.addRow(self.mainPositionCheckBox)
+        self.mainXLabel = QtGui.QLabel(self.mainPositionGroupBox)
+        self.mainXLabel.setObjectName(u'MainXLabel')
         self.mainXSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
-        self.mainXSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.mainXSpinBox.sizePolicy().hasHeightForWidth())
-        self.mainXSpinBox.setSizePolicy(sizePolicy)
-        self.mainXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.mainXSpinBox.setMaximum(9999)
-        self.mainXSpinBox.setProperty(u'value', 0)
-        self.mainXSpinBox.setObjectName(u'mainXSpinBox')
-        self.mainPositionLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.mainXSpinBox)
+        self.mainXSpinBox.setObjectName(u'MainXSpinBox')
+        self.mainPositionLayout.addRow(self.mainXLabel, self.mainXSpinBox)
+        self.mainYLabel = QtGui.QLabel(self.mainPositionGroupBox)
+        self.mainYLabel.setObjectName(u'MainYLabel')
         self.mainYSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
-        self.mainYSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.mainYSpinBox.sizePolicy().hasHeightForWidth())
-        self.mainYSpinBox.setSizePolicy(sizePolicy)
-        self.mainYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.mainYSpinBox.setMaximum(9999)
-        self.mainYSpinBox.setObjectName(u'mainYSpinBox')
-        self.mainPositionLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.mainYSpinBox)
-        self.mainYLabel = QtGui.QLabel(self.mainPositionGroupBox)
-        self.mainYLabel.setObjectName(u'mainYLabel')
-        self.mainPositionLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.mainYLabel)
+        self.mainYSpinBox.setObjectName(u'MainYSpinBox')
+        self.mainPositionLayout.addRow(self.mainYLabel, self.mainYSpinBox)
+        self.mainWidthLabel = QtGui.QLabel(self.mainPositionGroupBox)
+        self.mainWidthLabel.setObjectName(u'MainWidthLabel')
         self.mainWidthSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
-        self.mainWidthSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.mainWidthSpinBox.sizePolicy().hasHeightForWidth())
-        self.mainWidthSpinBox.setSizePolicy(sizePolicy)
-        self.mainWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.mainWidthSpinBox.setMaximum(9999)
-        self.mainWidthSpinBox.setObjectName(u'mainWidthSpinBox')
-        self.mainPositionLayout.setWidget(3,
-            QtGui.QFormLayout.FieldRole, self.mainWidthSpinBox)
-        self.mainWidthLabel = QtGui.QLabel(self.mainPositionGroupBox)
-        self.mainWidthLabel.setObjectName(u'mainWidthLabel')
-        self.mainPositionLayout.setWidget(3,
-            QtGui.QFormLayout.LabelRole, self.mainWidthLabel)
+        self.mainWidthSpinBox.setObjectName(u'MainWidthSpinBox')
+        self.mainPositionLayout.addRow(self.mainWidthLabel,
+            self.mainWidthSpinBox)
+        self.mainHeightLabel = QtGui.QLabel(self.mainPositionGroupBox)
+        self.mainHeightLabel.setObjectName(u'MainHeightLabel')
         self.mainHeightSpinBox = QtGui.QSpinBox(self.mainPositionGroupBox)
-        self.mainHeightSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.mainHeightSpinBox.sizePolicy().hasHeightForWidth())
-        self.mainHeightSpinBox.setSizePolicy(sizePolicy)
-        self.mainHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.mainHeightSpinBox.setMaximum(9999)
-        self.mainHeightSpinBox.setObjectName(u'mainHeightSpinBox')
-        self.mainPositionLayout.setWidget(4,
-            QtGui.QFormLayout.FieldRole, self.mainHeightSpinBox)
-        self.mainHeightLabel = QtGui.QLabel(self.mainPositionGroupBox)
-        self.mainHeightLabel.setObjectName(u'mainHeightLabel')
-        self.mainPositionLayout.setWidget(4,
-            QtGui.QFormLayout.LabelRole, self.mainHeightLabel)
-        self.areaPositionLayout.addWidget(
-            self.mainPositionGroupBox, 1, 0, 1, 1)
+        self.mainHeightSpinBox.setObjectName(u'MainHeightSpinBox')
+        self.mainPositionLayout.addRow(self.mainHeightLabel,
+            self.mainHeightSpinBox)
+        self.areaPositionLayout.addWidget(self.mainPositionGroupBox)
         self.footerPositionGroupBox = QtGui.QGroupBox(self.areaPositionPage)
-        self.footerPositionGroupBox.setMinimumSize(QtCore.QSize(248, 0))
-        self.footerPositionGroupBox.setObjectName(u'footerPositionGroupBox')
-        self.footerPositionLayout = QtGui.QFormLayout(
-            self.footerPositionGroupBox)
-        self.footerPositionLayout.setMargin(8)
-        self.footerPositionLayout.setSpacing(8)
-        self.footerPositionLayout.setObjectName(u'footerPositionLayout')
+        self.footerPositionGroupBox.setObjectName(u'FooterPositionGroupBox')
+        self.footerPositionLayout = QtGui.QFormLayout(self.footerPositionGroupBox)
+        self.footerPositionLayout.setObjectName(u'FooterPositionLayout')
+        self.footerPositionCheckBox = QtGui.QCheckBox(self.footerPositionGroupBox)
+        self.footerPositionCheckBox.setObjectName(u'FooterPositionCheckBox')
+        self.footerPositionLayout.addRow(self.footerPositionCheckBox)
         self.footerXLabel = QtGui.QLabel(self.footerPositionGroupBox)
-        self.footerXLabel.setObjectName(u'footerXLabel')
-        self.footerPositionLayout.setWidget(1,
-            QtGui.QFormLayout.LabelRole, self.footerXLabel)
+        self.footerXLabel.setObjectName(u'FooterXLabel')
         self.footerXSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
-        self.footerXSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.footerXSpinBox.sizePolicy().hasHeightForWidth())
-        self.footerXSpinBox.setSizePolicy(sizePolicy)
-        self.footerXSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.footerXSpinBox.setMaximum(9999)
-        self.footerXSpinBox.setProperty(u'value', 0)
-        self.footerXSpinBox.setObjectName(u'footerXSpinBox')
-        self.footerPositionLayout.setWidget(1,
-            QtGui.QFormLayout.FieldRole, self.footerXSpinBox)
+        self.footerXSpinBox.setObjectName(u'FooterXSpinBox')
+        self.footerPositionLayout.addRow(self.footerXLabel, self.footerXSpinBox)
         self.footerYLabel = QtGui.QLabel(self.footerPositionGroupBox)
-        self.footerYLabel.setObjectName(u'footerYLabel')
-        self.footerPositionLayout.setWidget(2,
-            QtGui.QFormLayout.LabelRole, self.footerYLabel)
+        self.footerYLabel.setObjectName(u'FooterYLabel')
         self.footerYSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
-        self.footerYSpinBox.setEnabled(False)
-        sizePolicy = QtGui.QSizePolicy(
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.footerYSpinBox.sizePolicy().hasHeightForWidth())
-        self.footerYSpinBox.setSizePolicy(sizePolicy)
-        self.footerYSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.footerYSpinBox.setMaximum(9999)
-        self.footerYSpinBox.setProperty(u'value', 0)
-        self.footerYSpinBox.setObjectName(u'footerYSpinBox')
-        self.footerPositionLayout.setWidget(2,
-            QtGui.QFormLayout.FieldRole, self.footerYSpinBox)
+        self.footerYSpinBox.setObjectName(u'FooterYSpinBox')
+        self.footerPositionLayout.addRow(self.footerYLabel, self.footerYSpinBox)
         self.footerWidthLabel = QtGui.QLabel(self.footerPositionGroupBox)
-        self.footerWidthLabel.setObjectName(u'footerWidthLabel')
-        self.footerPositionLayout.setWidget(3,
-            QtGui.QFormLayout.LabelRole, self.footerWidthLabel)
+        self.footerWidthLabel.setObjectName(u'FooterWidthLabel')
         self.footerWidthSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
-        self.footerWidthSpinBox.setEnabled(False)
-        self.footerWidthSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.footerWidthSpinBox.setMaximum(9999)
-        self.footerWidthSpinBox.setObjectName(u'footerWidthSpinBox')
-        self.footerPositionLayout.setWidget(3,
-            QtGui.QFormLayout.FieldRole, self.footerWidthSpinBox)
+        self.footerWidthSpinBox.setObjectName(u'FooterWidthSpinBox')
+        self.footerPositionLayout.addRow(self.footerWidthLabel,
+            self.footerWidthSpinBox)
         self.footerHeightLabel = QtGui.QLabel(self.footerPositionGroupBox)
-        self.footerHeightLabel.setObjectName(u'footerHeightLabel')
-        self.footerPositionLayout.setWidget(4,
-            QtGui.QFormLayout.LabelRole, self.footerHeightLabel)
+        self.footerHeightLabel.setObjectName(u'FooterHeightLabel')
         self.footerHeightSpinBox = QtGui.QSpinBox(self.footerPositionGroupBox)
-        self.footerHeightSpinBox.setEnabled(False)
-        self.footerHeightSpinBox.setMinimumSize(QtCore.QSize(78, 0))
         self.footerHeightSpinBox.setMaximum(9999)
-        self.footerHeightSpinBox.setObjectName(u'footerHeightSpinBox')
-        self.footerPositionLayout.setWidget(4,
-            QtGui.QFormLayout.FieldRole, self.footerHeightSpinBox)
-        self.footerDefaultPositionCheckBox = QtGui.QCheckBox(
-            self.footerPositionGroupBox)
-        self.footerDefaultPositionCheckBox.setChecked(True)
-        self.footerDefaultPositionCheckBox.setObjectName(
-            u'footerDefaultPositionCheckBox')
-        self.footerPositionLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
-            self.footerDefaultPositionCheckBox)
-        self.areaPositionLayout.addWidget(
-            self.footerPositionGroupBox, 1, 1, 1, 1)
+        self.footerHeightSpinBox.setObjectName(u'FooterHeightSpinBox')
+        self.footerPositionLayout.addRow(self.footerHeightLabel,
+            self.footerHeightSpinBox)
+        self.areaPositionLayout.addWidget(self.footerPositionGroupBox)
         ThemeWizard.addPage(self.areaPositionPage)
+        # Preview Page
         self.previewPage = QtGui.QWizardPage()
-        self.previewPage.setObjectName(u'previewPage')
+        self.previewPage.setObjectName(u'PreviewPage')
         self.previewLayout = QtGui.QVBoxLayout(self.previewPage)
-        self.previewLayout.setSpacing(8)
-        self.previewLayout.setMargin(20)
-        self.previewLayout.setObjectName(u'previewLayout')
-        self.themeNameLayout = QtGui.QHBoxLayout()
-        self.themeNameLayout.setSpacing(8)
-        self.themeNameLayout.setObjectName(u'themeNameLayout')
+        self.previewLayout.setObjectName(u'PreviewLayout')
+        self.themeNameLayout = QtGui.QFormLayout()
+        self.themeNameLayout.setObjectName(u'ThemeNameLayout')
         self.themeNameLabel = QtGui.QLabel(self.previewPage)
-        self.themeNameLabel.setMinimumSize(QtCore.QSize(103, 0))
-        self.themeNameLabel.setTextFormat(QtCore.Qt.PlainText)
-        self.themeNameLabel.setAlignment(QtCore.Qt.AlignRight |
-            QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter)
-        self.themeNameLabel.setObjectName(u'themeNameLabel')
-        self.themeNameLayout.addWidget(self.themeNameLabel)
+        self.themeNameLabel.setObjectName(u'ThemeNameLabel')
         self.themeNameEdit = QtGui.QLineEdit(self.previewPage)
-        self.themeNameEdit.setObjectName(u'themeNameEdit')
-        self.themeNameLayout.addWidget(self.themeNameEdit)
+        self.themeNameEdit.setObjectName(u'ThemeNameEdit')
+        self.themeNameLayout.addRow(self.themeNameLabel, self.themeNameEdit)
         self.previewLayout.addLayout(self.themeNameLayout)
         self.previewPaneLayout = QtGui.QHBoxLayout()
-        self.previewPaneLayout.setSpacing(0)
-        self.previewPaneLayout.setObjectName(u'previewPaneLayout')
-        self.previewLeftSpacer = QtGui.QSpacerItem(58, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.previewPaneLayout.addItem(self.previewLeftSpacer)
+        self.previewPaneLayout.setObjectName(u'PreviewPaneLayout')
+        self.previewPaneLayout.addStretch()
         self.previewBoxLabel = QtGui.QLabel(self.previewPage)
         sizePolicy = QtGui.QSizePolicy(
             QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.previewBoxLabel.sizePolicy().hasHeightForWidth())
         self.previewBoxLabel.setSizePolicy(sizePolicy)
         self.previewBoxLabel.setMinimumSize(QtCore.QSize(100, 150))
         self.previewBoxLabel.setFrameShape(QtGui.QFrame.WinPanel)
         self.previewBoxLabel.setFrameShadow(QtGui.QFrame.Sunken)
         self.previewBoxLabel.setLineWidth(1)
-        self.previewBoxLabel.setText(u'')
         self.previewBoxLabel.setScaledContents(True)
-        self.previewBoxLabel.setObjectName(u'previewBoxLabel')
+        self.previewBoxLabel.setObjectName(u'PreviewBoxLabel')
         self.previewPaneLayout.addWidget(self.previewBoxLabel)
-        self.previewRightSpacer = QtGui.QSpacerItem(78, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.previewPaneLayout.addItem(self.previewRightSpacer)
+        self.previewPaneLayout.addStretch()
         self.previewLayout.addLayout(self.previewPaneLayout)
         ThemeWizard.addPage(self.previewPage)
-        self.themeNameLabel.setBuddy(self.themeNameEdit)
 
         self.retranslateUi(ThemeWizard)
-        self.backgroundStackedWidget.setCurrentIndex(0)
-        QtCore.QObject.connect(
-            ThemeWizard,
-            QtCore.SIGNAL(u'accepted()'),
-            ThemeWizard.accept)
-        QtCore.QObject.connect(
-            self.backgroundTypeComboBox,
-            QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.backgroundStackedWidget.setCurrentIndex)
+        QtCore.QObject.connect(self.backgroundComboBox,
+            QtCore.SIGNAL(u'currentIndexChanged(int)'), self.backgroundStack,
+            QtCore.SLOT(u'setCurrentIndex(int)'))
+        QtCore.QObject.connect(self.outlineCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.outlineColorButton,
+            QtCore.SLOT(u'setEnabled(bool)'))
+        QtCore.QObject.connect(self.outlineCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.outlineSizeSpinBox,
+            QtCore.SLOT(u'setEnabled(bool)'))
+        QtCore.QObject.connect(self.shadowCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.shadowColorButton,
+            QtCore.SLOT(u'setEnabled(bool)'))
+        QtCore.QObject.connect(self.shadowCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.shadowSizeSpinBox,
+            QtCore.SLOT(u'setEnabled(bool)'))
+        QtCore.QObject.connect(self.mainPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.mainXSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.mainPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.mainYSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.mainPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.mainWidthSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.mainPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.mainHeightSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.footerPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.footerXSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.footerPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.footerYSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.footerPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.footerWidthSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
+        QtCore.QObject.connect(self.footerPositionCheckBox,
+            QtCore.SIGNAL(u'toggled(bool)'), self.footerHeightSpinBox,
+            QtCore.SLOT(u'setDisabled(bool)'))
         QtCore.QMetaObject.connectSlotsByName(ThemeWizard)
 
     def retranslateUi(self, ThemeWizard):
@@ -627,20 +428,20 @@
             translate('OpenLP.ThemeWizard', 'Welcome to the Theme Wizard'))
         self.informationLabel.setText(
             translate('OpenLP.ThemeWizard', 'This wizard will help you to '
-                'create and edit your themes . Click the next button below to '
+                'create and edit your themes. Click the next button below to '
                 'start the process by setting up your background.'))
         self.backgroundPage.setTitle(
             translate('OpenLP.ThemeWizard', 'Set Up Background'))
         self.backgroundPage.setSubTitle(
             translate('OpenLP.ThemeWizard', 'Set up your theme\'s background '
                 'according to the parameters below.'))
-        self.backgroundTypeLabel.setText(
+        self.backgroundLabel.setText(
             translate('OpenLP.ThemeWizard', 'Background type:'))
-        self.backgroundTypeComboBox.setItemText(0,
+        self.backgroundComboBox.setItemText(0,
             translate('OpenLP.ThemeWizard', 'Solid Color'))
-        self.backgroundTypeComboBox.setItemText(1,
+        self.backgroundComboBox.setItemText(1,
             translate('OpenLP.ThemeWizard', 'Gradient'))
-        self.backgroundTypeComboBox.setItemText(2,
+        self.backgroundComboBox.setItemText(2,
             translate('OpenLP.ThemeWizard', 'Image'))
         self.colorLabel.setText(translate('OpenLP.ThemeWizard', 'Color:'))
         self.gradientStartLabel.setText(
@@ -682,9 +483,9 @@
         self.shadowCheckBox.setText(translate('OpenLP.ThemeWizard', '&Shadow:'))
         self.shadowSizeLabel.setText(translate('OpenLP.ThemeWizard', 'Size:'))
         self.shadowSizeSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'pt'))
-        self.boldCheckBox.setText(
+        self.mainBoldCheckBox.setText(
             translate('OpenLP.ThemeWizard', 'Bold'))
-        self.italicsCheckBox.setText(
+        self.mainItalicsCheckBox.setText(
             translate('OpenLP.ThemeWizard', 'Italic'))
         self.footerAreaPage.setTitle(
             translate('OpenLP.ThemeWizard', 'Footer Area Font Details'))
@@ -725,9 +526,9 @@
                 ' main and footer areas.'))
         self.mainPositionGroupBox.setTitle(
             translate('OpenLP.ThemeWizard', '&Main Area'))
-        self.mainDefaultPositionCheckBox.setText(
+        self.mainPositionCheckBox.setText(
             translate('OpenLP.ThemeWizard', '&Use default location'))
-        self.nainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:'))
+        self.mainXLabel.setText(translate('OpenLP.ThemeWizard', 'X position:'))
         self.mainXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
         self.mainYSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
         self.mainYLabel.setText(translate('OpenLP.ThemeWizard', 'Y position:'))
@@ -737,7 +538,7 @@
         self.mainHeightLabel.setText(
             translate('OpenLP.ThemeWizard', 'Height:'))
         self.footerPositionGroupBox.setTitle(
-            translate('OpenLP.ThemeWizard', 'Footer Area'))
+            translate('OpenLP.ThemeWizard', '&Footer Area'))
         self.footerXLabel.setText(
             translate('OpenLP.ThemeWizard', 'X position:'))
         self.footerXSpinBox.setSuffix(translate('OpenLP.ThemeWizard', 'px'))
@@ -752,7 +553,7 @@
             translate('OpenLP.ThemeWizard', 'Height:'))
         self.footerHeightSpinBox.setSuffix(
             translate('OpenLP.ThemeWizard', 'px'))
-        self.footerDefaultPositionCheckBox.setText(
+        self.footerPositionCheckBox.setText(
             translate('OpenLP.ThemeWizard', 'Use default location'))
         self.previewPage.setTitle(
             translate('OpenLP.ThemeWizard', 'Save and Preview'))
@@ -761,4 +562,19 @@
                 'replacing the current one or change the name to create a '
                 'new theme'))
         self.themeNameLabel.setText(
-            translate('OpenLP.ThemeWizard', 'Theme name:'))
\ No newline at end of file
+            translate('OpenLP.ThemeWizard', 'Theme name:'))
+        # Align all QFormLayouts towards each other.
+        width = max(self.backgroundLabel.minimumSizeHint().width(),
+            self.colorLabel.minimumSizeHint().width())
+        width = max(width, self.gradientStartLabel.minimumSizeHint().width())
+        width = max(width, self.gradientEndLabel.minimumSizeHint().width())
+        width = max(width, self.gradientTypeLabel.minimumSizeHint().width())
+        width = max(width, self.imageLabel.minimumSizeHint().width())
+        self.backgroundTypeSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.colorSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.gradientSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.imageSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)

=== modified file 'openlp/plugins/bibles/forms/bibleimportform.py'
--- openlp/plugins/bibles/forms/bibleimportform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/forms/bibleimportform.py	2010-12-27 23:11:17 +0000
@@ -79,12 +79,12 @@
         QtGui.QWizard.__init__(self, parent)
         self.setupUi(self)
         self.registerFields()
-        if not BibleFormat.get_availability(BibleFormat.OpenLP1):
-            self.openlp1Page.setVisible(False)
-            self.openlp1LocationLabel.setVisible(False)
-            self.openlp1LocationEdit.setVisible(False)
-            self.openlp1FileButton.setVisible(False)
-            self.openlp1DisabledLabel.setVisible(True)
+        if BibleFormat.get_availability(BibleFormat.OpenLP1):
+            self.openlp1DisabledLabel.hide()
+        else:
+            self.openlp1FileLabel.hide()
+            self.openlp1FileEdit.hide()
+            self.openlp1BrowseButton.hide()
         self.finishButton = self.button(QtGui.QWizard.FinishButton)
         self.cancelButton = self.button(QtGui.QWizard.CancelButton)
         self.manager = manager
@@ -92,24 +92,26 @@
         self.manager.set_process_dialog(self)
         self.web_bible_list = {}
         self.loadWebBibles()
-        QtCore.QObject.connect(self.locationComboBox,
+        self.restart()
+        self.selectStack.setCurrentIndex(0)
+        QtCore.QObject.connect(self.webSourceComboBox,
             QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.onLocationComboBoxChanged)
-        QtCore.QObject.connect(self.osisFileButton,
-            QtCore.SIGNAL(u'clicked()'),
-            self.onOsisFileButtonClicked)
-        QtCore.QObject.connect(self.booksFileButton,
-            QtCore.SIGNAL(u'clicked()'),
-            self.onBooksFileButtonClicked)
-        QtCore.QObject.connect(self.csvVersesFileButton,
-            QtCore.SIGNAL(u'clicked()'),
-            self.onCsvVersesFileButtonClicked)
+            self.onWebSourceComboBoxCurrentIndexChanged)
+        QtCore.QObject.connect(self.osisBrowseButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onOsisBrowseButtonClicked)
+        QtCore.QObject.connect(self.csvBooksButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onBooksBrowseButtonClicked)
+        QtCore.QObject.connect(self.csvVersesButton,
+            QtCore.SIGNAL(u'clicked()'),
+            self.onCsvVersesBrowseButtonClicked)
         QtCore.QObject.connect(self.openSongBrowseButton,
             QtCore.SIGNAL(u'clicked()'),
             self.onOpenSongBrowseButtonClicked)
-        QtCore.QObject.connect(self.openlp1FileButton,
+        QtCore.QObject.connect(self.openlp1BrowseButton,
             QtCore.SIGNAL(u'clicked()'),
-            self.onOpenlp1FileButtonClicked)
+            self.onOpenlp1BrowseButtonClicked)
         QtCore.QObject.connect(self,
             QtCore.SIGNAL(u'currentIdChanged(int)'),
             self.onCurrentIdChanged)
@@ -126,7 +128,7 @@
         Stop the import on cancel button, close button or ESC key.
         """
         log.debug('Import canceled by user.')
-        if self.currentId() == 3:
+        if self.currentPage() == self.importPage:
             Receiver.send_message(u'bibles_stop_import')
         self.done(QtGui.QDialog.Rejected)
 
@@ -134,11 +136,9 @@
         """
         Validate the current page before moving on to the next page.
         """
-        if self.currentId() == 0:
-            # Welcome page
+        if self.currentPage() == self.welcomePage:
             return True
-        elif self.currentId() == 1:
-            # Select page
+        elif self.currentPage() == self.selectPage:
             if self.field(u'source_format').toInt()[0] == BibleFormat.OSIS:
                 if not self.field(u'osis_location').toString():
                     QtGui.QMessageBox.critical(self,
@@ -147,7 +147,7 @@
                         translate('BiblesPlugin.ImportWizardForm',
                         'You need to specify a file to import your '
                         'Bible from.'))
-                    self.OSISLocationEdit.setFocus()
+                    self.osisFileEdit.setFocus()
                     return False
             elif self.field(u'source_format').toInt()[0] == BibleFormat.CSV:
                 if not self.field(u'csv_booksfile').toString():
@@ -157,7 +157,7 @@
                         translate('BiblesPlugin.ImportWizardForm',
                         'You need to specify a file with books of '
                         'the Bible to use in the import.'))
-                    self.booksLocationEdit.setFocus()
+                    self.csvBooksEdit.setFocus()
                     return False
                 elif not self.field(u'csv_versefile').toString():
                     QtGui.QMessageBox.critical(self,
@@ -166,7 +166,7 @@
                         translate('BiblesPlugin.ImportWizardForm',
                         'You need to specify a file of Bible '
                         'verses to import.'))
-                    self.csvVerseLocationEdit.setFocus()
+                    self.csvVersesEdit.setFocus()
                     return False
             elif self.field(u'source_format').toInt()[0] == \
                 BibleFormat.OpenSong:
@@ -187,11 +187,10 @@
                         translate('BiblesPlugin.ImportWizardForm',
                         'You need to specify a file to import your '
                         'Bible from.'))
-                    self.openlp1LocationEdit.setFocus()
+                    self.openlp1FileEdit.setFocus()
                     return False
             return True
-        elif self.currentId() == 2:
-            # License details
+        elif self.currentPage() == self.licenseDetailsPage:
             license_version = unicode(self.field(u'license_version').toString())
             license_copyright = \
                 unicode(self.field(u'license_copyright').toString())
@@ -221,11 +220,10 @@
                 self.versionNameEdit.setFocus()
                 return False
             return True
-        if self.currentId() == 3:
-            # Progress page
+        if self.currentPage() == self.importPage:
             return True
 
-    def onLocationComboBoxChanged(self, index):
+    def onWebSourceComboBoxCurrentIndexChanged(self, index):
         """
         Setup the list of Bibles when you select a different source on the web
         download page.
@@ -233,35 +231,34 @@
         ``index``
             The index of the combo box.
         """
-        self.bibleComboBox.clear()
+        self.webTranslationComboBox.clear()
         bibles = self.web_bible_list[index].keys()
         bibles.sort()
-        for bible in bibles:
-            self.bibleComboBox.addItem(bible)
+        self.webTranslationComboBox.addItems(bibles)
 
-    def onOsisFileButtonClicked(self):
+    def onOsisBrowseButtonClicked(self):
         """
         Show the file open dialog for the OSIS file.
         """
         self.getFileName(
             translate('BiblesPlugin.ImportWizardForm', 'Open OSIS File'),
-            self.OSISLocationEdit)
+            self.osisFileEdit)
 
-    def onBooksFileButtonClicked(self):
+    def onBooksBrowseButtonClicked(self):
         """
         Show the file open dialog for the books CSV file.
         """
         self.getFileName(
             translate('BiblesPlugin.ImportWizardForm', 'Open Books CSV File'),
-            self.booksLocationEdit, u'%s (*.csv)'
+            self.csvBooksEdit, u'%s (*.csv)'
             % translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
 
-    def onCsvVersesFileButtonClicked(self):
+    def onCsvVersesBrowseButtonClicked(self):
         """
         Show the file open dialog for the verses CSV file.
         """
         self.getFileName(translate('BiblesPlugin.ImportWizardForm',
-            'Open Verses CSV File'), self.csvVerseLocationEdit, u'%s (*.csv)'
+            'Open Verses CSV File'), self.csvVersesEdit, u'%s (*.csv)'
             % translate('BiblesPlugin.ImportWizardForm', 'CSV File'))
 
     def onOpenSongBrowseButtonClicked(self):
@@ -272,36 +269,35 @@
             translate('BiblesPlugin.ImportWizardForm', 'Open OpenSong Bible'),
             self.openSongFileEdit)
 
-    def onOpenlp1FileButtonClicked(self):
+    def onOpenlp1BrowseButtonClicked(self):
         """
         Show the file open dialog for the openlp.org 1.x file.
         """
         self.getFileName(
             translate('BiblesPlugin.ImportWizardForm',
-            'Open openlp.org 1.x Bible'), self.openlp1LocationEdit,
+            'Open openlp.org 1.x Bible'), self.openlp1FileEdit,
             u'%s (*.bible)' % translate('BiblesPlugin.ImportWizardForm',
             'openlp.org 1.x bible'))
 
     def onCurrentIdChanged(self, pageId):
-        if pageId == 3:
+        if self.page(pageId) == self.importPage:
             self.preImport()
             self.performImport()
             self.postImport()
 
     def registerFields(self):
         self.selectPage.registerField(u'source_format', self.formatComboBox)
-        self.selectPage.registerField(u'osis_location', self.OSISLocationEdit)
-        self.selectPage.registerField(u'csv_booksfile', self.booksLocationEdit)
-        self.selectPage.registerField(
-            u'csv_versefile', self.csvVerseLocationEdit)
+        self.selectPage.registerField(u'osis_location', self.osisFileEdit)
+        self.selectPage.registerField(u'csv_booksfile', self.csvBooksEdit)
+        self.selectPage.registerField(u'csv_versefile', self.csvVersesEdit)
         self.selectPage.registerField(u'opensong_file', self.openSongFileEdit)
-        self.selectPage.registerField(u'web_location', self.locationComboBox)
-        self.selectPage.registerField(u'web_biblename', self.bibleComboBox)
-        self.selectPage.registerField(u'proxy_server', self.addressEdit)
-        self.selectPage.registerField(u'proxy_username', self.usernameEdit)
-        self.selectPage.registerField(u'proxy_password', self.passwordEdit)
-        self.selectPage.registerField(
-            u'openlp1_location', self.openlp1LocationEdit)
+        self.selectPage.registerField(u'web_location', self.webSourceComboBox)
+        self.selectPage.registerField(u'web_biblename',
+            self.webTranslationComboBox)
+        self.selectPage.registerField(u'proxy_server', self.webServerEdit)
+        self.selectPage.registerField(u'proxy_username', self.webUserEdit)
+        self.selectPage.registerField(u'proxy_password', self.webPasswordEdit)
+        self.selectPage.registerField(u'openlp1_location', self.openlp1FileEdit)
         self.licenseDetailsPage.registerField(
             u'license_version', self.versionNameEdit)
         self.licenseDetailsPage.registerField(
@@ -322,7 +318,7 @@
         self.setField(u'opensong_file', QtCore.QVariant(''))
         self.setField(u'web_location', QtCore.QVariant(WebDownload.Crosswalk))
         self.setField(u'web_biblename',
-            QtCore.QVariant(self.bibleComboBox.currentIndex()))
+            QtCore.QVariant(self.webTranslationComboBox.currentIndex()))
         self.setField(u'proxy_server',
             settings.value(u'proxy address', QtCore.QVariant(u'')))
         self.setField(u'proxy_username',
@@ -336,7 +332,7 @@
             QtCore.QVariant(self.copyrightEdit.text()))
         self.setField(u'license_permissions',
             QtCore.QVariant(self.permissionsEdit.text()))
-        self.onLocationComboBoxChanged(WebDownload.Crosswalk)
+        self.onWebSourceComboBoxCurrentIndexChanged(WebDownload.Crosswalk)
         settings.endGroup()
 
     def loadWebBibles(self):
@@ -491,7 +487,7 @@
             # Import a bible from the web.
             self.importProgressBar.setMaximum(1)
             download_location = self.field(u'web_location').toInt()[0]
-            bible_version = unicode(self.bibleComboBox.currentText())
+            bible_version = unicode(self.webTranslationComboBox.currentText())
             if download_location == WebDownload.Crosswalk:
                 bible = \
                     self.web_bible_list[WebDownload.Crosswalk][bible_version]
@@ -538,4 +534,4 @@
         self.importProgressBar.setValue(self.importProgressBar.maximum())
         self.finishButton.setVisible(True)
         self.cancelButton.setVisible(False)
-        Receiver.send_message(u'openlp_process_events')
\ No newline at end of file
+        Receiver.send_message(u'openlp_process_events')

=== modified file 'openlp/plugins/bibles/forms/bibleimportwizard.py'
--- openlp/plugins/bibles/forms/bibleimportwizard.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/forms/bibleimportwizard.py	2010-12-27 23:11:17 +0000
@@ -31,269 +31,216 @@
 class Ui_BibleImportWizard(object):
     def setupUi(self, bibleImportWizard):
         bibleImportWizard.setObjectName(u'bibleImportWizard')
-        bibleImportWizard.resize(550, 386)
         bibleImportWizard.setModal(True)
         bibleImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
         bibleImportWizard.setOptions(
             QtGui.QWizard.IndependentPages |
             QtGui.QWizard.NoBackButtonOnStartPage |
             QtGui.QWizard.NoBackButtonOnLastPage)
-        # Welcome page
+        # Welcome Page
         self.welcomePage = QtGui.QWizardPage()
         self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
             QtGui.QPixmap(u':/wizards/wizard_importbible.bmp'))
         self.welcomePage.setObjectName(u'WelcomePage')
         self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
-        self.welcomeLayout.setSpacing(8)
-        self.welcomeLayout.setMargin(0)
         self.welcomeLayout.setObjectName(u'WelcomeLayout')
         self.titleLabel = QtGui.QLabel(self.welcomePage)
         self.titleLabel.setObjectName(u'TitleLabel')
         self.welcomeLayout.addWidget(self.titleLabel)
-        spacerItem = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        self.welcomeLayout.addItem(spacerItem)
+        self.welcomeLayout.addSpacing(40)
         self.informationLabel = QtGui.QLabel(self.welcomePage)
         self.informationLabel.setWordWrap(True)
-        self.informationLabel.setMargin(10)
         self.informationLabel.setObjectName(u'InformationLabel')
         self.welcomeLayout.addWidget(self.informationLabel)
-        spacerItem1 = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.welcomeLayout.addItem(spacerItem1)
+        self.welcomeLayout.addStretch()
         bibleImportWizard.addPage(self.welcomePage)
-        # Select page
+        # Select Page
         self.selectPage = QtGui.QWizardPage()
         self.selectPage.setObjectName(u'SelectPage')
         self.selectPageLayout = QtGui.QVBoxLayout(self.selectPage)
-        self.selectPageLayout.setSpacing(8)
-        self.selectPageLayout.setMargin(20)
-        self.selectPageLayout.setObjectName(u'selectPageLayout')
-        self.formatSelectLayout = QtGui.QHBoxLayout()
-        self.formatSelectLayout.setSpacing(8)
-        self.formatSelectLayout.setObjectName(u'FormatSelectLayout')
+        self.selectPageLayout.setObjectName(u'SelectPageLayout')
+        self.formatLayout = QtGui.QFormLayout()
+        self.formatLayout.setObjectName(u'FormatLayout')
         self.formatLabel = QtGui.QLabel(self.selectPage)
         self.formatLabel.setObjectName(u'FormatLabel')
-        self.formatSelectLayout.addWidget(self.formatLabel)
         self.formatComboBox = QtGui.QComboBox(self.selectPage)
+        self.formatComboBox.addItems([u'', u'', u'', u'', u''])
         self.formatComboBox.setObjectName(u'FormatComboBox')
-        self.formatComboBox.addItem(u'')
-        self.formatComboBox.addItem(u'')
-        self.formatComboBox.addItem(u'')
-        self.formatComboBox.addItem(u'')
-        self.formatComboBox.addItem(u'')
-        self.formatSelectLayout.addWidget(self.formatComboBox)
-        spacerItem2 = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.formatSelectLayout.addItem(spacerItem2)
-        self.selectPageLayout.addLayout(self.formatSelectLayout)
-        self.formatWidget = QtGui.QStackedWidget(self.selectPage)
-        self.formatWidget.setObjectName(u'FormatWidget')
-        generalIcon = build_icon(u':/general/general_open.png')
-        self.osisPage = QtGui.QWidget()
-        self.osisPage.setObjectName(u'OsisPage')
-        self.osisLayout = QtGui.QFormLayout(self.osisPage)
-        self.osisLayout.setFieldGrowthPolicy(
-            QtGui.QFormLayout.ExpandingFieldsGrow)
+        self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
+        self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.formatSpacer)
+        self.selectPageLayout.addLayout(self.formatLayout)
+        self.selectStack = QtGui.QStackedLayout()
+        self.selectStack.setObjectName(u'SelectStack')
+        self.osisWidget = QtGui.QWidget(self.selectPage)
+        self.osisWidget.setObjectName(u'OsisWidget')
+        self.osisLayout = QtGui.QFormLayout(self.osisWidget)
         self.osisLayout.setMargin(0)
-        self.osisLayout.setSpacing(8)
         self.osisLayout.setObjectName(u'OsisLayout')
-        self.osisLocationLabel = QtGui.QLabel(self.osisPage)
-        self.osisLocationLabel.setObjectName(u'OsisLocationLabel')
-        self.osisLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.osisLocationLabel)
-        self.osisLocationLayout = QtGui.QHBoxLayout()
-        self.osisLocationLayout.setSpacing(8)
-        self.osisLocationLayout.setObjectName(u'OsisLocationLayout')
-        self.OSISLocationEdit = QtGui.QLineEdit(self.osisPage)
-        self.OSISLocationEdit.setObjectName(u'OSISLocationEdit')
-        self.osisLocationLayout.addWidget(self.OSISLocationEdit)
-        self.osisFileButton = QtGui.QToolButton(self.osisPage)
-        self.osisFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
-        self.osisFileButton.setIcon(generalIcon)
-        self.osisFileButton.setObjectName(u'OsisFileButton')
-        self.osisLocationLayout.addWidget(self.osisFileButton)
-        self.osisLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
-            self.osisLocationLayout)
-        self.formatWidget.addWidget(self.osisPage)
-        self.csvPage = QtGui.QWidget()
-        self.csvPage.setObjectName(u'CsvPage')
-        self.csvSourceLayout = QtGui.QFormLayout(self.csvPage)
-        self.csvSourceLayout.setFieldGrowthPolicy(
-            QtGui.QFormLayout.ExpandingFieldsGrow)
-        self.csvSourceLayout.setLabelAlignment(QtCore.Qt.AlignBottom |
-            QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing)
-        self.csvSourceLayout.setFormAlignment(QtCore.Qt.AlignLeading |
-            QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
-        self.csvSourceLayout.setMargin(0)
-        self.csvSourceLayout.setSpacing(8)
-        self.csvSourceLayout.setObjectName(u'CsvSourceLayout')
-        self.booksLocationLabel = QtGui.QLabel(self.csvPage)
-        self.booksLocationLabel.setObjectName(u'BooksLocationLabel')
-        self.csvSourceLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
-            self.booksLocationLabel)
+        self.osisFileLabel = QtGui.QLabel(self.osisWidget)
+        self.osisFileLabel.setObjectName(u'OsisFileLabel')
+        self.osisFileLayout = QtGui.QHBoxLayout()
+        self.osisFileLayout.setObjectName(u'OsisFileLayout')
+        self.osisFileEdit = QtGui.QLineEdit(self.osisWidget)
+        self.osisFileEdit.setObjectName(u'OsisFileEdit')
+        self.osisFileLayout.addWidget(self.osisFileEdit)
+        self.osisBrowseButton = QtGui.QToolButton(self.osisWidget)
+        self.osisBrowseButton.setIcon(build_icon(u':/general/general_open.png'))
+        self.osisBrowseButton.setObjectName(u'OsisBrowseButton')
+        self.osisFileLayout.addWidget(self.osisBrowseButton)
+        self.osisLayout.addRow(self.osisFileLabel, self.osisFileLayout)
+        self.osisSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.osisLayout.setItem(1, QtGui.QFormLayout.LabelRole, self.osisSpacer)
+        self.selectStack.addWidget(self.osisWidget)
+        self.csvWidget = QtGui.QWidget(self.selectPage)
+        self.csvWidget.setObjectName(u'CsvWidget')
+        self.csvLayout = QtGui.QFormLayout(self.csvWidget)
+        self.csvLayout.setMargin(0)
+        self.csvLayout.setObjectName(u'CsvLayout')
+        self.csvBooksLabel = QtGui.QLabel(self.csvWidget)
+        self.csvBooksLabel.setObjectName(u'CsvBooksLabel')
         self.csvBooksLayout = QtGui.QHBoxLayout()
-        self.csvBooksLayout.setSpacing(8)
         self.csvBooksLayout.setObjectName(u'CsvBooksLayout')
-        self.booksLocationEdit = QtGui.QLineEdit(self.csvPage)
-        self.booksLocationEdit.setObjectName(u'BooksLocationEdit')
-        self.csvBooksLayout.addWidget(self.booksLocationEdit)
-        self.booksFileButton = QtGui.QToolButton(self.csvPage)
-        self.booksFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
-        self.booksFileButton.setIcon(generalIcon)
-        self.booksFileButton.setObjectName(u'BooksFileButton')
-        self.csvBooksLayout.addWidget(self.booksFileButton)
-        self.csvSourceLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
-            self.csvBooksLayout)
-        self.verseLocationLabel = QtGui.QLabel(self.csvPage)
-        self.verseLocationLabel.setObjectName(u'VerseLocationLabel')
-        self.csvSourceLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.verseLocationLabel)
-        self.csvVerseLayout = QtGui.QHBoxLayout()
-        self.csvVerseLayout.setSpacing(8)
-        self.csvVerseLayout.setObjectName(u'CsvVerseLayout')
-        self.csvVerseLocationEdit = QtGui.QLineEdit(self.csvPage)
-        self.csvVerseLocationEdit.setObjectName(u'CsvVerseLocationEdit')
-        self.csvVerseLayout.addWidget(self.csvVerseLocationEdit)
-        self.csvVersesFileButton = QtGui.QToolButton(self.csvPage)
-        self.csvVersesFileButton.setMaximumSize(QtCore.QSize(32, 16777215))
-        self.csvVersesFileButton.setIcon(generalIcon)
-        self.csvVersesFileButton.setObjectName(u'CsvVersesFileButton')
-        self.csvVerseLayout.addWidget(self.csvVersesFileButton)
-        self.csvSourceLayout.setLayout(1, QtGui.QFormLayout.FieldRole,
-            self.csvVerseLayout)
-        self.formatWidget.addWidget(self.csvPage)
-        self.openSongPage = QtGui.QWidget()
-        self.openSongPage.setObjectName(u'OpenSongPage')
-        self.openSongLayout = QtGui.QFormLayout(self.openSongPage)
+        self.csvBooksEdit = QtGui.QLineEdit(self.csvWidget)
+        self.csvBooksEdit.setObjectName(u'CsvBooksEdit')
+        self.csvBooksLayout.addWidget(self.csvBooksEdit)
+        self.csvBooksButton = QtGui.QToolButton(self.csvWidget)
+        self.csvBooksButton.setIcon(build_icon(u':/general/general_open.png'))
+        self.csvBooksButton.setObjectName(u'CsvBooksButton')
+        self.csvBooksLayout.addWidget(self.csvBooksButton)
+        self.csvLayout.addRow(self.csvBooksLabel, self.csvBooksLayout)
+        self.csvVersesLabel = QtGui.QLabel(self.csvWidget)
+        self.csvVersesLabel.setObjectName(u'CsvVersesLabel')
+        self.csvVersesLayout = QtGui.QHBoxLayout()
+        self.csvVersesLayout.setObjectName(u'CsvVersesLayout')
+        self.csvVersesEdit = QtGui.QLineEdit(self.csvWidget)
+        self.csvVersesEdit.setObjectName(u'CsvVersesEdit')
+        self.csvVersesLayout.addWidget(self.csvVersesEdit)
+        self.csvVersesButton = QtGui.QToolButton(self.csvWidget)
+        self.csvVersesButton.setIcon(build_icon(u':/general/general_open.png'))
+        self.csvVersesButton.setObjectName(u'CsvVersesButton')
+        self.csvVersesLayout.addWidget(self.csvVersesButton)
+        self.csvLayout.addRow(self.csvVersesLabel, self.csvVersesLayout)
+        self.csvSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.csvLayout.setItem(2, QtGui.QFormLayout.LabelRole, self.csvSpacer)
+        self.selectStack.addWidget(self.csvWidget)
+        self.openSongWidget = QtGui.QWidget(self.selectPage)
+        self.openSongWidget.setObjectName(u'OpenSongWidget')
+        self.openSongLayout = QtGui.QFormLayout(self.openSongWidget)
         self.openSongLayout.setMargin(0)
-        self.openSongLayout.setSpacing(8)
         self.openSongLayout.setObjectName(u'OpenSongLayout')
-        self.openSongFileLabel = QtGui.QLabel(self.openSongPage)
+        self.openSongFileLabel = QtGui.QLabel(self.openSongWidget)
         self.openSongFileLabel.setObjectName(u'OpenSongFileLabel')
-        self.openSongLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
-            self.openSongFileLabel)
         self.openSongFileLayout = QtGui.QHBoxLayout()
-        self.openSongFileLayout.setSpacing(8)
         self.openSongFileLayout.setObjectName(u'OpenSongFileLayout')
-        self.openSongFileEdit = QtGui.QLineEdit(self.openSongPage)
+        self.openSongFileEdit = QtGui.QLineEdit(self.openSongWidget)
         self.openSongFileEdit.setObjectName(u'OpenSongFileEdit')
         self.openSongFileLayout.addWidget(self.openSongFileEdit)
-        self.openSongBrowseButton = QtGui.QToolButton(self.openSongPage)
-        self.openSongBrowseButton.setIcon(generalIcon)
+        self.openSongBrowseButton = QtGui.QToolButton(self.openSongWidget)
+        self.openSongBrowseButton.setIcon(
+            build_icon(u':/general/general_open.png'))
         self.openSongBrowseButton.setObjectName(u'OpenSongBrowseButton')
         self.openSongFileLayout.addWidget(self.openSongBrowseButton)
-        self.openSongLayout.setLayout(0, QtGui.QFormLayout.FieldRole,
+        self.openSongLayout.addRow(self.openSongFileLabel,
             self.openSongFileLayout)
-        self.formatWidget.addWidget(self.openSongPage)
-        self.webDownloadPage = QtGui.QWidget()
-        self.webDownloadPage.setObjectName(u'WebDownloadPage')
-        self.webDownloadLayout = QtGui.QVBoxLayout(self.webDownloadPage)
-        self.webDownloadLayout.setSpacing(8)
-        self.webDownloadLayout.setMargin(0)
-        self.webDownloadLayout.setObjectName(u'WebDownloadLayout')
-        self.webDownloadTabWidget = QtGui.QTabWidget(self.webDownloadPage)
-        self.webDownloadTabWidget.setObjectName(u'WebDownloadTabWidget')
-        self.downloadOptionsTab = QtGui.QWidget()
-        self.downloadOptionsTab.setObjectName(u'DownloadOptionsTab')
-        self.downloadOptionsLayout = QtGui.QFormLayout(self.downloadOptionsTab)
-        self.downloadOptionsLayout.setMargin(8)
-        self.downloadOptionsLayout.setSpacing(8)
-        self.downloadOptionsLayout.setObjectName(u'DownloadOptionsLayout')
-        self.locationLabel = QtGui.QLabel(self.downloadOptionsTab)
-        self.locationLabel.setObjectName(u'LocationLabel')
-        self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
-            self.locationLabel)
-        self.locationComboBox = QtGui.QComboBox(self.downloadOptionsTab)
-        self.locationComboBox.setObjectName(u'LocationComboBox')
-        self.locationComboBox.addItem(u'')
-        self.locationComboBox.addItem(u'')
-        self.locationComboBox.addItem(u'')
-        self.downloadOptionsLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
-            self.locationComboBox)
-        self.bibleLabel = QtGui.QLabel(self.downloadOptionsTab)
-        self.bibleLabel.setObjectName(u'BibleLabel')
-        self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.bibleLabel)
-        self.bibleComboBox = QtGui.QComboBox(self.downloadOptionsTab)
-        self.bibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
-        self.bibleComboBox.setObjectName(u'BibleComboBox')
-        self.bibleComboBox.addItem(u'')
-        self.bibleComboBox.addItem(u'')
-        self.bibleComboBox.addItem(u'')
-        self.downloadOptionsLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
-            self.bibleComboBox)
-        self.webDownloadTabWidget.addTab(self.downloadOptionsTab, u'')
-        self.proxyServerTab = QtGui.QWidget()
-        self.proxyServerTab.setObjectName(u'ProxyServerTab')
-        self.proxyServerLayout = QtGui.QFormLayout(self.proxyServerTab)
-        self.proxyServerLayout.setObjectName(u'ProxyServerLayout')
-        self.addressLabel = QtGui.QLabel(self.proxyServerTab)
-        self.addressLabel.setObjectName(u'AddressLabel')
-        self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
-            self.addressLabel)
-        self.addressEdit = QtGui.QLineEdit(self.proxyServerTab)
-        self.addressEdit.setObjectName(u'AddressEdit')
-        self.proxyServerLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
-            self.addressEdit)
-        self.usernameLabel = QtGui.QLabel(self.proxyServerTab)
-        self.usernameLabel.setObjectName(u'UsernameLabel')
-        self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.usernameLabel)
-        self.usernameEdit = QtGui.QLineEdit(self.proxyServerTab)
-        self.usernameEdit.setObjectName(u'UsernameEdit')
-        self.proxyServerLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
-            self.usernameEdit)
-        self.passwordLabel = QtGui.QLabel(self.proxyServerTab)
-        self.passwordLabel.setObjectName(u'PasswordLabel')
-        self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
-            self.passwordLabel)
-        self.passwordEdit = QtGui.QLineEdit(self.proxyServerTab)
-        self.passwordEdit.setObjectName(u'PasswordEdit')
-        self.proxyServerLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
-            self.passwordEdit)
-        self.webDownloadTabWidget.addTab(self.proxyServerTab, u'')
-        self.webDownloadLayout.addWidget(self.webDownloadTabWidget)
-        self.formatWidget.addWidget(self.webDownloadPage)
-        self.openlp1Page = QtGui.QWidget()
-        self.openlp1Page.setObjectName(u'Openlp1Page')
-        self.openlp1Layout = QtGui.QFormLayout(self.openlp1Page)
-        self.openlp1Layout.setFieldGrowthPolicy(
-            QtGui.QFormLayout.ExpandingFieldsGrow)
+        self.openSongSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.openSongLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.openSongSpacer)
+        self.selectStack.addWidget(self.openSongWidget)
+        self.webTabWidget = QtGui.QTabWidget(self.selectPage)
+        self.webTabWidget.setObjectName(u'WebTabWidget')
+        self.webBibleTab = QtGui.QWidget()
+        self.webBibleTab.setObjectName(u'WebBibleTab')
+        self.webBibleLayout = QtGui.QFormLayout(self.webBibleTab)
+        self.webBibleLayout.setObjectName(u'WebBibleLayout')
+        self.webSourceLabel = QtGui.QLabel(self.webBibleTab)
+        self.webSourceLabel.setObjectName(u'WebSourceLabel')
+        self.webBibleLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
+            self.webSourceLabel)
+        self.webSourceComboBox = QtGui.QComboBox(self.webBibleTab)
+        self.webSourceComboBox.setObjectName(u'WebSourceComboBox')
+        self.webSourceComboBox.addItems([u'', u'', u''])
+        self.webBibleLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
+            self.webSourceComboBox)
+        self.webTranslationLabel = QtGui.QLabel(self.webBibleTab)
+        self.webTranslationLabel.setObjectName(u'webTranslationLabel')
+        self.webBibleLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
+            self.webTranslationLabel)
+        self.webTranslationComboBox = QtGui.QComboBox(self.webBibleTab)
+        self.webTranslationComboBox.setSizeAdjustPolicy(
+            QtGui.QComboBox.AdjustToContents)
+        self.webTranslationComboBox.setObjectName(u'WebTranslationComboBox')
+        self.webBibleLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
+            self.webTranslationComboBox)
+        self.webTabWidget.addTab(self.webBibleTab, u'')
+        self.webProxyTab = QtGui.QWidget()
+        self.webProxyTab.setObjectName(u'WebProxyTab')
+        self.webProxyLayout = QtGui.QFormLayout(self.webProxyTab)
+        self.webProxyLayout.setObjectName(u'WebProxyLayout')
+        self.webServerLabel = QtGui.QLabel(self.webProxyTab)
+        self.webServerLabel.setObjectName(u'WebServerLabel')
+        self.webProxyLayout.setWidget(0, QtGui.QFormLayout.LabelRole,
+            self.webServerLabel)
+        self.webServerEdit = QtGui.QLineEdit(self.webProxyTab)
+        self.webServerEdit.setObjectName(u'WebServerEdit')
+        self.webProxyLayout.setWidget(0, QtGui.QFormLayout.FieldRole,
+            self.webServerEdit)
+        self.webUserLabel = QtGui.QLabel(self.webProxyTab)
+        self.webUserLabel.setObjectName(u'WebUserLabel')
+        self.webProxyLayout.setWidget(1, QtGui.QFormLayout.LabelRole,
+            self.webUserLabel)
+        self.webUserEdit = QtGui.QLineEdit(self.webProxyTab)
+        self.webUserEdit.setObjectName(u'WebUserEdit')
+        self.webProxyLayout.setWidget(1, QtGui.QFormLayout.FieldRole,
+            self.webUserEdit)
+        self.webPasswordLabel = QtGui.QLabel(self.webProxyTab)
+        self.webPasswordLabel.setObjectName(u'WebPasswordLabel')
+        self.webProxyLayout.setWidget(2, QtGui.QFormLayout.LabelRole,
+            self.webPasswordLabel)
+        self.webPasswordEdit = QtGui.QLineEdit(self.webProxyTab)
+        self.webPasswordEdit.setObjectName(u'WebPasswordEdit')
+        self.webProxyLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
+            self.webPasswordEdit)
+        self.webTabWidget.addTab(self.webProxyTab, u'')
+        self.selectStack.addWidget(self.webTabWidget)
+        self.openlp1Widget = QtGui.QWidget(self.selectPage)
+        self.openlp1Widget.setObjectName(u'Openlp1Widget')
+        self.openlp1Layout = QtGui.QFormLayout(self.openlp1Widget)
         self.openlp1Layout.setMargin(0)
-        self.openlp1Layout.setSpacing(8)
         self.openlp1Layout.setObjectName(u'Openlp1Layout')
-        self.openlp1LocationLabel = QtGui.QLabel(self.openlp1Page)
-        self.openlp1LocationLabel.setObjectName(u'Openlp1LocationLabel')
-        self.openlp1Layout.setWidget(1, QtGui.QFormLayout.LabelRole,
-            self.openlp1LocationLabel)
-        self.openlp1LocationLayout = QtGui.QHBoxLayout()
-        self.openlp1LocationLayout.setSpacing(8)
-        self.openlp1LocationLayout.setObjectName(u'Openlp1LocationLayout')
-        self.openlp1LocationEdit = QtGui.QLineEdit(self.openlp1Page)
-        self.openlp1LocationEdit.setObjectName(u'Openlp1LocationEdit')
-        self.openlp1LocationLayout.addWidget(self.openlp1LocationEdit)
-        self.openlp1FileButton = QtGui.QToolButton(self.openlp1Page)
-        self.openlp1FileButton.setMaximumSize(QtCore.QSize(32, 16777215))
-        self.openlp1FileButton.setIcon(generalIcon)
-        self.openlp1FileButton.setObjectName(u'Openlp1FileButton')
-        self.openlp1LocationLayout.addWidget(self.openlp1FileButton)
-        self.openlp1Layout.setLayout(1, QtGui.QFormLayout.FieldRole,
-            self.openlp1LocationLayout)
-        self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Page)
-        self.openlp1DisabledLabel.setObjectName(u'openlp1DisabledLabel')
-        self.openlp1DisabledLabel.setVisible(False)
+        self.openlp1FileLabel = QtGui.QLabel(self.openlp1Widget)
+        self.openlp1FileLabel.setObjectName(u'Openlp1FileLabel')
+        self.openlp1FileLayout = QtGui.QHBoxLayout()
+        self.openlp1FileLayout.setObjectName(u'Openlp1FileLayout')
+        self.openlp1FileEdit = QtGui.QLineEdit(self.openlp1Widget)
+        self.openlp1FileEdit.setObjectName(u'Openlp1FileEdit')
+        self.openlp1FileLayout.addWidget(self.openlp1FileEdit)
+        self.openlp1BrowseButton = QtGui.QToolButton(self.openlp1Widget)
+        self.openlp1BrowseButton.setIcon(
+            build_icon(u':/general/general_open.png'))
+        self.openlp1BrowseButton.setObjectName(u'Openlp1BrowseButton')
+        self.openlp1FileLayout.addWidget(self.openlp1BrowseButton)
+        self.openlp1Layout.addRow(self.openlp1FileLabel, self.openlp1FileLayout)
+        self.openlp1DisabledLabel = QtGui.QLabel(self.openlp1Widget)
         self.openlp1DisabledLabel.setWordWrap(True)
-        self.openlp1Layout.addWidget(self.openlp1DisabledLabel)
-        self.formatWidget.addWidget(self.openlp1Page)
-        self.selectPageLayout.addWidget(self.formatWidget)
+        self.openlp1DisabledLabel.setObjectName(u'Openlp1DisabledLabel')
+        self.openlp1Layout.addRow(self.openlp1DisabledLabel)
+        self.openlp1Spacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.openlp1Layout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.openlp1Spacer)
+        self.selectStack.addWidget(self.openlp1Widget) 
+        self.selectPageLayout.addLayout(self.selectStack)
         bibleImportWizard.addPage(self.selectPage)
-        # License page
+        # License Page
         self.licenseDetailsPage = QtGui.QWizardPage()
         self.licenseDetailsPage.setObjectName(u'LicenseDetailsPage')
         self.licenseDetailsLayout = QtGui.QFormLayout(self.licenseDetailsPage)
-        self.licenseDetailsLayout.setMargin(20)
-        self.licenseDetailsLayout.setSpacing(8)
         self.licenseDetailsLayout.setObjectName(u'LicenseDetailsLayout')
         self.versionNameLabel = QtGui.QLabel(self.licenseDetailsPage)
         self.versionNameLabel.setObjectName(u'VersionNameLabel')
@@ -320,29 +267,24 @@
         self.licenseDetailsLayout.setWidget(2, QtGui.QFormLayout.FieldRole,
             self.permissionsEdit)
         bibleImportWizard.addPage(self.licenseDetailsPage)
-        # Progress page
+        # Progress Page
         self.importPage = QtGui.QWizardPage()
         self.importPage.setObjectName(u'ImportPage')
         self.importLayout = QtGui.QVBoxLayout(self.importPage)
-        self.importLayout.setSpacing(8)
-        self.importLayout.setMargin(50)
+        self.importLayout.setMargin(48)
         self.importLayout.setObjectName(u'ImportLayout')
         self.importProgressLabel = QtGui.QLabel(self.importPage)
         self.importProgressLabel.setObjectName(u'ImportProgressLabel')
         self.importLayout.addWidget(self.importProgressLabel)
         self.importProgressBar = QtGui.QProgressBar(self.importPage)
-        self.importProgressBar.setValue(0)
         self.importProgressBar.setObjectName(u'ImportProgressBar')
         self.importLayout.addWidget(self.importProgressBar)
         bibleImportWizard.addPage(self.importPage)
-
         self.retranslateUi(bibleImportWizard)
-        self.formatWidget.setCurrentIndex(0)
-        self.webDownloadTabWidget.setCurrentIndex(0)
+        QtCore.QMetaObject.connectSlotsByName(bibleImportWizard)
         QtCore.QObject.connect(self.formatComboBox,
-            QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.formatWidget.setCurrentIndex)
-        QtCore.QMetaObject.connectSlotsByName(bibleImportWizard)
+            QtCore.SIGNAL(u'currentIndexChanged(int)'), self.selectStack,
+            QtCore.SLOT(u'setCurrentIndex(int)'))
 
     def retranslateUi(self, bibleImportWizard):
         bibleImportWizard.setWindowTitle(
@@ -373,37 +315,37 @@
             translate('BiblesPlugin.ImportWizardForm', 'Web Download'))
         self.formatComboBox.setItemText(4,
             translate('BiblesPlugin.ImportWizardForm', 'openlp.org 1.x'))
-        self.openlp1LocationLabel.setText(
-            translate('BiblesPlugin.ImportWizardForm', 'File location:'))
-        self.osisLocationLabel.setText(
-            translate('BiblesPlugin.ImportWizardForm', 'File location:'))
-        self.booksLocationLabel.setText(
+        self.openlp1FileLabel.setText(
+            translate('BiblesPlugin.ImportWizardForm', 'File location:'))
+        self.osisFileLabel.setText(
+            translate('BiblesPlugin.ImportWizardForm', 'File location:'))
+        self.csvBooksLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Books location:'))
-        self.verseLocationLabel.setText(
+        self.csvVersesLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Verse location:'))
         self.openSongFileLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Bible filename:'))
-        self.locationLabel.setText(
+        self.webSourceLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Location:'))
-        self.locationComboBox.setItemText(0,
+        self.webSourceComboBox.setItemText(0,
             translate('BiblesPlugin.ImportWizardForm', 'Crosswalk'))
-        self.locationComboBox.setItemText(1,
+        self.webSourceComboBox.setItemText(1,
             translate('BiblesPlugin.ImportWizardForm', 'BibleGateway'))
-        self.locationComboBox.setItemText(2,
+        self.webSourceComboBox.setItemText(2,
             translate('BiblesPlugin.ImportWizardForm', 'Bibleserver'))
-        self.bibleLabel.setText(
+        self.webTranslationLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Bible:'))
-        self.webDownloadTabWidget.setTabText(
-            self.webDownloadTabWidget.indexOf(self.downloadOptionsTab),
+        self.webTabWidget.setTabText(
+            self.webTabWidget.indexOf(self.webBibleTab),
             translate('BiblesPlugin.ImportWizardForm', 'Download Options'))
-        self.addressLabel.setText(
+        self.webServerLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Server:'))
-        self.usernameLabel.setText(
+        self.webUserLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Username:'))
-        self.passwordLabel.setText(
+        self.webPasswordLabel.setText(
             translate('BiblesPlugin.ImportWizardForm', 'Password:'))
-        self.webDownloadTabWidget.setTabText(
-            self.webDownloadTabWidget.indexOf(self.proxyServerTab),
+        self.webTabWidget.setTabText(
+            self.webTabWidget.indexOf(self.webProxyTab),
             translate('BiblesPlugin.ImportWizardForm',
             'Proxy Server (Optional)'))
         self.licenseDetailsPage.setTitle(
@@ -429,4 +371,21 @@
             translate('BiblesPlugin.ImportWizardForm', 'The openlp.org 1.x '
             'importer has been disabled due to a missing Python module. If '
             'you want to use this importer, you will need to install the '
-            '"python-sqlite" module.'))
\ No newline at end of file
+            '"python-sqlite" module.'))
+        # Align all QFormLayouts towards each other.
+        width = max(self.formatLabel.minimumSizeHint().width(),
+            self.osisFileLabel.minimumSizeHint().width())
+        width = max(width, self.csvBooksLabel.minimumSizeHint().width())
+        width = max(width, self.csvVersesLabel.minimumSizeHint().width())
+        width = max(width, self.openSongFileLabel.minimumSizeHint().width())
+        width = max(width, self.openlp1FileLabel.minimumSizeHint().width())
+        self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.osisSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.csvSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.openSongSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.openlp1Spacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)

=== modified file 'openlp/plugins/bibles/lib/__init__.py'
--- openlp/plugins/bibles/lib/__init__.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/lib/__init__.py	2010-12-27 23:11:17 +0000
@@ -77,9 +77,9 @@
     - After a verse reference all further single values are treat as verse in
       the last selected chapter.
         ``John 3:16-18`` refers to John chapter 3 verses 16 to 18
-    - After a list separator it is possible to refer to additional verses. They
-      are build analog to the first ones. This way it is possible to define each
-      number of verse references. It is not possible to refer to verses in
+    - After a list separator it is possible to refer to additional verses.  They
+      are build analog to the first ones.  This way it is possible to define
+      each number of verse references.  It is not possible to refer to verses in
       additional books.
         ``John 3:16,18`` refers to John chapter 3 verses 16 and 18
         ``John 3:16-18,20`` refers to John chapter 3 verses 16 to 18 and 20
@@ -96,7 +96,7 @@
         a verse separator.
     2. ``(?P<from_verse>[0-9]+)``
         The verse reference ``from_verse`` is manditory
-    3.  ``(?P<range_to>%(sep_r)s(?:`` ...  ``|%(sep_e)s)?)?``
+    3.  ``(?P<range_to>%(sep_r)s(?:`` ... ``|%(sep_e)s)?)?``
         A ``range_to`` declaration is optional. It starts with a range separator
         and contains optional a chapter and verse declaration or a end
         separator.
@@ -105,15 +105,15 @@
     5. ``(?P<to_verse>[0-9]+)``
         The ``to_verse`` reference is equivalent to group 2.
 
-    The full reference is matched against get_reference_match(u'full'). This
+    The full reference is matched against get_reference_match(u'full').  This
     regular expression looks like this:
 
     1. ``^\s*(?!\s)(?P<book>[\d]*[^\d]+)(?<!\s)\s*``
-        The ``book`` group starts with the first non-whitespace character. There
+        The ``book`` group starts with the first non-whitespace character.  There
         are optional leading digits followed by non-digits. The group ends
         before the whitspace in front of the next digit.
     2. ``(?P<ranges>(?:`` + range_string + ``(?:%(sep_l)s|(?=\s*$)))+)\s*$``
-        The second group contains all ``ranges``. This can be multiple
+        The second group contains all ``ranges``.  This can be multiple
         declarations of a range_string separated by a list separator.
 
     The reference list is a list of tuples, with each tuple structured like
@@ -194,7 +194,7 @@
 
 class SearchResults(object):
     """
-    Encapsulate a set of search results. This is Bible-type independent.
+    Encapsulate a set of search results.  This is Bible-type independent.
     """
     def __init__(self, book, chapter, verselist):
         """
@@ -222,4 +222,4 @@
 
 from manager import BibleManager
 from biblestab import BiblesTab
-from mediaitem import BibleMediaItem
\ No newline at end of file
+from mediaitem import BibleMediaItem

=== modified file 'openlp/plugins/bibles/lib/csvbible.py'
--- openlp/plugins/bibles/lib/csvbible.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/lib/csvbible.py	2010-12-27 23:11:17 +0000
@@ -72,7 +72,7 @@
                 self.create_book(unicode(line[1], details['encoding']),
                     line[2], int(line[0]))
                 Receiver.send_message(u'openlp_process_events')
-        except IOError:
+        except IOError, IndexError:
             log.exception(u'Loading books from file failed')
             success = False
         finally:
@@ -86,7 +86,8 @@
             verse_file.seek(0)
             verse_reader = csv.reader(verse_file, dialect)
             for line in verse_reader:
-                if self.stop_import_flag:  # cancel pressed
+                if self.stop_import_flag:
+                    # cancel pressed
                     break
                 details = chardet.detect(line[3])
                 if book_ptr != line[0]:
@@ -109,4 +110,4 @@
         if self.stop_import_flag:
             return False
         else:
-            return success
\ No newline at end of file
+            return success

=== modified file 'openlp/plugins/bibles/lib/opensong.py'
--- openlp/plugins/bibles/lib/opensong.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/bibles/lib/opensong.py	2010-12-27 23:11:17 +0000
@@ -88,7 +88,7 @@
                         translate('BiblesPlugin.Opensong', 'Importing'),
                         db_book.name, chapter.attrib[u'n']))
                     self.session.commit()
-        except IOError:
+        except IOError, AttributeError:
             log.exception(u'Loading bible from OpenSong file failed')
             success = False
         finally:

=== modified file 'openlp/plugins/media/lib/mediaitem.py'
--- openlp/plugins/media/lib/mediaitem.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/media/lib/mediaitem.py	2010-12-27 23:11:17 +0000
@@ -30,7 +30,7 @@
 from PyQt4 import QtCore, QtGui
 
 from openlp.core.lib import MediaManagerItem, BaseListWithDnD, build_icon, \
-    ItemCapabilities, SettingsManager, translate, check_item_selected,  \
+    ItemCapabilities, SettingsManager, translate, check_item_selected, \
     context_menu_action
 
 log = logging.getLogger(__name__)
@@ -159,4 +159,4 @@
             img = QtGui.QPixmap(u':/media/media_video.png').toImage()
             item_name.setIcon(build_icon(img))
             item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
-            self.listView.addItem(item_name)
\ No newline at end of file
+            self.listView.addItem(item_name)

=== modified file 'openlp/plugins/media/mediaplugin.py'
--- openlp/plugins/media/mediaplugin.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/media/mediaplugin.py	2010-12-27 23:11:17 +0000
@@ -65,7 +65,7 @@
     def _addToList(self, list, value, mimetype):
         # Is it a media type
         if len(value) == 2:
-            extensions =  mimetypes.guess_all_extensions(unicode(mimetype))
+            extensions = mimetypes.guess_all_extensions(unicode(mimetype))
             # we have an extension
             if extensions:
                 for extension in extensions:
@@ -142,4 +142,4 @@
             u'title': translate('MediaPlugin', 'Service'),
             u'tooltip': translate('MediaPlugin',
                 'Add the selected Media to the service')
-        }
\ No newline at end of file
+        }

=== modified file 'openlp/plugins/presentations/lib/messagelistener.py'
--- openlp/plugins/presentations/lib/messagelistener.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/presentations/lib/messagelistener.py	2010-12-27 23:11:17 +0000
@@ -90,7 +90,7 @@
         """
         Go to a specific slide
         """
-        log.debug(u'Live = %s, slide' %  self.is_live)
+        log.debug(u'Live = %s, slide' % self.is_live)
         if not self.is_live:
             return
         if self.doc.is_blank():
@@ -249,7 +249,7 @@
         self.timer = QtCore.QTimer()
         self.timer.setInterval(500)
         QtCore.QObject.connect(
-            self.timer, QtCore.SIGNAL("timeout()"), self.timeout)
+            self.timer, QtCore.SIGNAL(u'timeout()'), self.timeout)
 
     def startup(self, message):
         """
@@ -367,4 +367,4 @@
         to check which slide is currently displayed so the slidecontroller
         view can be updated
         """
-        self.live_handler.poll()
\ No newline at end of file
+        self.live_handler.poll()

=== modified file 'openlp/plugins/songs/forms/songimportform.py'
--- openlp/plugins/songs/forms/songimportform.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/songimportform.py	2010-12-27 23:11:17 +0000
@@ -134,7 +134,7 @@
         Stop the import on cancel button, close button or ESC key.
         """
         log.debug('Import canceled by user.')
-        if self.currentId() == 2:
+        if self.currentPage() == self.importPage:
             Receiver.send_message(u'songs_stop_import')
         self.done(QtGui.QDialog.Rejected)
 
@@ -142,11 +142,9 @@
         """
         Validate the current page before moving on to the next page.
         """
-        if self.currentId() == 0:
-            # Welcome page
+        if self.currentPage() == self.welcomePage:
             return True
-        elif self.currentId() == 1:
-            # Select page
+        elif self.currentId() == self.sourcePage:
             source_format = self.formatComboBox.currentIndex()
             if source_format == SongFormat.OpenLP2:
                 if self.openLP2FilenameEdit.text().isEmpty():
@@ -250,8 +248,7 @@
                     self.songBeamerAddButton.setFocus()
                     return False
             return True
-        elif self.currentId() == 2:
-            # Progress page
+        elif self.currentPage() == self.importPage:
             return True
 
     def getFileName(self, title, editbox, filters=u''):
@@ -423,7 +420,7 @@
         self.removeSelectedItems(self.songBeamerFileListWidget)
 
     def onCurrentIdChanged(self, id):
-        if id == 2:
+        if self.page(id) == self.importPage:
             self.preImport()
             self.performImport()
             self.postImport()
@@ -540,4 +537,4 @@
         self.importProgressBar.setValue(self.importProgressBar.maximum())
         self.finishButton.setVisible(True)
         self.cancelButton.setVisible(False)
-        Receiver.send_message(u'openlp_process_events')
\ No newline at end of file
+        Receiver.send_message(u'openlp_process_events')

=== modified file 'openlp/plugins/songs/forms/songimportwizard.py'
--- openlp/plugins/songs/forms/songimportwizard.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/forms/songimportwizard.py	2010-12-27 23:11:17 +0000
@@ -33,68 +33,48 @@
         self.openIcon = build_icon(u':/general/general_open.png')
         self.deleteIcon = build_icon(u':/general/general_delete.png')
         songImportWizard.setObjectName(u'songImportWizard')
-        songImportWizard.resize(550, 386)
         songImportWizard.setModal(True)
         songImportWizard.setWizardStyle(QtGui.QWizard.ModernStyle)
         songImportWizard.setOptions(
             QtGui.QWizard.IndependentPages |
             QtGui.QWizard.NoBackButtonOnStartPage |
             QtGui.QWizard.NoBackButtonOnLastPage)
+        # Welcome Page 
         self.welcomePage = QtGui.QWizardPage()
-        self.welcomePage.setObjectName(u'welcomePage')
         self.welcomePage.setPixmap(QtGui.QWizard.WatermarkPixmap,
             QtGui.QPixmap(u':/wizards/wizard_importsong.bmp'))
-        self.welcomeLayout = QtGui.QHBoxLayout(self.welcomePage)
-        self.welcomeLayout.setSpacing(8)
-        self.welcomeLayout.setMargin(0)
-        self.welcomeLayout.setObjectName(u'welcomeLayout')
-        self.welcomeTextLayout = QtGui.QVBoxLayout()
-        self.welcomeTextLayout.setSpacing(8)
-        self.welcomeTextLayout.setObjectName(u'welcomeTextLayout')
+        self.welcomePage.setObjectName(u'WelcomePage')
+        self.welcomeLayout = QtGui.QVBoxLayout(self.welcomePage)
+        self.welcomeLayout.setObjectName(u'WelcomeLayout')
         self.titleLabel = QtGui.QLabel(self.welcomePage)
         self.titleLabel.setObjectName(u'TitleLabel')
-        self.welcomeTextLayout.addWidget(self.titleLabel)
-        self.welcomeTopSpacer = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed)
-        self.welcomeTextLayout.addItem(self.welcomeTopSpacer)
+        self.welcomeLayout.addWidget(self.titleLabel)
+        self.welcomeLayout.addSpacing(40)
         self.informationLabel = QtGui.QLabel(self.welcomePage)
         self.informationLabel.setWordWrap(True)
-        self.informationLabel.setMargin(10)
         self.informationLabel.setObjectName(u'InformationLabel')
-        self.welcomeTextLayout.addWidget(self.informationLabel)
-        self.welcomeBottomSpacer = QtGui.QSpacerItem(20, 40,
-            QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
-        self.welcomeTextLayout.addItem(self.welcomeBottomSpacer)
-        self.welcomeLayout.addLayout(self.welcomeTextLayout)
+        self.welcomeLayout.addWidget(self.informationLabel)
+        self.welcomeLayout.addStretch()
         songImportWizard.addPage(self.welcomePage)
+        # Source Page
         self.sourcePage = QtGui.QWizardPage()
         self.sourcePage.setObjectName(u'SourcePage')
         self.sourceLayout = QtGui.QVBoxLayout(self.sourcePage)
-        self.sourceLayout.setSpacing(8)
-        self.sourceLayout.setMargin(20)
         self.sourceLayout.setObjectName(u'SourceLayout')
-        self.formatLayout = QtGui.QHBoxLayout()
-        self.formatLayout.setSpacing(8)
+        self.formatLayout = QtGui.QFormLayout()
         self.formatLayout.setObjectName(u'FormatLayout')
         self.formatLabel = QtGui.QLabel(self.sourcePage)
         self.formatLabel.setObjectName(u'FormatLabel')
-        self.formatLayout.addWidget(self.formatLabel)
         self.formatComboBox = QtGui.QComboBox(self.sourcePage)
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding,
-            QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(
-            self.formatComboBox.sizePolicy().hasHeightForWidth())
-        self.formatComboBox.setSizePolicy(sizePolicy)
-        self.formatComboBox.setObjectName(u'formatComboBox')
-        self.formatLayout.addWidget(self.formatComboBox)
-        self.formatSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        self.formatLayout.addItem(self.formatSpacer)
+        self.formatComboBox.setObjectName(u'FormatComboBox')
+        self.formatLayout.addRow(self.formatLabel, self.formatComboBox)
+        self.formatSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        self.formatLayout.setItem(1, QtGui.QFormLayout.LabelRole,
+            self.formatSpacer)
         self.sourceLayout.addLayout(self.formatLayout)
-        self.formatStackedWidget = QtGui.QStackedWidget(self.sourcePage)
-        self.formatStackedWidget.setObjectName(u'FormatStackedWidget')
+        self.formatStack = QtGui.QStackedLayout()
+        self.formatStack.setObjectName(u'FormatStack')
         # OpenLP 2.0
         self.addSingleFileSelectItem(u'openLP2')
         # openlp.org 1.x
@@ -120,28 +100,26 @@
         self.addMultiFileSelectItem(u'songBeamer')
 #        Commented out for future use.
 #        self.addSingleFileSelectItem(u'csv', u'CSV')
-        self.sourceLayout.addWidget(self.formatStackedWidget)
+        self.sourceLayout.addLayout(self.formatStack)
         songImportWizard.addPage(self.sourcePage)
+        # Import Page
         self.importPage = QtGui.QWizardPage()
-        self.importPage.setObjectName(u'importPage')
+        self.importPage.setObjectName(u'ImportPage')
         self.importLayout = QtGui.QVBoxLayout(self.importPage)
-        self.importLayout.setSpacing(8)
-        self.importLayout.setMargin(50)
-        self.importLayout.setObjectName(u'importLayout')
+        self.importLayout.setMargin(48)
+        self.importLayout.setObjectName(u'ImportLayout')
         self.importProgressLabel = QtGui.QLabel(self.importPage)
-        self.importProgressLabel.setObjectName(u'importProgressLabel')
+        self.importProgressLabel.setObjectName(u'ImportProgressLabel')
         self.importLayout.addWidget(self.importProgressLabel)
         self.importProgressBar = QtGui.QProgressBar(self.importPage)
-        self.importProgressBar.setProperty(u'value', 0)
-        self.importProgressBar.setInvertedAppearance(False)
-        self.importProgressBar.setObjectName(u'importProgressBar')
+        self.importProgressBar.setObjectName(u'ImportProgressBar')
         self.importLayout.addWidget(self.importProgressBar)
         songImportWizard.addPage(self.importPage)
         self.retranslateUi(songImportWizard)
-        self.formatStackedWidget.setCurrentIndex(0)
+        self.formatStack.setCurrentIndex(0)
         QtCore.QObject.connect(self.formatComboBox,
             QtCore.SIGNAL(u'currentIndexChanged(int)'),
-            self.formatStackedWidget.setCurrentIndex)
+            self.formatStack.setCurrentIndex)
         QtCore.QMetaObject.connectSlotsByName(songImportWizard)
 
     def retranslateUi(self, songImportWizard):
@@ -257,6 +235,19 @@
             translate('SongsPlugin.ImportWizardForm', 'Ready.'))
         self.importProgressBar.setFormat(
             translate('SongsPlugin.ImportWizardForm', '%p%'))
+        # Align all QFormLayouts towards each other.
+        width = max(self.formatLabel.minimumSizeHint().width(),
+            self.openLP2FilenameLabel.minimumSizeHint().width())
+        self.formatSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+        self.openLP2FormLabelSpacer.changeSize(width, 0,
+            QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+        self.openLP1FormLabelSpacer.changeSize(width, 0,
+            QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
+        self.ewFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Fixed)
+#        self.csvFormLabelSpacer.changeSize(width, 0, QtGui.QSizePolicy.Fixed,
+#            QtGui.QSizePolicy.Fixed)
 
     def addSingleFileSelectItem(self, prefix, obj_prefix=None,
         can_disable=False):
@@ -270,16 +261,13 @@
             importWidget = page
         importLayout = QtGui.QFormLayout(importWidget)
         importLayout.setMargin(0)
-        importLayout.setSpacing(8)
         if can_disable:
             importLayout.setObjectName(obj_prefix + u'ImportLayout')
         else:
             importLayout.setObjectName(obj_prefix + u'Layout')
         filenameLabel = QtGui.QLabel(importWidget)
         filenameLabel.setObjectName(obj_prefix + u'FilenameLabel')
-        importLayout.setWidget(0, QtGui.QFormLayout.LabelRole, filenameLabel)
         fileLayout = QtGui.QHBoxLayout()
-        fileLayout.setSpacing(8)
         fileLayout.setObjectName(obj_prefix + u'FileLayout')
         filenameEdit = QtGui.QLineEdit(importWidget)
         filenameEdit.setObjectName(obj_prefix + u'FilenameEdit')
@@ -288,10 +276,14 @@
         browseButton.setIcon(self.openIcon)
         browseButton.setObjectName(obj_prefix + u'BrowseButton')
         fileLayout.addWidget(browseButton)
-        importLayout.setLayout(0, QtGui.QFormLayout.FieldRole, fileLayout)
-        self.formatStackedWidget.addWidget(page)
+        importLayout.addRow(filenameLabel, fileLayout)
+        formSpacer = QtGui.QSpacerItem(10, 0, QtGui.QSizePolicy.Fixed,
+            QtGui.QSizePolicy.Minimum)
+        importLayout.setItem(1, QtGui.QFormLayout.LabelRole, formSpacer)
+        self.formatStack.addWidget(page)
         setattr(self, prefix + u'Page', page)
         setattr(self, prefix + u'FilenameLabel', filenameLabel)
+        setattr(self, prefix + u'FormLabelSpacer', formSpacer)
         setattr(self, prefix + u'FileLayout', fileLayout)
         setattr(self, prefix + u'FilenameEdit', filenameEdit)
         setattr(self, prefix + u'BrowseButton', browseButton)
@@ -313,7 +305,6 @@
             importWidget = page
         importLayout = QtGui.QVBoxLayout(importWidget)
         importLayout.setMargin(0)
-        importLayout.setSpacing(8)
         if can_disable:
             importLayout.setObjectName(obj_prefix + u'ImportLayout')
         else:
@@ -324,25 +315,21 @@
         fileListWidget.setObjectName(obj_prefix + u'FileListWidget')
         importLayout.addWidget(fileListWidget)
         buttonLayout = QtGui.QHBoxLayout()
-        buttonLayout.setSpacing(8)
         buttonLayout.setObjectName(obj_prefix + u'ButtonLayout')
         addButton = QtGui.QPushButton(importWidget)
         addButton.setIcon(self.openIcon)
         addButton.setObjectName(obj_prefix + u'AddButton')
         buttonLayout.addWidget(addButton)
-        buttonSpacer = QtGui.QSpacerItem(40, 20,
-            QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
-        buttonLayout.addItem(buttonSpacer)
+        buttonLayout.addStretch()
         removeButton = QtGui.QPushButton(importWidget)
         removeButton.setIcon(self.deleteIcon)
         removeButton.setObjectName(obj_prefix + u'RemoveButton')
         buttonLayout.addWidget(removeButton)
         importLayout.addLayout(buttonLayout)
-        self.formatStackedWidget.addWidget(page)
+        self.formatStack.addWidget(page)
         setattr(self, prefix + u'Page', page)
         setattr(self, prefix + u'FileListWidget', fileListWidget)
         setattr(self, prefix + u'ButtonLayout', buttonLayout)
-        setattr(self, prefix + u'ButtonSpacer', buttonSpacer)
         setattr(self, prefix + u'AddButton', addButton)
         setattr(self, prefix + u'RemoveButton', removeButton)
         if can_disable:
@@ -361,7 +348,6 @@
         disabledWidget.setObjectName(obj_prefix + u'DisabledWidget')
         disabledLayout = QtGui.QVBoxLayout(disabledWidget)
         disabledLayout.setMargin(0)
-        disabledLayout.setSpacing(8)
         disabledLayout.setObjectName(obj_prefix + u'DisabledLayout')
         disabledLabel = QtGui.QLabel(disabledWidget)
         disabledLabel.setWordWrap(True)
@@ -376,4 +362,4 @@
         setattr(self, prefix + u'DisabledLayout', disabledLayout)
         setattr(self, prefix + u'DisabledLabel', disabledLabel)
         setattr(self, prefix + u'ImportWidget', importWidget)
-        return importWidget
\ No newline at end of file
+        return importWidget

=== modified file 'openlp/plugins/songs/lib/cclifileimport.py'
--- openlp/plugins/songs/lib/cclifileimport.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/lib/cclifileimport.py	2010-12-27 23:11:17 +0000
@@ -124,7 +124,7 @@
         ``Title=``
             Contains the song title (e.g. *Title=Above All*)
         ``Author=``
-            Contains a | delimited list of the  song authors
+            Contains a | delimited list of the song authors
             e.g. *Author=LeBlanc, Lenny | Baloche, Paul*
         ``Copyright=``
             Contains a | delimited list of the song copyrights
@@ -184,8 +184,8 @@
                 verse_type = u'O'
                 check_first_verse_line = True
             verse_text = unicode(words_list[counter])
-            verse_text = verse_text.replace("/n",  "\n")
-            verse_lines = verse_text.split(u'\n',  1)
+            verse_text = verse_text.replace(u'/n', u'\n')
+            verse_lines = verse_text.split(u'\n', 1)
             if check_first_verse_line:
                 if verse_lines[0].startswith(u'(PRE-CHORUS'):
                     verse_type = u'P'
@@ -337,4 +337,4 @@
         self.copyright = song_copyright
         self.ccli_number = song_ccli
         self.comments = song_comments
-        self.finish()
\ No newline at end of file
+        self.finish()

=== modified file 'openlp/plugins/songs/lib/songbeamerimport.py'
--- openlp/plugins/songs/lib/songbeamerimport.py	2010-12-27 08:28:33 +0000
+++ openlp/plugins/songs/lib/songbeamerimport.py	2010-12-27 23:11:17 +0000
@@ -85,7 +85,7 @@
         """
         Recieve a single file, or a list of files to import.
         """
-        if isinstance(self.import_source,  list):
+        if isinstance(self.import_source, list):
             self.import_wizard.importProgressBar.setMaximum(
                 len(self.import_source))
             for file in self.import_source:
@@ -96,7 +96,7 @@
                 read_verses = False
                 self.file_name = os.path.split(file)[1]
                 self.import_wizard.incrementProgressBar(
-                    "Importing %s" % (self.file_name),  0)
+                    "Importing %s" % (self.file_name), 0)
                 if os.path.isfile(file):
                     detect_file = open(file, u'r')
                     details = chardet.detect(detect_file.read(2048))
@@ -292,4 +292,4 @@
                     self.current_verse_type += marks[1]
             return True
         else:
-            return False
\ No newline at end of file
+            return False

=== modified file 'openlp/plugins/songs/lib/wowimport.py'
--- openlp/plugins/songs/lib/wowimport.py	2010-12-26 11:04:47 +0000
+++ openlp/plugins/songs/lib/wowimport.py	2010-12-27 23:11:17 +0000
@@ -32,7 +32,7 @@
 
 from openlp.plugins.songs.lib.songimport import SongImport
 
-BLOCK_TYPES = (u'V',  u'C',  u'B')
+BLOCK_TYPES = (u'V', u'C', u'B')
 
 log = logging.getLogger(__name__)
 
@@ -111,7 +111,7 @@
         Recieve a single file, or a list of files to import.
         """
 
-        if isinstance(self.import_source,  list):
+        if isinstance(self.import_source, list):
             self.import_wizard.importProgressBar.setMaximum(
                 len(self.import_source))
             for file in self.import_source:
@@ -119,7 +119,7 @@
                 self.copyright = u''
                 self.file_name = os.path.split(file)[1]
                 self.import_wizard.incrementProgressBar(
-                    "Importing %s" % (self.file_name),  0)
+                    "Importing %s" % (self.file_name), 0)
                 # Get the song title
                 self.title = self.file_name.rpartition(u'.')[0]
                 self.songData = open(file, 'rb')


Follow ups