def _parse_menu_tag(self, item):
name = None
untranslated_name = None
query = None
icon = None
only_unallocated = False
dont_display = False
flags = []
subcategories = []
sortmode = SortMethods.BY_ALPHABET
item_limit = 0
for element in item.getchildren():
# ignore inline translations, we use gettext for this
if (element.tag == "Name" and
'{http://www.w3.org/XML/1998/namespace}lang' in
element.attrib):
continue
if element.tag == "Name":
untranslated_name = element.text
# gettext/xml writes stuff from software-center.menu
# out into the pot as escaped xml, so we need to escape
# the name first, get the translation and unscape it again
escaped_name = xml_escape(untranslated_name)
name = xml_unescape(gettext.gettext(escaped_name))
elif element.tag == "SCIcon":
icon = element.text
elif element.tag == 'Flags':
flags = self._parse_flags_tag(element)
elif element.tag == "Directory":
l = self._parse_directory_tag(element)
if l:
(untranslated_name, name, gettext_domain, icon) = l
elif element.tag == "Include":
query = self._parse_include_tag(element)
elif element.tag == "OnlyUnallocated":
only_unallocated = True
elif element.tag == "SCDontDisplay":
dont_display = True
elif element.tag == "SCSortMode":
sortmode = int(element.text)
if not self._verify_supported_sort_mode(sortmode):
return None
elif element.tag == "SCItemLimit":
item_limit = int(element.text)
elif element.tag == "Menu":
subcat = self._parse_menu_tag(element)
if subcat:
subcategories.append(subcat)
else:
LOG.warn("UNHANDLED tag in _parse_menu_tag: %s" % element.tag)
if untranslated_name and query:
return Category(untranslated_name, name, icon, query,
only_unallocated, dont_display, flags, subcategories,
sortmode, item_limit)
else:
LOG.warn("UNHANDLED entry: %s %s %s %s" % (name,
untranslated_name,
icon,
query))
return None
评论列表
文章目录