aboutsummaryrefslogtreecommitdiffstats
path: root/lvc/widgets/gtk/contextmenu.py
blob: cd5b6ba6e771f69f7a709e820e162ba646e5325b (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
import gtk

from .base import Widget

class ContextMenu(Widget):

    def __init__(self, options):
        super(ContextMenu, self).__init__()
        self.set_widget(gtk.Menu())
        for i, item_info in enumerate(options):
            if item_info is None:
                # separator
                item = gtk.SeparatorMenuItem()
            else:
                label, callback = item_info
                item = gtk.MenuItem(label)
                if isinstance(callback, list):
                    submenu = ContextMenu(callback)
                    item.set_submenu(submenu._widget)
                elif callback is not None:
                    item.connect('activate', self.on_activate, callback, i)
                else:
                    item.set_sensitive(False)
            self._widget.append(item)
            item.show()

    def popup(self):
        self._widget.popup(None, None, None, 0, 0)

    def on_activate(self, widget, callback, i):
        callback(self, i)