This commit is contained in:
Tim Bentley 2009-09-05 14:46:06 +01:00
commit 087ee85d86
4 changed files with 193 additions and 74 deletions

View File

@ -27,6 +27,8 @@ def file_to_xml(xmlfile):
return open(xmlfile).read() return open(xmlfile).read()
def str_to_bool(stringvalue): def str_to_bool(stringvalue):
if stringvalue is True or stringvalue is False:
return stringvalue
return stringvalue.strip().lower() in (u'true', u'yes', u'y') return stringvalue.strip().lower() in (u'true', u'yes', u'y')
def buildIcon(icon): def buildIcon(icon):

View File

@ -161,8 +161,8 @@ class ThemeXML(object):
#Create Filename element #Create Filename element
self.child_element(background, u'filename', filename) self.child_element(background, u'filename', filename)
def add_font(self, name, color, proportion, override, fonttype=u'main', weight=u'Normal', italics=u'False', def add_font(self, name, color, proportion, override, fonttype=u'main',
xpos=0, ypos=0, width=0, height=0): weight=u'Normal', italics=u'False', xpos=0, ypos=0, width=0, height=0):
""" """
Add a Font. Add a Font.
@ -223,7 +223,7 @@ class ThemeXML(object):
background.appendChild(element) background.appendChild(element)
def add_display(self, shadow, shadow_color, outline, outline_color, def add_display(self, shadow, shadow_color, outline, outline_color,
horizontal, vertical, wrap): horizontal, vertical, wrap):
""" """
Add a Display options. Add a Display options.
@ -301,6 +301,12 @@ class ThemeXML(object):
# Print our newly created XML # Print our newly created XML
return self.theme_xml.toxml() return self.theme_xml.toxml()
def extract_formatted_xml(self):
"""
Pull out the XML string formatted for human consumption
"""
return self.theme_xml.toprettyxml(indent=u' ', newl=u'\n')
def parse(self, xml): def parse(self, xml):
""" """
Read in an XML string and parse it. Read in an XML string and parse it.
@ -340,8 +346,8 @@ class ThemeXML(object):
for e in element.attrib.iteritems(): for e in element.attrib.iteritems():
if master == u'font_' and e[0] == u'type': if master == u'font_' and e[0] == u'type':
master += e[1] + u'_' master += e[1] + u'_'
elif master == u'display_' and (element.tag == u'shadow' or elif master == u'display_' and (element.tag == u'shadow' \
element.tag == u'outline'): or element.tag == u'outline'):
et = str_to_bool(element.text) et = str_to_bool(element.text)
setattr(self, master + element.tag, et) setattr(self, master + element.tag, et)
setattr(self, master + element.tag + u'_'+ e[0], e[1]) setattr(self, master + element.tag + u'_'+ e[0], e[1])

View File

@ -21,7 +21,8 @@ import logging
import os, os.path import os, os.path
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import ThemeXML, Renderer, file_to_xml, translate from openlp.core.lib import ThemeXML, Renderer, file_to_xml, str_to_bool, \
translate
from amendthemedialog import Ui_AmendThemeDialog from amendthemedialog import Ui_AmendThemeDialog
@ -44,7 +45,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
QtCore.QObject.connect(self.FontMainColorPushButton, QtCore.QObject.connect(self.FontMainColorPushButton,
QtCore.SIGNAL(u'pressed()'), self.onFontMainColorPushButtonClicked) QtCore.SIGNAL(u'pressed()'), self.onFontMainColorPushButtonClicked)
QtCore.QObject.connect(self.FontFooterColorPushButton, QtCore.QObject.connect(self.FontFooterColorPushButton,
QtCore.SIGNAL(u'pressed()'), self.onFontFooterColorPushButtonClicked) QtCore.SIGNAL(u'pressed()'),
self.onFontFooterColorPushButtonClicked)
QtCore.QObject.connect(self.OutlineColorPushButton, QtCore.QObject.connect(self.OutlineColorPushButton,
QtCore.SIGNAL(u'pressed()'), self.onOutlineColorPushButtonClicked) QtCore.SIGNAL(u'pressed()'), self.onOutlineColorPushButtonClicked)
QtCore.QObject.connect(self.ShadowColorPushButton, QtCore.QObject.connect(self.ShadowColorPushButton,
@ -55,46 +57,59 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
QtCore.QObject.connect(self.BackgroundComboBox, QtCore.QObject.connect(self.BackgroundComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onBackgroundComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onBackgroundComboBoxSelected)
QtCore.QObject.connect(self.BackgroundTypeComboBox, QtCore.QObject.connect(self.BackgroundTypeComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onBackgroundTypeComboBoxSelected) QtCore.SIGNAL(u'activated(int)'),
self.onBackgroundTypeComboBoxSelected)
QtCore.QObject.connect(self.GradientComboBox, QtCore.QObject.connect(self.GradientComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onGradientComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onGradientComboBoxSelected)
QtCore.QObject.connect(self.FontMainComboBox, QtCore.QObject.connect(self.FontMainComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onFontMainComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onFontMainComboBoxSelected)
QtCore.QObject.connect(self.FontMainWeightComboBox, QtCore.QObject.connect(self.FontMainWeightComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onFontMainWeightComboBoxSelected) QtCore.SIGNAL(u'activated(int)'),
self.onFontMainWeightComboBoxSelected)
QtCore.QObject.connect(self.FontFooterComboBox, QtCore.QObject.connect(self.FontFooterComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onFontFooterComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onFontFooterComboBoxSelected)
QtCore.QObject.connect(self.FontFooterWeightComboBox, QtCore.QObject.connect(self.FontFooterWeightComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onFontFooterWeightComboBoxSelected) QtCore.SIGNAL(u'activated(int)'),
self.onFontFooterWeightComboBoxSelected)
QtCore.QObject.connect(self.HorizontalComboBox, QtCore.QObject.connect(self.HorizontalComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onHorizontalComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onHorizontalComboBoxSelected)
QtCore.QObject.connect(self.VerticalComboBox, QtCore.QObject.connect(self.VerticalComboBox,
QtCore.SIGNAL(u'activated(int)'), self.onVerticalComboBoxSelected) QtCore.SIGNAL(u'activated(int)'), self.onVerticalComboBoxSelected)
#Spin boxes #Spin boxes
QtCore.QObject.connect(self.FontMainSizeSpinBox, QtCore.QObject.connect(self.FontMainSizeSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontMainSizeSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontMainSizeSpinBoxChanged)
QtCore.QObject.connect(self.FontFooterSizeSpinBox, QtCore.QObject.connect(self.FontFooterSizeSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontFooterSizeSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontFooterSizeSpinBoxChanged)
QtCore.QObject.connect(self.FontMainDefaultCheckBox, QtCore.QObject.connect(self.FontMainDefaultCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onFontMainDefaultCheckBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'),
self.onFontMainDefaultCheckBoxChanged)
QtCore.QObject.connect(self.FontMainXSpinBox, QtCore.QObject.connect(self.FontMainXSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontMainXSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'), self.onFontMainXSpinBoxChanged)
QtCore.QObject.connect(self.FontMainYSpinBox, QtCore.QObject.connect(self.FontMainYSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontMainYSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'), self.onFontMainYSpinBoxChanged)
QtCore.QObject.connect(self.FontMainWidthSpinBox, QtCore.QObject.connect(self.FontMainWidthSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontMainWidthSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontMainWidthSpinBoxChanged)
QtCore.QObject.connect(self.FontMainHeightSpinBox, QtCore.QObject.connect(self.FontMainHeightSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontMainHeightSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontMainHeightSpinBoxChanged)
QtCore.QObject.connect(self.FontFooterDefaultCheckBox, QtCore.QObject.connect(self.FontFooterDefaultCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onFontFooterDefaultCheckBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'),
self.onFontFooterDefaultCheckBoxChanged)
QtCore.QObject.connect(self.FontFooterXSpinBox, QtCore.QObject.connect(self.FontFooterXSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontFooterXSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontFooterXSpinBoxChanged)
QtCore.QObject.connect(self.FontFooterYSpinBox, QtCore.QObject.connect(self.FontFooterYSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontFooterYSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontFooterYSpinBoxChanged)
QtCore.QObject.connect(self.FontFooterWidthSpinBox, QtCore.QObject.connect(self.FontFooterWidthSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontFooterWidthSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontFooterWidthSpinBoxChanged)
QtCore.QObject.connect(self.FontFooterHeightSpinBox, QtCore.QObject.connect(self.FontFooterHeightSpinBox,
QtCore.SIGNAL(u'editingFinished()'), self.onFontFooterHeightSpinBoxChanged) QtCore.SIGNAL(u'editingFinished()'),
self.onFontFooterHeightSpinBoxChanged)
QtCore.QObject.connect(self.OutlineCheckBox, QtCore.QObject.connect(self.OutlineCheckBox,
QtCore.SIGNAL(u'stateChanged(int)'), self.onOutlineCheckBoxChanged) QtCore.SIGNAL(u'stateChanged(int)'), self.onOutlineCheckBoxChanged)
QtCore.QObject.connect(self.ShadowCheckBox, QtCore.QObject.connect(self.ShadowCheckBox,
@ -110,32 +125,51 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
new_theme.add_background_transparent() new_theme.add_background_transparent()
else: else:
if self.theme.background_type == u'solid': if self.theme.background_type == u'solid':
new_theme.add_background_solid(unicode(self.theme.background_color)) new_theme.add_background_solid( \
unicode(self.theme.background_color))
elif self.theme.background_type == u'gradient': elif self.theme.background_type == u'gradient':
new_theme.add_background_gradient(unicode(self.theme.background_startColor), new_theme.add_background_gradient( \
unicode(self.theme.background_endColor), self.theme.background_direction) unicode(self.theme.background_startColor),
unicode(self.theme.background_endColor),
self.theme.background_direction)
else: else:
(path, filename) =os.path.split(unicode(self.theme.background_filename)) (path, filename) = \
os.path.split(unicode(self.theme.background_filename))
new_theme.add_background_image(filename) new_theme.add_background_image(filename)
save_to= os.path.join(self.path, theme_name, filename ) save_to= os.path.join(self.path, theme_name, filename )
save_from = self.theme.background_filename save_from = self.theme.background_filename
new_theme.add_font(unicode(self.theme.font_main_name), unicode(self.theme.font_main_color), new_theme.add_font(unicode(self.theme.font_main_name),
unicode(self.theme.font_main_proportion), unicode(self.theme.font_main_override), u'main', unicode(self.theme.font_main_color),
unicode(self.theme.font_main_weight), unicode(self.theme.font_main_italics), unicode(self.theme.font_main_proportion),
unicode(self.theme.font_main_x), unicode(self.theme.font_main_y), unicode(self.theme.font_main_width), unicode(self.theme.font_main_override), u'main',
unicode(self.theme.font_main_weight),
unicode(self.theme.font_main_italics),
unicode(self.theme.font_main_x),
unicode(self.theme.font_main_y),
unicode(self.theme.font_main_width),
unicode(self.theme.font_main_height)) unicode(self.theme.font_main_height))
new_theme.add_font(unicode(self.theme.font_footer_name), unicode(self.theme.font_footer_color), new_theme.add_font(unicode(self.theme.font_footer_name),
unicode(self.theme.font_footer_proportion), unicode(self.theme.font_footer_override), u'footer', unicode(self.theme.font_footer_color),
unicode(self.theme.font_footer_weight), unicode(self.theme.font_footer_italics), unicode(self.theme.font_footer_proportion),
unicode(self.theme.font_footer_x), unicode(self.theme.font_footer_y), unicode(self.theme.font_footer_width), unicode(self.theme.font_footer_override), u'footer',
unicode(self.theme.font_footer_weight),
unicode(self.theme.font_footer_italics),
unicode(self.theme.font_footer_x),
unicode(self.theme.font_footer_y),
unicode(self.theme.font_footer_width),
unicode(self.theme.font_footer_height) ) unicode(self.theme.font_footer_height) )
new_theme.add_display(unicode(self.theme.display_shadow), unicode(self.theme.display_shadow_color), new_theme.add_display(unicode(self.theme.display_shadow),
unicode(self.theme.display_outline), unicode(self.theme.display_outline_color), unicode(self.theme.display_shadow_color),
unicode(self.theme.display_horizontalAlign), unicode(self.theme.display_verticalAlign), 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_wrapStyle))
theme = new_theme.extract_xml() theme = new_theme.extract_xml()
if self.thememanager.saveTheme(theme_name, theme, save_from, save_to) is not False: pretty_theme = new_theme.extract_formatted_xml()
if self.thememanager.saveTheme(theme_name, theme, pretty_theme,
save_from, save_to) is not False:
return QtGui.QDialog.accept(self) return QtGui.QDialog.accept(self)
def loadTheme(self, theme): def loadTheme(self, theme):
@ -147,11 +181,55 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
xml = file_to_xml(xml_file) xml = file_to_xml(xml_file)
self.theme.parse(xml) self.theme.parse(xml)
self.theme.extend_image_filename(self.path) self.theme.extend_image_filename(self.path)
self.cleanTheme(self.theme)
self.allowPreview = False self.allowPreview = False
self.paintUi(self.theme) self.paintUi(self.theme)
self.allowPreview = True self.allowPreview = True
self.previewTheme(self.theme) self.previewTheme(self.theme)
def cleanTheme(self, theme):
self.theme.background_color = theme.background_color.strip()
self.theme.background_direction = theme.background_direction.strip()
self.theme.background_endColor = theme.background_endColor.strip()
if theme.background_filename:
self.theme.background_filename = theme.background_filename.strip()
#self.theme.background_mode
self.theme.background_startColor = theme.background_startColor.strip()
#self.theme.background_type
self.theme.display_display = theme.display_display.strip()
self.theme.display_horizontalAlign = \
theme.display_horizontalAlign.strip()
self.theme.display_outline = str_to_bool(theme.display_outline)
#self.theme.display_outline_color
self.theme.display_shadow = str_to_bool(theme.display_shadow)
#self.theme.display_shadow_color
self.theme.display_verticalAlign = \
theme.display_verticalAlign.strip()
self.theme.display_wrapStyle = theme.display_wrapStyle.strip()
self.theme.font_footer_color = theme.font_footer_color.strip()
self.theme.font_footer_height = theme.font_footer_height.strip()
self.theme.font_footer_italics = str_to_bool(theme.font_footer_italics)
self.theme.font_footer_name = theme.font_footer_name.strip()
#self.theme.font_footer_override
self.theme.font_footer_proportion = \
theme.font_footer_proportion.strip()
self.theme.font_footer_weight = theme.font_footer_weight.strip()
self.theme.font_footer_width = theme.font_footer_width.strip()
self.theme.font_footer_x = theme.font_footer_x.strip()
self.theme.font_footer_y = theme.font_footer_y.strip()
self.theme.font_main_color = theme.font_main_color.strip()
self.theme.font_main_height = theme.font_main_height.strip()
self.theme.font_main_italics = str_to_bool(theme.font_main_italics)
self.theme.font_main_name = theme.font_main_name.strip()
#self.theme.font_main_override
self.theme.font_main_proportion = theme.font_main_proportion.strip()
self.theme.font_main_weight = theme.font_main_weight.strip()
self.theme.font_main_x = theme.font_main_x.strip()
self.theme.font_main_y = theme.font_main_y.strip()
#self.theme.theme_mode
self.theme.theme_name = theme.theme_name.strip()
#self.theme.theme_version
def onImageToolButtonClicked(self): def onImageToolButtonClicked(self):
filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file') filename = QtGui.QFileDialog.getOpenFileName(self, 'Open file')
if filename != "": if filename != "":
@ -199,8 +277,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
else: else:
self.theme.font_main_override = True self.theme.font_main_override = True
if int(self.theme.font_main_x) == 0 and int(self.theme.font_main_y) == 0 and \ if int(self.theme.font_main_x) == 0 and \
int(self.theme.font_main_width) == 0 and int(self.theme.font_main_height) == 0: int(self.theme.font_main_y) == 0 and \
int(self.theme.font_main_width) == 0 and \
int(self.theme.font_main_height) == 0:
self.theme.font_main_x = u'10' self.theme.font_main_x = u'10'
self.theme.font_main_y = u'10' self.theme.font_main_y = u'10'
self.theme.font_main_width = u'1024' self.theme.font_main_width = u'1024'
@ -208,7 +288,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.FontMainXSpinBox.setValue(int(self.theme.font_main_x)) self.FontMainXSpinBox.setValue(int(self.theme.font_main_x))
self.FontMainYSpinBox.setValue(int(self.theme.font_main_y)) self.FontMainYSpinBox.setValue(int(self.theme.font_main_y))
self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width)) self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width))
self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height)) self.FontMainHeightSpinBox.setValue(int( \
self.theme.font_main_height))
self.stateChanging(self.theme) self.stateChanging(self.theme)
self.previewTheme(self.theme) self.previewTheme(self.theme)
@ -235,7 +316,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
#Footer Font Tab #Footer Font Tab
# #
def onFontFooterComboBoxSelected(self): def onFontFooterComboBoxSelected(self):
self.theme.font_footer_name = self.FontFooterComboBox.currentFont().family() self.theme.font_footer_name = \
self.FontFooterComboBox.currentFont().family()
self.previewTheme(self.theme) self.previewTheme(self.theme)
def onFontFooterWeightComboBoxSelected(self, value): def onFontFooterWeightComboBoxSelected(self, value):
@ -262,8 +344,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.previewTheme(self.theme) self.previewTheme(self.theme)
def onFontFooterSizeSpinBoxChanged(self): def onFontFooterSizeSpinBoxChanged(self):
if self.theme.font_footer_proportion != self.FontFooterSizeSpinBox.value(): if self.theme.font_footer_proportion != \
self.theme.font_footer_proportion = self.FontFooterSizeSpinBox.value() self.FontFooterSizeSpinBox.value():
self.theme.font_footer_proportion = \
self.FontFooterSizeSpinBox.value()
self.previewTheme(self.theme) self.previewTheme(self.theme)
def onFontFooterDefaultCheckBoxChanged(self, value): def onFontFooterDefaultCheckBoxChanged(self, value):
@ -272,8 +356,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
else: else:
self.theme.font_footer_override = True self.theme.font_footer_override = True
if int(self.theme.font_footer_x) == 0 and int(self.theme.font_footer_y) == 0 and \ if int(self.theme.font_footer_x) == 0 and \
int(self.theme.font_footer_width) == 0 and int(self.theme.font_footer_height) == 0: int(self.theme.font_footer_y) == 0 and \
int(self.theme.font_footer_width) == 0 and \
int(self.theme.font_footer_height) == 0:
self.theme.font_footer_x = u'10' self.theme.font_footer_x = u'10'
self.theme.font_footer_y = u'730' self.theme.font_footer_y = u'730'
self.theme.font_footer_width = u'1024' self.theme.font_footer_width = u'1024'
@ -281,8 +367,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x)) self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x))
self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y)) self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y))
self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width)) self.FontFooterWidthSpinBox.setValue(int( \
self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height)) self.theme.font_footer_width))
self.FontFooterHeightSpinBox.setValue(int( \
self.theme.font_footer_height))
self.stateChanging(self.theme) self.stateChanging(self.theme)
self.previewTheme(self.theme) self.previewTheme(self.theme)
@ -303,14 +391,16 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.previewTheme(self.theme) self.previewTheme(self.theme)
def onFontFooterHeightSpinBoxChanged(self): def onFontFooterHeightSpinBoxChanged(self):
if self.theme.font_footer_height != self.FontFooterHeightSpinBox.value(): if self.theme.font_footer_height != \
self.FontFooterHeightSpinBox.value():
self.theme.font_footer_height = self.FontFooterHeightSpinBox.value() self.theme.font_footer_height = self.FontFooterHeightSpinBox.value()
self.previewTheme(self.theme) self.previewTheme(self.theme)
# #
#Background Tab #Background Tab
# #
def onGradientComboBoxSelected(self, currentIndex): def onGradientComboBoxSelected(self, currentIndex):
self.setBackground(self.BackgroundTypeComboBox.currentIndex(), currentIndex) self.setBackground(self.BackgroundTypeComboBox.currentIndex(),
currentIndex)
def onBackgroundComboBoxSelected(self, currentIndex): def onBackgroundComboBoxSelected(self, currentIndex):
if currentIndex == 0: # Opaque if currentIndex == 0: # Opaque
@ -355,7 +445,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.theme.background_startColor = QtGui.QColorDialog.getColor( self.theme.background_startColor = QtGui.QColorDialog.getColor(
QtGui.QColor(self.theme.background_startColor), self).name() QtGui.QColor(self.theme.background_startColor), self).name()
self.Color1PushButton.setStyleSheet( self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(self.theme.background_startColor)) u'background-color: %s' % \
unicode(self.theme.background_startColor))
self.previewTheme(self.theme) self.previewTheme(self.theme)
@ -416,9 +507,12 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
newtheme = ThemeXML() newtheme = ThemeXML()
newtheme.new_document(u'New Theme') newtheme.new_document(u'New Theme')
newtheme.add_background_solid(unicode(u'#000000')) newtheme.add_background_solid(unicode(u'#000000'))
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'), unicode(30), u'False') newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'), unicode(12), u'False', u'footer') unicode(30), u'False')
newtheme.add_display(u'False', unicode(u'#FFFFFF'), u'False', unicode(u'#FFFFFF'), newtheme.add_font(unicode(QtGui.QFont().family()), unicode(u'#FFFFFF'),
unicode(12), u'False', u'footer')
newtheme.add_display(u'False', unicode(u'#FFFFFF'), u'False',
unicode(u'#FFFFFF'),
unicode(0), unicode(0), unicode(0)) unicode(0), unicode(0), unicode(0))
return newtheme.extract_xml() return newtheme.extract_xml()
@ -446,11 +540,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.GradientComboBox.setCurrentIndex(2) self.GradientComboBox.setCurrentIndex(2)
self.FontMainSizeSpinBox.setValue(int(self.theme.font_main_proportion)) self.FontMainSizeSpinBox.setValue(int(self.theme.font_main_proportion))
if not self.theme.font_main_italics and self.theme.font_main_weight == u'Normal': if not self.theme.font_main_italics and \
self.theme.font_main_weight == u'Normal':
self.FontMainWeightComboBox.setCurrentIndex(0) self.FontMainWeightComboBox.setCurrentIndex(0)
elif not self.theme.font_main_italics and self.theme.font_main_weight == u'Bold': elif not self.theme.font_main_italics and \
self.theme.font_main_weight == u'Bold':
self.FontMainWeightComboBox.setCurrentIndex(1) self.FontMainWeightComboBox.setCurrentIndex(1)
elif self.theme.font_main_italics and self.theme.font_main_weight == u'Normal': elif self.theme.font_main_italics and \
self.theme.font_main_weight == u'Normal':
self.FontMainWeightComboBox.setCurrentIndex(2) self.FontMainWeightComboBox.setCurrentIndex(2)
else: else:
self.FontMainWeightComboBox.setCurrentIndex(3) self.FontMainWeightComboBox.setCurrentIndex(3)
@ -459,19 +556,24 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.FontMainYSpinBox.setValue(int(self.theme.font_main_y)) self.FontMainYSpinBox.setValue(int(self.theme.font_main_y))
self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width)) self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width))
self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height)) self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height))
self.FontFooterSizeSpinBox.setValue(int(self.theme.font_footer_proportion)) self.FontFooterSizeSpinBox.setValue(int( \
if not self.theme.font_footer_italics and self.theme.font_footer_weight == u'Normal': self.theme.font_footer_proportion))
if not self.theme.font_footer_italics and \
self.theme.font_footer_weight == u'Normal':
self.FontFooterWeightComboBox.setCurrentIndex(0) self.FontFooterWeightComboBox.setCurrentIndex(0)
elif not self.theme.font_footer_italics and self.theme.font_footer_weight == u'Bold': elif not self.theme.font_footer_italics and \
self.theme.font_footer_weight == u'Bold':
self.FontFooterWeightComboBox.setCurrentIndex(1) self.FontFooterWeightComboBox.setCurrentIndex(1)
elif self.theme.font_footer_italics and self.theme.font_footer_weight == u'Normal': elif self.theme.font_footer_italics and \
self.theme.font_footer_weight == u'Normal':
self.FontFooterWeightComboBox.setCurrentIndex(2) self.FontFooterWeightComboBox.setCurrentIndex(2)
else: else:
self.FontFooterWeightComboBox.setCurrentIndex(3) self.FontFooterWeightComboBox.setCurrentIndex(3)
self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x)) self.FontFooterXSpinBox.setValue(int(self.theme.font_footer_x))
self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y)) self.FontFooterYSpinBox.setValue(int(self.theme.font_footer_y))
self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width)) self.FontFooterWidthSpinBox.setValue(int(self.theme.font_footer_width))
self.FontFooterHeightSpinBox.setValue(int(self.theme.font_footer_height)) self.FontFooterHeightSpinBox.setValue(int( \
self.theme.font_footer_height))
self.FontMainColorPushButton.setStyleSheet( self.FontMainColorPushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.font_main_color)) u'background-color: %s' % unicode(theme.font_main_color))
self.FontFooterColorPushButton.setStyleSheet( self.FontFooterColorPushButton.setStyleSheet(
@ -506,8 +608,10 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.ShadowCheckBox.setChecked(False) self.ShadowCheckBox.setChecked(False)
self.ShadowColorPushButton.setEnabled(False) self.ShadowColorPushButton.setEnabled(False)
self.HorizontalComboBox.setCurrentIndex(int(self.theme.display_horizontalAlign)) self.HorizontalComboBox.setCurrentIndex(int( \
self.VerticalComboBox.setCurrentIndex(int(self.theme.display_verticalAlign)) self.theme.display_horizontalAlign))
self.VerticalComboBox.setCurrentIndex(int( \
self.theme.display_verticalAlign))
def stateChanging(self, theme): def stateChanging(self, theme):
if theme.background_mode == u'transparent': if theme.background_mode == u'transparent':
@ -528,7 +632,8 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
if theme.background_type == u'solid': if theme.background_type == u'solid':
self.Color1PushButton.setStyleSheet( self.Color1PushButton.setStyleSheet(
u'background-color: %s' % unicode(theme.background_color)) u'background-color: %s' % unicode(theme.background_color))
self.Color1Label.setText(translate(u'ThemeManager', u'Background Color:')) self.Color1Label.setText(translate(u'ThemeManager',
u'Background Color:'))
self.Color1Label.setVisible(True) self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True) self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(False) self.Color2Label.setVisible(False)
@ -539,12 +644,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.GradientLabel.setVisible(False) self.GradientLabel.setVisible(False)
self.GradientComboBox.setVisible(False) self.GradientComboBox.setVisible(False)
elif theme.background_type == u'gradient': elif theme.background_type == u'gradient':
self.Color1PushButton.setStyleSheet( self.Color1PushButton.setStyleSheet(u'background-color: %s' \
u'background-color: %s' % unicode(theme.background_startColor)) % unicode(theme.background_startColor))
self.Color2PushButton.setStyleSheet( self.Color2PushButton.setStyleSheet(u'background-color: %s' \
u'background-color: %s' % unicode(theme.background_endColor)) % unicode(theme.background_endColor))
self.Color1Label.setText(translate(u'ThemeManager', u'First Color:')) self.Color1Label.setText(translate(u'ThemeManager',
self.Color2Label.setText(translate(u'ThemeManager', u'Second Color:')) u'First Color:'))
self.Color2Label.setText(translate(u'ThemeManager',
u'Second Color:'))
self.Color1Label.setVisible(True) self.Color1Label.setVisible(True)
self.Color1PushButton.setVisible(True) self.Color1PushButton.setVisible(True)
self.Color2Label.setVisible(True) self.Color2Label.setVisible(True)

View File

@ -300,9 +300,11 @@ class ThemeManager(QtGui.QWidget):
else: else:
newtheme.add_background_image(unicode(theme.BackgroundParameter1)) newtheme.add_background_image(unicode(theme.BackgroundParameter1))
newtheme.add_font(unicode(theme.FontName), unicode(theme.FontColor.name()), newtheme.add_font(unicode(theme.FontName),
unicode(theme.FontColor.name()),
unicode(theme.FontProportion * 2), u'False') unicode(theme.FontProportion * 2), u'False')
newtheme.add_font(unicode(theme.FontName), unicode(theme.FontColor.name()), newtheme.add_font(unicode(theme.FontName),
unicode(theme.FontColor.name()),
unicode(12), u'False', u'footer') unicode(12), u'False', u'footer')
outline = False outline = False
shadow = False shadow = False
@ -316,7 +318,8 @@ class ThemeManager(QtGui.QWidget):
unicode(theme.WrapStyle)) unicode(theme.WrapStyle))
return newtheme.extract_xml() return newtheme.extract_xml()
def saveTheme(self, name, theme_xml, image_from, image_to) : def saveTheme(self, name, theme_xml, theme_pretty_xml, image_from,
image_to) :
""" """
Called by thememaintenance Dialog to save the theme Called by thememaintenance Dialog to save the theme
and to trigger the reload of the theme list and to trigger the reload of the theme list
@ -339,7 +342,7 @@ class ThemeManager(QtGui.QWidget):
if result == QtGui.QMessageBox.Yes: if result == QtGui.QMessageBox.Yes:
# Save the theme, overwriting the existing theme if necessary. # Save the theme, overwriting the existing theme if necessary.
outfile = open(theme_file, u'w') outfile = open(theme_file, u'w')
outfile.write(theme_xml) outfile.write(theme_pretty_xml)
outfile.close() outfile.close()
if image_from is not None and image_from != image_to: if image_from is not None and image_from != image_to:
shutil.copyfile(image_from, image_to) shutil.copyfile(image_from, image_to)
@ -347,7 +350,8 @@ class ThemeManager(QtGui.QWidget):
self.generateAndSaveImage(self.path, name, theme_xml) self.generateAndSaveImage(self.path, name, theme_xml)
self.loadThemes() self.loadThemes()
else: else:
# Don't close the dialog - allow the user to change the name of the theme or to cancel the theme dialog completely. # Don't close the dialog - allow the user to change the name of
# the theme or to cancel the theme dialog completely.
return False return False
def generateAndSaveImage(self, dir, name, theme_xml): def generateAndSaveImage(self, dir, name, theme_xml):