~gdesklets-desklet-team/gdesklets/0.36

« back to all changes in this revision

Viewing changes to shell/BookmarkList.py

  • Committer: Robert Pastierovic
  • Date: 2007-10-07 10:08:42 UTC
  • Revision ID: pastierovic@gmail.com-20071007100842-fdvp2vzmqgh1j87k
merged 0.3x branch and basic documentation and some other changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from shell.ListView import ListView
 
2
 
 
3
import gtk
 
4
import gobject
 
5
 
 
6
 
 
7
class BookmarkList(gtk.VBox):
 
8
 
 
9
    def __init__(self):
 
10
 
 
11
        self.__entries = []
 
12
        self.__categories = {}
 
13
        self.__category_names = []
 
14
 
 
15
        gtk.VBox.__init__(self)
 
16
        self.__listview = ListView((gtk.gdk.Pixbuf, gobject.TYPE_STRING),
 
17
                                   self.__item_renderer)
 
18
        self.__listview.connect("cursor-changed", self.__on_select_item)
 
19
 
 
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)
 
23
 
 
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)
 
28
        
 
29
        self.show_all()
 
30
 
 
31
 
 
32
    def select_category(self, n):
 
33
 
 
34
        self.__optmenu.set_active(n)
 
35
        
 
36
 
 
37
 
 
38
    def add_category(self, name, label):
 
39
 
 
40
        if (name in self.__categories):
 
41
            self.clear_category(name)
 
42
        else:
 
43
            self.__optmenu.append_text(name)
 
44
            self.__categories[name] = []
 
45
            self.__category_names.append(name)
 
46
        
 
47
 
 
48
 
 
49
    def add_item(self, category, icon, label, callback, *args):
 
50
        assert (category in self.__categories)
 
51
 
 
52
        self.__categories[category].append((icon, label, callback, args))
 
53
 
 
54
 
 
55
    def clear_category(self, category):
 
56
        assert (category in self.__categories)
 
57
 
 
58
        self.__categories[category] = []
 
59
 
 
60
 
 
61
    def __on_select_item(self, src):
 
62
 
 
63
        path, col = src.get_cursor()
 
64
        callback, args = self.__entries[path[0]]
 
65
        if (callback): callback(*args)
 
66
 
 
67
 
 
68
    def __on_select_category(self, src):
 
69
 
 
70
        index = self.__optmenu.get_active()
 
71
        name = self.__category_names[index]
 
72
        items = self.__categories[name]
 
73
        self.__listview.clear()
 
74
        self.__entries = []
 
75
        for i in items:
 
76
            icon, label, callback, args = i
 
77
            self.__listview.add_item((icon, label))
 
78
            self.__entries.append((callback, args))
 
79
        #end for
 
80
 
 
81
    def __item_renderer(self, item):
 
82
 
 
83
        icon, label = item
 
84
        label = label.replace("<" ,"&lt;")
 
85
        return (icon, label)