-
Notifications
You must be signed in to change notification settings - Fork 0
/
TreeView.py
113 lines (90 loc) · 3.39 KB
/
TreeView.py
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
__author__ = 'Ashwin Bakker - 1683836'
import class_details
from kivy.uix.scrollview import ScrollView
# from kivy.uix.gridlayout import GridLayout
# from kivy.core.window import Window
# from kivy.uix.widget import Widget
from kivy.uix.treeview import TreeView, TreeViewNode
from kivy.uix.treeview import TreeViewLabel
from kivy.app import App
# from kivy.properties import ObjectProperty, StringProperty, ListProperty
from kivy.uix.button import Button
from kivy.lang import Builder
import sqla_createtaskdatabase
from sqla_createtaskdatabase import *
Builder.load_file('BoomMakeup.kv')
class TreeViewButton(Button, TreeViewNode):
tskID = 0
treeview = TreeView();
def select_task(self):
self.treeview.app.detailsID = self.tskID
self.treeview.app.taskId= self.tskID
self.treeview.app.updateDetails()
print(self.tskID)
pass
def populate_tree_view(tv):
# n = tv.add_node(TreeViewLabel(text='Tasks', is_open=True))
def CreateTree(tv):
parentIDS = Task.getAllParentTasksAndId()
lst = []
for ID in parentIDS:
tvl = TreeViewButton(text=parentIDS[ID].name)
tvl.treeview = tv
tvl.tskID = ID
print('CreateParentNode')
n = tv.add_node(tvl)
CreateChildNodes(tv, ID, n)
def CreateChildNodes(tv, parentID, n):
childrenDCT = Task.getAllChildrenTasksAndId(parentID)
if len(childrenDCT) == 0:
print('return')
return
else:
for child in childrenDCT:
print(child)
tvl = TreeViewButton(text=childrenDCT[child].name)
tvl.treeview = tv
tvl.tskID = child
g = tv.add_node(tvl,n)
tvl = CreateChildNodes(tv, child,g)
def getParentTaskNames():
names = []
for name in sqla_createtaskdatabase.session.query(sqla_createtaskdatabase.Task.name).\
filter(sqla_createtaskdatabase.Task.task_id==None):
names.append(name[0])
return names
def getChildTaskNames(parentId):
childName = []
for name in sqla_createtaskdatabase.session.query(sqla_createtaskdatabase.Task).\
filter(sqla_createtaskdatabase.Task.task_id==parentId):
childName.append(name.name)
return childName
def addNodes():
parentNames = getParentTaskNames()
for name in parentNames:
g = tv.add_node(TreeViewLabel(text=name))
childNames = []
for id in Task.getAllParentTasksId():
childNames.append(getChildTaskNames(id))
# for child in (childNames[0][:]+childNames[1][:]):
# tv.add_node(TreeViewButton(text=child), g)
# # print(childNames[0][:]+childNames[1][:])
CreateTree(tv)
class CustomTreeView(TreeView):
app = App()
# addNodes()
class TreeViewApp(App):
def build(self):
#for i in range(30):
# btn = Button(text=str(i), size=(480, 40),
# size_hint=(None, None))
# layout.add_widget(btn)
tv = TreeView(root_options=dict(text='Tree One'), hide_root=True, indent_level=4)
tv.size_hint = 1, None
tv.bind(minimum_height = tv.setter('height'))
populate_tree_view(tv)
root = ScrollView(pos = (0, 0))
root.add_widget(tv)
return root
if __name__ == '__main__':
TreeViewApp().run()