import logging from gi.repository import Gtk class SpecialFunctionsToolbarController(object): """ Manages Accelerators and Clicks on the Composition Toolbar-Buttons """ def __init__(self, drawing_area, win, uibuilder, video_display): self.log = logging.getLogger('SpecialFunctionsToolbarController') self.video_display = video_display accelerators = Gtk.AccelGroup() win.add_accel_group(accelerators) composites = [ 'preview_fullscreen', 'preview_freeze', ] for idx, name in enumerate(composites): key, mod = Gtk.accelerator_parse('F%u' % (idx+10)) btn = uibuilder.find_widget_recursive(drawing_area, name) btn.set_name(name) # Thanks to http://stackoverflow.com/a/19739855/1659732 childbtn = btn.get_child() childbtn.add_accelerator('clicked', accelerators, key, mod, Gtk.AccelFlags.VISIBLE) childbtn.connect('button-press-event', self.on_btn_event) childbtn.connect('button-release-event', self.on_btn_event) def on_btn_event(self, btn, event): self.log.info("on_btn_event: %s @ %s", event.type, btn.get_name()) # do sth. to self.video_display here