diff --git a/configscript.py b/configscript.py
index a626778..df95996 100755
--- a/configscript.py
+++ b/configscript.py
@@ -106,32 +106,32 @@ def get_script_info(network, network_type):
def write_scripts(network, network_type, script_info):
""" Writes script info to disk and loads it into the daemon. """
con = ConfigParser.ConfigParser()
- print "writing scripts, type",network_type
+ print "writing scripts, type", network_type
if network_type == "wired":
con.read(wired_conf)
if con.has_section(network):
con.add_section(network)
- con.set(network, "beforescript", script_info["pre_entry"])
- con.set(network, "afterscript", script_info["post_entry"])
+ con.set(network, "beforescript", script_info["pre_entry"])
+ con.set(network, "afterscript", script_info["post_entry"])
con.set(network, "disconnectscript",
script_info["disconnect_entry"])
- con.write(open(wired_conf, "w"))
- config.ReadWiredNetworkProfile(network)
- config.SaveWiredNetworkProfile(network)
+ con.write(open(wired_conf, "w"))
+ config.ReadWiredNetworkProfile(network)
+ config.SaveWiredNetworkProfile(network)
else:
bssid = wireless.GetWirelessProperty(int(network), "bssid")
con.read(wireless_conf)
if con.has_section(bssid):
con.add_section(bssid)
- con.set(bssid, "beforescript", script_info["pre_entry"])
- con.set(bssid, "afterscript", script_info["post_entry"])
- con.set(bssid, "disconnectscript", script_info["disconnect_entry"])
- con.write(open(wireless_conf, "w"))
- config.ReadWirelessNetworkProfile(int(network))
- config.SaveWirelessNetworkProfile(int(network))
+ con.set(bssid, "beforescript", script_info["pre_entry"])
+ con.set(bssid, "afterscript", script_info["post_entry"])
+ con.set(bssid, "disconnectscript", script_info["disconnect_entry"])
+ con.write(open(wireless_conf, "w"))
+ config.ReadWirelessNetworkProfile(int(network))
+ config.SaveWirelessNetworkProfile(int(network))
def main (argv):
- """Runs the script configuration dialog."""
+ """ Runs the script configuration dialog. """
if len(argv) < 2:
print 'Network id to configure is missing, aborting.'
sys.exit(1)
diff --git a/daemon.py b/daemon.py
index 0c33a0a..7f4d772 100644
--- a/daemon.py
+++ b/daemon.py
@@ -42,7 +42,7 @@ import ConfigParser
import gobject
import dbus
import dbus.service
-if getattr(dbus, 'version', (0,0,0)) >= (0,41,0):
+if getattr(dbus, 'version', (0, 0, 0)) >= (0, 41, 0):
import dbus.glib
# wicd specific libraries
import wpath
@@ -67,7 +67,7 @@ logging_enabled = True
class LogWriter:
""" A class to provide timestamped logging. """
def __init__(self):
- self.file = open(wpath.log + 'wicd.log','a')
+ self.file = open(wpath.log + 'wicd.log', 'a')
self.eol = True
@@ -118,9 +118,9 @@ class LogWriter:
"""
x = time.localtime()
return ''.join([
- str(x[0]).rjust(4,'0'), '/', str(x[1]).rjust(2,'0'), '/',
- str(x[2]).rjust(2,'0'), ' ', str(x[3]).rjust(2,'0'), ':',
- str(x[4]).rjust(2,'0'), ':', str(x[5]).rjust(2,'0')])
+ str(x[0]).rjust(4, '0'), '/', str(x[1]).rjust(2, '0'), '/',
+ str(x[2]).rjust(2, '0'), ' ', str(x[3]).rjust(2, '0'), ':',
+ str(x[4]).rjust(2, '0'), ':', str(x[5]).rjust(2, '0')])
class ConnectionWizard(dbus.service.Object):
@@ -144,6 +144,8 @@ class ConnectionWizard(dbus.service.Object):
self.vpn_session = None
self.gui_open = False
self.suspended = False
+ self.connection_state = 0
+ self.connection_info = [""]
# Load the config file
self.ReadConfig()
@@ -158,7 +160,7 @@ class ConnectionWizard(dbus.service.Object):
# Scan since we just got started
if auto_connect:
- print "autoconnecting...",str(self.GetWirelessInterface()[5:])
+ print "autoconnecting...", str(self.GetWirelessInterface()[5:])
self.AutoConnect(True)
else:
print "--no-scan detected, not autoconnecting..."
@@ -179,79 +181,79 @@ class ConnectionWizard(dbus.service.Object):
#and micro may be anything >= 0
#this number is effective starting wicd v1.2.0
version = '1.5.0'
- print 'returned version number',version
+ print 'returned version number', version
return version
@dbus.service.method('org.wicd.daemon')
- def SetWiredInterface(self,interface):
+ def SetWiredInterface(self, interface):
''' Sets the wired interface for the daemon to use '''
- print "setting wired interface" , str(interface)
+ print "setting wired interface", str(interface)
self.wired.wired_interface = interface
self.wifi.wired_interface = interface
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","wired_interface",interface)
- config.write(open(self.app_conf,"w"))
+ config.set("Settings","wired_interface", interface)
+ config.write(open(self.app_conf, "w"))
@dbus.service.method('org.wicd.daemon')
- def SetWirelessInterface(self,interface):
+ def SetWirelessInterface(self, interface):
''' Sets the wireless interface the daemon will use '''
print "setting wireless interface" , str(interface)
self.wifi.wireless_interface = interface
self.wired.wireless_interface = interface
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","wireless_interface",interface)
- configfile = open(self.app_conf,"w")
+ config.set("Settings","wireless_interface", interface)
+ configfile = open(self.app_conf, "w")
config.write(configfile)
@dbus.service.method('org.wicd.daemon')
- def SetWPADriver(self,driver):
+ def SetWPADriver(self, driver):
''' Sets the wpa driver the wpa_supplicant will use '''
- print "setting wpa driver" , str(driver)
+ print "setting wpa driver", str(driver)
self.wifi.wpa_driver = driver
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
config.set("Settings","wpa_driver",driver)
- configfile = open(self.app_conf,"w")
+ configfile = open(self.app_conf, "w")
config.write(configfile)
#end function SetWPADriver
@dbus.service.method('org.wicd.daemon')
- def SetUseGlobalDNS(self,use):
+ def SetUseGlobalDNS(self, use):
''' Sets a boolean which determines if global DNS is enabled '''
- print 'setting use global dns to',use
+ print 'setting use global dns to', use
use = misc.to_bool(use)
- print 'setting use global dns to boolean',use
+ print 'setting use global dns to boolean', use
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","use_global_dns", use)
+ config.set("Settings", "use_global_dns", use)
self.use_global_dns = use
self.wifi.use_global_dns = use
self.wired.use_global_dns = use
- configfile = open(self.app_conf,"w")
+ configfile = open(self.app_conf, "w")
config.write(configfile)
@dbus.service.method('org.wicd.daemon')
- def SetGlobalDNS(self,dns1=None,dns2=None,dns3=None):
+ def SetGlobalDNS(self, dns1=None, dns2=None, dns3=None):
''' Sets the global dns addresses '''
print "setting global dns"
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","global_dns_1",misc.noneToString(dns1))
+ config.set("Settings", "global_dns_1", misc.noneToString(dns1))
self.dns1 = dns1
self.wifi.global_dns_1 = dns1
self.wired.global_dns_1 = dns1
- config.set("Settings","global_dns_2",misc.noneToString(dns2))
+ config.set("Settings", "global_dns_2", misc.noneToString(dns2))
self.dns2 = dns2
self.wifi.global_dns_2 = dns2
self.wired.global_dns_2 = dns2
- config.set("Settings","global_dns_3",misc.noneToString(dns3))
+ config.set("Settings", "global_dns_3", misc.noneToString(dns3))
self.dns3 = dns3
self.wifi.global_dns_3 = dns3
self.wired.global_dns_3 = dns3
- print 'global dns servers are',dns1,dns2,dns3
- configfile = open(self.app_conf,"w")
+ print 'global dns servers are', dns1, dns2, dns3
+ configfile = open(self.app_conf, "w")
config.write(configfile)
#end function SetWirelessInterface
@@ -284,8 +286,8 @@ class ConnectionWizard(dbus.service.Object):
''' Sets if debugging mode is on or off '''
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","debug_mode",debug)
- configfile = open(self.app_conf,"w")
+ config.set("Settings", "debug_mode", debug)
+ configfile = open(self.app_conf, "w")
config.write(configfile)
self.debug_mode = misc.to_bool(debug)
#end function SetDebugMode
@@ -320,8 +322,8 @@ class ConnectionWizard(dbus.service.Object):
''' Sets the signal display type and writes it the wicd config file '''
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","signal_display_type",value)
- configfile = open(self.app_conf,"w")
+ config.set("Settings", "signal_display_type", value)
+ configfile = open(self.app_conf, "w")
config.write(configfile)
self.signal_display_type = int(value)
# end function SetSignalDisplayType
@@ -334,14 +336,17 @@ class ConnectionWizard(dbus.service.Object):
else:
return (signal + "%")
# End function FormatSignalForPrinting
-
- @dbus.service. method('org.wicd.daemon')
+
+ @dbus.service.method('org.wicd.daemon')
def SetSuspend(self, val):
""" Toggles whether or not monitoring connection status is suspended """
self.suspended = val
+ if self.suspended:
+ self.Disconnect()
+
@dbus.service. method('org.wicd.daemon')
- def AutoConnect(self,fresh):
+ def AutoConnect(self, fresh):
''' Attempts to autoconnect to a wired or wireless network.
Autoconnect will first try to connect to a wired network, if that
@@ -353,7 +358,7 @@ class ConnectionWizard(dbus.service.Object):
if self.GetWiredAutoConnectMethod() == 2 and \
not self.GetNeedWiredProfileChooser():
self.LaunchChooser()
- elif not self.GetWiredAutoConnectMethod != 2:
+ elif self.GetWiredAutoConnectMethod != 2:
defaultNetwork = self.GetDefaultWiredNetwork()
if defaultNetwork != None:
self.ReadWiredNetworkProfile(defaultNetwork)
@@ -370,7 +375,7 @@ class ConnectionWizard(dbus.service.Object):
if bool(self.LastScan[x]["has_profile"]):
print self.LastScan[x]["essid"] + ' has profile'
if bool(self.LastScan[x].get('automatic')):
- print 'trying to automatically connect to...',self.LastScan[x]["essid"]
+ print 'trying to automatically connect to...', self.LastScan[x]["essid"]
self.ConnectWireless(x)
time.sleep(1)
return
@@ -383,7 +388,8 @@ class ConnectionWizard(dbus.service.Object):
def GetAutoReconnect(self):
'''returns if wicd should automatically try to reconnect is connection is lost'''
do = bool(self.auto_reconnect)
- return self.__printReturn('returning automatically reconnect when connection drops',do)
+ return self.__printReturn('returning automatically reconnect when\
+ connection drops', do)
#end function GetAutoReconnect
@dbus.service.method('org.wicd.daemon')
@@ -392,8 +398,8 @@ class ConnectionWizard(dbus.service.Object):
print 'setting automatically reconnect when connection drops'
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","auto_reconnect",misc.to_bool(value))
- config.write(open(self.app_conf,"w"))
+ config.set("Settings", "auto_reconnect", misc.to_bool(value))
+ config.write(open(self.app_conf, "w"))
self.auto_reconnect = misc.to_bool(value)
#end function SetAutoReconnect
@@ -436,7 +442,7 @@ class ConnectionWizard(dbus.service.Object):
self.current_interface = str(iface)
@dbus.service.method('org.wicd.daemon')
- def SetNeedWiredProfileChooser(self,val):
+ def SetNeedWiredProfileChooser(self, val):
""" Sets the need_wired_profile_chooser variable.
If set to True, that alerts the wicd frontend to display the chooser,
@@ -455,7 +461,7 @@ class ConnectionWizard(dbus.service.Object):
#end function GetForcedDisconnect
@dbus.service.method('org.wicd.daemon')
- def SetForcedDisconnect(self,value):
+ def SetForcedDisconnect(self, value):
'''
Set to True when a user manually disconnects or cancels a connection.
@@ -486,27 +492,68 @@ class ConnectionWizard(dbus.service.Object):
def SetGUIOpen(self, val):
""" Sets the value of gui_open. """
self.gui_open = bool(val)
+
+ @dbus.service.method('org.wicd.daemon')
+ def SetConnectionStatus(self, state, info):
+ """ Sets the connection status.
+
+ Keyword arguments:
+ state - An int representing the state of the connection as defined
+ in misc.py.
+
+ info - a list of strings containing data about the connection state.
+ The contents of this list are dependent on the connection state.
+
+ state - info contents:
+ NOT_CONNECTED - info[0] = ""
+ CONNECTING - info[0] = "wired" or "wireless"
+ info[1] = None for wired, essid for wireless
+ WIRED - info[0] = IP Adresss
+ WIRELESS - info[0] = IP Address
+ info[1] = essid
+ info[2] = signal strength
+ info[3] = internal networkid
+
+
+ """
+ self.connection_state = state
+ self.connection_info = info
+
+ @dbus.service.method('org.wicd.daemon', out_signature='(uas)')
+ def GetConnectionStatus(self):
+ return [self.connection_state, self.connection_info]
@dbus.service.method('org.wicd.daemon')
def GetNeedWiredProfileChooser(self):
+ """ Returns need_profile_chooser
+
+ Returns a boolean specifying if the wired profile chooser needs to
+ be launched.
+
+ """
return bool(self.need_profile_chooser)
#end function GetNeedWiredProfileChooser
@dbus.service.signal(dbus_interface='org.wicd.daemon', signature='')
def LaunchChooser(self):
+ """ Emits the wired profile chooser dbus signal. """
print 'calling wired profile chooser'
self.SetNeedWiredProfileChooser(True)
- @dbus.service.signal(dbus_interface='org.wicd.daemon', signature='')
- def StatusChanged(self):
- """ Called when the current connection status has changed """
+ @dbus.service.signal(dbus_interface='org.wicd.daemon', signature='uav')
+ def StatusChanged(self, state, info):
+ """ Emits a "status changed" dbus signal.
+
+ This D-Bus signal is emitted when the connection status changes.
+
+ """
pass
########## WIRELESS FUNCTIONS
#################################
@dbus.service.method('org.wicd.daemon.wireless')
- def SetHiddenNetworkESSID(self,essid):
+ def SetHiddenNetworkESSID(self, essid):
'''sets the ESSID of a hidden network for use with ConnectionWizard.Scan'''
print 'setting hidden essid: ' + str(essid)
self.hidden_essid = str(misc.Noneify(essid))
@@ -518,42 +565,10 @@ class ConnectionWizard(dbus.service.Object):
scan = self.wifi.Scan(str(self.hidden_essid))
self.LastScan = scan
print 'scanning done'
- print 'found',str(len(scan)),'networks:',
+ print 'found', str(len(scan)), 'networks:',
for i, network in enumerate(scan):
self.ReadWirelessNetworkProfile(i)
- # This is unfinished so not on dbus yet
- def AutoConnectScan(self):
- ''' Scan for networks and for known hidden networks
-
- Scans for wireless networks and also for hidden networks defined in
- wireless-settings.conf
-
- '''
- hidden_network_list = self.GetHiddenNetworkList()
- master_scan = self.Scan()
-
- if hidden_network_list is None:
- return
- else:
- # If we find hidden networks, run a scan for each one found,
- # parsing out the hidden network info if it's in the scan
- # results, and appending it to a master scan list
- for hidden_network in hidden_network_list:
- print 'Scanning for hidden network:', hidden_network
- self.SetHiddenESSID(hidden_network['essid'])
- temp_scan = self.Scan()
- for i, network in enumerate(temp_scan):
- print 'Searching scan results for ' + hidden_network['essid']
- # Make sure both the essid and bssid match
- if temp_scan[i]['essid'] == hidden_network['essid'] and \
- temp_scan[i]['bssid'] == hidden_network['bssid']:
- print 'Hidden network found, adding to master list'
- master_scan[len(master_scan)] = temp_scan[i]
- # Break once the network is found
- break
- self.LastScan = master_scan
-
@dbus.service.method('org.wicd.daemon.wireless')
def GetIwconfig(self):
""" Calls and returns the output of iwconfig"""
@@ -562,15 +577,17 @@ class ConnectionWizard(dbus.service.Object):
@dbus.service.method('org.wicd.daemon.wireless')
def GetNumberOfNetworks(self):
'''returns number of networks'''
- print 'returned number of networks...',len(self.LastScan)
+ print 'returned number of networks...', len(self.LastScan)
return len(self.LastScan)
#end function GetNumberOfNetworks
@dbus.service.method('org.wicd.daemon.wireless')
- def CreateAdHocNetwork(self,essid,channel,ip,enctype,key,encused,ics):
- '''creates an ad-hoc network using user inputted settings'''
+ def CreateAdHocNetwork(self, essid, channel, ip, enctype, key, encused,
+ ics):
+ ''' creates an ad-hoc network using user inputted settings '''
print 'attempting to create ad-hoc network...'
- self.wifi.CreateAdHocNetwork(essid,channel,ip,enctype,key,encused,ics)
+ self.wifi.CreateAdHocNetwork(essid, channel, ip, enctype, key, encused,
+ ics)
#end function CreateAdHocNetwork
@dbus.service.method('org.wicd.daemon.wireless')
@@ -580,7 +597,7 @@ class ConnectionWizard(dbus.service.Object):
return status
@dbus.service.method('org.wicd.daemon.wireless')
- def GetWirelessProperty(self,networkid,property):
+ def GetWirelessProperty(self, networkid, property):
''' Retrieves wireless property from the network specified '''
value = self.LastScan[networkid].get(property)
try:
@@ -589,21 +606,22 @@ class ConnectionWizard(dbus.service.Object):
pass
#if self.debug_mode == 1:
#return type instead of value for security
- #print ('returned wireless network',networkid,'property',
- # property,'of type',type(value))
+ #print ('returned wireless network', networkid, 'property',
+ # property, 'of type', type(value))
return value
#end function GetWirelessProperty
@dbus.service.method('org.wicd.daemon.wireless')
- def SetWirelessProperty(self,networkid,property,value):
+ def SetWirelessProperty(self, networkid, property, value):
''' Sets property to value in network specified '''
#simple - set the value of the item in our current data
#to the value the client asked for
if (property.strip()).endswith("script"):
- print "Setting script properties through the daemon \
- is not permitted."
- return False
- print 'setting wireless network',networkid,'property',property,'to value',value
+ print "Setting script properties through the daemon is not \
+ permitted."
+ return False
+ print 'setting wireless network', networkid, 'property', property,
+ 'to value', value
self.LastScan[networkid][property] = misc.Noneify(value)
#end function SetProperty
@@ -611,7 +629,7 @@ class ConnectionWizard(dbus.service.Object):
def DetectWirelessInterface(self):
''' Returns an automatically detected wireless interface '''
iface = self.wifi.DetectWirelessInterface()
- print 'automatically detected wireless interface',iface
+ print 'automatically detected wireless interface', iface
return str(iface)
#end function DetectWirelessInterface
@@ -628,7 +646,7 @@ class ConnectionWizard(dbus.service.Object):
if self.GetSignalDisplayType() == 0:
return self.GetCurrentSignalStrength(iwconfig)
else:
- return GetCurrentDBMStrength(iwconfig)
+ return self.GetCurrentDBMStrength(iwconfig)
@dbus.service.method('org.wicd.daemon.wireless')
def GetCurrentSignalStrength(self, iwconfig=None):
@@ -660,7 +678,7 @@ class ConnectionWizard(dbus.service.Object):
def GetCurrentNetworkID(self, iwconfig=None):
'''returns the id of the current network, or -1 if network is not found'''
currentESSID = self.GetCurrentNetwork(iwconfig)
- for x in xrange(0,len(self.LastScan)):
+ for x in xrange(0, len(self.LastScan)):
if self.LastScan[x]['essid'] == currentESSID:
return x
print 'returning -1, current network not found'
@@ -674,10 +692,11 @@ class ConnectionWizard(dbus.service.Object):
# CheckIfWirelessConnecting can be used to test if the connection
# is done.
self.SetForcedDisconnect(False)
- self.wifi.before_script = self.GetWirelessProperty(id,'beforescript')
- self.wifi.after_script = self.GetWirelessProperty(id,'afterscript')
- self.wifi.disconnect_script = self.GetWirelessProperty(id,'disconnectscript')
- print 'connecting to wireless network',self.LastScan[id]['essid']
+ self.wifi.before_script = self.GetWirelessProperty(id, 'beforescript')
+ self.wifi.after_script = self.GetWirelessProperty(id, 'afterscript')
+ self.wifi.disconnect_script = self.GetWirelessProperty(id,
+ 'disconnectscript')
+ print 'connecting to wireless network', self.LastScan[id]['essid']
return self.wifi.Connect(self.LastScan[id])
#end function Connect
@@ -689,11 +708,11 @@ class ConnectionWizard(dbus.service.Object):
# status, if it doesn't, we aren't connecting.
status = self.wifi.connecting_thread.is_connecting
if self.debug_mode == 1:
- print 'wireless connecting',status
+ print 'wireless connecting', status
return status
else:
if self.debug_mode == 1:
- print 'wireless connecting',False
+ print 'wireless connecting', False
return False
#end function CheckIfWirelessConnecting
@@ -702,7 +721,7 @@ class ConnectionWizard(dbus.service.Object):
''' Returns the IP that the wireless interface has '''
ip = self.wifi.GetIP()
if self.debug_mode == 1:
- print 'returning wireless ip',ip
+ print 'returning wireless ip', ip
return ip
#end function GetWirelessIP
@@ -724,7 +743,7 @@ class ConnectionWizard(dbus.service.Object):
'''returns the wired interface\'s ip address'''
ip = self.wired.GetIP()
if self.debug_mode == 1:
- print 'returning wired ip',ip
+ print 'returning wired ip', ip
return ip
#end function GetWiredIP
@@ -736,25 +755,25 @@ class ConnectionWizard(dbus.service.Object):
#status, if it doesn't exist, we aren't connecting
status = self.wired.connecting_thread.is_connecting
if self.debug_mode == 1:
- print 'wired connecting',status
+ print 'wired connecting', status
return status
else:
if self.debug_mode == 1:
- print 'wired connecting',False
+ print 'wired connecting', False
return False
#end function CheckIfWiredConnecting
@dbus.service.method('org.wicd.daemon.wired')
- def SetWiredAutoConnectMethod(self,method):
+ def SetWiredAutoConnectMethod(self, method):
'''sets which method the user wants to autoconnect to wired networks'''
# 1 = default profile
# 2 = show list
# 3 = last used profile
- print 'wired autoconnection method is',method
+ print 'wired autoconnection method is', method
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","wired_connect_mode",int(method))
- config.write(open(self.app_conf,"w"))
+ config.set("Settings","wired_connect_mode", int(method))
+ config.write(open(self.app_conf, "w"))
self.wired_connect_mode = int(method)
@dbus.service.method('org.wicd.daemon.wired')
@@ -774,7 +793,7 @@ class ConnectionWizard(dbus.service.Object):
#end function CheckWiredConnectingMessage
@dbus.service.method('org.wicd.daemon.wired')
- def SetWiredProperty(self,property,value):
+ def SetWiredProperty(self, property, value):
if self.WiredNetwork:
if (property.strip()).endswith("script"):
print "Setting script properties through the daemon \
@@ -782,7 +801,7 @@ class ConnectionWizard(dbus.service.Object):
return False
self.WiredNetwork[property] = misc.Noneify(value)
if self.debug_mode == 1:
- print 'set',property,'to',misc.Noneify(value)
+ print 'set', property, 'to', misc.Noneify(value)
return True
else:
print 'WiredNetwork does not exist'
@@ -790,11 +809,12 @@ class ConnectionWizard(dbus.service.Object):
#end function SetWiredProperty
@dbus.service.method('org.wicd.daemon.wired')
- def GetWiredProperty(self,property):
+ def GetWiredProperty(self, property):
+ """ Returns the requested wired property. """
if self.WiredNetwork:
value = self.WiredNetwork.get(property)
if self.debug_mode == 1:
- print 'returned',property,'with value of',value,'to client...'
+ print 'returned', property, 'with value of', value, 'to client'
return value
else:
print 'WiredNetwork does not exist'
@@ -802,27 +822,29 @@ class ConnectionWizard(dbus.service.Object):
#end function GetWiredProperty
@dbus.service.method('org.wicd.daemon.wired')
- def SetAlwaysShowWiredInterface(self,value):
+ def SetAlwaysShowWiredInterface(self, value):
print 'Setting always show wired interface'
config = ConfigParser.ConfigParser()
config.read(self.app_conf)
- config.set("Settings","always_show_wired_interface",misc.to_bool(value))
- config.write(open(self.app_conf,"w"))
+ config.set("Settings", "always_show_wired_interface",
+ misc.to_bool(value))
+ config.write(open(self.app_conf, "w"))
self.always_show_wired_interface = misc.to_bool(value)
#end function SetAlwaysShowWiredInterface
@dbus.service.method('org.wicd.daemon.wired')
def GetAlwaysShowWiredInterface(self):
do = bool(self.always_show_wired_interface)
- return self.__printReturn('returning always show wired interface',do)
+ return self.__printReturn('returning always show wired interface', do)
#end function GetAlwaysShowWiredInterface
@dbus.service.method('org.wicd.daemon.wired')
def CheckPluggedIn(self):
if self.wired.wired_interface and self.wired.wired_interface != "None":
- return self.__printReturn('returning plugged in',self.wired.CheckPluggedIn())
+ return self.__printReturn('returning plugged in',
+ self.wired.CheckPluggedIn())
else:
- return self.__printReturn("returning plugged in",None)
+ return self.__printReturn("returning plugged in", None)
#end function CheckPluggedIn
@dbus.service.method('org.wicd.daemon.wired')
@@ -850,9 +872,9 @@ class ConnectionWizard(dbus.service.Object):
#################################
@dbus.service.method('org.wicd.daemon.config')
- def CreateWiredNetworkProfile(self,profilename):
+ def CreateWiredNetworkProfile(self, profilename):
''' Creates a wired network profile '''
- #should include: profilename,ip,netmask,gateway,dns1,dns2,dns3
+ #should include: profilename, ip, netmask, gateway, dns1, dns2, dns3
profilename = profilename.encode('utf-8')
print "creating profile for " + profilename
config = ConfigParser.ConfigParser()
@@ -860,18 +882,18 @@ class ConnectionWizard(dbus.service.Object):
if config.has_section(profilename):
return False
config.add_section(profilename)
- config.set(profilename,"ip",None)
- config.set(profilename,"broadcast",None)
- config.set(profilename,"netmask",None)
- config.set(profilename,"gateway",None)
- config.set(profilename,"dns1",None)
- config.set(profilename,"dns2",None)
- config.set(profilename,"dns3",None)
- config.set(profilename,"beforescript",None)
- config.set(profilename,"afterscript",None)
- config.set(profilename,"disconnectscript",None)
- config.set(profilename,"default",False)
- config.write( open(self.wired_conf,"w"))
+ config.set(profilename, "ip", None)
+ config.set(profilename, "broadcast", None)
+ config.set(profilename, "netmask", None)
+ config.set(profilename, "gateway", None)
+ config.set(profilename, "dns1", None)
+ config.set(profilename, "dns2", None)
+ config.set(profilename, "dns3", None)
+ config.set(profilename, "beforescript", None)
+ config.set(profilename, "afterscript", None)
+ config.set(profilename, "disconnectscript", None)
+ config.set(profilename, "default", False)
+ config.write(open(self.wired_conf, "w"))
return True
#end function CreateWiredNetworkProfile
@@ -881,13 +903,13 @@ class ConnectionWizard(dbus.service.Object):
config = ConfigParser.ConfigParser()
config.read(self.wired_conf)
profileList = config.sections()
- print "profileList = ",profileList
+ print "profileList = ", profileList
for profile in profileList:
print "profile = ", profile
if config.has_option(profile,"lastused"):
- if config.get(profile,"lastused") == "True":
+ if config.get(profile, "lastused") == "True":
print "removing existing lastused"
- config.set(profile,"lastused", False)
+ config.set(profile, "lastused", False)
self.SaveWiredNetworkProfile(profile)
#end function UnsetWiredLastUsed
@@ -897,13 +919,13 @@ class ConnectionWizard(dbus.service.Object):
config = ConfigParser.ConfigParser()
config.read(self.wired_conf)
profileList = config.sections()
- print "profileList = ",profileList
+ print "profileList = ", profileList
for profile in profileList:
print "profile = ", profile
- if config.has_option(profile,"default"):
- if config.get(profile,"default") == "True":
+ if config.has_option(profile, "default"):
+ if config.get(profile, "default") == "True":
print "removing existing default"
- config.set(profile,"default", False)
+ config.set(profile, "default", False)
self.SaveWiredNetworkProfile(profile)
#end function UnsetWiredDefault
@@ -914,8 +936,8 @@ class ConnectionWizard(dbus.service.Object):
config.read(self.wired_conf)
profileList = config.sections()
for profile in profileList:
- if config.has_option(profile,"default"):
- if config.get(profile,"default") == "True":
+ if config.has_option(profile, "default"):
+ if config.get(profile, "default") == "True":
return profile
return None
@@ -931,7 +953,7 @@ class ConnectionWizard(dbus.service.Object):
return None
@dbus.service.method('org.wicd.daemon.config')
- def DeleteWiredNetworkProfile(self,profilename):
+ def DeleteWiredNetworkProfile(self, profilename):
''' Deletes a wired network profile '''
profilename = profilename.encode('utf-8')
print "deleting profile for " + str(profilename)
@@ -941,12 +963,12 @@ class ConnectionWizard(dbus.service.Object):
config.remove_section(profilename)
else:
return "500: Profile does not exist"
- config.write( open(self.wired_conf,"w"))
+ config.write(open(self.wired_conf, "w"))
return "100: Profile Deleted"
#end function DeleteWiredNetworkProfile
@dbus.service.method('org.wicd.daemon.config')
- def SaveWiredNetworkProfile(self,profilename):
+ def SaveWiredNetworkProfile(self, profilename):
''' Writes a wired network profile to disk '''
#should include: profilename,ip,netmask,gateway,dns1,dns2
profilename = misc.to_unicode(profilename)
@@ -957,13 +979,13 @@ class ConnectionWizard(dbus.service.Object):
config.remove_section(profilename)
config.add_section(profilename)
for x in self.WiredNetwork:
- config.set(profilename,x,self.WiredNetwork[x])
- config.write( open(self.wired_conf,"w"))
+ config.set(profilename, x, self.WiredNetwork[x])
+ config.write(open(self.wired_conf, "w"))
return "100: Profile Written"
#end function SaveWiredNetworkProfile
@dbus.service.method('org.wicd.daemon.config')
- def ReadWiredNetworkProfile(self,profilename):
+ def ReadWiredNetworkProfile(self, profilename):
''' Reads a wired network profile in as the currently active profile '''
profile = {}
profilename = misc.to_unicode(profilename)
@@ -971,7 +993,7 @@ class ConnectionWizard(dbus.service.Object):
config.read(self.wired_conf)
if config.has_section(profilename) == True:
for x in config.options(profilename):
- profile[x] = misc.Noneify(config.get(profilename,x))
+ profile[x] = misc.Noneify(config.get(profilename, x))
profile['use_global_dns'] = bool(profile.get('use_global_dns'))
profile['use_static_dns'] = bool(profile.get('use_static_dns'))
self.WiredNetwork = profile
@@ -994,7 +1016,7 @@ class ConnectionWizard(dbus.service.Object):
#end function GetWiredProfileList
@dbus.service.method('org.wicd.daemon.config')
- def SaveWirelessNetworkProfile(self,id):
+ def SaveWirelessNetworkProfile(self, id):
''' Writes a wireless profile to disk '''
print "setting network profile"
config = ConfigParser.ConfigParser()
@@ -1006,11 +1028,11 @@ class ConnectionWizard(dbus.service.Object):
#out which network is which. it will not be read
for x in self.LastScan[id]:
config.set(self.LastScan[id]["bssid"], x, self.LastScan[id][x])
- config.write(open(self.wireless_conf,"w"))
+ config.write(open(self.wireless_conf, "w"))
#end function SaveWirelessNetworkProfile
@dbus.service.method('org.wicd.daemon.config')
- def SaveWirelessNetworkProperty(self,id,option):
+ def SaveWirelessNetworkProperty(self, id, option):
''' Writes a particular wireless property to disk '''
if (option.strip()).endswith("script"):
print 'you cannot save script information to disk through the daemon.'
@@ -1019,12 +1041,13 @@ class ConnectionWizard(dbus.service.Object):
config = ConfigParser.ConfigParser()
config.read(self.wireless_conf)
if config.has_section(self.LastScan[id]["bssid"]):
- config.set(self.LastScan[id]["bssid"],option,str(self.LastScan[id][option]))
- config.write(open(self.wireless_conf,"w"))
+ config.set(self.LastScan[id]["bssid"], option,
+ str(self.LastScan[id][option]))
+ config.write(open(self.wireless_conf, "w"))
#end function SaveWirelessNetworkProperty
@dbus.service.method('org.wicd.daemon.config')
- def ReadWirelessNetworkProfile(self,id):
+ def ReadWirelessNetworkProfile(self, id):
''' Reads in wireless profile as the active network '''
config = ConfigParser.ConfigParser()
config.read(self.wireless_conf)
@@ -1094,10 +1117,10 @@ class ConnectionWizard(dbus.service.Object):
# then be SURE YOU CHANGE IT #
#############################################
- def __printReturn(self,text,value):
+ def __printReturn(self, text, value):
'''prints the specified text and value, then returns the value'''
if self.debug_mode == 1:
- print text,value
+ print text, value
return value
#end function __printReturn
@@ -1122,7 +1145,7 @@ class ConnectionWizard(dbus.service.Object):
return ret
def ReadConfig(self):
- if os.path.isfile( self.app_conf ):
+ if os.path.isfile(self.app_conf):
iface = self.DetectWirelessInterface()
if not iface:
iface = "wlan0"
@@ -1143,7 +1166,8 @@ class ConnectionWizard(dbus.service.Object):
dns1 = self.get_option("Settings", "global_dns_1", default='None')
dns2 = self.get_option("Settings", "global_dns_2", default='None')
dns3 = self.get_option("Settings", "global_dns_3", default='None')
- self.SetGlobalDNS(dns1,dns2,dns3)
+ self.SetGlobalDNS(dns1, dns2, dns3)
+
self.SetAutoReconnect(self.get_option("Settings", "auto_reconnect",
default=False))
self.SetDebugMode(self.get_option("Settings", "debug_mode",
@@ -1174,7 +1198,7 @@ class ConnectionWizard(dbus.service.Object):
config.set("Settings", "dns3", "None")
iface = self.DetectWirelessInterface()
if iface is not None:
- config.set("Settings","wireless_interface", iface)
+ config.set("Settings", "wireless_interface", iface)
else:
print "couldn't detect a wireless interface, using wlan0..."
config.set("Settings", "wireless_interface", "wlan0")
@@ -1194,23 +1218,23 @@ class ConnectionWizard(dbus.service.Object):
self.SetUseGlobalDNS(False)
self.SetGlobalDNS(None, None, None)
- if os.path.isfile( self.wireless_conf ):
+ if os.path.isfile(self.wireless_conf):
print "wireless configuration file found..."
# Don't do anything since it is there
pass
else:
# We don't need to put anything in it, so just make it
print "wireless configuration file not found, creating..."
- open( self.wireless_conf, "w" ).close()
+ open(self.wireless_conf, "w").close()
- if os.path.isfile( self.wired_conf ):
+ if os.path.isfile(self.wired_conf):
print "wired configuration file found..."
# Don't do anything since it is there
pass
else:
print "wired configuration file not found, creating a default..."
# Create the file and a default profile
- open( self.wired_conf, "w" ).close()
+ open(self.wired_conf, "w").close()
self.CreateWiredNetworkProfile("wired-default")
# Hide the files, so the keys aren't exposed.
@@ -1225,14 +1249,14 @@ class ConnectionWizard(dbus.service.Object):
os.chown(self.wireless_conf, 0, 0)
os.chown(self.wired_conf, 0, 0)
- print "autodetected wireless interface...",self.DetectWirelessInterface()
- print "using wireless interface...",self.GetWirelessInterface()[5:]
+ print "autodetected wireless interface...", self.DetectWirelessInterface()
+ print "using wireless interface...", self.GetWirelessInterface()[5:]
class ConnectionStatus():
""" Class for monitoring the computer's connection status. """
def __init__(self, connection):
- """Initialize variables needed for the connection status methods."""
+ """ Initialize variables needed for the connection status methods. """
self.last_strength = -2
self.still_wired = False
self.network = ''
@@ -1240,6 +1264,7 @@ class ConnectionStatus():
self.connection_lost_counter = 0
self.conn = connection
self.status_changed = False
+ self.state = 0
def check_for_wired_connection(self, wired_ip):
""" Checks for an active wired connection.
@@ -1255,6 +1280,7 @@ class ConnectionStatus():
conn.SetCurrentInterface(conn.GetWiredInterface())
self.still_wired = True
self.status_changed = True
+ self.state = misc.WIRED
return True
# Wired connection isn't active
self.still_wired = False
@@ -1269,7 +1295,7 @@ class ConnectionStatus():
"""
conn = self.conn
-
+
# Make sure we have an IP before we do anything else.
if wireless_ip is None:
return False
@@ -1305,8 +1331,9 @@ class ConnectionStatus():
self.network != conn.GetCurrentNetwork(self.iwconfig)):
self.last_strength = wifi_signal
self.status_changed = True
- conn.SetCurrentInterface(conn.GetWirelessInterface())
-
+ conn.SetCurrentInterface(conn.GetWirelessInterface())
+ self.state = misc.WIRELESS
+
return True
def update_connection_status(self):
@@ -1323,6 +1350,7 @@ class ConnectionStatus():
print "Suspended."
return True
+ # Determine what our current state is.
self.iwconfig = conn.GetIwconfig()
wired_ip = conn.GetWiredIP()
wired_found = self.check_for_wired_connection(wired_ip)
@@ -1332,13 +1360,34 @@ class ConnectionStatus():
wireless_found = self.check_for_wireless_connection(wifi_ip)
if not wireless_found: # No connection at all
if not conn.CheckIfConnecting():
+ self.state = misc.NOT_CONNECTED
self.auto_reconnect()
else:
+ self.state = misc.CONNECTING
self.status_changed = True
+
+ # Set our connection state/info.
+ if self.state == misc.NOT_CONNECTED:
+ info = [""]
+ elif self.state == misc.CONNECTING:
+ if conn.CheckIfWiredConnecting():
+ info = ["wired"]
+ else:
+ info = ["wireless", conn.GetCurrentNetwork(self.iwconfig)]
+ elif self.state == misc.WIRELESS:
+ info = [wifi_ip, conn.GetCurrentNetwork(self.iwconfig),
+ str(conn.GetPrintableSignalStrength(self.iwconfig)),
+ str(conn.GetCurrentNetworkID(self.iwconfig))]
+ elif self.state == misc.WIRED:
+ info = [wired_ip]
+ else:
+ print 'ERROR: Invalid state!'
+ return True
+ conn.SetConnectionStatus(self.state, info)
# Send a D-Bus signal announcing status has changed if necessary.
if self.status_changed:
- conn.StatusChanged()
+ conn.StatusChanged(self.state, info)
self.status_changed = False
return True
diff --git a/data/wicd.glade b/data/wicd.glade
index 0214ca8..81370cb 100644
--- a/data/wicd.glade
+++ b/data/wicd.glade
@@ -380,4 +380,397 @@
+
+ 465
+ 525
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+ Wicd Preferences
+ GTK_WIN_POS_CENTER_ON_PARENT
+ GDK_WINDOW_TYPE_HINT_DIALOG
+ False
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ 5
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 75
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ WPA Supplicant Driver:
+
+
+
+
+
+
+
+ False
+ False
+ 1
+ 1
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 260
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Wireless Interface:
+
+
+
+
+ 200
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ False
+ 2
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 260
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Wired Interface:
+
+
+
+
+ 200
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ False
+ 3
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Use global DNS servers
+ 0
+ True
+
+
+ False
+ 4
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 170
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ DNS 1
+
+
+ False
+ False
+
+
+
+
+ 200
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ False
+ 5
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 170
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ DNS 2
+
+
+ False
+ False
+
+
+
+
+ 200
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ False
+ 6
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ 170
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ DNS 3
+
+
+ False
+ False
+
+
+
+
+ 200
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ False
+ 1
+
+
+
+
+ False
+ 7
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Always show wired interface
+ 0
+ True
+
+
+ False
+ False
+ 8
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Automatically reconnect on connection loss
+ 0
+ True
+
+
+ False
+ False
+ 9
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Enable Debug Mode
+ 0
+ True
+
+
+ False
+ False
+ 10
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Use dBm to measure signal strength
+ 0
+ True
+
+
+ False
+ False
+ 11
+
+
+
+
+ 2
+ 8
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+
+
+ False
+ 12
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Wired Autoconnect Setting:
+ True
+
+
+ False
+ False
+ 13
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Use default profile on wired autoconnect
+ 0
+ True
+ True
+
+
+ False
+ 14
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Prompt for profile on wired autoconnect
+ 0
+ True
+ True
+ pref_use_def_radio
+
+
+ False
+ 15
+
+
+
+
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ Use last profile on wired autoconnect
+ 0
+ True
+ True
+ pref_use_def_radio
+
+
+ False
+ 16
+
+
+
+
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ GTK_BUTTONBOX_END
+
+
+ True
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ gtk-ok
+ True
+ 1
+
+
+
+
+ True
+ True
+ True
+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
+ gtk-cancel
+ True
+ 2
+
+
+ 1
+
+
+
+
+ False
+ GTK_PACK_END
+
+
+
+
+
diff --git a/gui.py b/gui.py
index bf40e92..8ce014a 100644
--- a/gui.py
+++ b/gui.py
@@ -1,5 +1,12 @@
#!/usr/bin/python
+""" Wicd GUI module.
+
+Module containg all the code (other than the tray icon) related to the
+Wicd user interface.
+
+"""
+
#
# Copyright (C) 2007 Adam Blackburn
# Copyright (C) 2007 Dan O'Reilly
@@ -667,7 +674,8 @@ class WiredNetworkEntry(NetworkEntry):
print 'unsetting previous default profile...'
# Make sure there is only one default profile at a time
config.UnsetWiredDefault()
- wired.SetWiredProperty("default",self.checkboxDefaultProfile.get_active())
+ wired.SetWiredProperty("default",
+ self.checkboxDefaultProfile.get_active())
config.SaveWiredNetworkProfile(self.comboProfileNames.get_active_text())
def changeProfile(self,widget):
@@ -940,10 +948,8 @@ class appGui:
probar = self.wTree.get_widget("progressbar")
probar.set_text(language['connecting'])
- # self.entry.set_visibility(False)
- # probar.set_visiblity(False)
+
self.window = self.wTree.get_widget("window1")
-
self.network_list = self.wTree.get_widget("network_list_vbox")
self.status_area = self.wTree.get_widget("connecting_hbox")
self.status_bar = self.wTree.get_widget("statusbar")
@@ -951,8 +957,8 @@ class appGui:
self.status_area.hide_all()
- self.statusID = None
-
+ self.statusID = None
+ self.first_dialog_load = False
self.vpn_connection_pipe = None
self.is_visible = True
@@ -986,7 +992,8 @@ class appGui:
useICSCheckbox = gtk.CheckButton(language['use_ics'])
- self.useEncryptionCheckbox.connect("toggled",self.toggleEncryptionCheck)
+ self.useEncryptionCheckbox.connect("toggled",
+ self.toggleEncryptionCheck)
channelEntry.entry.set_text('3')
essidEntry.entry.set_text('My_Adhoc_Network')
ipEntry.entry.set_text('169.254.12.10') #Just a random IP
@@ -1032,123 +1039,115 @@ class appGui:
def settings_dialog(self,widget,event=None):
""" Displays a general settings dialog. """
- dialog = gtk.Dialog(title=language['preferences'],
- flags=gtk.DIALOG_MODAL,
- buttons=(gtk.STOCK_OK,1,gtk.STOCK_CANCEL,2))
- dialog.set_has_separator(False)
- dialog.set_size_request(465,-1)
- wiredcheckbox = gtk.CheckButton(language['wired_always_on'])
+ dialog = self.wTree.get_widget("pref_dialog")
+ dialog.set_title(language['preferences'])
+ wiredcheckbox = self.wTree.get_widget("pref_always_check")
+ wiredcheckbox.set_label(language['wired_always_on'])
wiredcheckbox.set_active(wired.GetAlwaysShowWiredInterface())
- reconnectcheckbox = gtk.CheckButton(language['auto_reconnect'])
+
+ reconnectcheckbox = self.wTree.get_widget("pref_auto_check")
+ reconnectcheckbox.set_label(language['auto_reconnect'])
reconnectcheckbox.set_active(daemon.GetAutoReconnect())
- debugmodecheckbox = gtk.CheckButton(language['use_debug_mode'])
+
+ debugmodecheckbox = self.wTree.get_widget("pref_debug_check")
+ debugmodecheckbox.set_label(language['use_debug_mode'])
debugmodecheckbox.set_active(daemon.GetDebugMode())
- displaytypecheckbox = gtk.CheckButton(language['display_type_dialog'])
+
+ displaytypecheckbox = self.wTree.get_widget("pref_dbm_check")
+ displaytypecheckbox.set_label(language['display_type_dialog'])
displaytypecheckbox.set_active(daemon.GetSignalDisplayType())
- sepline = gtk.HSeparator()
- usedefaultradiobutton = gtk.RadioButton(None,
- language['use_default_profile'],
- False)
- showlistradiobutton = gtk.RadioButton(usedefaultradiobutton,
- language['show_wired_list'],
- False)
- lastusedradiobutton = gtk.RadioButton(usedefaultradiobutton,
- language['use_last_used_profile'],
- False)
+
+ entryWiredAutoMethod = self.wTree.get_widget("pref_wired_auto_label")
+ entryWiredAutoMethod.set_label('Wired Autoconnect Setting:')
+ usedefaultradiobutton = self.wTree.get_widget("pref_use_def_radio")
+ usedefaultradiobutton.set_label(language['use_default_profile'])
+ showlistradiobutton = self.wTree.get_widget("pref_prompt_radio")
+ showlistradiobutton.set_label(language['show_wired_list'])
+ lastusedradiobutton = self.wTree.get_widget("pref_use_last_radio")
+ lastusedradiobutton.set_label(language['use_last_used_profile'])
+
if wired.GetWiredAutoConnectMethod() == 1:
usedefaultradiobutton.set_active(True)
- print 'use default profile'
elif wired.GetWiredAutoConnectMethod() == 2:
- print 'show list'
showlistradiobutton.set_active(True)
elif wired.GetWiredAutoConnectMethod() == 3:
- print 'use last used profile'
- lastusedradiobutton.set_active(True)
- wpadriverlabel = SmallLabel(language['wpa_supplicant_driver'] + ':')
- wpadriverlabel.set_size_request(75,-1)
+ lastusedradiobutton.set_active(True)
+
+ self.set_label("pref_driver_label", language['wpa_supplicant_driver'] +
+ ':')
+ # Hack to get the combo box we need, which you can't do with glade.
+ if not self.first_dialog_load:
+ self.first_dialog_load = True
+ wpa_hbox = self.wTree.get_widget("hbox_wpa")
wpadrivercombo = gtk.combo_box_new_text()
- wpadrivercombo.set_size_request(50,-1)
- wpadrivers = ["hostap","hermes","madwifi","atmel","wext","ndiswrapper",
- "broadcom","ipw","ralink legacy"]
+ wpa_hbox.pack_end(wpadrivercombo)
+
+ wpadrivers = ["hostap", "hermes", "madwifi", "atmel", "wext",
+ "ndiswrapper", "broadcom", "ipw", "ralink legacy"]
i = 0
found = False
for x in wpadrivers:
- if x == daemon.GetWPADriver() and found == False:
+ if x == daemon.GetWPADriver() and not found:
found = True
- else:
- if found == False:
+ elif not found:
i+=1
wpadrivercombo.append_text(x)
- # Set active here.
- # If we set active an item to active, then add more items
- # it loses the activeness.
+
+ # Set the active choice here. Doing it before all the items are
+ # added the combobox causes the choice to be reset.
wpadrivercombo.set_active(i)
- # Select wext as the default driver, because it works for most cards
- wpabox = gtk.HBox(False,1)
- wpabox.pack_start(wpadriverlabel)
- wpabox.pack_start(wpadrivercombo)
+ if not found:
+ # Use wext as default, since normally it is the correct driver.
+ wpadrivercombo.set_active(4)
- entryWirelessInterface = LabelEntry(language['wireless_interface'] + ':')
- entryWiredInterface = LabelEntry(language['wired_interface'] + ':')
- entryWirelessInterface.label.set_size_request(260,-1)
- entryWiredInterface.label.set_size_request(260,-1)
- entryWiredAutoMethod = gtk.Label('Wired Autoconnect Setting:')
+ self.set_label("pref_wifi_label", language['wireless_interface'] + ':')
+ self.set_label("pref_wired_label", language['wired_interface'] + ':')
- entryWirelessInterface.entry.set_text(daemon.GetWirelessInterface())
- entryWiredInterface.entry.set_text(daemon.GetWiredInterface())
+ entryWirelessInterface = self.wTree.get_widget("pref_wifi_entry")
+ entryWirelessInterface.set_text(daemon.GetWirelessInterface())
- useGlobalDNSCheckbox = gtk.CheckButton(language['use_global_dns'])
- dns1Entry = LabelEntry(language['dns'] + ' ' + language['1'])
- dns2Entry = LabelEntry(language['dns'] + ' ' + language['2'])
- dns3Entry = LabelEntry(language['dns'] + ' ' + language['3'])
+ entryWiredInterface = self.wTree.get_widget("pref_wired_entry")
+ entryWiredInterface.set_text(daemon.GetWiredInterface())
+
+ # Set up global DNS stuff
+ useGlobalDNSCheckbox = self.wTree.get_widget("pref_global_check")
+ useGlobalDNSCheckbox.set_label(language['use_global_dns'])
+
+ dns1Entry = self.wTree.get_widget("pref_dns1_entry")
+ dns2Entry = self.wTree.get_widget("pref_dns2_entry")
+ dns3Entry = self.wTree.get_widget("pref_dns3_entry")
+ self.set_label("pref_dns1_label", language['dns'] + ' ' + language['1'])
+ self.set_label("pref_dns2_label", language['dns'] + ' ' + language['2'])
+ self.set_label("pref_dns3_label", language['dns'] + ' ' + language['3'])
useGlobalDNSCheckbox.connect("toggled", checkboxTextboxToggle,
(dns1Entry, dns2Entry, dns3Entry))
dns_addresses = daemon.GetGlobalDNSAddresses()
-
useGlobalDNSCheckbox.set_active(daemon.GetUseGlobalDNS())
dns1Entry.set_text(noneToBlankString(dns_addresses[0]))
dns2Entry.set_text(noneToBlankString(dns_addresses[1]))
dns3Entry.set_text(noneToBlankString(dns_addresses[2]))
+
if not daemon.GetUseGlobalDNS():
dns1Entry.set_sensitive(False)
dns2Entry.set_sensitive(False)
dns3Entry.set_sensitive(False)
+ # Bold/Align the Wired Autoconnect label.
entryWiredAutoMethod.set_alignment(0,0)
- sepline.set_size_request(2,8)
atrlist = pango.AttrList()
atrlist.insert(pango.AttrWeight(pango.WEIGHT_BOLD,0,50))
entryWiredAutoMethod.set_attributes(atrlist)
-
- dialog.vbox.pack_start(wpabox)
- dialog.vbox.pack_start(entryWirelessInterface)
- dialog.vbox.pack_start(entryWiredInterface)
-
- dialog.vbox.pack_start(useGlobalDNSCheckbox)
- dialog.vbox.pack_start(dns1Entry)
- dialog.vbox.pack_start(dns2Entry)
- dialog.vbox.pack_start(dns3Entry)
-
- dialog.vbox.pack_start(wiredcheckbox)
- dialog.vbox.pack_start(reconnectcheckbox)
- dialog.vbox.pack_start(debugmodecheckbox)
- dialog.vbox.pack_start(displaytypecheckbox)
- dialog.vbox.pack_start(sepline)
- dialog.vbox.pack_start(entryWiredAutoMethod)
- dialog.vbox.pack_start(usedefaultradiobutton)
- dialog.vbox.pack_start(showlistradiobutton)
- dialog.vbox.pack_start(lastusedradiobutton)
- dialog.vbox.set_spacing(5)
dialog.show_all()
response = dialog.run()
if response == 1:
daemon.SetUseGlobalDNS(useGlobalDNSCheckbox.get_active())
- daemon.SetGlobalDNS(dns1Entry.get_text(),dns2Entry.get_text(),dns3Entry.get_text())
- daemon.SetWirelessInterface(entryWirelessInterface.entry.get_text())
- daemon.SetWiredInterface(entryWiredInterface.entry.get_text())
+ daemon.SetGlobalDNS(dns1Entry.get_text(), dns2Entry.get_text(),
+ dns3Entry.get_text())
+ daemon.SetWirelessInterface(entryWirelessInterface.get_text())
+ daemon.SetWiredInterface(entryWiredInterface.get_text())
print "setting: " + wpadrivers[wpadrivercombo.get_active()]
daemon.SetWPADriver(wpadrivers[wpadrivercombo.get_active()])
wired.SetAlwaysShowWiredInterface(wiredcheckbox.get_active())
@@ -1161,10 +1160,11 @@ class appGui:
wired.SetWiredAutoConnectMethod(3)
else:
wired.SetWiredAutoConnectMethod(1)
+ dialog.hide()
- dialog.destroy()
- else:
- dialog.destroy()
+ def set_label(self, glade_str, label):
+ """ Sets the label for the given widget in wicd.glade. """
+ self.wTree.get_widget(glade_str).set_label(label)
def connect_hidden(self,widget):
""" Prompts the user for a hidden network, then scans for it. """
@@ -1199,6 +1199,8 @@ class appGui:
def pulse_progress_bar(self):
""" Pulses the progress bar while connecting to a network. """
+ if not self.is_visible:
+ return True
try:
self.wTree.get_widget("progressbar").pulse()
except:
@@ -1207,63 +1209,81 @@ class appGui:
def update_statusbar(self):
""" Updates the status bar. """
- # Update the status bar every couple hundred milliseconds.
if self.is_visible == False:
return True
+
iwconfig = wireless.GetIwconfig()
wireless_ip = wireless.GetWirelessIP()
wiredConnecting = wired.CheckIfWiredConnecting()
wirelessConnecting = wireless.CheckIfWirelessConnecting()
-
+
if wirelessConnecting or wiredConnecting:
self.network_list.set_sensitive(False)
self.status_area.show_all()
if self.statusID:
- self.status_bar.remove(1,self.statusID)
+ self.status_bar.remove(1, self.statusID)
if wirelessConnecting:
self.set_status(wireless.GetCurrentNetwork(iwconfig) + ': ' +
- language[str(wireless.CheckWirelessConnectingMessage())])
+ language[str(wireless.CheckWirelessConnectingMessage())])
if wiredConnecting:
self.set_status(language['wired_network'] + ': ' +
- language[str(wired.CheckWiredConnectingMessage())])
+ language[str(wired.CheckWiredConnectingMessage())])
else:
self.network_list.set_sensitive(True)
self.status_area.hide_all()
if self.statusID:
- self.status_bar.remove(1,self.statusID)
- #use the chain approach to save calls to external programs
- #external programs are quite CPU intensive
- if wireless_ip:
- network = wireless.GetCurrentNetwork(iwconfig)
- if network:
- strength = wireless.GetCurrentSignalStrength(iwconfig)
- dbm_strength = wireless.GetCurrentDBMStrength(iwconfig)
- if strength is not None and dbm_strength is not None:
- network = str(network)
- if daemon.GetSignalDisplayType() == 0:
- strength = str(strength)
- else:
- strength = str(dbm_strength)
- ip = str(wireless_ip)
- self.set_status(language['connected_to_wireless'].replace
- ('$A',network).replace
- ('$B',daemon.FormatSignalForPrinting(strength)).replace
- ('$C',wireless_ip))
- return True
- wired_ip = wired.GetWiredIP()
- if wired_ip:
- if wired.CheckPluggedIn():
- self.set_status(language['connected_to_wired'].replace('$A',
- wired_ip))
+ self.status_bar.remove(1, self.statusID)
+
+ # Determine connection status.
+ if self.check_for_wireless(iwconfig, wireless_ip):
return True
+
+ wired_ip = wired.GetWiredIP()
+ if self.check_for_wired(wired_ip):
+ return True
+
self.set_status(language['not_connected'])
return True
+
+ def check_for_wired(self, wired_ip):
+ """ Determine if wired is active, and if yes, set the status. """
+ if wired_ip and wired.CheckPluggedIn():
+ self.set_status(language['connected_to_wired'].replace('$A',
+ wired_ip))
+ return True
+ else:
+ return False
+
+ def check_for_wireless(self, iwconfig, wireless_ip):
+ """ Determine if wireless is active, and if yes, set the status. """
+ if not wireless_ip:
+ return False
+
+ network = wireless.GetCurrentNetwork(iwconfig)
+ if not network:
+ return False
+
+ strength = wireless.GetCurrentSignalStrength(iwconfig)
+ dbm_strength = wireless.GetCurrentDBMStrength(iwconfig)
+ if strength is not None and dbm_strength is not None:
+ network = str(network)
+ if daemon.GetSignalDisplayType() == 0:
+ strength = str(strength)
+ else:
+ strength = str(dbm_strength)
+ ip = str(wireless_ip)
+ self.set_status(language['connected_to_wireless'].replace
+ ('$A', network).replace
+ ('$B', daemon.FormatSignalForPrinting(strength)).replace
+ ('$C', wireless_ip))
+ return True
+ return False
def set_status(self, msg):
""" Sets the status bar message for the GUI. """
self.statusID = self.status_bar.push(1, msg)
- def refresh_networks(self,widget=None,fresh=True,hidden=None):
+ def refresh_networks(self, widget=None, fresh=True, hidden=None):
""" Refreshes the network list.
If fresh=True, scans for wireless networks and displays the results.
@@ -1300,7 +1320,7 @@ class appGui:
instructLabel = self.wTree.get_widget("label_instructions")
if num_networks > 0:
instructLabel.show()
- for x in range(0,num_networks):
+ for x in range(0, num_networks):
if printLine:
sep = gtk.HSeparator()
self.network_list.pack_start(sep, padding=10, expand=False,
@@ -1312,7 +1332,7 @@ class appGui:
tempnet.show_all()
self.network_list.pack_start(tempnet, expand=False, fill=False)
tempnet.connectButton.connect("button-press-event",
- self.connect, "wireless", x,
+ self.connect, "wireless", x,
tempnet)
tempnet.expander.advancedButton.connect("button-press-event",
self.edit_advanced,
@@ -1322,7 +1342,7 @@ class appGui:
if wireless.GetKillSwitchEnabled():
label = gtk.Label(language['killswitch_enabled'] + ".")
else:
- label = gtk.Label(language['no_wireless_networks_found'])
+ label = gtk.Label(language['no_wireless_networks_found'])
self.network_list.pack_start(label)
label.show()
@@ -1363,15 +1383,15 @@ class appGui:
wireless.SetWirelessProperty(networkid, "gateway",
noneToString(entry.txtGateway.get_text()))
else:
- #blank the values
- wireless.SetWirelessProperty(networkid,"ip",'')
- wireless.SetWirelessProperty(networkid,"netmask",'')
- wireless.SetWirelessProperty(networkid,"gateway",'')
+ # Blank the values
+ wireless.SetWirelessProperty(networkid, "ip", '')
+ wireless.SetWirelessProperty(networkid, "netmask", '')
+ wireless.SetWirelessProperty(networkid, "gateway", '')
if entry.checkboxStaticDNS.get_active() and \
not entry.checkboxGlobalDNS.get_active():
- wireless.SetWirelessProperty(networkid,'use_static_dns',True)
- wireless.SetWirelessProperty(networkid,'use_global_dns',False)
+ wireless.SetWirelessProperty(networkid, 'use_static_dns', True)
+ wireless.SetWirelessProperty(networkid, 'use_global_dns', False)
wireless.SetWirelessProperty(networkid, 'dns1',
noneToString(entry.txtDNS1.get_text()))
wireless.SetWirelessProperty(networkid, 'dns2',
@@ -1380,8 +1400,8 @@ class appGui:
noneToString(entry.txtDNS3.get_text()))
elif entry.checkboxStaticDNS.get_active() and \
entry.checkboxGlobalDNS.get_active():
- wireless.SetWirelessProperty(networkid,'use_static_dns',True)
- wireless.SetWirelessProperty(networkid,'use_global_dns',True)
+ wireless.SetWirelessProperty(networkid, 'use_static_dns', True)
+ wireless.SetWirelessProperty(networkid, 'use_global_dns', True)
else:
wireless.SetWirelessProperty(networkid, 'use_static_dns', False)
wireless.SetWirelessProperty(networkid, 'use_global_dns', False)
@@ -1397,23 +1417,23 @@ class appGui:
encrypt_methods[entry.comboEncryption.
get_active()][1])
for x in encryptionInfo:
- wireless.SetWirelessProperty(networkid,x,
+ wireless.SetWirelessProperty(networkid, x,
noneToString(encryptionInfo[x].get_text()))
else:
print "no encryption specified..."
wireless.SetWirelessProperty(networkid, "enctype", "None")
-
+
config.SaveWirelessNetworkProfile(networkid)
-
+
elif type == "wired":
if entry.checkboxStaticIP.get_active():
wired.SetWiredProperty("ip", noneToString(entry.txtIP.get_text()))
wired.SetWiredProperty("netmask", noneToString(entry.txtNetmask.get_text()))
wired.SetWiredProperty("gateway", noneToString(entry.txtGateway.get_text()))
else:
- wired.SetWiredProperty("ip",'')
- wired.SetWiredProperty("netmask",'')
- wired.SetWiredProperty("gateway",'')
+ wired.SetWiredProperty("ip", '')
+ wired.SetWiredProperty("netmask", '')
+ wired.SetWiredProperty("gateway", '')
if entry.checkboxStaticDNS.get_active() and \
not entry.checkboxGlobalDNS.get_active():
@@ -1428,9 +1448,9 @@ class appGui:
wireless.SetWiredProperty('use_global_dns', True)
else:
wired.SetWiredProperty('use_static_dns', False)
- wired.SetWiredProperty("dns1",'')
- wired.SetWiredProperty("dns2",'')
- wired.SetWiredProperty("dns3",'')
+ wired.SetWiredProperty("dns1", '')
+ wired.SetWiredProperty("dns2", '')
+ wired.SetWiredProperty("dns3", '')
config.SaveWiredNetworkProfile(entry.comboProfileNames.get_active_text())
return True
@@ -1471,8 +1491,9 @@ class appGui:
else:
return False
return True
-
+
def connect(self, widget, event, type, networkid, networkentry):
+ """ Initiates the connection process in the daemon. """
cancelButton = self.wTree.get_widget("cancel_button")
cancelButton.set_sensitive(True)
@@ -1500,7 +1521,7 @@ class appGui:
while gtk.events_pending():
gtk.main_iteration()
return True
-
+
def show_win(self):
""" Brings the GUI out of the hidden state.
@@ -1513,7 +1534,7 @@ class appGui:
daemon.SetGUIOpen(True)
self.refresh_networks()
-
+
if __name__ == '__main__':
app = appGui()
gtk.main()
diff --git a/misc.py b/misc.py
index 080244c..67e4c20 100644
--- a/misc.py
+++ b/misc.py
@@ -1,7 +1,7 @@
""" Misc - miscellaneous functions for wicd """
#
-# Copyright (C) 2007 Adam Blackburn
+# Copyright (C) 2007 Adam Blackburn
# Copyright (C) 2007 Dan O'Reilly
#
# This program is free software; you can redistribute it and/or modify
@@ -28,6 +28,11 @@ from subprocess import *
if __name__ == '__main__':
wpath.chdir(__file__)
+
+NOT_CONNECTED = 0
+CONNECTING = 1
+WIRELESS = 2
+WIRED = 3
def Run(cmd, include_stderr=False, return_pipe=False):
""" Run a command.
@@ -45,7 +50,7 @@ def Run(cmd, include_stderr=False, return_pipe=False):
one output string from the command.
"""
-
+
cmd = to_unicode(str(cmd))
if include_stderr:
err = STDOUT
@@ -69,7 +74,7 @@ def IsValidIP(ip):
for number in ipNumbers:
if not number.isdigit() or int(number) > 255:
return False
- return ipNumbers
+ return ipNumbers
return False
def PromptToStartDaemon():
@@ -232,7 +237,8 @@ def get_gettext():
# Translation stuff
# borrowed from an excellent post on how to do this on
# http://www.learningpython.com/2006/12/03/translating-your-pythonpygtk-application/
- local_path = os.path.realpath(os.path.dirname(sys.argv[0])) + '/translations'
+ local_path = os.path.realpath(os.path.dirname(sys.argv[0])) + \
+ '/translations'
langs = []
lc, encoding = locale.getdefaultlocale()
if (lc):
@@ -242,7 +248,7 @@ def get_gettext():
langs += osLanguage.split(":")
langs += ["en_US"]
lang = gettext.translation('wicd', local_path, languages=langs,
- fallback = True)
+ fallback=True)
_ = lang.gettext
return _
@@ -252,6 +258,7 @@ def to_unicode(x):
try: # This may never fail, but let's be safe
default_encoding = locale.getpreferredencoding()
except:
+ print 'Could not get default encoding'
default_encoding = None
if default_encoding:
@@ -313,7 +320,7 @@ class LogWriter():
data.replace('\n', '\n' + self.get_time() + ' :: '))
if self.eol: self.file.write('\n')
self.file.close()
-
+
def get_time(self):
""" Return a string with the current time nicely formatted.
diff --git a/wicd.py b/wicd.py
index 17e8e4d..120b9a4 100755
--- a/wicd.py
+++ b/wicd.py
@@ -90,7 +90,7 @@ except Exception:
print 'Success.'
except:
print 'Failed to start daemon. Aborting.'
- sys.exit(1)
+ sys.exit(1)
daemon = dbus.Interface(proxy_obj, 'org.wicd.daemon')
wireless = dbus.Interface(proxy_obj, 'org.wicd.daemon.wireless')
@@ -138,52 +138,46 @@ class TrayIcon():
gui.WiredProfileChooser()
daemon.SetNeedWiredProfileChooser(False)
- def update_tray_icon(self):
+ def update_tray_icon(self, state=None, info=None):
"""Updates the tray icon and current connection status"""
if self.use_tray == False: return False
- iwconfig = wireless.GetIwconfig()
- # If we're currently connecting, we can shortcut all other checks
- if daemon.CheckIfConnecting():
- if wireless.CheckIfWirelessConnecting():
- cur_network = wireless.GetCurrentNetwork(iwconfig)
- else:
- cur_network = language['wired']
- self.tr.set_tooltip(language['connecting'] + " to " +
- cur_network + "...")
- self.tr.set_from_file(wpath.images + "no-signal.png")
- return True
+ if not state or not info:
+ [state, info] = daemon.GetConnectionStatus()
- cur_iface = daemon.GetCurrentInterface()
- wifi_iface = daemon.GetWirelessInterface()
- wire_iface = daemon.GetWiredInterface()
-
- # Check for a wired connection
- if cur_iface == wire_iface:
- wired_ip = wired.GetWiredIP()
+ if state == misc.WIRED:
+ wired_ip = info[0]
self.tr.set_from_file(wpath.images + "wired.png")
- self.tr.set_tooltip(language['connected_to_wired'].
- replace('$A',
- wired_ip))
-
- # Check for a wireless connection
- elif cur_iface == wifi_iface:
- cur_net_id = wireless.GetCurrentNetworkID(iwconfig)
+ self.tr.set_tooltip(language['connected_to_wired'].replace('$A',
+ wired_ip))
+
+ elif state == misc.WIRELESS:
lock = ''
+ wireless_ip = info[0]
+ self.network = info[1]
+ strength = info[2]
+ cur_net_id = int(info[3])
+ sig_string = daemon.FormatSignalForPrinting(str(strength))
+
if wireless.GetWirelessProperty(cur_net_id, "encryption"):
lock = "-lock"
- strength = wireless.GetPrintableSignalStrength(iwconfig)
- self.network = str(wireless.GetCurrentNetwork(iwconfig))
- sig_string = daemon.FormatSignalForPrinting(str(strength))
- wireless_ip = wireless.GetWirelessIP()
+
self.tr.set_tooltip(language['connected_to_wireless']
.replace('$A', self.network)
.replace('$B', sig_string)
.replace('$C', str(wireless_ip)))
self.set_signal_image(strength, lock)
-
- # If we made it here, we don't have a connection
- else:
+
+ elif state == misc.CONNECTING:
+ if info[0] == 'wired' and len(info) == 1:
+ cur_network = language['wired']
+ else:
+ cur_network = info[1]
+ self.tr.set_tooltip(language['connecting'] + " to " +
+ cur_network + "...")
+ self.tr.set_from_file(wpath.images + "no-signal.png")
+
+ elif state == misc.NOT_CONNECTED:
self.tr.set_from_file(wpath.images + "no-signal.png")
if wireless.GetKillSwitchEnabled():
status = (language['not_connected'] + " (" +
@@ -191,6 +185,9 @@ class TrayIcon():
else:
status = language['not_connected']
self.tr.set_tooltip(status)
+ else:
+ print 'Invalid state returned!!!'
+ return False
return True
@@ -217,8 +214,8 @@ class TrayIcon():
img_file = (wpath.images + signal_img + lock + ".png")
self.tr.set_from_file(img_file)
-
-
+
+
class TrayIconGUI():
"""Base Tray Icon class
@@ -254,11 +251,11 @@ class TrayIcon():
self.manager.insert_action_group(actg, 0)
self.manager.add_ui_from_string(menu)
self.menu = (self.manager.get_widget('/Menubar/Menu/About').
- props.parent)
+ props.parent)
self.gui_win = None
self.current_icon_path = None
self.use_tray = use_tray
-
+
def on_activate(self, data=None):
"""Opens the wicd GUI"""
self.toggle_wicd_gui()
@@ -281,13 +278,6 @@ class TrayIcon():
dialog.run()
dialog.destroy()
- def set_from_file(self, path = None):
- """Sets a new tray icon picture"""
- if not self.use_tray: return
- if path != self.current_icon_path:
- self.current_icon_path = path
- gtk.StatusIcon.set_from_file(self, path)
-
def toggle_wicd_gui(self):
"""Toggles the wicd GUI"""
if self.gui_win == None:
@@ -331,12 +321,12 @@ class TrayIcon():
self.toggle_wicd_gui()
if event.button == 3:
self.menu.popup(None, None, None, event.button, event.time)
-
- def set_from_file(self, val):
+
+ def set_from_file(self, val=None):
"""Calls set_from_file on the gtk.Image for the tray icon"""
if not self.use_tray: return
self.pic.set_from_file(val)
-
+
def set_tooltip(self, val):
"""
@@ -371,9 +361,9 @@ class TrayIcon():
self.set_from_file(wpath.images + "no-signal.png")
self.set_tooltip("Initializing wicd...")
- def on_popup_menu(self, status, button, time):
+ def on_popup_menu(self, status, button, timestamp):
"""Opens the right click menu for the tray icon"""
- self.menu.popup(None, None, None, button, time)
+ self.menu.popup(None, None, None, button, timestamp)
def set_from_file(self, path = None):
"""Sets a new tray icon picture"""
@@ -417,21 +407,21 @@ def main(argv):
sys.exit()
elif opt in ('-n', '--no-tray'):
use_tray = False
-
+
# Set up the tray icon GUI and backend
tray_icon = TrayIcon(use_tray)
-
+
# Check to see if wired profile chooser was called before icon
# was launched (typically happens on startup or daemon restart).
if daemon.GetNeedWiredProfileChooser():
daemon.SetNeedWiredProfileChooser(False)
tray_icon.icon_info.wired_profile_chooser()
-
+
bus.add_signal_receiver(tray_icon.icon_info.wired_profile_chooser,
'LaunchChooser', 'org.wicd.daemon')
-
+
bus.add_signal_receiver(tray_icon.icon_info.update_tray_icon,
- 'StatusChanged', 'org.wicd.daemon')
+ 'StatusChanged', 'org.wicd.daemon')
print 'Done.'
mainloop = gobject.MainLoop()
diff --git a/wnettools.py b/wnettools.py
index 275e927..b4e5566 100644
--- a/wnettools.py
+++ b/wnettools.py
@@ -48,7 +48,7 @@ altstrength_pattern = re.compile('.*Signal level:?=? ?(\d\d*)', re.I | re.M | re
signaldbm_pattern = re.compile('.*Signal level:?=? ?(-\d\d*)', re.I | re.M | re.S)
mode_pattern = re.compile('.*Mode:(.*?)\n', re.I | re.M | re.S)
freq_pattern = re.compile('.*Frequency:(.*?)\n', re.I | re.M | re.S)
-ip_pattern = re.compile(r'inet [Aa]d?dr[^.]*:([^.]*\.[^.]*\.[^.]*\.[0-9]*)',re.S)
+ip_pattern = re.compile(r'inet [Aa]d?dr[^.]*:([^.]*\.[^.]*\.[^.]*\.[0-9]*)', re.S)
wep_pattern = re.compile('.*Encryption key:(.*?)\n', re.I | re.M | re.S)
altwpa_pattern = re.compile('(wpa_ie)', re.I | re.M | re.S)
@@ -238,7 +238,7 @@ class Interface(object):
cmd = 'ifconfig ' + self.iface
#if self.verbose: print cmd
output = misc.Run(cmd)
- return misc.RunRegex(ip_pattern,output)
+ return misc.RunRegex(ip_pattern, output)
class WiredInterface(Interface):
@@ -292,8 +292,8 @@ class WiredInterface(Interface):
if line.strip().startswith('UP'):
return True
- return False
-
+ return False
+
class WirelessInterface(Interface):
""" Control a wireless network interface. """
@@ -440,7 +440,7 @@ class WirelessInterface(Interface):
ap['essid'] = misc.RunRegex(essid_pattern, cell)
try:
ap['essid'] = misc.to_unicode(ap['essid'])
- except UnicodeDecodeError, UnicodeEncodeError:
+ except (UnicodeDecodeError, UnicodeEncodeError):
print 'Unicode problem with current network essid, ignoring!!'
return None
if ap['essid'] == '':
@@ -470,20 +470,20 @@ class WirelessInterface(Interface):
ap['encryption'] = True
ap['encryption_method'] = 'WEP'
- if misc.RunRegex(wpa1_pattern,cell) == 'WPA Version 1':
+ if misc.RunRegex(wpa1_pattern, cell) == 'WPA Version 1':
ap['encryption_method'] = 'WPA'
- if misc.RunRegex(altwpa_pattern,cell) == 'wpa_ie':
+ if misc.RunRegex(altwpa_pattern, cell) == 'wpa_ie':
ap['encryption_method'] = 'WPA'
- if misc.RunRegex(wpa2_pattern,cell) == 'WPA2':
+ if misc.RunRegex(wpa2_pattern, cell) == 'WPA2':
ap['encryption_method'] = 'WPA2'
else:
ap['encryption'] = False
# Link Quality
# Set strength to -1 if the quality is not found
-
+
# more of the patch from
# https://bugs.launchpad.net/wicd/+bug/175104
if (strength_pattern.match(cell)):
@@ -493,7 +493,7 @@ class WirelessInterface(Interface):
else:
ap["quality"] = int(strength)
elif misc.RunRegex(altstrength_pattern,cell):
- ap['quality'] = misc.RunRegex(altstrength_pattern,cell)
+ ap['quality'] = misc.RunRegex(altstrength_pattern, cell)
else:
ap['quality'] = -1
@@ -636,7 +636,7 @@ class WirelessInterface(Interface):
result = misc.RunRegex(auth_pattern, output)
if result == "COMPLETED":
return True
- elif result =="DISCONNECTED":
+ elif result == "DISCONNECTED":
# Force a rescan to get wpa_supplicant moving again.
self._ForceSupplicantScan()
return self.ValidateAuthentication()
@@ -726,9 +726,9 @@ class WirelessInterface(Interface):
"""
if not iwconfig:
- cmd = 'iwconfig ' + self.iface
- # if self.verbose: print cmd
- output = misc.Run(cmd)
+ cmd = 'iwconfig ' + self.iface
+ # if self.verbose: print cmd
+ output = misc.Run(cmd)
else:
output = iwconfig
# implemented the patch provided in
@@ -741,9 +741,9 @@ class WirelessInterface(Interface):
[(strength, max_strength)] = strength_pattern.findall(output)
if max_strength and strength:
return 100 * int(strength) / int(max_strength)
-
+
if strength == None:
- strength = misc.RunRegex(altstrength_pattern,output)
+ strength = misc.RunRegex(altstrength_pattern, output)
return strength
@@ -755,12 +755,12 @@ class WirelessInterface(Interface):
"""
if iwconfig:
- cmd = 'iwconfig ' + self.iface
- # if self.verbose: print cmd
- output = misc.Run(cmd)
+ cmd = 'iwconfig ' + self.iface
+ # if self.verbose: print cmd
+ output = misc.Run(cmd)
else:
output = iwconfig
- dbm_strength = misc.RunRegex(signaldbm_pattern,output)
+ dbm_strength = misc.RunRegex(signaldbm_pattern, output)
return dbm_strength
@@ -772,9 +772,9 @@ class WirelessInterface(Interface):
"""
if not iwconfig:
- cmd = 'iwconfig ' + self.iface
- # if self.verbose: print cmd
- output = misc.Run(cmd)
+ cmd = 'iwconfig ' + self.iface
+ # if self.verbose: print cmd
+ output = misc.Run(cmd)
else:
output = iwconfig
network = misc.RunRegex(re.compile('.*ESSID:"(.*?)"',
diff --git a/wpath.py b/wpath.py
index 0f34122..6c5bd31 100644
--- a/wpath.py
+++ b/wpath.py
@@ -15,7 +15,7 @@ current = os.path.dirname(os.path.realpath(__file__)) + '/'
lib = current
images = lib + 'images/'
encryption = lib + 'encryption/templates/'
-bin = current
+bin = current
etc = current + 'data/'
networks = lib + 'encryption/configurations/'
log = current + 'data/'