def __init__(self, *args, **kwargs): Gtk.Notebook.__init__(self, *args, **kwargs) self.action_group = Gio.SimpleActionGroup() actions = ( ("tabmoveleft", self.on_tab_move_left), ("tabmoveright", self.on_tab_move_right), ) for (name, callback) in actions: action = Gio.SimpleAction.new(name, None) action.connect('activate', callback) self.action_group.add_action(action) self.insert_action_group("popup", self.action_group) builder = Gtk.Builder.new_from_string(self.ui, -1) self.popup_menu = builder.get_object("tab-menu") provider = Gtk.CssProvider() provider.load_from_data(self.css) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) # Awful hacks because we can't create GtkBindingArg from Python, or # create a BindingSet from Python, or get a set by class from Python. bindings = Gtk.BindingSet.find('TabSwitchBindings') for i in range(10): key = (i + 1) % 10 Gtk.BindingEntry().add_signal_from_string( bindings, 'bind "<Alt>%d" { "tab-switch" (%d) };' % (key, i)) self.connect('tab-switch', self.do_tab_switch) self.connect('button-press-event', self.on_button_press_event) self.connect('popup-menu', self.on_popup_menu) self.connect('page-added', self.on_page_added) self.connect('page-removed', self.on_page_removed)