Fix up the theme class again

This commit is contained in:
Tim Bentley 2010-10-11 17:43:14 +01:00
parent 026c25facb
commit f4023118db

View File

@ -108,7 +108,7 @@ class ThemeXML(object):
""" """
# Create the minidom document # Create the minidom document
self.theme_xml = Document() self.theme_xml = Document()
self.parse_xml(BLANK_THEME_XML) #self.parse_xml(BLANK_THEME_XML)
def extend_image_filename(self, path): def extend_image_filename(self, path):
""" """
@ -117,6 +117,7 @@ class ThemeXML(object):
``path`` ``path``
The path name to be added. The path name to be added.
""" """
if self.background_type == u'image':
if self.background_filename and path: if self.background_filename and path:
self.theme_name = self.theme_name.strip() self.theme_name = self.theme_name.strip()
self.background_filename = self.background_filename.strip() self.background_filename = self.background_filename.strip()
@ -362,7 +363,6 @@ class ThemeXML(object):
The XML string to parse. The XML string to parse.
""" """
self.parse_xml(unicode(xml)) self.parse_xml(unicode(xml))
print self
def parse_xml(self, xml): def parse_xml(self, xml):
""" """
@ -383,20 +383,25 @@ 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
parent = element.getparent() parent = element.getparent()
master = u'' master = u''
if parent is not None: if parent is not None:
if element.getparent().tag == u'font': if element.getparent().tag == u'font':
master = element.getparent().tag + u'_' + element.getparent().attrib[u'type'] master = element.getparent().tag + u'_' + \
element.getparent().attrib[u'type']
# set up Outline and Shadow Tags and move to font_main # set up Outline and Shadow Tags and move to font_main
if element.getparent().tag == u'display': if element.getparent().tag == u'display':
if element.tag.startswith(u'shadow') or \
element.tag.startswith(u'outline'):
self._create_attr(u'font_main', element.tag, element.text) self._create_attr(u'font_main', element.tag, element.text)
master = element.getparent().tag master = element.getparent().tag
if element.getparent().tag == u'background': if element.getparent().tag == u'background':
master = element.getparent().tag master = element.getparent().tag
if element.getparent().attrib: if element.getparent().attrib:
for attr in element.getparent().attrib: for attr in element.getparent().attrib:
self._create_attr(master, attr, element.getparent().attrib[attr]) self._create_attr(master, attr, \
element.getparent().attrib[attr])
if master: if master:
if element.attrib: if element.attrib:
for attr in element.attrib: for attr in element.attrib:
@ -420,11 +425,11 @@ class ThemeXML(object):
master = master.strip().lstrip() master = master.strip().lstrip()
element = element.strip().lstrip() element = element.strip().lstrip()
value = unicode(value).strip().lstrip() value = unicode(value).strip().lstrip()
print "start", master, element, value #print "start", master, element, value
if master == u'display': if master == u'display':
if element == u'wrapStyle': if element == u'wrapStyle':
return True, None, None, None return True, None, None, None
if element == u'shadow' or element == u'outline': if element.startswith(u'shadow') or element.startswith(u'outline'):
master = u'font_main' master = u'font_main'
# fix bold font # fix bold font
if element == u'weight': if element == u'weight':
@ -435,7 +440,7 @@ class ThemeXML(object):
value = True value = True
if element == u'proportion': if element == u'proportion':
element = u'size' element = u'size'
print "end", master, element, value #print "end", master, element, value
return False, master, element, value return False, master, element, value
def _create_attr(self, master , element, value): def _create_attr(self, master , element, value):
@ -448,9 +453,9 @@ class ThemeXML(object):
return return
field = self._de_hump(element) field = self._de_hump(element)
tag = master + u'_' + field tag = master + u'_' + field
if element in boolean_list: if field in boolean_list:
setattr(self, tag, str_to_bool(value)) setattr(self, tag, str_to_bool(value))
elif element in integer_list: elif field in integer_list:
setattr(self, tag, int(value)) setattr(self, tag, int(value))
else: else:
# make string value unicode # make string value unicode