aboutsummaryrefslogtreecommitdiffstats
path: root/mvc/widgets/gtk/contextmenu.py
diff options
context:
space:
mode:
authorJesús Eduardo <heckyel@hyperbola.info>2017-05-31 18:08:31 -0500
committerJesús Eduardo <heckyel@hyperbola.info>2017-05-31 18:08:31 -0500
commite1180428ed3e7634fe1596103511fbb1da05f228 (patch)
tree13de9592bcde7050b089b9644839668024c518b3 /mvc/widgets/gtk/contextmenu.py
downloadlibrevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.tar.lz
librevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.tar.xz
librevideoconverter-e1180428ed3e7634fe1596103511fbb1da05f228.zip
first commit
Diffstat (limited to 'mvc/widgets/gtk/contextmenu.py')
-rw-r--r--mvc/widgets/gtk/contextmenu.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/mvc/widgets/gtk/contextmenu.py b/mvc/widgets/gtk/contextmenu.py
new file mode 100644
index 0000000..cd5b6ba
--- /dev/null
+++ b/mvc/widgets/gtk/contextmenu.py
@@ -0,0 +1,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)