~oly/fabricad/tut10

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
#!/usr/bin/python
import os
import sys
from gi.repository import Gtk, GdkX11, Gdk


class objectList:
    treeview = None
    treemodel = None

    selected = 'workspace'

    def __init__(self, workspace, treeview):
        self.treeview = treeview

        self.workspace = workspace

        self.treeview.connect('row-activated', self.selection)
        self.treeview.connect('button_press_event', self.show_menu)

        self.treemodel = Gtk.TreeStore(str)
        self.treeview.set_model(self.treemodel)

        column = Gtk.TreeViewColumn("Objects")
        self.treeview.append_column(column)

        cell = Gtk.CellRendererText()
        column.pack_start(cell, False)
        column.add_attribute(cell, "text", 0)
        
        self.populate()
        self.menu()

    def populate(self):
        #print 'populate'
        self.treemodel.clear()
        for layer in self.workspace.keys():
            iter = self.append(layer)
            for part in self.workspace[layer]:
                #print iter
                #print part.name
                self.append(part.name, iter)

    def menu(self):
        self.layer_menu = Gtk.Menu()
        
        self.layer_menu_item = Gtk.MenuItem("Display")
        #self.layer_menu_item.connect("activate", self.toggle_value_handler, 'show')
        self.layer_menu.append(self.layer_menu_item)

        self.layer_menu_item = Gtk.MenuItem("Colour")
        self.layer_menu.append(self.layer_menu_item)

    def show_menu(self, tv, event):
        if event.button ==2:
            model = tv.get_model()
            treeiter = model.get_iter(treepath)
            self.selected = model.get_value(treeiter, 0)
            print treepath
            print self.selected
        
        if event.button == 3:
            self.layer_menu.show_all()
            self.layer_menu.popup(None, None, None, None, 1, 0)

    def append(self, name, parent=None):
        myiter = self.treemodel.insert_after(parent, None)
        self.treemodel.set_value(myiter, 0, name)
        return myiter

    def selection(self, tv, treepath, tvcolumn):
        model = tv.get_model()
        treeiter = model.get_iter(treepath)
        self.selected = model.get_value(treeiter, 0)
        #print treepath
        print self.selected