def show_popup_menu(self, details, bev): iface_uri = details['interface'] iface_name = details['name'] have_source = details['may-compile'] from zeroinstall.gui import bugs iface = self.config.iface_cache.get_interface(iface_uri) global menu # Fix GC problem in PyGObject menu = gtk.Menu() for label, cb in [(_('Show Feeds'), lambda: properties.edit(self.driver, iface, iface_name, self.compile)), (_('Show Versions'), lambda: properties.edit(self.driver, iface, iface_name, self.compile, show_versions = True)), (_('Report a Bug...'), lambda: bugs.report_bug(self.driver, iface))]: item = gtk.MenuItem() item.set_label(label) if cb: item.connect('activate', lambda item, cb=cb: cb()) else: item.set_sensitive(False) item.show() menu.append(item) item = gtk.MenuItem() item.set_label(_('Compile')) item.show() menu.append(item) if have_source: compile_menu = gtk.Menu() item.set_submenu(compile_menu) item = gtk.MenuItem() item.set_label(_('Automatic')) item.connect('activate', lambda item: self.compile(iface, autocompile = True)) item.show() compile_menu.append(item) item = gtk.MenuItem() item.set_label(_('Manual...')) item.connect('activate', lambda item: self.compile(iface, autocompile = False)) item.show() compile_menu.append(item) else: item.set_sensitive(False) if gtk.pygtk_version >= (2, 90): menu.popup(None, None, None, None, bev.button, bev.time) else: menu.popup(None, None, None, bev.button, bev.time)
def button_press(tree_view, bev): pos = tree_view.get_path_at_pos(int(bev.x), int(bev.y)) if not pos: return False path, col, x, y = pos if (bev.button == 3 or (bev.button < 4 and col is menu_column)) \ and bev.type == gtk.gdk.BUTTON_PRESS: selection.select_path(path) details = self.model[path][InterfaceBrowser.DETAILS] self.show_popup_menu(details, bev) return True if bev.button != 1 or bev.type != gtk.gdk._2BUTTON_PRESS: return False details = self.model[path][InterfaceBrowser.DETAILS] iface_uri = details['interface'] iface = self.config.iface_cache.get_interface(iface_uri) properties.edit(driver, iface, details['name'], self.compile, show_versions = True)