def __init__(self, driver, interface, iface_name, compile, show_versions = False): self.driver = driver widgets = Template('interface_properties') self.interface = interface window = widgets.get_widget('interface_properties') self.window = window window.set_title(_('Properties for %s') % iface_name) window.set_default_size(-1, gtk.gdk.screen_height() / 3) self.compile_button = widgets.get_widget('compile') self.compile_button.connect('clicked', lambda b: compile(interface)) window.set_default_response(gtk.RESPONSE_CANCEL) def response(dialog, resp): if resp == gtk.RESPONSE_CANCEL: window.destroy() elif resp == gtk.RESPONSE_HELP: properties_help.display() window.connect('response', response) notebook = widgets.get_widget('interface_notebook') assert notebook self.feeds = Feeds(driver.config, interface, widgets) stability = widgets.get_widget('preferred_stability') self.stability = stability stability.connect('changed', lambda *args: self.ignore_stability_change or self.set_stability_policy()) self.use_list = ImplementationList(driver, interface, widgets) self.feeds.tv.grab_focus() window.connect('destroy', lambda s: driver.watchers.remove(self.update)) driver.watchers.append(self.update) self.update() if show_versions: notebook.next_page()
class Properties(object): interface = None use_list = None window = None driver = None ignore_stability_change = True def __init__(self, driver, interface, iface_name, compile, show_versions = False): self.driver = driver widgets = Template('interface_properties') self.interface = interface window = widgets.get_widget('interface_properties') self.window = window window.set_title(_('Properties for %s') % iface_name) window.set_default_size(-1, gtk.gdk.screen_height() / 3) self.compile_button = widgets.get_widget('compile') self.compile_button.connect('clicked', lambda b: compile(interface)) window.set_default_response(gtk.RESPONSE_CANCEL) def response(dialog, resp): if resp == gtk.RESPONSE_CANCEL: window.destroy() elif resp == gtk.RESPONSE_HELP: properties_help.display() window.connect('response', response) notebook = widgets.get_widget('interface_notebook') assert notebook self.feeds = Feeds(driver.config, interface, widgets) stability = widgets.get_widget('preferred_stability') self.stability = stability stability.connect('changed', lambda *args: self.ignore_stability_change or self.set_stability_policy()) self.use_list = ImplementationList(driver, interface, widgets) self.feeds.tv.grab_focus() window.connect('destroy', lambda s: driver.watchers.remove(self.update)) driver.watchers.append(self.update) self.update() if show_versions: notebook.next_page() @tasks.async def set_stability_policy(self): try: i = self.stability.get_active() if i == 0: new_stability = None else: new_stability = ['stable', 'testing', 'developer'][i-1] blocker = slave.invoke_master(["set-stability-policy", self.interface.uri, new_stability]) yield blocker tasks.check(blocker) from zeroinstall.gui import main main.recalculate() except Exception as ex: warning("set_stability_policy", exc_info = ex) def show(self): self.window.show() def destroy(self): self.window.destroy() @tasks.async def update(self): try: blocker = slave.get_component_details(self.interface.uri) yield blocker tasks.check(blocker) self.details = blocker.result i = stability_to_combo_index[self.details['stability-policy']] self.ignore_stability_change = True self.stability.set_active(i) self.ignore_stability_change = False self.use_list.update(self.details) self.feeds.updated(self.details) self.compile_button.set_sensitive(self.details['may-compile']) except: warning("update failed", exc_info = True)