Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pynxc/waxy/demos/TreeView.py
blob: 50ebe10be2e951e309c025bf5350fea873ab6dee (plain)
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
#!/usr/bin/env python

from waxy import *

def filltree(tree):
    root = tree.AddRoot("the root item")
    for i in range(10):
        child = tree.AppendItem(root, "Item %d" % (i,))
        for j in range(5):
            grandchild = tree.AppendItem(child, "Item %d" % (i*10+j))

    print [x for x in tree.GetChildNodes(root)]

    d = {
        "Hans": {
            "age": 30,
            "sign": "Aquarius",
            "job": "programmer",
        },
        "Fred": {
            "age": "unknown",
            "sign": "unknown",
            "shoe size": "unknown",
        },
        "Old Guy John": {
            "age": "old",
            "sign": "Aquarius",
        },
        "Bob": {
            "sign": "Taurus",
            "job": "proprietor",
        },
        "Christine": {
            "age": 17,
            "sign": "Aries",
            "job": "cashier",
        }
    }

    stuff = tree.AppendItem(root, "stuff")
    tree.LoadFromDict(stuff, d)

    return tree



class MainFrame(Frame): # frame has a sizer built in

    def Body(self):

        self.CenterOnScreen()

        self.CreateStatusBar()
        self.SetStatusText("This is the statusbar")

        menubar = MenuBar(self)
        menu1 = Menu(self)
        menu1.Append("E&xit", self.CloseWindow, "Exit demo",hotkey="Ctrl+Q")
        menubar.Append(menu1, "&File")
        
        splitter = Splitter(self)
        self.treeview = TreeView(splitter, twist_buttons=1, has_buttons=1)
        self.treeview.OnSelectionChanged = self.OnTreeSelectionChanged
        self.textbox = TextBox(splitter, multiline=1)
        splitter.Split(self.treeview, self.textbox, direction='v')
        self.AddComponent(splitter, expand='both')
        filltree(self.treeview)
        
        
        
        self.Pack()
        self.SetSize((640, 480))

    def CloseWindow(self,event):
        self.Close()

    def OnTreeSelectionChanged(self, event):
        item = event.GetItem()
        data = self.treeview.GetPyData(item)
        if data is None:
            data = self.treeview.GetItemText(item)
        self.textbox.Clear()
        self.textbox.AppendText(str(data))
        event.Skip()




if __name__=="__main__":
    app = Application(MainFrame, title="TreeView")
    app.Run()