[pygtk] Accel map and labels

Sebastian Pölsterl marduk at k-d-w.org
Mon Apr 3 00:57:31 WST 2006


Hi!

Currently, I'm trying to connect accelerators to MenuItems of a MenuBar.
Therefore, I use the gtk.accel_map_add_entry function, connect the accel 
paths to a AccelGroup and finally I set the MenuItems' correct accel
paths.

The accelerators themselves work, but the labels don't get displayed.

Whereas, if I use the add_acclerator method for each MenuItem it works,
but with that solution the accelerators will be static and cannot be
changed.

Example code that doesn't display labels:
gtk.accel_map_add_entry('<Videodb-menubar>/File/New', ord('n'),
gtk.gdk.CONTROL_MASK)
        gtk.accel_map_add_entry('<Videodb-menubar>/File/Quit', ord('q'),
gtk.gdk.CONTROL_MASK)
        gtk.accel_map_add_entry('<Videodb-menubar>/Edit/Edit', ord('e'),
gtk.gdk.CONTROL_MASK)

        accelgroup.connect_by_path('<Videodb-menubar>/File/New',
self.on_new_activate)
        accelgroup.connect_by_path('<Videodb-menubar>/File/Quit',
gtk.main_quit)
        accelgroup.connect_by_path('<Videodb-menubar>/Edit/Edit',
self.on_edit_activate)

        self.view['new'].set_accel_path('<Videodb-menubar>/File/New')
        self.view['quit'].set_accel_path('<Videodb-menubar>/File/Quit')
        self.view['edit'].set_accel_path('<Videodb-menubar>/Edit/Edit')

Example code that does display labels:
self.view['new'].add_accelerator("activate", accelgroup, ord('n'),
gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
self.view['quit'].add_accelerator("activate", accelgroup, ord('q'),
gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
self.view['edit'].add_accelerator("activate", accelgroup, ord('e'),
gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)

I appreciate any help!

-- 
Greetings,
Sebastian Pölsterl


More information about the pygtk mailing list