forked from openlp/openlp
Amend theme XML to handle missing data
Add some value management on Theme dialog
This commit is contained in:
parent
192088165e
commit
61dbab1899
@ -52,23 +52,30 @@ class ThemeXML():
|
|||||||
background.setAttribute(u'type', u'solid')
|
background.setAttribute(u'type', u'solid')
|
||||||
self.theme.appendChild(background)
|
self.theme.appendChild(background)
|
||||||
|
|
||||||
color = self.theme_xml.createElement(u'color')
|
color = self.theme_xml.createElement(u'color1')
|
||||||
bkc = self.theme_xml.createTextNode(bkcolor)
|
bkc = self.theme_xml.createTextNode(bkcolor)
|
||||||
color.appendChild(bkc)
|
color.appendChild(bkc)
|
||||||
background.appendChild(color)
|
background.appendChild(color)
|
||||||
|
|
||||||
|
color = self.theme_xml.createElement(u'color2')
|
||||||
|
background.appendChild(color)
|
||||||
|
|
||||||
|
color = self.theme_xml.createElement(u'direction')
|
||||||
|
background.appendChild(color)
|
||||||
|
|
||||||
|
|
||||||
def add_background_gradient(self, startcolor, endcolor, direction):
|
def add_background_gradient(self, startcolor, endcolor, direction):
|
||||||
background = self.theme_xml.createElement(u'background')
|
background = self.theme_xml.createElement(u'background')
|
||||||
background.setAttribute(u'mode', u'opaque')
|
background.setAttribute(u'mode', u'opaque')
|
||||||
background.setAttribute(u'type', u'Gradient')
|
background.setAttribute(u'type', u'gradient')
|
||||||
self.theme.appendChild(background)
|
self.theme.appendChild(background)
|
||||||
|
|
||||||
color = self.theme_xml.createElement(u'startColor')
|
color = self.theme_xml.createElement(u'color1')
|
||||||
bkc = self.theme_xml.createTextNode(startcolor)
|
bkc = self.theme_xml.createTextNode(startcolor)
|
||||||
color.appendChild(bkc)
|
color.appendChild(bkc)
|
||||||
background.appendChild(color)
|
background.appendChild(color)
|
||||||
|
|
||||||
color = self.theme_xml.createElement(u'endColor')
|
color = self.theme_xml.createElement(u'color2')
|
||||||
bkc = self.theme_xml.createTextNode(endcolor)
|
bkc = self.theme_xml.createTextNode(endcolor)
|
||||||
color.appendChild(bkc)
|
color.appendChild(bkc)
|
||||||
background.appendChild(color)
|
background.appendChild(color)
|
||||||
@ -111,11 +118,10 @@ class ThemeXML():
|
|||||||
|
|
||||||
name = self.theme_xml.createElement(u'location')
|
name = self.theme_xml.createElement(u'location')
|
||||||
name.setAttribute(u'override',override)
|
name.setAttribute(u'override',override)
|
||||||
if override == u'True':
|
name.setAttribute(u'x',str(xpos))
|
||||||
name.setAttribute(u'x',str(xpos))
|
name.setAttribute(u'y',str(ypos))
|
||||||
name.setAttribute(u'y',str(ypos))
|
name.setAttribute(u'width',str(width))
|
||||||
name.setAttribute(u'width',str(width))
|
name.setAttribute(u'height',str(height))
|
||||||
name.setAttribute(u'height',str(height))
|
|
||||||
background.appendChild(name)
|
background.appendChild(name)
|
||||||
|
|
||||||
def add_display(self, shadow, shadowColor, outline, outlineColor, horizontal, vertical, wrap):
|
def add_display(self, shadow, shadowColor, outline, outlineColor, horizontal, vertical, wrap):
|
||||||
|
@ -128,8 +128,8 @@ class Renderer:
|
|||||||
p=QtGui.QPainter()
|
p=QtGui.QPainter()
|
||||||
p.begin(self._paint)
|
p.begin(self._paint)
|
||||||
if self._theme.background_type == u'solid':
|
if self._theme.background_type == u'solid':
|
||||||
p.fillRect(self._paint.rect(), QtGui.QColor(self._theme.background_color))
|
p.fillRect(self._paint.rect(), QtGui.QColor(self._theme.background_color1))
|
||||||
elif self._theme.background_type == u'Gradient' : # gradient
|
elif self._theme.background_type == u'gradient' : # gradient
|
||||||
gradient = None
|
gradient = None
|
||||||
if self._theme.background_direction == u'vertical':
|
if self._theme.background_direction == u'vertical':
|
||||||
w = int(self._paint.width())/2
|
w = int(self._paint.width())/2
|
||||||
@ -142,8 +142,8 @@ class Renderer:
|
|||||||
h = int(self._paint.height())/2
|
h = int(self._paint.height())/2
|
||||||
gradient = QtGui.QRadialGradient(w, h, w) # Circular
|
gradient = QtGui.QRadialGradient(w, h, w) # Circular
|
||||||
|
|
||||||
gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor))
|
gradient.setColorAt(0, QtGui.QColor(self._theme.background_color1))
|
||||||
gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor))
|
gradient.setColorAt(1, QtGui.QColor(self._theme.background_color2))
|
||||||
|
|
||||||
p.setBrush(QtGui.QBrush(gradient))
|
p.setBrush(QtGui.QBrush(gradient))
|
||||||
rectPath = QtGui.QPainterPath()
|
rectPath = QtGui.QPainterPath()
|
||||||
|
@ -23,6 +23,7 @@ from PyQt4 import QtCore, QtGui
|
|||||||
from PyQt4.QtGui import QColor, QFont
|
from PyQt4.QtGui import QColor, QFont
|
||||||
from openlp.core.lib import ThemeXML
|
from openlp.core.lib import ThemeXML
|
||||||
from openlp.core import Renderer
|
from openlp.core import Renderer
|
||||||
|
from openlp.core import translate
|
||||||
|
|
||||||
from amendthemedialog import Ui_AmendThemeDialog
|
from amendthemedialog import Ui_AmendThemeDialog
|
||||||
|
|
||||||
@ -34,12 +35,102 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
QtGui.QDialog.__init__(self, parent)
|
QtGui.QDialog.__init__(self, parent)
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
|
||||||
|
#define signals
|
||||||
|
#Exits
|
||||||
|
QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("accepted()"), self.accept)
|
||||||
|
QtCore.QObject.connect(self.ThemeButtonBox, QtCore.SIGNAL("rejected()"), self.close)
|
||||||
|
#Buttons
|
||||||
|
QtCore.QObject.connect(self.Color1PushButton ,
|
||||||
|
QtCore.SIGNAL("pressed()"), self.onColor1PushButtonClicked)
|
||||||
|
QtCore.QObject.connect(self.Color2PushButton ,
|
||||||
|
QtCore.SIGNAL("pressed()"), self.onColor2PushButtonClicked)
|
||||||
|
QtCore.QObject.connect(self.MainFontColorPushButton,
|
||||||
|
QtCore.SIGNAL("pressed()"), self.onMainFontColorPushButtonClicked)
|
||||||
|
QtCore.QObject.connect(self.FontFooterColorPushButton,
|
||||||
|
QtCore.SIGNAL("pressed()"), self.onFontFooterColorPushButtonClicked)
|
||||||
|
#Combo boxes
|
||||||
|
QtCore.QObject.connect(self.BackgroundComboBox,
|
||||||
|
QtCore.SIGNAL("activated(int)"), self.onBackgroundComboBoxSelected)
|
||||||
|
QtCore.QObject.connect(self.BackgroundTypeComboBox,
|
||||||
|
QtCore.SIGNAL("activated(int)"), self.onBackgroundTypeComboBoxSelected)
|
||||||
|
QtCore.QObject.connect(self.GradientComboBox,
|
||||||
|
QtCore.SIGNAL("activated(int)"), self.onGradientComboBoxSelected)
|
||||||
|
|
||||||
|
|
||||||
|
def accept(self):
|
||||||
|
return QtGui.QDialog.accept(self)
|
||||||
|
|
||||||
def loadTheme(self, theme):
|
def loadTheme(self, theme):
|
||||||
if theme == None:
|
if theme == None:
|
||||||
theme = self.baseTheme()
|
self.theme = ThemeXML()
|
||||||
|
self.theme.parse(self.baseTheme())
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
self.generateImage(theme)
|
self.paintUi(self.theme)
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onGradientComboBoxSelected(self):
|
||||||
|
if self.GradientComboBox.currentIndex() == 0: # Horizontal
|
||||||
|
self.theme.background_direction = u'horizontal'
|
||||||
|
elif self.GradientComboBox.currentIndex() == 1: # vertical
|
||||||
|
self.theme.background_direction = u'vertical'
|
||||||
|
else:
|
||||||
|
self.theme.background_direction = u'circular'
|
||||||
|
self.stateChanging(self.theme)
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onBackgroundComboBoxSelected(self):
|
||||||
|
if self.BackgroundComboBox.currentIndex() == 0: # Opaque
|
||||||
|
self.theme.background_mode = u'opaque'
|
||||||
|
else:
|
||||||
|
self.theme.background_mode = u'transparent'
|
||||||
|
self.stateChanging(self.theme)
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onBackgroundTypeComboBoxSelected(self):
|
||||||
|
if self.BackgroundTypeComboBox.currentIndex() == 0: # Solid
|
||||||
|
self.theme.background_type = u'solid'
|
||||||
|
elif self.BackgroundTypeComboBox.currentIndex() == 1: # Gradient
|
||||||
|
self.theme.background_type = u'gradient'
|
||||||
|
if self.theme.background_direction == None: # never defined
|
||||||
|
self.theme.background_direction = u'horizontal'
|
||||||
|
self.theme.background_color2 = u'#000000'
|
||||||
|
else:
|
||||||
|
self.theme.background_type = u'image'
|
||||||
|
self.stateChanging(self.theme)
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onColor1PushButtonClicked(self):
|
||||||
|
self.theme.background_color1 = QtGui.QColorDialog.getColor(
|
||||||
|
QColor(self.theme.background_color1), self).name()
|
||||||
|
self.Color1PushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(self.theme.background_color1))
|
||||||
|
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onColor2PushButtonClicked(self):
|
||||||
|
self.theme.background_color2 = QtGui.QColorDialog.getColor(
|
||||||
|
QColor(self.theme.background_color2), self).name()
|
||||||
|
self.Color2PushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(self.theme.background_color2))
|
||||||
|
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onMainFontColorPushButtonClicked(self):
|
||||||
|
self.theme.font_main_color = QtGui.QColorDialog.getColor(
|
||||||
|
QColor(self.theme.font_main_color), self).name()
|
||||||
|
|
||||||
|
self.MainFontColorPushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(self.theme.font_main_color))
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
|
def onFontFooterColorPushButtonClicked(self):
|
||||||
|
self.theme.font_footer_color = QtGui.QColorDialog.getColor(
|
||||||
|
QColor(self.theme.font_footer_color), self).name()
|
||||||
|
|
||||||
|
self.FontFooterColorPushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(self.theme.font_footer_color))
|
||||||
|
self.generateImage(self.theme)
|
||||||
|
|
||||||
def baseTheme(self):
|
def baseTheme(self):
|
||||||
log.debug(u'base Theme')
|
log.debug(u'base Theme')
|
||||||
@ -50,12 +141,50 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), u'False', u'footer')
|
newtheme.add_font(str(QFont().family()), str(u'#FFFFFF'), str(12), u'False', u'footer')
|
||||||
newtheme.add_display(str(False), str(u'#FFFFFF'), str(False), str(u'#FFFFFF'),
|
newtheme.add_display(str(False), str(u'#FFFFFF'), str(False), str(u'#FFFFFF'),
|
||||||
str(0), str(0), str(0))
|
str(0), str(0), str(0))
|
||||||
|
|
||||||
return newtheme.extract_xml()
|
return newtheme.extract_xml()
|
||||||
|
|
||||||
def generateImage(self, theme_xml):
|
def paintUi(self, theme):
|
||||||
log.debug(u'generateImage %s ', theme_xml)
|
print theme # leave as helpful for initial development
|
||||||
theme = ThemeXML()
|
self.stateChanging(theme)
|
||||||
theme.parse(theme_xml)
|
self.BackgroundTypeComboBox.setCurrentIndex(0)
|
||||||
|
self.BackgroundComboBox.setCurrentIndex(0)
|
||||||
|
self.GradientComboBox.setCurrentIndex(0)
|
||||||
|
self.MainFontColorPushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(theme.font_main_color))
|
||||||
|
self.FontFooterColorPushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(theme.font_footer_color))
|
||||||
|
|
||||||
|
def stateChanging(self, theme):
|
||||||
|
if theme.background_type == u'solid':
|
||||||
|
self.Color1PushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(theme.background_color1))
|
||||||
|
self.Color1Label.setText(translate(u'ThemeManager', u'Background Font:'))
|
||||||
|
self.Color1Label.setVisible(True)
|
||||||
|
self.Color1PushButton.setVisible(True)
|
||||||
|
self.Color2Label.setVisible(False)
|
||||||
|
self.Color2PushButton.setVisible(False)
|
||||||
|
elif theme.background_type == u'gradient':
|
||||||
|
self.Color1PushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(theme.background_color1))
|
||||||
|
self.Color2PushButton.setStyleSheet(
|
||||||
|
'background-color: %s' % str(theme.background_color2))
|
||||||
|
self.Color1Label.setText(translate(u'ThemeManager', u'First Color:'))
|
||||||
|
self.Color2Label.setText(translate(u'ThemeManager', u'Second Color:'))
|
||||||
|
self.Color1Label.setVisible(True)
|
||||||
|
self.Color1PushButton.setVisible(True)
|
||||||
|
self.Color2Label.setVisible(True)
|
||||||
|
self.Color2PushButton.setVisible(True)
|
||||||
|
else: # must be image
|
||||||
|
self.Color1Label.setVisible(False)
|
||||||
|
self.Color1PushButton.setVisible(False)
|
||||||
|
self.Color2Label.setVisible(False)
|
||||||
|
self.Color2PushButton.setVisible(False)
|
||||||
|
|
||||||
|
def generateImage(self, theme):
|
||||||
|
log.debug(u'generateImage %s ', theme)
|
||||||
|
#theme = ThemeXML()
|
||||||
|
#theme.parse(theme_xml)
|
||||||
#print theme
|
#print theme
|
||||||
size=QtCore.QSize(800,600)
|
size=QtCore.QSize(800,600)
|
||||||
frame=TstFrame(size)
|
frame=TstFrame(size)
|
||||||
|
Loading…
Reference in New Issue
Block a user