1 # -*- coding: iso-8859-15 -*-
2 """Ce module permet de créer des vues sous forme d'arbre
3 Ces vues sont construites à partir des informations
12 class Tree(QListView):
14 Classe pour faire une vue d'un arbre
16 def __init__(self,parent=None,onSelect=None,onDblSelect=None):
17 QListView.__init__(self,parent)
18 self.setCaption("Tree")
19 self.setRootIsDecorated(1)
21 self.addColumn("Name")
24 self.onSelect=onSelect
25 self.onDblSelect=onDblSelect
26 self.connect(self,SIGNAL('selectionChanged(QListViewItem *)'),
28 self.connect(self,SIGNAL('doubleClicked(QListViewItem *, const QPoint &, int)'),
29 self.handleDblSelected)
31 def handleSelected(self,node):
34 self.onSelect(node.item)
36 def handleDblSelected(self,node,point,col):
37 node.item.dblselected()
39 self.onDblSelect(node.item)
41 def additem(self,item):
42 node=Node(self,item.label,item,self.last)
44 self.children.append(node)
45 CONNECTOR.Connect(item,"selected",self.selectItem,())
46 CONNECTOR.Connect(item,"add",node.addNode,())
49 def selectNodeItem(self,item,node):
50 #print "selectNodeItem",node,item
51 self.setSelected(node,True)
53 def selectItem(self,item):
54 #print "selectItem",item
55 node=self.selectedItem()
57 #print "item has been selected at item level"
60 #print "item has not been selected at item level"
63 it = QListViewItemIterator(self)
72 self.setSelected(node,True)
74 class Node(QListViewItem):
75 """Node(parent,text,item,after)
76 Classe pour faire une vue d'un noeud d'un arbre
78 def __init__(self,parent,text,item,after=None):
80 QListViewItem.__init__(self,parent,text)
82 QListViewItem.__init__(self,parent,after,text)
84 self.setPixmap(0,Icons.get_image(item.getIconName()))
85 self.setExpandable(self.item.isExpandable())
88 def selectNode(self,item):
89 self.listView().setSelected(self,True)
91 def addNode(self,item):
92 #print "Tree.addNode",item
95 def delNode(self,node):
96 #print "Tree.delNode",node,node.item
97 CONNECTOR.Disconnect(node.item,"selected",node.selectNode,())
98 CONNECTOR.Disconnect(node.item,"add",node.addNode,())
99 CONNECTOR.Disconnect(node.item,"remove",self.delNode,(node,))
101 self.children.remove(node)
103 def additem(self,item):
105 node=Node(self,item.label,item,self.children[-1])
107 node=Node(self,item.label,item)
108 self.children.append(node)
109 #CONNECTOR.Connect(item,"selected",self.listView().selectNodeItem,(node,))
110 CONNECTOR.Connect(item,"selected",node.selectNode,())
111 CONNECTOR.Connect(item,"add",node.addNode,())
112 CONNECTOR.Connect(item,"remove",self.delNode,(node,))
116 if o and not self.childCount():
117 for child in self.item.getChildren():
119 QListViewItem.setOpen(self,o)
121 def setOpen_old(self,o):
124 for child in self.item.getChildren():
128 for node in self.children:
129 #CONNECTOR.Disconnect(node.item,"selected",self.listView().selectNodeItem,(node,))
130 CONNECTOR.Disconnect(node.item,"selected",node.selectNode,())
131 CONNECTOR.Disconnect(node.item,"add",node.addNode,())
135 QListViewItem.setOpen(self,o)
138 if __name__ == "__main__":
139 from Item import Item
140 app = QApplication(sys.argv)
142 t.additem(Item("item1"))
143 #n=t.additem(Item("item2"))
144 #n.additem(Item("item3"))