4 from dbus.mainloop.glib import DBusGMainLoop
6 from xml.dom import minidom
8 from AccessibleTree import AccessibleTree
10 DBusGMainLoop(set_as_default=True)
12 def getChildrenByName(node, name):
13 return [child for child in node.childNodes if child.nodeType == child.ELEMENT_NODE and child.nodeName == name]
15 def registerObject(tree, parent, node):
16 reference = node.getAttribute('reference').encode('ASCII')
17 name = node.getAttribute('name').encode('ASCII')
18 role = node.getAttribute('role').encode('ASCII')
19 description = node.getAttribute('description').encode('ASCII')
21 interfacen = getChildrenByName(node, 'interface')
22 interfaces = [itf.getAttribute('name').encode('ASCII') for itf in interfacen]
24 childrenn = getChildrenByName(node, 'accessible')
25 children = [cld.getAttribute('reference').encode('ASCII') for cld in childrenn]
27 object = (reference, parent, children, interfaces, name, int(role), description)
28 tree.updateObject(reference, object)
30 for child in childrenn:
31 registerObject(tree, reference, child)
35 bus = dbus.SessionBus()
37 loop = gobject.MainLoop()
39 bus.request_name('test.atspi.tree', 0)
41 tree = AccessibleTree(bus, '/org/freedesktop/atspi/tree')
42 doc = minidom.parse(filename)
44 tree.setRoot(node.getAttribute('reference').encode('ASCII'))
46 registerObject(tree, '/', node)
50 except KeyboardInterrupt:
53 if __name__ == '__main__':
54 sys.exit(main(sys.argv))