1
0
mirror of https://github.com/gryf/wicd.git synced 2025-12-19 20:38:00 +01:00

add support for nevershow buttons and options

This commit is contained in:
Robin Becker robin@reportlab.com
2011-09-18 15:33:44 +01:00
parent 05cb44c4da
commit 32b7885ad2
7 changed files with 106 additions and 10 deletions

View File

@@ -502,7 +502,7 @@
<child>
<object class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="n_rows">20</property>
<property name="n_rows">22</property>
<property name="n_columns">2</property>
<property name="column_spacing">4</property>
<property name="row_spacing">4</property>
@@ -562,6 +562,41 @@ is already active.</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment13_1">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
<object class="GtkCheckButton" id="pref_show_never_connect_check">
<property name="label" translatable="yes">Show never connect networks</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
</object>
</child>
</object>
<packing>
<property name="right_attach">2</property>
<property name="top_attach">19</property>
<property name="bottom_attach">20</property>
<property name="y_options"/>
</packing>
</child>
<child>
<object class="GtkLabel" id="label12_1">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;b&gt;Never Connect&lt;/b&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="right_attach">2</property>
<property name="top_attach">18</property>
<property name="bottom_attach">19</property>
<property name="y_options"/>
</packing>
</child>
<child>
<object class="GtkAlignment" id="alignment13">
<property name="visible">True</property>
@@ -943,8 +978,8 @@ is already active.</property>
</object>
<packing>
<property name="right_attach">2</property>
<property name="top_attach">18</property>
<property name="bottom_attach">19</property>
<property name="top_attach">20</property>
<property name="bottom_attach">21</property>
<property name="y_options"></property>
</packing>
</child>
@@ -964,8 +999,8 @@ is already active.</property>
</object>
<packing>
<property name="right_attach">2</property>
<property name="top_attach">19</property>
<property name="bottom_attach">20</property>
<property name="top_attach">21</property>
<property name="bottom_attach">22</property>
<property name="y_options"></property>
</packing>
</child>

View File

@@ -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,

View File

@@ -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 \

View File

@@ -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",

View File

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

View File

@@ -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''')

View File

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