コード例 #1
0
    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 = []
コード例 #2
0
 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])
コード例 #3
0
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)