~oly/fabricad/tut10

15 by Oliver Marks
attaching gui to application
1
#!/usr/bin/python
2
import os
3
import sys
4
from gi.repository import Gtk, GdkX11, Gdk
5
6
7
class objectList:
8
    treeview = None
9
    treemodel = None
10
11
    selected = 'workspace'
12
13
    def __init__(self, workspace, treeview):
14
        self.treeview = treeview
15
16
        self.workspace = workspace
17
18
        self.treeview.connect('row-activated', self.selection)
19
        self.treeview.connect('button_press_event', self.show_menu)
20
21
        self.treemodel = Gtk.TreeStore(str)
22
        self.treeview.set_model(self.treemodel)
23
24
        column = Gtk.TreeViewColumn("Objects")
25
        self.treeview.append_column(column)
26
27
        cell = Gtk.CellRendererText()
28
        column.pack_start(cell, False)
29
        column.add_attribute(cell, "text", 0)
30
        
31
        self.populate()
32
        self.menu()
33
34
    def populate(self):
35
        #print 'populate'
36
        self.treemodel.clear()
37
        for layer in self.workspace.keys():
38
            iter = self.append(layer)
39
            for part in self.workspace[layer]:
40
                #print iter
41
                #print part.name
42
                self.append(part.name, iter)
43
44
    def menu(self):
45
        self.layer_menu = Gtk.Menu()
46
        
47
        self.layer_menu_item = Gtk.MenuItem("Display")
48
        #self.layer_menu_item.connect("activate", self.toggle_value_handler, 'show')
49
        self.layer_menu.append(self.layer_menu_item)
50
51
        self.layer_menu_item = Gtk.MenuItem("Colour")
52
        self.layer_menu.append(self.layer_menu_item)
53
54
    def show_menu(self, tv, event):
55
        if event.button ==2:
56
            model = tv.get_model()
57
            treeiter = model.get_iter(treepath)
58
            self.selected = model.get_value(treeiter, 0)
59
            print treepath
60
            print self.selected
61
        
62
        if event.button == 3:
63
            self.layer_menu.show_all()
64
            self.layer_menu.popup(None, None, None, None, 1, 0)
65
66
    def append(self, name, parent=None):
67
        myiter = self.treemodel.insert_after(parent, None)
68
        self.treemodel.set_value(myiter, 0, name)
69
        return myiter
70
71
    def selection(self, tv, treepath, tvcolumn):
72
        model = tv.get_model()
73
        treeiter = model.get_iter(treepath)
74
        self.selected = model.get_value(treeiter, 0)
75
        #print treepath
76
        print self.selected