From ba735bfa23da0fa2db8afc9b2c90b28426669e22 Mon Sep 17 00:00:00 2001 From: Adam Blackburn Date: Thu, 13 Aug 2009 20:59:05 -0500 Subject: [PATCH] don't disable the wired network entry while scanning for wireless networks --- wicd/gui.py | 80 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/wicd/gui.py b/wicd/gui.py index 6324a27..ad1592b 100644 --- a/wicd/gui.py +++ b/wicd/gui.py @@ -30,6 +30,7 @@ import gobject import pango import gtk import gtk.glade +from itertools import chain from dbus import DBusException from wicd import misc @@ -181,7 +182,14 @@ class appGui(object): probar = self.wTree.get_widget("progressbar") probar.set_text(language['connecting']) - self.network_list = self.wTree.get_widget("network_list_vbox") + self.all_network_list = self.wTree.get_widget("network_list_vbox") + self.all_network_list.show_all() + self.wired_network_box = gtk.VBox(False, 0) + self.wired_network_box.show_all() + self.network_list = gtk.VBox(False, 0) + self.all_network_list.pack_start(self.wired_network_box, False, False) + self.all_network_list.pack_start(self.network_list, True, True) + self.network_list.show_all() self.status_area = self.wTree.get_widget("connecting_hbox") self.status_bar = self.wTree.get_widget("statusbar") menu = self.wTree.get_widget("menu1") @@ -260,6 +268,7 @@ class appGui(object): ip_entry.entry.set_text('169.254.12.10') # Just a random IP vbox_ah = gtk.VBox(False, 0) + self.wired_network_box = gtk.VBox(False, 0) vbox_ah.pack_start(self.chkbox_use_encryption, False, False) vbox_ah.pack_start(self.key_entry, False, False) vbox_ah.show() @@ -288,9 +297,9 @@ class appGui(object): def disconnect_all(self, widget=None): """ Disconnects from any active network. """ def handler(*args): - gobject.idle_add(self.network_list.set_sensitive, True) + gobject.idle_add(self.all_network_list.set_sensitive, True) - self.network_list.set_sensitive(False) + self.all_network_list.set_sensitive(False) daemon.Disconnect(reply_handler=handler, error_handler=handler) def about_dialog(self, widget, event=None): @@ -418,7 +427,7 @@ class appGui(object): self.connecting = False if self.pulse_active: self.pulse_active = False - gobject.idle_add(self.network_list.set_sensitive, True) + gobject.idle_add(self.all_network_list.set_sensitive, True) gobject.idle_add(self.status_area.hide_all) if self.statusID: gobject.idle_add(self.status_bar.remove, 1, self.statusID) @@ -433,7 +442,7 @@ class appGui(object): if not self.pulse_active: self.pulse_active = True misc.timeout_add(100, self.pulse_progress_bar, milli=True) - gobject.idle_add(self.network_list.set_sensitive, False) + gobject.idle_add(self.all_network_list.set_sensitive, False) gobject.idle_add(self.status_area.show_all) if self.statusID: gobject.idle_add(self.status_bar.remove, 1, self.statusID) @@ -458,7 +467,7 @@ class appGui(object): if self.prev_state != state or force_check: apbssid = wireless.GetApBssid() - for entry in self.network_list: + for entry in chain(self.network_list, self.wired_network_box): if hasattr(entry, "update_connect_button"): entry.update_connect_button(state, apbssid) self.prev_state = state @@ -480,11 +489,43 @@ class appGui(object): """ Called when a wireless scan starts. """ if not DBUS_AVAIL: return self.network_list.set_sensitive(False) + + def _remove_items_from_vbox(self, vbox): + for z in vbox: + vbox.remove(z) + z.destroy() + del z + def refresh_clicked(self, widget=None): """ Kick off an asynchronous wireless scan. """ if not DBUS_AVAIL or self.connecting: return self.refreshing = True + + # Remove stuff already in there. + self._remove_items_from_vbox(self.wired_network_box) + self._remove_items_from_vbox(self.network_list) + label = gtk.Label("%s..." % language['scanning']) + self.network_list.pack_start(label) + self.network_list.show_all() + if wired.CheckPluggedIn() or daemon.GetAlwaysShowWiredInterface(): + printLine = True # In this case we print a separator. + wirednet = WiredNetworkEntry() + self.wired_network_box.pack_start(wirednet, False, False) + wirednet.connect_button.connect("clicked", self.connect, + "wired", 0, wirednet) + wirednet.disconnect_button.connect("clicked", self.disconnect, + "wired", 0, wirednet) + wirednet.advanced_button.connect("clicked", + self.edit_advanced, "wired", 0, + wirednet) + state, x = daemon.GetConnectionStatus() + wirednet.update_connect_button(state) + + self._wired_showing = True + else: + self._wired_showing = False + wireless.Scan(False) def refresh_networks(self, widget=None, fresh=True, hidden=None): @@ -504,26 +545,11 @@ class appGui(object): return print "refreshing..." self.network_list.set_sensitive(False) + self._remove_items_from_vbox(self.network_list) self.wait_for_events() printLine = False # We don't print a separator by default. - # Remove stuff already in there. - for z in self.network_list: - self.network_list.remove(z) - z.destroy() - del z - - if wired.CheckPluggedIn() or daemon.GetAlwaysShowWiredInterface(): - printLine = True # In this case we print a separator. - wirednet = WiredNetworkEntry() - self.network_list.pack_start(wirednet, False, False) - wirednet.connect_button.connect("clicked", self.connect, - "wired", 0, wirednet) - wirednet.disconnect_button.connect("clicked", self.disconnect, - "wired", 0, wirednet) - wirednet.advanced_button.connect("clicked", - self.edit_advanced, "wired", 0, - wirednet) - + if self._wired_showing: + printLine = True num_networks = wireless.GetNumberOfNetworks() instruct_label = self.wTree.get_widget("label_instructions") if num_networks > 0: @@ -673,7 +699,7 @@ class appGui(object): def setup_interface_for_connection(): cancel_button = self.wTree.get_widget("cancel_button") cancel_button.set_sensitive(True) - self.network_list.set_sensitive(False) + self.all_network_list.set_sensitive(False) if self.statusID: gobject.idle_add(self.status_bar.remove, 1, self.statusID) gobject.idle_add(self.set_status, language["disconnecting_active"]) @@ -708,12 +734,12 @@ class appGui(object): """ def handler(*args): - gobject.idle_add(self.network_list.set_sensitive, True) + gobject.idle_add(self.all_network_list.set_sensitive, True) widget.hide() networkentry.connect_button.show() daemon.SetForcedDisconnect(True) - self.network_list.set_sensitive(False) + self.network_list.all_set_sensitive(False) if nettype == "wired": wired.DisconnectWired(reply_handler=handler, error_handler=handler) else: