1
from shell.ListView import ListView
7
class BookmarkList(gtk.VBox):
12
self.__categories = {}
13
self.__category_names = []
15
gtk.VBox.__init__(self)
16
self.__listview = ListView((gtk.gdk.Pixbuf, gobject.TYPE_STRING),
18
self.__listview.connect("cursor-changed", self.__on_select_item)
20
self.__optmenu = gtk.combo_box_new_text()
21
self.__optmenu.connect("changed", self.__on_select_category)
22
self.pack_start(self.__optmenu, False, False, 4)
24
scrwin = gtk.ScrolledWindow()
25
scrwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
26
scrwin.add(self.__listview)
27
self.pack_end(scrwin, True, True, 0)
32
def select_category(self, n):
34
self.__optmenu.set_active(n)
38
def add_category(self, name, label):
40
if (name in self.__categories):
41
self.clear_category(name)
43
self.__optmenu.append_text(name)
44
self.__categories[name] = []
45
self.__category_names.append(name)
49
def add_item(self, category, icon, label, callback, *args):
50
assert (category in self.__categories)
52
self.__categories[category].append((icon, label, callback, args))
55
def clear_category(self, category):
56
assert (category in self.__categories)
58
self.__categories[category] = []
61
def __on_select_item(self, src):
63
path, col = src.get_cursor()
64
callback, args = self.__entries[path[0]]
65
if (callback): callback(*args)
68
def __on_select_category(self, src):
70
index = self.__optmenu.get_active()
71
name = self.__category_names[index]
72
items = self.__categories[name]
73
self.__listview.clear()
76
icon, label, callback, args = i
77
self.__listview.add_item((icon, label))
78
self.__entries.append((callback, args))
81
def __item_renderer(self, item):
84
label = label.replace("<" ,"<")