Position Tab updates

This commit is contained in:
Tim Bentley 2010-10-16 08:21:24 +01:00
parent 4f7566c76b
commit cc4acf4edd
3 changed files with 93 additions and 34 deletions

View File

@ -42,16 +42,16 @@ BLANK_THEME_XML = \
'''<?xml version="1.0" encoding="utf-8"?> '''<?xml version="1.0" encoding="utf-8"?>
<theme version="1.0"> <theme version="1.0">
<name>BlankStyle</name> <name>BlankStyle</name>
<background type="solid" mode="opaque"> <background type="image">
<color>#000000</color> <filename></filename>
</background> </background>
<background type="gradient" mode="opaque"> <background type="gradient">
<startColor>#000000</startColor> <startColor>#000000</startColor>
<endColor>#000000</endColor> <endColor>#000000</endColor>
<direction>vertical</direction> <direction>vertical</direction>
</background> </background>
<background type="image" mode="opaque"> <background type="solid">
<filename></filename> <color>#000000</color>
</background> </background>
<font type="main"> <font type="main">
<name>Arial</name> <name>Arial</name>
@ -70,9 +70,9 @@ BLANK_THEME_XML = \
<size>12</size> <size>12</size>
<bold>False</bold> <bold>False</bold>
<italics>False</italics> <italics>False</italics>
<line_adjustment>0</line_adjustment>
<shadow shadowColor="#000000" shadowSize="5">True</shadow> <shadow shadowColor="#000000" shadowSize="5">True</shadow>
<outline outlineColor="#000000" outlineSize="2">False</outline> <outline outlineColor="#000000" outlineSize="2">False</outline>
<line_adjustment>0</line_adjustment>
<location override="False" x="10" y="690" width="1004" height="78"/> <location override="False" x="10" y="690" width="1004" height="78"/>
</font> </font>
<display> <display>
@ -383,7 +383,7 @@ class ThemeXML(object):
# print objectify.dump(theme_xml) # print objectify.dump(theme_xml)
xml_iter = theme_xml.getiterator() xml_iter = theme_xml.getiterator()
for element in xml_iter: for element in xml_iter:
#print "base",element.getparent(), element.tag, element.text, element.attrib #print "base", element.getparent(), element.tag, element.text, element.attrib
parent = element.getparent() parent = element.getparent()
master = u'' master = u''
if parent is not None: if parent is not None:
@ -403,6 +403,8 @@ class ThemeXML(object):
self._create_attr(master, attr, \ self._create_attr(master, attr, \
element.getparent().attrib[attr]) element.getparent().attrib[attr])
if master: if master:
#print "A", element.tag
self._create_attr(master, element.tag, element.text)
if element.attrib: if element.attrib:
for attr in element.attrib: for attr in element.attrib:
base_element = attr base_element = attr
@ -412,11 +414,10 @@ class ThemeXML(object):
base_element = element.tag + u'_' + attr base_element = element.tag + u'_' + attr
self._create_attr(master, base_element, self._create_attr(master, base_element,
element.attrib[attr]) element.attrib[attr])
else:
self._create_attr(master, element.tag, element.text)
else: else:
#print "C", element.tag
if element.tag == u'name': if element.tag == u'name':
self._create_attr(u'theme', element.tag, element.text) self._create_attr(u'theme', element.tag, element.text)
def _translate_tags(self, master, element, value): def _translate_tags(self, master, element, value):
""" """

View File

@ -215,7 +215,7 @@ class ThemeManager(QtGui.QWidget):
Loads a new theme with the default settings and then launches the theme Loads a new theme with the default settings and then launches the theme
editing form for the user to make their customisations. editing form for the user to make their customisations.
""" """
theme = self.createThemeFromXml(self.baseTheme(), self.path) theme = ThemeXML() #self.createThemeFromXml(self.baseTheme(), self.path)
#self.amendThemeForm.loadTheme(theme) #self.amendThemeForm.loadTheme(theme)
self.saveThemeName = u'' self.saveThemeName = u''
self.themeWizardForm.theme = theme self.themeWizardForm.theme = theme

View File

@ -157,28 +157,44 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
self.onFooterDefaultPositionCheckBox) self.onFooterDefaultPositionCheckBox)
def onOutlineCheckCheckBoxChanged(self, state): def onOutlineCheckCheckBoxChanged(self, state):
"""
Change statd as Outline check box changed
"""
self.outlineColorPushButton.setEnabled(state) self.outlineColorPushButton.setEnabled(state)
self.outlineSizeSpinBox.setEnabled(state) self.outlineSizeSpinBox.setEnabled(state)
def onShadowCheckCheckBoxChanged(self, state): def onShadowCheckCheckBoxChanged(self, state):
"""
Change state as Shadow check box changed
"""
self.shadowColorPushButton.setEnabled(state) self.shadowColorPushButton.setEnabled(state)
self.shadowSizeSpinBox.setEnabled(state) self.shadowSizeSpinBox.setEnabled(state)
def onMainDefaultPositionCheckBox(self, state): def onMainDefaultPositionCheckBox(self, value):
print "main", state """
print self.field(u'mainDefaultPosition') Change state as Main Area Position check box changed
self.theme.font_main_override = self.field(u'mainDefaultPosition') """
print self.theme.font_main_override, type(self.theme.font_main_override) if value == QtCore.Qt.Checked:
self.mainXSpinBox.setEnabled(not state) self.theme.font_main_override = False
self.mainYSpinBox.setEnabled(not state) else:
self.mainHeightSpinBox.setEnabled(not state) self.theme.font_main_override = True
self.mainWidthSpinBox.setEnabled(not state) 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)
def onFooterDefaultPositionCheckBox(self, state): def onFooterDefaultPositionCheckBox(self, value):
self.footerXSpinBox.setEnabled(not state) """
self.footerYSpinBox.setEnabled(not state) Change state as Footer Area Position check box changed
self.footerHeightSpinBox.setEnabled(not state) """
self.footerWidthSpinBox.setEnabled(not state) 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)
def exec_(self): def exec_(self):
""" """
@ -189,7 +205,7 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
def validateCurrentPage(self): def validateCurrentPage(self):
""" """
Validate the current page before moving on to the next page. Handle Tab specific code when moving between Tabs.
""" """
print "CURRENT id", self.currentId() print "CURRENT id", self.currentId()
# Preview Screen # Preview Screen
@ -200,6 +216,9 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
return True return True
def setBackgroundTabValues(self): def setBackgroundTabValues(self):
"""
Handle the display and State of the background display tab.
"""
if self.theme.background_type == \ if self.theme.background_type == \
BackgroundType.to_string(BackgroundType.Solid): BackgroundType.to_string(BackgroundType.Solid):
self.setField(u'background_type', QtCore.QVariant(0)) self.setField(u'background_type', QtCore.QVariant(0))
@ -265,7 +284,10 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
else: else:
self.setField(u'gradient', QtCore.QVariant(4)) self.setField(u'gradient', QtCore.QVariant(4))
def setMainAreaTabValues(self):# def setMainAreaTabValues(self):
"""
Handle the display and State of the Main Area tab.
"""
self.mainFontComboBox.setCurrentFont( self.mainFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name)) QtGui.QFont(self.theme.font_main_name))
self.mainColorPushButton.setStyleSheet(u'background-color: %s' % self.mainColorPushButton.setStyleSheet(u'background-color: %s' %
@ -292,6 +314,9 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
QtCore.QVariant(self.theme.font_main_italics)) QtCore.QVariant(self.theme.font_main_italics))
def setFooterAreaTabValues(self): def setFooterAreaTabValues(self):
"""
Handle the display and State of the Footer Area tab.
"""
self.footerFontComboBox.setCurrentFont( self.footerFontComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name)) QtGui.QFont(self.theme.font_main_name))
self.footerColorPushButton.setStyleSheet(u'background-color: %s' % self.footerColorPushButton.setStyleSheet(u'background-color: %s' %
@ -300,8 +325,11 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
QtCore.QVariant(self.theme.font_footer_size)) QtCore.QVariant(self.theme.font_footer_size))
def setPositionTabValues(self): def setPositionTabValues(self):
self.setField(u'mainDefaultPosition', \ print self.theme.font_main_override
QtCore.QVariant(self.theme.font_main_override)) if self.theme.font_main_override:
self.setField(u'mainDefaultPosition', QtCore.QVariant(False))
else:
self.setField(u'mainDefaultPosition', QtCore.QVariant(True))
self.setField(u'mainPositionX', \ self.setField(u'mainPositionX', \
QtCore.QVariant(self.theme.font_main_x)) QtCore.QVariant(self.theme.font_main_x))
self.setField(u'mainPositionY', \ self.setField(u'mainPositionY', \
@ -310,8 +338,10 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
QtCore.QVariant(self.theme.font_main_height)) QtCore.QVariant(self.theme.font_main_height))
self.setField(u'mainPositionWidth', \ self.setField(u'mainPositionWidth', \
QtCore.QVariant(self.theme.font_main_width)) QtCore.QVariant(self.theme.font_main_width))
self.setField(u'mainDefaultPosition', \ if self.theme.font_footer_override:
QtCore.QVariant(self.theme.font_main_override)) self.setField(u'footerDefaultPosition', QtCore.QVariant(False))
else:
self.setField(u'footerDefaultPosition', QtCore.QVariant(True))
self.setField(u'footerPositionX', \ self.setField(u'footerPositionX', \
QtCore.QVariant(self.theme.font_footer_x)) QtCore.QVariant(self.theme.font_footer_x))
self.setField(u'footerPositionY', \ self.setField(u'footerPositionY', \
@ -325,6 +355,9 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
pass pass
def setDefaults(self): def setDefaults(self):
"""
Set up display at start of theme edit.
"""
self.restart() self.restart()
self.setBackgroundTabValues() self.setBackgroundTabValues()
self.setMainAreaTabValues() self.setMainAreaTabValues()
@ -334,10 +367,11 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
# Set up field states # Set up field states
self.onOutlineCheckCheckBoxChanged(self.theme.font_main_outline) self.onOutlineCheckCheckBoxChanged(self.theme.font_main_outline)
self.onShadowCheckCheckBoxChanged(self.theme.font_main_shadow) self.onShadowCheckCheckBoxChanged(self.theme.font_main_shadow)
self.onMainDefaultPositionCheckBox(self.theme.font_main_override)
self.onFooterDefaultPositionCheckBox(self.theme.font_footer_override)
def registerFields(self): def registerFields(self):
"""
Map field names to screen names,
"""
self.backgroundPage.registerField( self.backgroundPage.registerField(
u'background_type', self.backgroundTypeComboBox) u'background_type', self.backgroundTypeComboBox)
self.backgroundPage.registerField( self.backgroundPage.registerField(
@ -396,10 +430,16 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
u'footerPositionHeight', self.footerHeightSpinBox) u'footerPositionHeight', self.footerHeightSpinBox)
def onBackgroundComboBox(self, index): def onBackgroundComboBox(self, index):
"""
Background style Combo box has changed.
"""
self.theme.background_type = BackgroundType.to_string(index) self.theme.background_type = BackgroundType.to_string(index)
self.setBackgroundTabValues() self.setBackgroundTabValues()
def onGradientComboBox(self, index): def onGradientComboBox(self, index):
"""
Background gradient Combo box has changed.
"""
self.theme.background_direction = \ self.theme.background_direction = \
BackgroundGradientType.to_string(index) BackgroundGradientType.to_string(index)
self.setBackgroundTabValues() self.setBackgroundTabValues()
@ -454,6 +494,10 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
self.setFooterAreaTabValues() self.setFooterAreaTabValues()
def updateTheme(self): def updateTheme(self):
"""
Update the theme object from the UI for fields not already updated
when the are changed.
"""
# main page # main page
self.theme.font_main_name = \ self.theme.font_main_name = \
self.mainFontComboBox.currentFont().family() self.mainFontComboBox.currentFont().family()
@ -472,9 +516,23 @@ class ThemeWizardForm(QtGui.QWizard, Ui_ThemeWizard):
self.footerFontComboBox.currentFont().family() self.footerFontComboBox.currentFont().family()
self.theme.font_footer_size = \ self.theme.font_footer_size = \
self.field(u'footerSizeSpinBox').toInt()[0] self.field(u'footerSizeSpinBox').toInt()[0]
# position page
self.theme.font_main_x = self.field(u'mainPositionX').toInt()[0]
self.theme.font_main_y = self.field(u'mainPositionY').toInt()[0]
self.theme.font_main_height = \
self.field(u'mainPositionHeight').toInt()[0]
self.theme.font_main_width = self.field(u'mainPositionWidth').toInt()[0]
self.theme.font_footer_x = self.field(u'footerPositionX').toInt()[0]
self.theme.font_footer_y = self.field(u'footerPositionY').toInt()[0]
self.theme.font_footer_height = \
self.field(u'footerPositionHeight').toInt()[0]
self.theme.font_footer_width = \
self.field(u'footerPositionWidth').toInt()[0]
def _colorButton(self, field): def _colorButton(self, field):
print field """
Handle Color buttons
"""
new_color = QtGui.QColorDialog.getColor( new_color = QtGui.QColorDialog.getColor(
QtGui.QColor(field), self) QtGui.QColor(field), self)
if new_color.isValid(): if new_color.isValid():