From c8094b717f5bdf001c02f70a37c38f1ee55a849f Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Mon, 20 Apr 2009 21:03:04 +0100 Subject: [PATCH] Add more controls and fix xml errors --- openlp/core/lib/themexmlhandler.py | 5 +- openlp/core/ui/amendthemeform.py | 118 +++++++++++++++++++++++++---- openlp/core/ui/thememanager.py | 4 +- 3 files changed, 106 insertions(+), 21 deletions(-) diff --git a/openlp/core/lib/themexmlhandler.py b/openlp/core/lib/themexmlhandler.py index d0f5c6940..cab3f0f45 100644 --- a/openlp/core/lib/themexmlhandler.py +++ b/openlp/core/lib/themexmlhandler.py @@ -46,14 +46,13 @@ blankthemexml=\ Arial #000000 30 - - + Arial #000000 12 - + True diff --git a/openlp/core/ui/amendthemeform.py b/openlp/core/ui/amendthemeform.py index 9b406d160..a5d283b8a 100644 --- a/openlp/core/ui/amendthemeform.py +++ b/openlp/core/ui/amendthemeform.py @@ -55,7 +55,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): QtCore.SIGNAL("activated(int)"), self.onBackgroundTypeComboBoxSelected) QtCore.QObject.connect(self.GradientComboBox, QtCore.SIGNAL("activated(int)"), self.onGradientComboBoxSelected) - + QtCore.QObject.connect(self.MainFontComboBox, + QtCore.SIGNAL("activated(int)"), self.onMainFontComboBoxSelected) + QtCore.QObject.connect(self.FontFooterComboBox, + QtCore.SIGNAL("activated(int)"), self.onFontFooterComboBoxSelected) + QtCore.QObject.connect(self.MainFontSizeSpinBox, + QtCore.SIGNAL("valueChanged(int)"), self.onMainFontSizeSpinBoxChanged) + QtCore.QObject.connect(self.FontFooterSizeSpinBox, + QtCore.SIGNAL("valueChanged(int)"), self.onFontFooterSizeSpinBoxChanged) def accept(self): return QtGui.QDialog.accept(self) @@ -74,17 +81,34 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.paintUi(self.theme) self.previewTheme(self.theme) - def onGradientComboBoxSelected(self, currentIndex): - print "Changed ", currentIndex - if currentIndex == 0: # Horizontal - self.theme.background_direction = u'horizontal' - elif currentIndex == 1: # vertical - self.theme.background_direction = u'vertical' - else: - self.theme.background_direction = u'circular' - self.stateChanging(self.theme) + # + #Main Font Tab + # + def onMainFontComboBoxSelected(self): + self.theme.font_main_name = self.MainFontComboBox.currentFont().family() self.previewTheme(self.theme) + def onMainFontSizeSpinBoxChanged(self, value): + self.theme.font_main_proportion = value + self.previewTheme(self.theme) + + # + #Footer Font Tab + # + def onFontFooterComboBoxSelected(self): + self.theme.font_footer_name = self.FontFooterComboBox.currentFont().family() + self.previewTheme(self.theme) + + def onFontFooterSizeSpinBoxChanged(self, value): + self.theme.font_footer_proportion = value + self.previewTheme(self.theme) + + # + #Background Tab + # + def onGradientComboBoxSelected(self, currentIndex): + self.setBackground(self.BackgroundTypeComboBox.currentIndex(), currentIndex) + def onBackgroundComboBoxSelected(self, currentIndex): if currentIndex == 0: # Opaque self.theme.background_mode = u'opaque' @@ -94,14 +118,21 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.previewTheme(self.theme) def onBackgroundTypeComboBoxSelected(self, currentIndex): - if currentIndex == 0: # Solid + self.setBackground(currentIndex, self.GradientComboBox.currentIndex()) + + def setBackground(self, background, gradient): + if background == 0: # Solid self.theme.background_type = u'solid' if self.theme.background_color is None : self.theme.background_color = u'#000000' - elif currentIndex == 1: # Gradient + elif background == 1: # Gradient self.theme.background_type = u'gradient' - if self.theme.background_direction == None: # never defined - self.onGradientComboBoxSelected(self.GradientComboBox.currentIndex()) + if gradient == 0: # Horizontal + self.theme.background_direction = u'horizontal' + elif gradient == 1: # vertical + self.theme.background_direction = u'vertical' + else: + self.theme.background_direction = u'circular' if self.theme.background_startColor is None : self.theme.background_startColor = u'#000000' if self.theme.background_endColor is None : @@ -149,6 +180,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): 'background-color: %s' % str(self.theme.font_footer_color)) self.previewTheme(self.theme) + # + #Local Methods + # def baseTheme(self): log.debug(u'base Theme') newtheme = ThemeXML() @@ -164,20 +198,49 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): def paintUi(self, theme): print theme # leave as helpful for initial development self.stateChanging(theme) + if self.theme.background_mode == u'opaque': + self.BackgroundComboBox.setCurrentIndex(0) + else: + self.BackgroundComboBox.setCurrentIndex(1) if theme.background_type == u'solid': self.BackgroundTypeComboBox.setCurrentIndex(0) elif theme.background_type == u'gradient': self.BackgroundTypeComboBox.setCurrentIndex(1) else: self.BackgroundTypeComboBox.setCurrentIndex(2) + if self.theme.background_direction == u'horizontal': + self.GradientComboBox.setCurrentIndex(0) + elif self.theme.background_direction == u'vertical': + self.GradientComboBox.setCurrentIndex(1) + else: + self.GradientComboBox.setCurrentIndex(2) - self.BackgroundComboBox.setCurrentIndex(0) - self.GradientComboBox.setCurrentIndex(0) + self.MainFontSizeSpinBox.setValue(int(self.theme.font_main_proportion)) + self.FontMainXSpinBox.setValue(int(self.theme.font_main_x)) + self.FontMainYSpinBox.setValue(int(self.theme.font_main_y)) + self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width)) + self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height)) + self.FontFooterSizeSpinBox.setValue(int(self.theme.font_footer_proportion)) + self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x)) + self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y)) + self.FontFooterWidthspinBox.setValue(int(self.theme.font_footer_width)) + self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height)) self.MainFontColorPushButton.setStyleSheet( 'background-color: %s' % str(theme.font_main_color)) self.FontFooterColorPushButton.setStyleSheet( 'background-color: %s' % str(theme.font_footer_color)) + if self.theme.font_main_override == u'True': + self.FontMainUseDefault.setChecked(True) + else: + self.FontMainUseDefault.setChecked(False) + if self.theme.font_footer_override == u'True': + self.FontFooterDefaultCheckBox.setChecked(True) + else: + self.FontFooterDefaultCheckBox.setChecked(False) + + + def stateChanging(self, theme): if theme.background_type == u'solid': self.Color1PushButton.setStyleSheet( @@ -219,6 +282,29 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog): self.GradientLabel.setVisible(False) self.GradientComboBox.setVisible(False) + if theme.font_main_override == u'True': + self.FontMainXSpinBox.setEnabled(False) + self.FontMainYSpinBox.setEnabled(False) + self.FontMainWidthSpinBox.setEnabled(False) + self.FontMainHeightSpinBox.setEnabled(False) + else: + self.FontMainXSpinBox.setEnabled(True) + self.FontMainYSpinBox.setEnabled(True) + self.FontMainWidthSpinBox.setEnabled(True) + self.FontMainHeightSpinBox.setEnabled(True) + + if theme.font_footer_override == u'True': + self.FontFooterXSpinBox.setEnabled(False) + self.FontFooterYSpinBox.setEnabled(False) + self.FontFooterWidthspinBox.setEnabled(False) + self.FontFooterHeightSpinBox.setEnabled(False) + else: + self.FontFooterXSpinBox.setEnabled(True) + self.FontFooterYSpinBox.setEnabled(True) + self.FontFooterWidthspinBox.setEnabled(True) + self.FontFooterHeightSpinBox.setEnabled(True) + + def previewTheme(self, theme): frame = self.thememanager.generateImage(theme) self.ThemePreview.setPixmap(frame) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 70b0bb2e5..992d7b927 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -307,8 +307,8 @@ class ThemeManager(QWidget): else: newtheme.add_background_image(str(t.BackgroundParameter1)) - newtheme.add_font(str(t.FontName), str(t.FontColor.name()), str(t.FontProportion * 2), u'False') - newtheme.add_font(str(t.FontName), str(t.FontColor.name()), str(12), u'False', u'footer') + newtheme.add_font(str(t.FontName), str(t.FontColor.name()), str(t.FontProportion * 2), u'True') + newtheme.add_font(str(t.FontName), str(t.FontColor.name()), str(12), u'True', u'footer') outline = False shadow = False if t.Shadow == 1: