class MainWindow(Dialog): progress = None browser = None def __init__(self, prog_args): Dialog.__init__(self) self.set_title('Dependency Injector') self.set_default_size(400, 300) tips = gtk.Tooltips() # Network use hbox = gtk.HBox(False, 2) self.vbox.pack_start(hbox, False, True, 0) hbox.set_border_width(4) network = gtk.combo_box_new_text() for level in network_levels: network.append_text(level.capitalize()) network.set_active(list(network_levels).index(policy.network_use)) hbox.pack_start(gtk.Label('Network use:'), False, True, 0) hbox.pack_start(network, True, True, 2) def set_network_use(combo): policy.network_use = network_levels[network.get_active()] policy.save_config() policy.recalculate() network.connect('changed', set_network_use) hbox.show_all() # Freshness hbox = gtk.HBox(False, 2) self.vbox.pack_start(hbox, False, True, 0) hbox.set_border_width(4) times = [x.time for x in freshness_levels] if policy.freshness not in times: freshness_levels.append( Freshness(policy.freshness, '%d seconds' % policy.freshness)) times.append(policy.freshness) freshness = gtk.combo_box_new_text() for level in freshness_levels: freshness.append_text(str(level)) freshness.set_active(times.index(policy.freshness)) hbox.pack_start(gtk.Label('Freshness:'), False, True, 0) hbox.pack_start(freshness, True, True, 2) def set_freshness(combo): policy.freshness = freshness_levels[freshness.get_active()].time policy.save_config() policy.recalculate() freshness.connect('changed', set_freshness) button = gtk.Button('Refresh all now') def refresh_all(b): for x in policy.walk_interfaces(): policy.begin_iface_download(x, True) button.connect('clicked', refresh_all) hbox.pack_start(button, False, True, 2) hbox.show_all() # Tree view self.browser = InterfaceBrowser() self.vbox.pack_start(self.browser, True, True, 0) self.browser.show() # Select versions hbox = gtk.HBox(False, 2) self.vbox.pack_start(hbox, False, True, 0) hbox.set_border_width(4) button = gtk.Button() self.browser.edit_properties.connect_proxy(button) hbox.pack_start(button, False, True, 0) stable_toggle = gtk.CheckButton('Help test new versions') hbox.pack_start(stable_toggle, False, True, 0) tips.set_tip( stable_toggle, "Try out new versions as soon as they are available, instead of " "waiting for them to be marked as 'stable'. " "This sets the default policy. Click on 'Interface Properties...' " "to set the policy for an individual interface.") stable_toggle.set_active(policy.help_with_testing) def toggle_stability(toggle): policy.help_with_testing = toggle.get_active() policy.save_config() policy.recalculate() stable_toggle.connect('toggled', toggle_stability) hbox.show_all() # Progress bar self.progress = gtk.ProgressBar() self.vbox.pack_start(self.progress, False, True, 0) # Responses self.add_button(gtk.STOCK_HELP, gtk.RESPONSE_HELP) self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) self.add_button(gtk.STOCK_EXECUTE, gtk.RESPONSE_OK) self.set_default_response(gtk.RESPONSE_OK) def response(dialog, resp): if resp == gtk.RESPONSE_CANCEL: self.destroy() elif resp == gtk.RESPONSE_OK: import download_box download_box.download_and_run(self, prog_args) elif resp == gtk.RESPONSE_HELP: gui_help.display() self.connect('response', response)