forked from openlp/openlp
Theme Cleanup up
This commit is contained in:
parent
86dd14a440
commit
36b3446d2c
|
@ -281,7 +281,7 @@ def build_html(item, screen, alert, islive):
|
|||
build_alert_css(alert, width),
|
||||
build_footer_css(item, height),
|
||||
build_lyrics_css(item, webkitvers),
|
||||
u'true' if theme and theme.display_slideTransition and islive \
|
||||
u'true' if theme and theme.display_slide_transition and islive \
|
||||
else u'false',
|
||||
image,
|
||||
build_lyrics_html(item, webkitvers))
|
||||
|
@ -318,18 +318,18 @@ def build_background_css(item, width, height):
|
|||
background = \
|
||||
u'background: ' \
|
||||
u'-webkit-gradient(linear, left top, left bottom, ' \
|
||||
'from(%s), to(%s))' % (theme.background_startColor,
|
||||
theme.background_endColor)
|
||||
'from(%s), to(%s))' % (theme.background_start_color,
|
||||
theme.background_end_color)
|
||||
elif theme.background_direction == u'vertical':
|
||||
background = \
|
||||
u'background: -webkit-gradient(linear, left top, ' \
|
||||
u'right top, from(%s), to(%s))' % \
|
||||
(theme.background_startColor, theme.background_endColor)
|
||||
(theme.background_start_color, theme.background_end_color)
|
||||
else:
|
||||
background = \
|
||||
u'background: -webkit-gradient(radial, %s 50%%, 100, %s ' \
|
||||
u'50%%, %s, from(%s), to(%s))' % (width, width, width,
|
||||
theme.background_startColor, theme.background_endColor)
|
||||
theme.background_start_color, theme.background_end_color)
|
||||
return background
|
||||
|
||||
def build_lyrics_css(item, webkitvers):
|
||||
|
@ -446,15 +446,15 @@ def build_lyrics_format_css(theme, width, height):
|
|||
Height of the lyrics block
|
||||
|
||||
"""
|
||||
if theme.display_horizontalAlign == 2:
|
||||
if theme.display_horizontal_align == 2:
|
||||
align = u'center'
|
||||
elif theme.display_horizontalAlign == 1:
|
||||
elif theme.display_horizontal_align == 1:
|
||||
align = u'right'
|
||||
else:
|
||||
align = u'left'
|
||||
if theme.display_verticalAlign == 2:
|
||||
if theme.display_vertical_align == 2:
|
||||
valign = u'bottom'
|
||||
elif theme.display_verticalAlign == 1:
|
||||
elif theme.display_vertical_align == 1:
|
||||
valign = u'middle'
|
||||
else:
|
||||
valign = u'top'
|
||||
|
@ -518,7 +518,7 @@ def build_footer_css(item, height):
|
|||
font-size: %spt;
|
||||
color: %s;
|
||||
text-align: left;
|
||||
white-space:nowrap;
|
||||
white-space:nowrap;
|
||||
"""
|
||||
theme = item.themedata
|
||||
if not theme or not item.footer:
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
Provide the theme XML and handling functions for OpenLP v2 themes.
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
|
||||
from xml.dom.minidom import Document
|
||||
from xml.etree.ElementTree import ElementTree, XML
|
||||
|
@ -86,6 +87,17 @@ class ThemeLevel(object):
|
|||
Service = 2
|
||||
Song = 3
|
||||
|
||||
boolean_list = [u'font_main_italics', u'font_main_override', \
|
||||
u'font_footer_italics', u'font_footer_override', u'display_outline', \
|
||||
u'display_shadow', u'display_slide_transition']
|
||||
|
||||
integer_list =[u'font_main_proportion', u'font_main_line_adjustment', \
|
||||
u'font_main_x', u'font_main_height', u'font_main_y', u'font_main_width', \
|
||||
u'font_footer_proportion', u'font_footer_line_adjustment', u'font_footer_x', \
|
||||
u'font_footer_height', u'font_footer_y', u'font_footer_width', \
|
||||
u'display_shadow_size', u'display_outline_size', u'display_horizontal_align',\
|
||||
u'display_vertical_align', u'display_wrap_style' ]
|
||||
|
||||
class ThemeXML(object):
|
||||
"""
|
||||
A class to encapsulate the Theme XML.
|
||||
|
@ -372,10 +384,10 @@ class ThemeXML(object):
|
|||
if element.getchildren():
|
||||
master = element.tag + u'_'
|
||||
else:
|
||||
#background transparent tags have no children so special case
|
||||
# background transparent tags have no children so special case
|
||||
if element.tag == u'background':
|
||||
for e in element.attrib.iteritems():
|
||||
setattr(self, element.tag + u'_' + e[0], e[1])
|
||||
self._create_attr(element.tag + u'_' + e[0], e[1])
|
||||
if element.attrib:
|
||||
for e in element.attrib.iteritems():
|
||||
if master == u'font_' and e[0] == u'type':
|
||||
|
@ -383,22 +395,25 @@ class ThemeXML(object):
|
|||
elif master == u'display_' and (element.tag == u'shadow' \
|
||||
or element.tag == u'outline' ):
|
||||
et = str_to_bool(element.text)
|
||||
setattr(self, master + element.tag, et)
|
||||
setattr(self, master + element.tag + u'_'+ e[0], e[1])
|
||||
self._create_attr(master + element.tag, et)
|
||||
self._create_attr(master + element.tag + u'_'+ e[0], e[1])
|
||||
else:
|
||||
field = master + e[0]
|
||||
if e[1] == u'True' or e[1] == u'False':
|
||||
setattr(self, field, str_to_bool(e[1]))
|
||||
else:
|
||||
setattr(self, field, e[1])
|
||||
self._create_attr(field, e[1])
|
||||
else:
|
||||
if element.tag:
|
||||
field = master + element.tag
|
||||
element.text = element.text.strip().lstrip()
|
||||
if element.text == u'True' or element.text == u'False':
|
||||
setattr(self, field, str_to_bool(element.text))
|
||||
else:
|
||||
setattr(self, field, element.text)
|
||||
self._create_attr(field, element.text)
|
||||
|
||||
def _create_attr(self, element, value):
|
||||
field = self._de_hump(element)
|
||||
if field in boolean_list:
|
||||
setattr(self, field, str_to_bool(value))
|
||||
elif field in integer_list:
|
||||
setattr(self, field, int(value))
|
||||
else:
|
||||
setattr(self, field, unicode(value))
|
||||
|
||||
def __str__(self):
|
||||
"""
|
||||
|
@ -409,3 +424,9 @@ class ThemeXML(object):
|
|||
if key[0:1] != u'_':
|
||||
theme_strings.append(u'%30s: %s' % (key, getattr(self, key)))
|
||||
return u'\n'.join(theme_strings)
|
||||
|
||||
def _de_hump(self, name):
|
||||
|
||||
s1 = re.sub(u'(.)([A-Z][a-z]+)', r'\1_\2', name)
|
||||
return re.sub(u'([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
|
||||
|
||||
|
|
|
@ -150,8 +150,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
unicode(self.theme.background_color))
|
||||
elif self.theme.background_type == u'gradient':
|
||||
new_theme.add_background_gradient(
|
||||
unicode(self.theme.background_startColor),
|
||||
unicode(self.theme.background_endColor),
|
||||
unicode(self.theme.background_start_color),
|
||||
unicode(self.theme.background_end_color),
|
||||
self.theme.background_direction)
|
||||
else:
|
||||
filename = \
|
||||
|
@ -185,10 +185,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
unicode(self.theme.display_shadow_color),
|
||||
unicode(self.theme.display_outline),
|
||||
unicode(self.theme.display_outline_color),
|
||||
unicode(self.theme.display_horizontalAlign),
|
||||
unicode(self.theme.display_verticalAlign),
|
||||
unicode(self.theme.display_wrapStyle),
|
||||
unicode(self.theme.display_slideTransition),
|
||||
unicode(self.theme.display_horizontal_align),
|
||||
unicode(self.theme.display_vertical_align),
|
||||
unicode(self.theme.display_wrap_style),
|
||||
unicode(self.theme.display_slide_transition),
|
||||
unicode(self.theme.display_shadow_size),
|
||||
unicode(self.theme.display_outline_size))
|
||||
theme = new_theme.extract_xml()
|
||||
|
@ -407,10 +407,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
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:
|
||||
self.theme.background_endColor = u'#ff0000'
|
||||
if self.theme.background_start_color is None:
|
||||
self.theme.background_start_color = u'#000000'
|
||||
if self.theme.background_end_color is None:
|
||||
self.theme.background_end_color = u'#ff0000'
|
||||
self.imageLineEdit.setText(u'')
|
||||
else:
|
||||
self.theme.background_type = u'image'
|
||||
|
@ -427,20 +427,20 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
unicode(self.theme.background_color))
|
||||
else:
|
||||
new_color = QtGui.QColorDialog.getColor(
|
||||
QtGui.QColor(self.theme.background_startColor), self)
|
||||
QtGui.QColor(self.theme.background_start_color), self)
|
||||
if new_color.isValid():
|
||||
self.theme.background_startColor = new_color.name()
|
||||
self.theme.background_start_color = new_color.name()
|
||||
self.color1PushButton.setStyleSheet(u'background-color: %s' %
|
||||
unicode(self.theme.background_startColor))
|
||||
unicode(self.theme.background_start_color))
|
||||
self.previewTheme()
|
||||
|
||||
def onColor2PushButtonClicked(self):
|
||||
new_color = QtGui.QColorDialog.getColor(
|
||||
QtGui.QColor(self.theme.background_endColor), self)
|
||||
QtGui.QColor(self.theme.background_end_color), self)
|
||||
if new_color.isValid():
|
||||
self.theme.background_endColor = new_color.name()
|
||||
self.theme.background_end_color = new_color.name()
|
||||
self.color2PushButton.setStyleSheet(u'background-color: %s' %
|
||||
unicode(self.theme.background_endColor))
|
||||
unicode(self.theme.background_end_color))
|
||||
self.previewTheme()
|
||||
|
||||
#
|
||||
|
@ -483,9 +483,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
|
||||
def onSlideTransitionCheckBoxChanged(self, value):
|
||||
if value == 2: # checked
|
||||
self.theme.display_slideTransition = True
|
||||
self.theme.display_slide_transition = True
|
||||
else:
|
||||
self.theme.display_slideTransition = False
|
||||
self.theme.display_slide_transition = False
|
||||
self.stateChanging(self.theme)
|
||||
self.previewTheme()
|
||||
|
||||
|
@ -499,12 +499,12 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
self.previewTheme()
|
||||
|
||||
def onHorizontalComboBoxSelected(self, currentIndex):
|
||||
self.theme.display_horizontalAlign = currentIndex
|
||||
self.theme.display_horizontal_align = currentIndex
|
||||
self.stateChanging(self.theme)
|
||||
self.previewTheme()
|
||||
|
||||
def onVerticalComboBoxSelected(self, currentIndex):
|
||||
self.theme.display_verticalAlign = currentIndex
|
||||
self.theme.display_vertical_align = currentIndex
|
||||
self.stateChanging(self.theme)
|
||||
self.previewTheme()
|
||||
|
||||
|
@ -598,13 +598,13 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
self.shadowCheckBox.setChecked(False)
|
||||
self.shadowColorPushButton.setEnabled(False)
|
||||
self.shadowSpinBox.setValue(int(self.theme.display_shadow_size))
|
||||
if self.theme.display_slideTransition:
|
||||
if self.theme.display_slide_transition:
|
||||
self.slideTransitionCheckBox.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.slideTransitionCheckBox.setCheckState(QtCore.Qt.Unchecked)
|
||||
self.horizontalComboBox.setCurrentIndex(
|
||||
self.theme.display_horizontalAlign)
|
||||
self.verticalComboBox.setCurrentIndex(self.theme.display_verticalAlign)
|
||||
self.theme.display_horizontal_align)
|
||||
self.verticalComboBox.setCurrentIndex(self.theme.display_vertical_align)
|
||||
|
||||
def stateChanging(self, theme):
|
||||
self.backgroundTypeComboBox.setVisible(True)
|
||||
|
@ -625,9 +625,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
self.gradientComboBox.setVisible(False)
|
||||
elif theme.background_type == u'gradient':
|
||||
self.color1PushButton.setStyleSheet(u'background-color: %s' \
|
||||
% unicode(theme.background_startColor))
|
||||
% unicode(theme.background_start_color))
|
||||
self.color2PushButton.setStyleSheet(u'background-color: %s' \
|
||||
% unicode(theme.background_endColor))
|
||||
% unicode(theme.background_end_color))
|
||||
self.color1Label.setText(
|
||||
translate('OpenLP.AmendThemeForm', 'First color:'))
|
||||
self.color2Label.setText(
|
||||
|
|
|
@ -307,7 +307,7 @@ class MainDisplay(DisplayWidget):
|
|||
# Wait for the fade to finish before geting the preview.
|
||||
# Important otherwise preview will have incorrect text if at all !
|
||||
if self.serviceItem.themedata and \
|
||||
self.serviceItem.themedata.display_slideTransition:
|
||||
self.serviceItem.themedata.display_slide_transition:
|
||||
while self.frame.evaluateJavaScript(u'show_text_complete()') \
|
||||
.toString() == u'false':
|
||||
Receiver.send_message(u'openlp_process_events')
|
||||
|
|
|
@ -699,61 +699,5 @@ class ThemeManager(QtGui.QWidget):
|
|||
"""
|
||||
theme = ThemeXML()
|
||||
theme.parse(theme_xml)
|
||||
self.cleanTheme(theme)
|
||||
theme.extend_image_filename(path)
|
||||
return theme
|
||||
|
||||
def cleanTheme(self, theme):
|
||||
"""
|
||||
Clean a theme loaded from an XML file by removing stray whitespace and
|
||||
making sure parameters are the correct type for the theme object
|
||||
attributes
|
||||
"""
|
||||
theme.background_color = theme.background_color.strip()
|
||||
theme.background_direction = theme.background_direction.strip()
|
||||
theme.background_endColor = theme.background_endColor.strip()
|
||||
if theme.background_filename:
|
||||
theme.background_filename = theme.background_filename.strip()
|
||||
#theme.background_mode
|
||||
theme.background_startColor = theme.background_startColor.strip()
|
||||
#theme.background_type
|
||||
if theme.display_display:
|
||||
theme.display_display = theme.display_display.strip()
|
||||
theme.display_horizontalAlign = \
|
||||
int(theme.display_horizontalAlign.strip())
|
||||
theme.display_outline = str_to_bool(theme.display_outline)
|
||||
#theme.display_outline_color
|
||||
theme.display_shadow = str_to_bool(theme.display_shadow)
|
||||
#theme.display_shadow_color
|
||||
theme.display_verticalAlign = int(theme.display_verticalAlign.strip())
|
||||
theme.display_wrapStyle = theme.display_wrapStyle.strip()
|
||||
theme.display_slideTransition = theme.display_slideTransition
|
||||
theme.font_footer_color = theme.font_footer_color.strip()
|
||||
theme.font_footer_height = int(theme.font_footer_height.strip())
|
||||
theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
|
||||
theme.font_footer_name = theme.font_footer_name.strip()
|
||||
#theme.font_footer_override
|
||||
theme.font_footer_proportion = \
|
||||
int(theme.font_footer_proportion.strip())
|
||||
theme.font_footer_weight = theme.font_footer_weight.strip()
|
||||
theme.font_footer_width = int(theme.font_footer_width.strip())
|
||||
theme.font_footer_x = int(theme.font_footer_x.strip())
|
||||
theme.font_footer_y = int(theme.font_footer_y.strip())
|
||||
theme.font_main_color = theme.font_main_color.strip()
|
||||
theme.font_main_height = int(theme.font_main_height.strip())
|
||||
theme.font_main_italics = str_to_bool(theme.font_main_italics)
|
||||
theme.font_main_name = theme.font_main_name.strip()
|
||||
#theme.font_main_override
|
||||
theme.font_main_proportion = int(theme.font_main_proportion.strip())
|
||||
theme.font_main_weight = theme.font_main_weight.strip()
|
||||
theme.font_main_width = int(theme.font_main_width.strip())
|
||||
theme.font_main_x = int(theme.font_main_x.strip())
|
||||
theme.font_main_y = int(theme.font_main_y.strip())
|
||||
#theme.theme_mode
|
||||
theme.theme_name = theme.theme_name.strip()
|
||||
#theme.theme_version
|
||||
# Remove the Transparent settings as they are not relevent
|
||||
if theme.background_mode == u'transparent':
|
||||
theme.background_mode = u'opaque'
|
||||
theme.background_type = u'solid'
|
||||
theme.background_startColor = u'#000000'
|
||||
|
|
Loading…
Reference in New Issue