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 @@
+
+
+
+ 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: