summaryrefslogtreecommitdiff
path: root/examples/pygtk-demo/demos/toolpalette.py
blob: fac779b2d3f2609b3ae041852094d75b5abd38d0 (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/env python
"""Tool Palette

A tool palette widget shows groups of toolbar items as a grid of icons or a list of names.
"""
# pygtk version: John Stowers <john.stowers@gmail.com>

import pygtk
pygtk.require('2.0')
import gtk

class ToolPaletteDemo(gtk.Window):
    def __init__(self, parent=None):
        gtk.Window.__init__(self)
        try:
            self.set_screen(parent.get_screen())
        except AttributeError:
            self.connect('destroy', lambda *w: gtk.main_quit())
        self.set_title(self.__class__.__name__)
        self.set_border_width(8)
        self.set_default_size(400,400)

        vb = gtk.VBox(spacing=6)

        m = gtk.ListStore(str, object)
        m.append( ("Vertical", gtk.ORIENTATION_VERTICAL) )
        m.append( ("Horizontal", gtk.ORIENTATION_HORIZONTAL) )
        cb = gtk.ComboBox(m)
        cell = gtk.CellRendererText()
        cb.pack_start(cell)
        cb.add_attribute(cell, 'text',0)
        cb.set_active(0)
        cb.connect("changed", self._orientation_changed)
        vb.pack_start(cb, False, False)

        m = gtk.ListStore(str, object)
        m.append( ("Icons", gtk.TOOLBAR_ICONS) )
        m.append( ("Text", gtk.TOOLBAR_TEXT) )
        m.append( ("Both", gtk.TOOLBAR_BOTH) )
        m.append( ("Both: Horizontal", gtk.TOOLBAR_BOTH_HORIZ) )
        cb = gtk.ComboBox(m)
        cell = gtk.CellRendererText()
        cb.pack_start(cell)
        cb.add_attribute(cell, 'text',0)
        cb.set_active(0)
        cb.connect("changed", self._style_changed)
        vb.pack_start(cb, False, False)

        self.palette = gtk.ToolPalette()
        self._load_stock_items()

        self.sw = gtk.ScrolledWindow()
        self.sw.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        self.sw.add(self.palette)
        vb.pack_start(self.sw, True, True)

        self.add(vb)
        self.show_all()

    def _orientation_changed(self, cb):
        i = cb.get_active_iter()
        if i:
            val = cb.get_model().get_value(i, 1)
            if val == gtk.ORIENTATION_HORIZONTAL:
                self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
            else:
                self.sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
            self.palette.set_orientation(val)

    def _style_changed(self, cb):
        i = cb.get_active_iter()
        if i:
            self.palette.set_style(cb.get_model().get_value(i, 1))

    def _load_stock_items(self):
        groups = {
            "a":gtk.ToolItemGroup("Stock Icons (A-F)"),
            "g":gtk.ToolItemGroup("Stock Icons (G-N)"),
            "o":gtk.ToolItemGroup("Stock Icons (O-R)"),
            "s":gtk.ToolItemGroup("Stock Icons (S-Z)")
        }
        group = groups["a"]
        for g in groups.values():
            self.palette.add(g)

        items = gtk.stock_list_ids()
        items.sort()
        for i in items:
            #stock id names are in form gtk-foo, sort into one of the groups above
            try:
                group = groups[i[4]]
            except KeyError:
                pass

            b = gtk.ToolButton(i)
            b.set_tooltip_text(i)
            b.set_is_important(True)
            info = gtk.stock_lookup(i)
            if info:
                b.set_label(info[1].replace("_",""))
            else:
                b.set_label(i)

            group.insert(b,-1)
            
            

def main():
    ToolPaletteDemo()
    gtk.main()

if __name__ == '__main__':
    main()