Lightningbeam/PyGUI-2.5.3/build/lib.linux-i686-2.6/GUI/Menu.py

67 lines
2.1 KiB
Python

#
# Python GUI - Menus - Gtk version
#
import gtk
from gtk import gdk
from GUI import export
from GUI.Globals import application
from GUI.GMenus import Menu as GMenu, MenuItem
def _report_accel_changed_(*args):
print "Menus: accel_changed:", args
class Menu(GMenu):
def __init__(self, title, items, **kwds):
GMenu.__init__(self, title, items, **kwds)
self._gtk_menu = gtk.Menu()
self._gtk_accel_group = gtk.AccelGroup()
#self._gtk_accel_group.connect('accel_changed', _report_accel_changed_) ###
def _clear_platform_menu(self):
gtk_menu = self._gtk_menu
for gtk_item in gtk_menu.get_children():
gtk_item.destroy()
def _add_separator_to_platform_menu(self):
gtk_item = gtk.MenuItem()
gtk_item.set_sensitive(0)
gtk_separator = gtk.HSeparator()
gtk_item.add(gtk_separator)
self._gtk_add_item(gtk_item)
def _gtk_add_item(self, gtk_item):
gtk_item.show_all()
self._gtk_menu.append(gtk_item)
def _add_item_to_platform_menu(self, item, name, command = None, index = None):
checked = item.checked
if checked is None:
gtk_item = gtk.MenuItem(name)
else:
gtk_item = gtk.CheckMenuItem(name)
self._gtk_add_item(gtk_item)
if not item.enabled:
gtk_item.set_sensitive(0)
if checked:
gtk_item.set_active(1)
if command:
app = application()
if index is not None:
action = lambda widget: app.dispatch(command, index)
else:
action = lambda widget: app.dispatch(command)
gtk_item.connect('activate', action)
key = item._key
if key:
gtk_modifiers = gdk.CONTROL_MASK
if item._shift:
gtk_modifiers |= gdk.SHIFT_MASK
if item._option:
gtk_modifiers |= gdk.MOD1_MASK
gtk_item.add_accelerator('activate', self._gtk_accel_group,
ord(key), gtk_modifiers, gtk.ACCEL_VISIBLE)
export(Menu)