diff --git a/data/wicd.ui b/data/wicd.ui index 7d20d9c..e9affa2 100644 --- a/data/wicd.ui +++ b/data/wicd.ui @@ -502,7 +502,7 @@ True - 20 + 22 2 4 4 @@ -562,6 +562,41 @@ is already active. GTK_FILL + + + True + 12 + + + Show never connect networks + True + True + False + True + + + + + 2 + 19 + 20 + + + + + + True + 0 + <b>Never Connect</b> + True + + + 2 + 18 + 19 + + + True @@ -943,8 +978,8 @@ is already active. 2 - 18 - 19 + 20 + 21 @@ -964,8 +999,8 @@ is already active. 2 - 19 - 20 + 21 + 22 diff --git a/gtk/gui.py b/gtk/gui.py index e29f3c1..e1f2a1b 100644 --- a/gtk/gui.py +++ b/gtk/gui.py @@ -139,6 +139,9 @@ class WiredProfileChooser: dialog.destroy() +def get_wireless_prop(net_id, prop): + return wireless.GetWirelessProperty(net_id, prop) + class appGui(object): """ The main wicd GUI class. """ def __init__(self, standalone=False, tray=None): @@ -559,8 +562,10 @@ class appGui(object): num_networks = wireless.GetNumberOfNetworks() instruct_label = self.wTree.get_object("label_instructions") if num_networks > 0: + skip_never_connect = not daemon.GetShowNeverConnect() instruct_label.show() - for x in range(0, num_networks): + for x in xrange(0, num_networks): + if skip_never_connect and misc.to_bool(get_wireless_prop(x,'never')): continue if printLine: sep = gtk.HSeparator() self.network_list.pack_start(sep, padding=10, fill=False, diff --git a/gtk/netentry.py b/gtk/netentry.py index 5ed5895..c57e212 100644 --- a/gtk/netentry.py +++ b/gtk/netentry.py @@ -57,7 +57,7 @@ class AdvancedSettingsDialog(gtk.Dialog): if network_name: title = '%s - %s' % (network_name, language['properties']) else: - title = language['properties'] + title = language['properties'] gtk.Dialog.__init__(self, title=title, flags=gtk.DIALOG_MODAL, buttons=(gtk.STOCK_CANCEL, @@ -813,6 +813,7 @@ class WirelessNetworkEntry(NetworkEntry): print "ESSID : " + self.essid self.chkbox_autoconnect = gtk.CheckButton(language['automatic_connect']) + self.chkbox_neverconnect = gtk.CheckButton(language['never_connect']) self.set_signal_strength(wireless.GetWirelessProperty(networkID, 'quality'), @@ -833,14 +834,23 @@ class WirelessNetworkEntry(NetworkEntry): # Add the wireless network specific parts to the NetworkEntry # VBox objects. self.vbox_top.pack_start(self.chkbox_autoconnect, False, False) + self.vbox_top.pack_start(self.chkbox_neverconnect, False, False) if to_bool(self.format_entry(networkID, "automatic")): self.chkbox_autoconnect.set_active(True) else: self.chkbox_autoconnect.set_active(False) + if to_bool(self.format_entry(networkID, "never")): + self.chkbox_autoconnect.set_sensitive(False) + self.connect_button.set_sensitive(False) + self.chkbox_neverconnect.set_active(True) + else: + self.chkbox_neverconnect.set_active(False) + # Connect signals. - self.chkbox_autoconnect.connect("toggled", self.update_autoconnect) + self.chkbox_autoconnect.connect("toggled", self.update_autoconnect) + self.chkbox_neverconnect.connect("toggled", self.update_neverconnect) # Show everything self.show_all() @@ -863,6 +873,18 @@ class WirelessNetworkEntry(NetworkEntry): get_active())) wireless.SaveWirelessNetworkProperty(self.networkID, "automatic") + def update_neverconnect(self, widget=None): + """ Called when the neverconnect checkbox is toggled. """ + wireless.SetWirelessProperty(self.networkID, "never", + noneToString(self.chkbox_neverconnect.get_active())) + wireless.SaveWirelessNetworkProperty(self.networkID, "never") + if self.chkbox_neverconnect.get_active(): + self.chkbox_autoconnect.set_sensitive(False) + self.connect_button.set_sensitive(False) + else: + self.chkbox_autoconnect.set_sensitive(True) + self.connect_button.set_sensitive(True) + def destroy_called(self, *args): """ Clean up everything. """ self.disconnect(self.wifides) @@ -874,6 +896,8 @@ class WirelessNetworkEntry(NetworkEntry): def update_connect_button(self, state, apbssid): """ Update the connection/disconnect button for this entry. """ + if to_bool(self.format_entry(self.networkID, "never")): + self.connect_button.set_sensitive(False) if not apbssid: apbssid = wireless.GetApBssid() if state == misc.WIRELESS and \ diff --git a/gtk/prefs.py b/gtk/prefs.py index f23db16..aa7cf04 100644 --- a/gtk/prefs.py +++ b/gtk/prefs.py @@ -80,6 +80,7 @@ class PreferencesDialog(object): self.displaytypecheckbox.set_active(daemon.GetSignalDisplayType()) self.verifyapcheckbox.set_active(daemon.GetShouldVerifyAp()) self.preferwiredcheckbox.set_active(daemon.GetPreferWiredNetwork()) + self.showneverconnectcheckbox.set_active(daemon.GetShowNeverConnect()) dhcp_list = [self.dhcpautoradio, self.dhclientradio, self.dhcpcdradio, self.pumpradio, self.udhcpcradio] @@ -199,6 +200,7 @@ class PreferencesDialog(object): daemon.SetSignalDisplayType(int(self.displaytypecheckbox.get_active())) daemon.SetShouldVerifyAp(bool(self.verifyapcheckbox.get_active())) daemon.SetPreferWiredNetwork(bool(self.preferwiredcheckbox.get_active())) + daemon.SetShowNeverConnect(bool(self.showneverconnectcheckbox.get_active())) if self.showlistradiobutton.get_active(): daemon.SetWiredAutoConnectMethod(2) elif self.lastusedradiobutton.get_active(): @@ -327,6 +329,8 @@ class PreferencesDialog(object): self.reconnectcheckbox = setup_label("pref_auto_check", 'auto_reconnect') + self.showneverconnectcheckbox = setup_label("pref_show_never_connect_check", + 'show_never_connect') self.debugmodecheckbox = setup_label("pref_debug_check", 'use_debug_mode') self.displaytypecheckbox = setup_label("pref_dbm_check", diff --git a/gtk/wicd-client.py b/gtk/wicd-client.py index d847d7a..66a835e 100644 --- a/gtk/wicd-client.py +++ b/gtk/wicd-client.py @@ -765,7 +765,9 @@ class TrayIcon(object): sep.show() if num_networks > 0: - for x in range(0, num_networks): + skip_never_connect = not daemon.GetShowNeverConnect() + for x in xrange(0, num_networks): + if skip_never_connect and misc.to_bool(get_prop(x,"never")): continue essid = get_prop(x, "essid") if status == misc.WIRELESS and info[1] == essid: is_active = True diff --git a/wicd/translations.py b/wicd/translations.py index cd14ab1..2565ad5 100644 --- a/wicd/translations.py +++ b/wicd/translations.py @@ -105,6 +105,9 @@ language['dhcp_failed'] = _('''Connection Failed: Unable to Get IP Address''') language['setting_static_ip'] = _('''Setting static IP addresses...''') language['connecting_to_daemon'] = _('''Connecting to daemon...''') language['automatic_connect'] = _('''Automatically connect to this network''') +language['never_connect'] = _('Never connect to this network') +language['show_never_connect'] = _('Show never connect networks') +language['hide_never_connect'] = _('Hide never connect networks') language['add_new_wired_profile'] = _('''Add a new wired profile''') language['dhcp_client'] = _('''DHCP Client''') language['display_type_dialog'] = _('''Use dBm to measure signal strength''') diff --git a/wicd/wicd-daemon.py b/wicd/wicd-daemon.py index 0c1e8b9..90c41d4 100644 --- a/wicd/wicd-daemon.py +++ b/wicd/wicd-daemon.py @@ -101,6 +101,7 @@ class WicdDaemon(dbus.service.Object): self.connection_info = [""] self.auto_connecting = False self.prefer_wired = False + self.show_never_connect = True self.dhcp_client = 0 self.link_detect_tool = 0 self.flush_tool = 0 @@ -565,6 +566,20 @@ class WicdDaemon(dbus.service.Object): self.config.set("Settings", "prefer_wired", bool(value), write=True) self.prefer_wired = bool(value) + @dbus.service.method('org.wicd.daemon') + def GetShowNeverConnect(self): + """ Returns True if show_never_connect is set + + if True then the client will show networks marked as never connect + """ + return self.show_never_connect + + @dbus.service.method('org.wicd.daemon') + def SetShowNeverConnect(self, value): + """ Sets the how_never_connect state. """ + self.config.set("Settings", "show_never_connect", bool(value), write=True) + self.show_never_connect = bool(value) + @dbus.service.method('org.wicd.daemon') def SetConnectionStatus(self, state, info): """ Sets the connection status. @@ -875,6 +890,8 @@ class WicdDaemon(dbus.service.Object): self.SetSudoApp(app_conf.get("Settings", "sudo_app", default=0)) self.SetPreferWiredNetwork(app_conf.get("Settings", "prefer_wired", default=False)) + self.SetShowNeverConnect(app_conf.get("Settings", "show_never_connect", + default=True)) app_conf.write() if os.path.isfile(wireless_conf): @@ -1302,6 +1319,12 @@ class WirelessDaemon(dbus.service.Object): if self.debug_mode: print network["essid"] + ' has profile' if bool(network.get('automatic')): + try: + if network.get('never'): + print network["essid"],'marked never connect' + continue + except: + print network["essid"],'has no never connect value' print 'trying to automatically connect to...' + \ network["essid"] self.ConnectWireless(x) @@ -1700,7 +1723,7 @@ def main(argv): if o in ('-n', '--no-poll'): no_poll = True if o in ('-k', '--kill'): - kill = True + kill = True if kill: try: