def __init__(self, menu=None, filename=None, root=False): self.menu = None self.filename = None self.tree = None self.parser = XMLMenuBuilder() self.parse(menu, filename, root) # fix for creating two menus with the same name on the fly self.filenames = []
def test_rule_from_node(self): parser = XMLMenuBuilder(debug=True) for i, test in enumerate(_tests): root = etree.fromstring(test['doc']) rule = parser.parse_rule(root) for j, data in enumerate(test['data']): menuentry = MockMenuEntry(data[0], data[1]) result = eval(rule.code) message = "Error in test %s with result set %s: got %s, expected %s" assert result == data[2], message % (i, j, result, data[2])
from __future__ import print_function import os import sys __dir__ = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, '{}/../../'.format(__dir__)) from xdg.Menu import XMLMenuBuilder, Menu, MenuEntry def print_directory(directory): for entry in directory.getEntries(): if isinstance(entry, Menu): print_directory(entry) elif isinstance(entry, MenuEntry): print_entry(entry, directory.getPath()) def print_entry(entry, menupath): filepath = entry.DesktopEntry.getFileName() id = entry.DesktopFileID menupath = menupath print('{}/\t{}\t{}'.format(menupath, id, filepath)) if __name__ == "__main__": builder = XMLMenuBuilder() root = builder.parse() print_directory(root) sys.exit(0)