1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 from itertools import izip
41
42 from pyffi.utils.graph import DetailNode, EdgeType, EdgeFilter
45 """Stores all data used in the detail view.
46
47 :ivar node: The node of the item.
48 :type node: :class:`DetailNode`
49 :ivar name: The name of the node (this is usually not stored in the node).
50 :type name: ``str``
51 """
52 - def __init__(self, node=None, name=None):
53 if not isinstance(node, DetailNode):
54 raise TypeError("node must be DetailNode instance")
55 if not isinstance(name, (type(None), basestring)):
56 raise TypeError("name must be None or string instance")
57 self.node = node
58 self.name = name
59
60
61
62 @property
65
66 @property
68 return self.node.__class__.__name__
69
71 """Stores all internal information to vizualize :class:`DetailNode`\ s in a
72 tree view.
73
74 :ivar data: The item data.
75 :type data: :class:`DetailTreeItemData`
76 :ivar parent: The parent of the node.
77 :type parent: ``type(None)`` or :class:`DetailTreeItem`
78 :ivar children: The children of the node.
79 :type children: ``list`` of :class:`DetailTreeItem`
80 :ivar row: The row number of this node, as child.
81 :type row: ``int``
82 :ivar edge_type: The type of edge from the parent of this node to itself.
83 :type edge_type: :class:`EdgeType`
84 """
87 """Initialize the node tree hierarchy from the given data."""
88 if not isinstance(data, DetailTreeItemData):
89 raise TypeError(
90 "data must be a DetailTreeItemData instance")
91 if not isinstance(parent, (type(None), DetailTreeItem)):
92 raise TypeError(
93 "parent must be either None or a DetailTreeItem instance")
94 if not isinstance(edge_type, EdgeType):
95 raise TypeError("edge_type must be EdgeType instance")
96 self.data = data
97 self.parent = parent
98 self.row = row
99 self.edge_type = edge_type
100 self.children = [
101 DetailTreeItem(
102 data=DetailTreeItemData(node=childnode, name=childname),
103 parent=self,
104 row=childrow,
105 edge_type=child_edge_type)
106 for (childrow, (childnode, childname, child_edge_type))
107 in enumerate(izip(
108 data.node.get_detail_child_nodes(edge_filter=edge_filter),
109 data.node.get_detail_child_names(edge_filter=edge_filter),
110 data.node.get_detail_child_edge_types(edge_filter=edge_filter)))]
111