mirror of
https://github.com/gryf/wicd.git
synced 2025-12-19 20:38:00 +01:00
experimental:
- Merge in changes (prefs.py, dbusmanager.py, clean up in daemon.py) from pluggablebackends. pluggablebackends: - Some minor cleanup.
This commit is contained in:
242
daemon.py
242
daemon.py
@@ -134,10 +134,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
print "setting wired interface %s" % (str(interface))
|
print "setting wired interface %s" % (str(interface))
|
||||||
self.wired.wired_interface = interface
|
self.wired.wired_interface = interface
|
||||||
self.wifi.wired_interface = interface
|
self.wifi.wired_interface = interface
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "wired_interface", interface)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings","wired_interface", interface)
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def SetWirelessInterface(self, interface):
|
def SetWirelessInterface(self, interface):
|
||||||
@@ -145,59 +142,42 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
print "setting wireless interface %s" % (str(interface))
|
print "setting wireless interface %s" % (str(interface))
|
||||||
self.wifi.wireless_interface = interface
|
self.wifi.wireless_interface = interface
|
||||||
self.wired.wireless_interface = interface
|
self.wired.wireless_interface = interface
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "wireless_interface", interface)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings","wireless_interface", interface)
|
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def SetWPADriver(self, driver):
|
def SetWPADriver(self, driver):
|
||||||
""" Sets the wpa driver the wpa_supplicant will use. """
|
""" 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
|
self.wifi.wpa_driver = driver
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "wpa_driver", driver)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings","wpa_driver",driver)
|
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def SetUseGlobalDNS(self, use):
|
def SetUseGlobalDNS(self, use):
|
||||||
""" Sets a boolean which determines if global DNS is enabled. """
|
""" 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)
|
use = misc.to_bool(use)
|
||||||
print 'setting use global dns to boolean', use
|
self.set_option("Settings", "use_global_dns", use)
|
||||||
config = ConfigParser.ConfigParser()
|
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "use_global_dns", use)
|
|
||||||
self.use_global_dns = use
|
self.use_global_dns = use
|
||||||
self.wifi.use_global_dns = use
|
self.wifi.use_global_dns = use
|
||||||
self.wired.use_global_dns = use
|
self.wired.use_global_dns = use
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@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. """
|
""" Sets the global dns addresses. """
|
||||||
print "setting global dns"
|
print "setting global dns"
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "global_dns_1", misc.noneToString(dns1))
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "global_dns_1", misc.noneToString(dns1))
|
|
||||||
self.dns1 = dns1
|
self.dns1 = dns1
|
||||||
self.wifi.global_dns_1 = dns1
|
self.wifi.global_dns_1 = dns1
|
||||||
self.wired.global_dns_1 = dns1
|
self.wired.global_dns_1 = dns1
|
||||||
config.set("Settings", "global_dns_2", misc.noneToString(dns2))
|
self.set_option("Settings", "global_dns_2", misc.noneToString(dns2))
|
||||||
self.dns2 = dns2
|
self.dns2 = dns2
|
||||||
self.wifi.global_dns_2 = dns2
|
self.wifi.global_dns_2 = dns2
|
||||||
self.wired.global_dns_2 = dns2
|
self.wired.global_dns_2 = dns2
|
||||||
config.set("Settings", "global_dns_3", misc.noneToString(dns3))
|
self.set_option("Settings", "global_dns_3", misc.noneToString(dns3))
|
||||||
self.dns3 = dns3
|
self.dns3 = dns3
|
||||||
self.wifi.global_dns_3 = dns3
|
self.wifi.global_dns_3 = dns3
|
||||||
self.wired.global_dns_3 = dns3
|
self.wired.global_dns_3 = dns3
|
||||||
print 'global dns servers are', dns1, dns2, dns3
|
print 'global dns servers are', dns1, dns2, dns3
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def GetUseGlobalDNS(self):
|
def GetUseGlobalDNS(self):
|
||||||
@@ -222,11 +202,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def SetDebugMode(self, debug):
|
def SetDebugMode(self, debug):
|
||||||
""" Sets if debugging mode is on or off. """
|
""" Sets if debugging mode is on or off. """
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "debug_mode", debug)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "debug_mode", debug)
|
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
self.debug_mode = misc.to_bool(debug)
|
self.debug_mode = misc.to_bool(debug)
|
||||||
self.wifi.debug = self.debug_mode
|
self.wifi.debug = self.debug_mode
|
||||||
self.wired.debug = self.debug_mode
|
self.wired.debug = self.debug_mode
|
||||||
@@ -257,11 +233,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def SetSignalDisplayType(self, value):
|
def SetSignalDisplayType(self, value):
|
||||||
""" Sets the signal display type and writes it the wicd config file. """
|
""" Sets the signal display type and writes it the wicd config file. """
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "signal_display_type", value)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "signal_display_type", value)
|
|
||||||
configfile = open(self.app_conf, "w")
|
|
||||||
config.write(configfile)
|
|
||||||
self.signal_display_type = int(value)
|
self.signal_display_type = int(value)
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
@@ -385,10 +357,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
print 'setting automatically reconnect when connection drops'
|
print 'setting automatically reconnect when connection drops'
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "auto_reconnect", misc.to_bool(value))
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "auto_reconnect", misc.to_bool(value))
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
self.auto_reconnect = misc.to_bool(value)
|
self.auto_reconnect = misc.to_bool(value)
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
@@ -536,10 +505,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
self.dhcp_client = int(client)
|
self.dhcp_client = int(client)
|
||||||
self.wifi.dhcp_client = int(client)
|
self.wifi.dhcp_client = int(client)
|
||||||
self.wired.dhcp_client = int(client)
|
self.wired.dhcp_client = int(client)
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "dhcp_client", client)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "dhcp_client", client)
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def GetLinkDetectionTool(self):
|
def GetLinkDetectionTool(self):
|
||||||
@@ -550,10 +516,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
def SetLinkDetectionTool(self, link_tool):
|
def SetLinkDetectionTool(self, link_tool):
|
||||||
self.link_detect_tool = int(link_tool)
|
self.link_detect_tool = int(link_tool)
|
||||||
self.wired.link_tool = int(link_tool)
|
self.wired.link_tool = int(link_tool)
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "link_detect_tool", link_tool)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "link_detect_tool", link_tool)
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon')
|
@dbus.service.method('org.wicd.daemon')
|
||||||
def GetFlushTool(self):
|
def GetFlushTool(self):
|
||||||
@@ -564,10 +527,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
self.flush_tool = int(flush_tool)
|
self.flush_tool = int(flush_tool)
|
||||||
self.wired.flush_tool = int(flush_tool)
|
self.wired.flush_tool = int(flush_tool)
|
||||||
self.wifi.flush_tool = int(flush_tool)
|
self.wifi.flush_tool = int(flush_tool)
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "flush_tool", flush_tool)
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings", "flush_tool", flush_tool)
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
|
|
||||||
@dbus.service.signal(dbus_interface='org.wicd.daemon', signature='')
|
@dbus.service.signal(dbus_interface='org.wicd.daemon', signature='')
|
||||||
def LaunchChooser(self):
|
def LaunchChooser(self):
|
||||||
@@ -823,10 +783,7 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
# 1 = default profile
|
# 1 = default profile
|
||||||
# 2 = show list
|
# 2 = show list
|
||||||
# 3 = last used profile
|
# 3 = last used profile
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings","wired_connect_mode", int(method))
|
||||||
config.read(self.app_conf)
|
|
||||||
config.set("Settings","wired_connect_mode", int(method))
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
self.wired_connect_mode = int(method)
|
self.wired_connect_mode = int(method)
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wired')
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
@@ -841,6 +798,16 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
return self.wired.connecting_thread.GetStatus()
|
return self.wired.connecting_thread.GetStatus()
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
|
def DetectWiredInterface(self):
|
||||||
|
""" Returns an automatically detected wireless interface. """
|
||||||
|
iface = self.wired.DetectWiredInterface()
|
||||||
|
if iface:
|
||||||
|
print 'automatically detected wired interface ' + str(iface)
|
||||||
|
else:
|
||||||
|
print "Couldn't detect a wired interface."
|
||||||
|
return str(iface)
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wired')
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
def SetWiredProperty(self, property, value):
|
def SetWiredProperty(self, property, value):
|
||||||
@@ -883,11 +850,8 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
@dbus.service.method('org.wicd.daemon.wired')
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
def SetAlwaysShowWiredInterface(self, value):
|
def SetAlwaysShowWiredInterface(self, value):
|
||||||
""" Sets always_show_wired_interface to the given value. """
|
""" Sets always_show_wired_interface to the given value. """
|
||||||
config = ConfigParser.ConfigParser()
|
self.set_option("Settings", "always_show_wired_interface",
|
||||||
config.read(self.app_conf)
|
misc.to_bool(value))
|
||||||
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)
|
self.always_show_wired_interface = misc.to_bool(value)
|
||||||
|
|
||||||
@dbus.service.method('org.wicd.daemon.wired')
|
@dbus.service.method('org.wicd.daemon.wired')
|
||||||
@@ -1224,19 +1188,10 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
default_height = 590
|
default_height = 590
|
||||||
width_str = "pref_width"
|
width_str = "pref_width"
|
||||||
height_str = "pref_height"
|
height_str = "pref_height"
|
||||||
|
|
||||||
|
|
||||||
config = ConfigParser.ConfigParser()
|
width = self.get_option("Settings", width_str, default_width)
|
||||||
config.read(self.app_conf)
|
height = self.get_option("Settings", height_str, default_height)
|
||||||
if config.has_section("Settings"):
|
|
||||||
if config.has_option("Settings", width_str):
|
|
||||||
width = config.get("Settings", width_str)
|
|
||||||
else:
|
|
||||||
width = default_width
|
|
||||||
if config.has_option("Settings", height_str):
|
|
||||||
height = config.get("Settings", height_str)
|
|
||||||
else:
|
|
||||||
height = default_height
|
|
||||||
size = []
|
size = []
|
||||||
size.append(int(width))
|
size.append(int(width))
|
||||||
size.append(int(height))
|
size.append(int(height))
|
||||||
@@ -1257,6 +1212,14 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
if self.debug_mode:
|
if self.debug_mode:
|
||||||
print ''.join([text, " ", str(value)])
|
print ''.join([text, " ", str(value)])
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def set_option(self, section, option, value):
|
||||||
|
""" Sets the given option to the given value. """
|
||||||
|
config = ConfigParser.ConfigParser()
|
||||||
|
config.read(self.app_conf)
|
||||||
|
config.set(section, option, value)
|
||||||
|
configfile = open(self.app_conf, "w")
|
||||||
|
config.write(configfile)
|
||||||
|
|
||||||
def get_option(self, section, option, default=None):
|
def get_option(self, section, option, default=None):
|
||||||
""" Method for returning an option from manager-settings.conf.
|
""" Method for returning an option from manager-settings.conf.
|
||||||
@@ -1285,106 +1248,54 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
values into memory.
|
values into memory.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if os.path.isfile(self.app_conf):
|
iface = self.DetectWirelessInterface()
|
||||||
iface = self.DetectWirelessInterface()
|
if not iface: iface = 'wlan0'
|
||||||
if not iface:
|
self.SetWirelessInterface(self.get_option("Settings",
|
||||||
if self.debug_mode:
|
"wireless_interface",
|
||||||
print "Failed to detect wireless interface, defaulting " + \
|
default=iface))
|
||||||
"to wlan0, unless a config entry already exists."
|
|
||||||
iface = "wlan0"
|
iface = self.DetectWiredInterface()
|
||||||
self.SetWirelessInterface(self.get_option("Settings",
|
if not iface: iface = 'eth0'
|
||||||
"wireless_interface",
|
self.SetWiredInterface(self.get_option("Settings", "wired_interface",
|
||||||
default=iface))
|
default=iface))
|
||||||
self.SetWiredInterface(self.get_option("Settings",
|
|
||||||
"wired_interface",
|
self.SetWPADriver(self.get_option("Settings", "wpa_driver",
|
||||||
default="eth0"))
|
default="wext"))
|
||||||
self.SetWPADriver(self.get_option("Settings", "wpa_driver",
|
self.SetAlwaysShowWiredInterface(self.get_option("Settings",
|
||||||
default="wext"))
|
"always_show_wired_interface",
|
||||||
self.SetAlwaysShowWiredInterface(self.get_option("Settings",
|
|
||||||
"always_show_wired_interface",
|
|
||||||
default=False))
|
|
||||||
self.SetUseGlobalDNS(self.get_option("Settings", "use_global_dns",
|
|
||||||
default=False))
|
|
||||||
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.SetAutoReconnect(self.get_option("Settings", "auto_reconnect",
|
|
||||||
default=False))
|
|
||||||
self.SetDebugMode(self.get_option("Settings", "debug_mode",
|
|
||||||
default=False))
|
default=False))
|
||||||
|
self.SetUseGlobalDNS(self.get_option("Settings", "use_global_dns",
|
||||||
|
default=False))
|
||||||
|
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.SetAutoReconnect(self.get_option("Settings", "auto_reconnect",
|
||||||
|
default=True))
|
||||||
|
self.SetDebugMode(self.get_option("Settings", "debug_mode",
|
||||||
|
default=False))
|
||||||
|
|
||||||
self.SetWiredAutoConnectMethod(self.get_option("Settings",
|
self.SetWiredAutoConnectMethod(self.get_option("Settings",
|
||||||
"wired_connect_mode",
|
"wired_connect_mode",
|
||||||
default=1))
|
default=1))
|
||||||
self.SetSignalDisplayType(self.get_option("Settings",
|
self.SetSignalDisplayType(self.get_option("Settings",
|
||||||
"signal_display_type",
|
"signal_display_type",
|
||||||
default=0))
|
default=0))
|
||||||
self.SetDHCPClient(self.get_option("Settings", "dhcp_client",
|
self.SetDHCPClient(self.get_option("Settings", "dhcp_client",
|
||||||
default=0))
|
default=0))
|
||||||
self.SetLinkDetectionTool(self.get_option("Settings",
|
self.SetLinkDetectionTool(self.get_option("Settings",
|
||||||
"link_detect_tool",
|
"link_detect_tool",
|
||||||
default=0))
|
default=0))
|
||||||
self.SetFlushTool(self.get_option("Settings", "flush_tool",
|
self.SetFlushTool(self.get_option("Settings", "flush_tool", default=0))
|
||||||
default=0))
|
|
||||||
else:
|
|
||||||
# Write some defaults maybe?
|
|
||||||
print "Configuration file not found, creating, adding defaults..."
|
|
||||||
config = ConfigParser.ConfigParser()
|
|
||||||
config.read(self.app_conf)
|
|
||||||
config.add_section("Settings")
|
|
||||||
config.set("Settings", "wireless_interface", "wlan0")
|
|
||||||
config.set("Settings", "wired_interface", "eth0")
|
|
||||||
config.set("Settings", "always_show_wired_interface", "False")
|
|
||||||
config.set("Settings", "auto_reconnect", "False")
|
|
||||||
config.set("Settings", "debug_mode", "False")
|
|
||||||
config.set("Settings", "wired_connect_mode", "1")
|
|
||||||
config.set("Settings", "signal_display_type", "0")
|
|
||||||
config.set("Settings", "dhcp_client", "0")
|
|
||||||
config.set("Settings", "link_detect_tool", "0")
|
|
||||||
config.set("Settings", "flush_tool", "0")
|
|
||||||
config.set("Settings", "dns1", "None")
|
|
||||||
config.set("Settings", "dns2", "None")
|
|
||||||
config.set("Settings", "dns3", "None")
|
|
||||||
iface = self.DetectWirelessInterface()
|
|
||||||
if iface is not None:
|
|
||||||
config.set("Settings", "wireless_interface", iface)
|
|
||||||
else:
|
|
||||||
print "Couldn't detect a wireless interface, using wlan0..."
|
|
||||||
config.set("Settings", "wireless_interface", "wlan0")
|
|
||||||
config.set("Settings", "wpa_driver", "wext")
|
|
||||||
config.write(open(self.app_conf, "w"))
|
|
||||||
self.SetWirelessInterface(config.get("Settings",
|
|
||||||
"wireless_interface"))
|
|
||||||
self.SetWiredInterface(config.get("Settings",
|
|
||||||
"wired_interface"))
|
|
||||||
self.SetWPADriver(config.get("Settings",
|
|
||||||
"wpa_driver"))
|
|
||||||
self.SetDHCPClient(config.get("Settings", "dhcp_client"))
|
|
||||||
self.SetLinkDetectionTool(config.get("Settings",
|
|
||||||
"link_detect_tool"))
|
|
||||||
self.SetFlushTool(config.get("Settings", "flush_tool"))
|
|
||||||
self.SetAlwaysShowWiredInterface(False)
|
|
||||||
self.SetAutoReconnect(False)
|
|
||||||
self.SetDebugMode(False)
|
|
||||||
self.SetWiredAutoConnectMethod(1)
|
|
||||||
self.SetSignalDisplayType(0)
|
|
||||||
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..."
|
print "Wireless configuration file found..."
|
||||||
# Don't do anything since it is there
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
# We don't need to put anything in it, so just make it
|
|
||||||
print "Wireless configuration file not found, creating..."
|
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..."
|
print "Wired configuration file found..."
|
||||||
# Don't do anything since it is there
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
print "Wired configuration file not found, creating a default..."
|
print "Wired configuration file not found, creating a default..."
|
||||||
# Create the file and a default profile
|
# Create the file and a default profile
|
||||||
@@ -1404,15 +1315,16 @@ class ConnectionWizard(dbus.service.Object):
|
|||||||
os.chown(self.wired_conf, 0, 0)
|
os.chown(self.wired_conf, 0, 0)
|
||||||
|
|
||||||
print "Using wireless interface..." + self.GetWirelessInterface()
|
print "Using wireless interface..." + self.GetWirelessInterface()
|
||||||
|
print "Using wired interface..." + self.GetWiredInterface()
|
||||||
|
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print """
|
print """
|
||||||
wicd 1.5.0
|
wicd 1.6.0
|
||||||
wireless (and wired) connection daemon.
|
wireless (and wired) connection daemon.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
\t-s\t--no-scan\tDon't auto-scan/auto-connect.
|
\t-a\t--no-autoconnect\tDon't auto-scan/auto-connect.
|
||||||
\t-f\t--no-daemon\tDon't daemonize (run in foreground).
|
\t-f\t--no-daemon\tDon't daemonize (run in foreground).
|
||||||
\t-e\t--no-stderr\tDon't redirect stderr.
|
\t-e\t--no-stderr\tDon't redirect stderr.
|
||||||
\t-n\t--no-poll\tDon't monitor network status.
|
\t-n\t--no-poll\tDon't monitor network status.
|
||||||
|
|||||||
49
dbusmanager.py
Normal file
49
dbusmanager.py
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
""" The wicd DBus Manager.
|
||||||
|
|
||||||
|
A module for storing wicd's dbus interfaces.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 Adam Blackburn
|
||||||
|
# Copyright (C) 2007 Dan O'Reilly
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License Version 2 as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import dbus
|
||||||
|
|
||||||
|
class DBusManager(object):
|
||||||
|
def __init__(self):
|
||||||
|
self._bus = dbus.SystemBus()
|
||||||
|
self._dbus_ifaces = {}
|
||||||
|
|
||||||
|
def get_dbus_ifaces(self):
|
||||||
|
""" Returns a dict of dbus interfaces. """
|
||||||
|
return self._dbus_ifaces
|
||||||
|
|
||||||
|
def get_bus(self):
|
||||||
|
""" Returns the loaded SystemBus. """
|
||||||
|
return self._bus
|
||||||
|
|
||||||
|
def connect_to_dbus(self):
|
||||||
|
""" Connects to wicd's dbus interfaces and loads them into a dict. """
|
||||||
|
proxy_obj = self._bus.get_object("org.wicd.daemon", '/org/wicd/daemon')
|
||||||
|
daemon = dbus.Interface(proxy_obj, 'org.wicd.daemon')
|
||||||
|
wireless = dbus.Interface(proxy_obj, 'org.wicd.daemon.wireless')
|
||||||
|
wired = dbus.Interface(proxy_obj, 'org.wicd.daemon.wired')
|
||||||
|
config = dbus.Interface(proxy_obj, 'org.wicd.daemon.config')
|
||||||
|
self._dbus_ifaces = {"daemon" : daemon, "wireless" : wireless,
|
||||||
|
"wired" : wired, "config" : config}
|
||||||
301
gui.py
301
gui.py
@@ -28,16 +28,18 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import gobject
|
import gobject
|
||||||
import dbus
|
|
||||||
import dbus.service
|
|
||||||
import pango
|
import pango
|
||||||
import gtk
|
import gtk
|
||||||
import gtk.glade
|
import gtk.glade
|
||||||
|
from dbus import DBusException
|
||||||
|
from dbus import version as dbus_version
|
||||||
|
|
||||||
import misc
|
import misc
|
||||||
|
import wpath
|
||||||
from misc import noneToString, noneToBlankString, stringToBoolean, checkboxTextboxToggle
|
from misc import noneToString, noneToBlankString, stringToBoolean, checkboxTextboxToggle
|
||||||
from netentry import WiredNetworkEntry, WirelessNetworkEntry
|
from netentry import WiredNetworkEntry, WirelessNetworkEntry
|
||||||
import wpath
|
from prefs import PreferencesDialog
|
||||||
|
from dbusmanager import DBusManager
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
wpath.chdir(__file__)
|
wpath.chdir(__file__)
|
||||||
@@ -48,28 +50,41 @@ try:
|
|||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if getattr(dbus, 'version', (0, 0, 0)) < (0, 80, 0):
|
if not dbus_version or (dbus_version < (0, 80, 0)):
|
||||||
import dbus.glib
|
import dbus.glib
|
||||||
else:
|
else:
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
DBusGMainLoop(set_as_default=True)
|
DBusGMainLoop(set_as_default=True)
|
||||||
|
|
||||||
bus = dbus.SystemBus()
|
proxy_obj, daemon, wireless, wired, bus, config = [None for x in
|
||||||
proxy_obj, daemon, wireless, wired, vpn_session, config = [None for x in
|
|
||||||
range(0, 6)]
|
range(0, 6)]
|
||||||
dbus_ifaces = {}
|
|
||||||
language = misc.get_language_list_gui()
|
language = misc.get_language_list_gui()
|
||||||
|
|
||||||
def setup_dbus():
|
def setup_dbus(dbus_man=None):
|
||||||
global proxy_obj, daemon, wireless, wired, vpn_session, config, dbus_ifaces
|
global bus, daemon, wireless, wired, config, dbus_manager
|
||||||
proxy_obj = bus.get_object("org.wicd.daemon", '/org/wicd/daemon')
|
if dbus_man:
|
||||||
daemon = dbus.Interface(proxy_obj, 'org.wicd.daemon')
|
dbus_manager = dbus_man
|
||||||
wireless = dbus.Interface(proxy_obj, 'org.wicd.daemon.wireless')
|
else:
|
||||||
wired = dbus.Interface(proxy_obj, 'org.wicd.daemon.wired')
|
dbus_manager = DBusManager()
|
||||||
vpn_session = dbus.Interface(proxy_obj, 'org.wicd.daemon.vpn')
|
try:
|
||||||
config = dbus.Interface(proxy_obj, 'org.wicd.daemon.config')
|
dbus_manager.connect_to_dbus()
|
||||||
dbus_ifaces = {"daemon" : daemon, "wireless" : wireless, "wired" : wired,
|
except DBusException:
|
||||||
"vpn_session" : vpn_session, "config" : config}
|
print "Can't connect to the daemon, trying to start it automatically..."
|
||||||
|
misc.PromptToStartDaemon()
|
||||||
|
try:
|
||||||
|
dbus_manager.connect_to_dbus()
|
||||||
|
except DBusException:
|
||||||
|
error(None, "Could not connect to wicd's D-Bus interface. " +
|
||||||
|
"Make sure the daemon is started.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
bus = dbus_manager.get_bus()
|
||||||
|
dbus_ifaces = dbus_manager.get_dbus_ifaces()
|
||||||
|
daemon = dbus_ifaces['daemon']
|
||||||
|
wireless = dbus_ifaces['wireless']
|
||||||
|
wired = dbus_ifaces['wired']
|
||||||
|
config = dbus_ifaces['config']
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def error(parent, message):
|
def error(parent, message):
|
||||||
@@ -149,7 +164,7 @@ class WiredProfileChooser:
|
|||||||
""" Initializes and runs the wired profile chooser. """
|
""" Initializes and runs the wired profile chooser. """
|
||||||
# Import and init WiredNetworkEntry to steal some of the
|
# Import and init WiredNetworkEntry to steal some of the
|
||||||
# functions and widgets it uses.
|
# functions and widgets it uses.
|
||||||
wired_net_entry = WiredNetworkEntry(dbus_ifaces)
|
wired_net_entry = WiredNetworkEntry(dbus_manager.get_dbus_ifaces())
|
||||||
|
|
||||||
dialog = gtk.Dialog(title = language['wired_network_found'],
|
dialog = gtk.Dialog(title = language['wired_network_found'],
|
||||||
flags = gtk.DIALOG_MODAL,
|
flags = gtk.DIALOG_MODAL,
|
||||||
@@ -195,18 +210,15 @@ class WiredProfileChooser:
|
|||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
|
|
||||||
class appGui:
|
class appGui(object):
|
||||||
""" The main wicd GUI class. """
|
""" The main wicd GUI class. """
|
||||||
def __init__(self, standalone=False):
|
def __init__(self, dbus_man=None, standalone=False):
|
||||||
""" Initializes everything needed for the GUI. """
|
""" Initializes everything needed for the GUI. """
|
||||||
|
if not standalone:
|
||||||
|
setup_dbus(dbus_man)
|
||||||
|
|
||||||
gladefile = "data/wicd.glade"
|
gladefile = "data/wicd.glade"
|
||||||
self.windowname = "gtkbench"
|
|
||||||
self.wTree = gtk.glade.XML(gladefile)
|
self.wTree = gtk.glade.XML(gladefile)
|
||||||
|
|
||||||
try:
|
|
||||||
setup_dbus()
|
|
||||||
except dbus.DBusException:
|
|
||||||
pass # wicd.py handles this.
|
|
||||||
|
|
||||||
dic = { "refresh_clicked" : self.refresh_networks,
|
dic = { "refresh_clicked" : self.refresh_networks,
|
||||||
"quit_clicked" : self.exit,
|
"quit_clicked" : self.exit,
|
||||||
@@ -237,7 +249,6 @@ class appGui:
|
|||||||
|
|
||||||
self.status_area.hide_all()
|
self.status_area.hide_all()
|
||||||
|
|
||||||
# self.window.set_icon_from_file(wpath.etc + "wicd.png")
|
|
||||||
if os.path.exists(wpath.etc + "wicd.png"):
|
if os.path.exists(wpath.etc + "wicd.png"):
|
||||||
self.window.set_icon_from_file(wpath.etc + "wicd.png")
|
self.window.set_icon_from_file(wpath.etc + "wicd.png")
|
||||||
self.statusID = None
|
self.statusID = None
|
||||||
@@ -340,228 +351,13 @@ class appGui:
|
|||||||
if event.state & gtk.gdk.CONTROL_MASK and \
|
if event.state & gtk.gdk.CONTROL_MASK and \
|
||||||
gtk.gdk.keyval_name(event.keyval) in ["w", "q"]:
|
gtk.gdk.keyval_name(event.keyval) in ["w", "q"]:
|
||||||
self.exit()
|
self.exit()
|
||||||
|
|
||||||
def settings_dialog(self, widget, event=None):
|
def settings_dialog(self, widget, event=None):
|
||||||
""" Displays a general settings dialog. """
|
""" Displays a general settings dialog. """
|
||||||
def build_combobox(lbl):
|
pref = PreferencesDialog(self.wTree, dbus_manager.get_dbus_ifaces())
|
||||||
""" Sets up a ComboBox using the given widget name. """
|
if pref.run() == 1:
|
||||||
liststore = gtk.ListStore(gobject.TYPE_STRING)
|
pref.save_results()
|
||||||
combobox = self.wTree.get_widget(lbl)
|
pref.hide()
|
||||||
combobox.clear()
|
|
||||||
combobox.set_model(liststore)
|
|
||||||
cell = gtk.CellRendererText()
|
|
||||||
combobox.pack_start(cell, True)
|
|
||||||
combobox.add_attribute(cell, 'text', 0)
|
|
||||||
|
|
||||||
return combobox
|
|
||||||
|
|
||||||
dialog = self.wTree.get_widget("pref_dialog")
|
|
||||||
dialog.set_title(language['preferences'])
|
|
||||||
size = config.ReadWindowSize("pref")
|
|
||||||
width = size[0]
|
|
||||||
height = size[1]
|
|
||||||
if width > -1 and height > -1:
|
|
||||||
dialog.resize(int(width), int(height))
|
|
||||||
wiredcheckbox = self.wTree.get_widget("pref_always_check")
|
|
||||||
wiredcheckbox.set_label(language['wired_always_on'])
|
|
||||||
wiredcheckbox.set_active(wired.GetAlwaysShowWiredInterface())
|
|
||||||
|
|
||||||
reconnectcheckbox = self.wTree.get_widget("pref_auto_check")
|
|
||||||
reconnectcheckbox.set_label(language['auto_reconnect'])
|
|
||||||
reconnectcheckbox.set_active(daemon.GetAutoReconnect())
|
|
||||||
|
|
||||||
debugmodecheckbox = self.wTree.get_widget("pref_debug_check")
|
|
||||||
debugmodecheckbox.set_label(language['use_debug_mode'])
|
|
||||||
debugmodecheckbox.set_active(daemon.GetDebugMode())
|
|
||||||
|
|
||||||
displaytypecheckbox = self.wTree.get_widget("pref_dbm_check")
|
|
||||||
displaytypecheckbox.set_label(language['display_type_dialog'])
|
|
||||||
displaytypecheckbox.set_active(daemon.GetSignalDisplayType())
|
|
||||||
|
|
||||||
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'])
|
|
||||||
|
|
||||||
## External Programs tab
|
|
||||||
self.wTree.get_widget("gen_settings_label").set_label(language["gen_settings"])
|
|
||||||
self.wTree.get_widget("ext_prog_label").set_label(language["ext_programs"])
|
|
||||||
self.wTree.get_widget("dhcp_client_label").set_label(language["dhcp_client"])
|
|
||||||
self.wTree.get_widget("wired_detect_label").set_label(language["wired_detect"])
|
|
||||||
self.wTree.get_widget("route_flush_label").set_label(language["route_flush"])
|
|
||||||
|
|
||||||
# DHCP Clients
|
|
||||||
dhcpautoradio = self.wTree.get_widget("dhcp_auto_radio")
|
|
||||||
dhcpautoradio.set_label(language["wicd_auto_config"])
|
|
||||||
dhclientradio = self.wTree.get_widget("dhclient_radio")
|
|
||||||
pumpradio = self.wTree.get_widget("pump_radio")
|
|
||||||
dhcpcdradio = self.wTree.get_widget("dhcpcd_radio")
|
|
||||||
dhcp_list = [dhcpautoradio, dhclientradio, dhcpcdradio, pumpradio]
|
|
||||||
|
|
||||||
dhcp_method = daemon.GetDHCPClient()
|
|
||||||
dhcp_list[dhcp_method].set_active(True)
|
|
||||||
|
|
||||||
# Wired Link Detection Apps
|
|
||||||
linkautoradio = self.wTree.get_widget("link_auto_radio")
|
|
||||||
linkautoradio.set_label(language['wicd_auto_config'])
|
|
||||||
linkautoradio = self.wTree.get_widget("link_auto_radio")
|
|
||||||
ethtoolradio = self.wTree.get_widget("ethtool_radio")
|
|
||||||
miitoolradio = self.wTree.get_widget("miitool_radio")
|
|
||||||
wired_link_list = [linkautoradio, ethtoolradio, miitoolradio]
|
|
||||||
wired_link_method = daemon.GetLinkDetectionTool()
|
|
||||||
wired_link_list[wired_link_method].set_active(True)
|
|
||||||
|
|
||||||
# Route Flushing Apps
|
|
||||||
flushautoradio = self.wTree.get_widget("flush_auto_radio")
|
|
||||||
flushautoradio.set_label(language['wicd_auto_config'])
|
|
||||||
ipflushradio = self.wTree.get_widget("ip_flush_radio")
|
|
||||||
routeflushradio = self.wTree.get_widget("route_flush_radio")
|
|
||||||
flush_list = [flushautoradio, ipflushradio, routeflushradio]
|
|
||||||
flush_method = daemon.GetFlushTool()
|
|
||||||
flush_list[flush_method].set_active(True)
|
|
||||||
|
|
||||||
if wired.GetWiredAutoConnectMethod() == 1:
|
|
||||||
usedefaultradiobutton.set_active(True)
|
|
||||||
elif wired.GetWiredAutoConnectMethod() == 2:
|
|
||||||
showlistradiobutton.set_active(True)
|
|
||||||
elif wired.GetWiredAutoConnectMethod() == 3:
|
|
||||||
lastusedradiobutton.set_active(True)
|
|
||||||
|
|
||||||
self.set_label("pref_driver_label", language['wpa_supplicant_driver'] +
|
|
||||||
':')
|
|
||||||
|
|
||||||
# Replacement for the combo box hack
|
|
||||||
wpadrivercombo = build_combobox("pref_wpa_combobox")
|
|
||||||
|
|
||||||
# Hack to get the combo box we need, which you can't do with glade.
|
|
||||||
#wpa_hbox = self.wTree.get_widget("hbox_wpa")
|
|
||||||
#if not self.first_dialog_load:
|
|
||||||
#wpa_hbox.remove(self.wpadrivercombo)
|
|
||||||
#else:
|
|
||||||
#self.first_dialog_load = False
|
|
||||||
#self.wpadrivercombo = gtk.combo_box_new_text()
|
|
||||||
#wpadrivercombo = self.wpadrivercombo # Just to make my life easier
|
|
||||||
#wpa_hbox.pack_end(wpadrivercombo)
|
|
||||||
|
|
||||||
wpadrivers = ["wext", "hostap", "madwifi", "atmel", "ndiswrapper",
|
|
||||||
"ipw", "ralink legacy"]
|
|
||||||
found = False
|
|
||||||
def_driver = daemon.GetWPADriver()
|
|
||||||
for i, x in enumerate(wpadrivers):
|
|
||||||
if x == def_driver: #and not found:
|
|
||||||
found = True
|
|
||||||
user_driver_index = i
|
|
||||||
wpadrivercombo.remove_text(i)
|
|
||||||
wpadrivercombo.append_text(x)
|
|
||||||
|
|
||||||
# Set the active choice here. Doing it before all the items are
|
|
||||||
# added the combobox causes the choice to be reset.
|
|
||||||
if found:
|
|
||||||
wpadrivercombo.set_active(user_driver_index)
|
|
||||||
else:
|
|
||||||
# Use wext as default, since normally it is the correct driver.
|
|
||||||
wpadrivercombo.set_active(0)
|
|
||||||
|
|
||||||
self.set_label("pref_wifi_label", language['wireless_interface'] + ':')
|
|
||||||
self.set_label("pref_wired_label", language['wired_interface'] + ':')
|
|
||||||
|
|
||||||
entryWirelessInterface = self.wTree.get_widget("pref_wifi_entry")
|
|
||||||
entryWirelessInterface.set_text(daemon.GetWirelessInterface())
|
|
||||||
|
|
||||||
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)
|
|
||||||
atrlist = pango.AttrList()
|
|
||||||
atrlist.insert(pango.AttrWeight(pango.WEIGHT_BOLD, 0, 50))
|
|
||||||
entryWiredAutoMethod.set_attributes(atrlist)
|
|
||||||
|
|
||||||
self.wTree.get_widget("notebook2").set_current_page(0)
|
|
||||||
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.get_text())
|
|
||||||
daemon.SetWiredInterface(entryWiredInterface.get_text())
|
|
||||||
daemon.SetWPADriver(wpadrivers[wpadrivercombo.get_active()])
|
|
||||||
wired.SetAlwaysShowWiredInterface(wiredcheckbox.get_active())
|
|
||||||
daemon.SetAutoReconnect(reconnectcheckbox.get_active())
|
|
||||||
daemon.SetDebugMode(debugmodecheckbox.get_active())
|
|
||||||
daemon.SetSignalDisplayType(displaytypecheckbox.get_active())
|
|
||||||
if showlistradiobutton.get_active():
|
|
||||||
wired.SetWiredAutoConnectMethod(2)
|
|
||||||
elif lastusedradiobutton.get_active():
|
|
||||||
wired.SetWiredAutoConnectMethod(3)
|
|
||||||
else:
|
|
||||||
wired.SetWiredAutoConnectMethod(1)
|
|
||||||
|
|
||||||
# External Programs Tab
|
|
||||||
if dhcpautoradio.get_active():
|
|
||||||
dhcp_client = misc.AUTO
|
|
||||||
elif dhclientradio.get_active():
|
|
||||||
dhcp_client = misc.DHCLIENT
|
|
||||||
elif dhcpcdradio.get_active():
|
|
||||||
dhcp_client = misc.DHCPCD
|
|
||||||
else:
|
|
||||||
dhcp_client = misc.PUMP
|
|
||||||
daemon.SetDHCPClient(dhcp_client)
|
|
||||||
|
|
||||||
if linkautoradio.get_active():
|
|
||||||
link_tool = misc.AUTO
|
|
||||||
elif ethtoolradio.get_active():
|
|
||||||
link_tool = misc.ETHTOOL
|
|
||||||
else:
|
|
||||||
link_tool = misc.MIITOOL
|
|
||||||
daemon.SetLinkDetectionTool(link_tool)
|
|
||||||
|
|
||||||
if flushautoradio.get_active():
|
|
||||||
flush_tool = misc.AUTO
|
|
||||||
elif ipflushradio.get_active():
|
|
||||||
flush_tool = misc.IP
|
|
||||||
else:
|
|
||||||
flush_tool = misc.ROUTE
|
|
||||||
daemon.SetFlushTool(flush_tool)
|
|
||||||
|
|
||||||
dialog.hide()
|
|
||||||
[width, height] = dialog.get_size()
|
|
||||||
config.WriteWindowSize(width, height, "pref")
|
|
||||||
|
|
||||||
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):
|
def connect_hidden(self, widget):
|
||||||
""" Prompts the user for a hidden network, then scans for it. """
|
""" Prompts the user for a hidden network, then scans for it. """
|
||||||
@@ -785,7 +581,7 @@ class appGui:
|
|||||||
|
|
||||||
if wired.CheckPluggedIn(self.fast) or wired.GetAlwaysShowWiredInterface():
|
if wired.CheckPluggedIn(self.fast) or wired.GetAlwaysShowWiredInterface():
|
||||||
printLine = True # In this case we print a separator.
|
printLine = True # In this case we print a separator.
|
||||||
wirednet = WiredNetworkEntry(dbus_ifaces)
|
wirednet = WiredNetworkEntry(dbus_manager.get_dbus_ifaces())
|
||||||
self.network_list.pack_start(wirednet, False, False)
|
self.network_list.pack_start(wirednet, False, False)
|
||||||
wirednet.connect_button.connect("button-press-event", self.connect,
|
wirednet.connect_button.connect("button-press-event", self.connect,
|
||||||
"wired", 0, wirednet)
|
"wired", 0, wirednet)
|
||||||
@@ -812,7 +608,7 @@ class appGui:
|
|||||||
sep.show()
|
sep.show()
|
||||||
else:
|
else:
|
||||||
printLine = True
|
printLine = True
|
||||||
tempnet = WirelessNetworkEntry(x, dbus_ifaces)
|
tempnet = WirelessNetworkEntry(x, dbus_manager.get_dbus_ifaces())
|
||||||
self.network_list.pack_start(tempnet, False, False)
|
self.network_list.pack_start(tempnet, False, False)
|
||||||
tempnet.connect_button.connect("button-press-event",
|
tempnet.connect_button.connect("button-press-event",
|
||||||
self.connect, "wireless", x,
|
self.connect, "wireless", x,
|
||||||
@@ -1096,12 +892,7 @@ class appGui:
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if not proxy_obj:
|
setup_dbus()
|
||||||
error("Could not connect to wicd's D-Bus interface. Make sure the " +
|
|
||||||
"daemon is started. If the error persists, please report the" +
|
|
||||||
"behavior at wicd.net.")
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
app = appGui(standalone=True)
|
app = appGui(standalone=True)
|
||||||
bus.add_signal_receiver(app.dbus_scan_finished, 'SendEndScanSignal',
|
bus.add_signal_receiver(app.dbus_scan_finished, 'SendEndScanSignal',
|
||||||
'org.wicd.daemon')
|
'org.wicd.daemon')
|
||||||
|
|||||||
1
misc.py
1
misc.py
@@ -460,6 +460,7 @@ def get_language_list_tray():
|
|||||||
language['killswitch_enabled'] = _('Wireless Kill Switch Enabled')
|
language['killswitch_enabled'] = _('Wireless Kill Switch Enabled')
|
||||||
language['connecting'] = _('Connecting')
|
language['connecting'] = _('Connecting')
|
||||||
language['wired'] = _('Wired Network')
|
language['wired'] = _('Wired Network')
|
||||||
|
language['scanning'] = _('Scanning')
|
||||||
|
|
||||||
return language
|
return language
|
||||||
|
|
||||||
|
|||||||
@@ -290,7 +290,7 @@ def main():
|
|||||||
"""
|
"""
|
||||||
monitor = ConnectionStatus()
|
monitor = ConnectionStatus()
|
||||||
gobject.timeout_add(2000, monitor.update_connection_status)
|
gobject.timeout_add(2000, monitor.update_connection_status)
|
||||||
gobject.timeout_add(120000, monitor.rescan_networks)
|
#gobject.timeout_add(120000, monitor.rescan_networks)
|
||||||
|
|
||||||
mainloop = gobject.MainLoop()
|
mainloop = gobject.MainLoop()
|
||||||
mainloop.run()
|
mainloop.run()
|
||||||
|
|||||||
@@ -435,11 +435,10 @@ class NetworkEntry(gtk.HBox):
|
|||||||
WirelessNetworkEntry classes.
|
WirelessNetworkEntry classes.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
global daemon, wired, wireless, config, vpn_session
|
global daemon, wired, wireless, config
|
||||||
daemon = dbus_ifaces["daemon"]
|
daemon = dbus_ifaces["daemon"]
|
||||||
wired = dbus_ifaces["wired"]
|
wired = dbus_ifaces["wired"]
|
||||||
wireless = dbus_ifaces["wireless"]
|
wireless = dbus_ifaces["wireless"]
|
||||||
vpn_session = dbus_ifaces["vpn_session"]
|
|
||||||
config = dbus_ifaces["config"]
|
config = dbus_ifaces["config"]
|
||||||
gtk.HBox.__init__(self, False, 2)
|
gtk.HBox.__init__(self, False, 2)
|
||||||
self.expander = gtk.Expander()
|
self.expander = gtk.Expander()
|
||||||
|
|||||||
268
prefs.py
Normal file
268
prefs.py
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
""" Wicd Preferences Dialog.
|
||||||
|
|
||||||
|
Displays the main settings dialog window for wicd.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007 Adam Blackburn
|
||||||
|
# Copyright (C) 2007 Dan O'Reilly
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License Version 2 as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
|
||||||
|
import gtk
|
||||||
|
import gobject
|
||||||
|
import pango
|
||||||
|
|
||||||
|
import misc
|
||||||
|
from misc import checkboxTextboxToggle, noneToBlankString
|
||||||
|
|
||||||
|
daemon = None
|
||||||
|
wireless = None
|
||||||
|
wired = None
|
||||||
|
config = None
|
||||||
|
|
||||||
|
language = misc.get_language_list_gui()
|
||||||
|
|
||||||
|
class PreferencesDialog(object):
|
||||||
|
def __init__(self, wTree, dbus):
|
||||||
|
global daemon, wireless, wired, config
|
||||||
|
daemon = dbus['daemon']
|
||||||
|
wireless = dbus['wireless']
|
||||||
|
wired = dbus['wired']
|
||||||
|
config = dbus['config']
|
||||||
|
self.wTree = wTree
|
||||||
|
self.prep_settings_diag()
|
||||||
|
self.build_preferences_diag()
|
||||||
|
|
||||||
|
def build_preferences_diag(self):
|
||||||
|
def build_combobox(lbl):
|
||||||
|
""" Sets up a ComboBox using the given widget name. """
|
||||||
|
liststore = gtk.ListStore(gobject.TYPE_STRING)
|
||||||
|
combobox = self.wTree.get_widget(lbl)
|
||||||
|
combobox.clear()
|
||||||
|
combobox.set_model(liststore)
|
||||||
|
cell = gtk.CellRendererText()
|
||||||
|
combobox.pack_start(cell, True)
|
||||||
|
combobox.add_attribute(cell, 'text', 0)
|
||||||
|
return combobox
|
||||||
|
|
||||||
|
def setup_label(name, lbl=""):
|
||||||
|
widget = self.wTree.get_widget(name)
|
||||||
|
if lbl:
|
||||||
|
widget.set_label(language[lbl])
|
||||||
|
return widget
|
||||||
|
|
||||||
|
self.dialog = self.wTree.get_widget("pref_dialog")
|
||||||
|
self.dialog.set_title(language['preferences'])
|
||||||
|
size = config.ReadWindowSize("pref")
|
||||||
|
width = size[0]
|
||||||
|
height = size[1]
|
||||||
|
if width > -1 and height > -1:
|
||||||
|
self.dialog.resize(int(width), int(height))
|
||||||
|
|
||||||
|
self.wiredcheckbox = setup_label("pref_always_check",
|
||||||
|
'wired_always_on')
|
||||||
|
self.wiredcheckbox.set_active(wired.GetAlwaysShowWiredInterface())
|
||||||
|
self.reconnectcheckbox = setup_label("pref_auto_check",
|
||||||
|
'auto_reconnect')
|
||||||
|
self.reconnectcheckbox.set_active(daemon.GetAutoReconnect())
|
||||||
|
self.debugmodecheckbox = setup_label("pref_debug_check",
|
||||||
|
'use_debug_mode')
|
||||||
|
self.debugmodecheckbox.set_active(daemon.GetDebugMode())
|
||||||
|
self.displaytypecheckbox = setup_label("pref_dbm_check",
|
||||||
|
'display_type_dialog')
|
||||||
|
self.displaytypecheckbox.set_active(daemon.GetSignalDisplayType())
|
||||||
|
self.usedefaultradiobutton = setup_label("pref_use_def_radio",
|
||||||
|
'use_default_profile')
|
||||||
|
self.showlistradiobutton = setup_label("pref_prompt_radio",
|
||||||
|
'show_wired_list')
|
||||||
|
self.lastusedradiobutton = setup_label("pref_use_last_radio",
|
||||||
|
'use_last_used_profile')
|
||||||
|
|
||||||
|
# DHCP Clients
|
||||||
|
self.dhcpautoradio = setup_label("dhcp_auto_radio", "wicd_auto_config")
|
||||||
|
self.dhclientradio = self.wTree.get_widget("dhclient_radio")
|
||||||
|
self.pumpradio = self.wTree.get_widget("pump_radio")
|
||||||
|
self.dhcpcdradio = self.wTree.get_widget("dhcpcd_radio")
|
||||||
|
dhcp_list = [self.dhcpautoradio, self.dhclientradio, self.dhcpcdradio,
|
||||||
|
self.pumpradio]
|
||||||
|
|
||||||
|
dhcp_method = daemon.GetDHCPClient()
|
||||||
|
dhcp_list[dhcp_method].set_active(True)
|
||||||
|
|
||||||
|
# Wired Link Detection Apps
|
||||||
|
self.linkautoradio = setup_label("link_auto_radio", 'wicd_auto_config')
|
||||||
|
self.linkautoradio = setup_label("link_auto_radio")
|
||||||
|
self.ethtoolradio = setup_label("ethtool_radio")
|
||||||
|
self.miitoolradio = setup_label("miitool_radio")
|
||||||
|
wired_link_list = [self.linkautoradio, self.ethtoolradio,
|
||||||
|
self.miitoolradio]
|
||||||
|
wired_link_method = daemon.GetLinkDetectionTool()
|
||||||
|
wired_link_list[wired_link_method].set_active(True)
|
||||||
|
|
||||||
|
# Route Flushing Apps
|
||||||
|
self.flushautoradio = setup_label("flush_auto_radio",
|
||||||
|
'wicd_auto_config')
|
||||||
|
self.ipflushradio = setup_label("ip_flush_radio")
|
||||||
|
self.routeflushradio = setup_label("route_flush_radio")
|
||||||
|
flush_list = [self.flushautoradio, self.ipflushradio,
|
||||||
|
self.routeflushradio]
|
||||||
|
flush_method = daemon.GetFlushTool()
|
||||||
|
flush_list[flush_method].set_active(True)
|
||||||
|
|
||||||
|
if wired.GetWiredAutoConnectMethod() == 1:
|
||||||
|
self.usedefaultradiobutton.set_active(True)
|
||||||
|
elif wired.GetWiredAutoConnectMethod() == 2:
|
||||||
|
self.showlistradiobutton.set_active(True)
|
||||||
|
elif wired.GetWiredAutoConnectMethod() == 3:
|
||||||
|
self.lastusedradiobutton.set_active(True)
|
||||||
|
|
||||||
|
self.entryWirelessInterface = self.wTree.get_widget("pref_wifi_entry")
|
||||||
|
self.entryWirelessInterface.set_text(daemon.GetWirelessInterface())
|
||||||
|
|
||||||
|
self.entryWiredInterface = self.wTree.get_widget("pref_wired_entry")
|
||||||
|
self.entryWiredInterface.set_text(daemon.GetWiredInterface())
|
||||||
|
|
||||||
|
# Replacement for the combo box hack
|
||||||
|
self.wpadrivercombo = build_combobox("pref_wpa_combobox")
|
||||||
|
self.wpadrivers = ["wext", "hostap", "madwifi", "atmel", "ndiswrapper",
|
||||||
|
"ipw", "ralink legacy"]
|
||||||
|
found = False
|
||||||
|
def_driver = daemon.GetWPADriver()
|
||||||
|
for i, x in enumerate(self.wpadrivers):
|
||||||
|
if x == def_driver: #and not found:
|
||||||
|
found = True
|
||||||
|
user_driver_index = i
|
||||||
|
self.wpadrivercombo.remove_text(i)
|
||||||
|
self.wpadrivercombo.append_text(x)
|
||||||
|
|
||||||
|
# Set the active choice here. Doing it before all the items are
|
||||||
|
# added the combobox causes the choice to be reset.
|
||||||
|
if found:
|
||||||
|
self.wpadrivercombo.set_active(user_driver_index)
|
||||||
|
else:
|
||||||
|
# Use wext as default, since normally it is the correct driver.
|
||||||
|
self.wpadrivercombo.set_active(0)
|
||||||
|
|
||||||
|
# Set up global DNS stuff
|
||||||
|
self.useGlobalDNSCheckbox = setup_label("pref_global_check",
|
||||||
|
'use_global_dns')
|
||||||
|
|
||||||
|
self.dns1Entry = self.wTree.get_widget("pref_dns1_entry")
|
||||||
|
self.dns2Entry = self.wTree.get_widget("pref_dns2_entry")
|
||||||
|
self.dns3Entry = self.wTree.get_widget("pref_dns3_entry")
|
||||||
|
|
||||||
|
self.useGlobalDNSCheckbox.connect("toggled", checkboxTextboxToggle,
|
||||||
|
(self.dns1Entry, self.dns2Entry,
|
||||||
|
self.dns3Entry))
|
||||||
|
|
||||||
|
dns_addresses = daemon.GetGlobalDNSAddresses()
|
||||||
|
self.useGlobalDNSCheckbox.set_active(daemon.GetUseGlobalDNS())
|
||||||
|
self.dns1Entry.set_text(noneToBlankString(dns_addresses[0]))
|
||||||
|
self.dns2Entry.set_text(noneToBlankString(dns_addresses[1]))
|
||||||
|
self.dns3Entry.set_text(noneToBlankString(dns_addresses[2]))
|
||||||
|
|
||||||
|
if not daemon.GetUseGlobalDNS():
|
||||||
|
self.dns1Entry.set_sensitive(False)
|
||||||
|
self.dns2Entry.set_sensitive(False)
|
||||||
|
self.dns3Entry.set_sensitive(False)
|
||||||
|
|
||||||
|
self.wTree.get_widget("notebook2").set_current_page(0)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
return self.dialog.run()
|
||||||
|
|
||||||
|
def hide(self):
|
||||||
|
self.dialog.hide()
|
||||||
|
|
||||||
|
def show_all(self):
|
||||||
|
self.show_all()
|
||||||
|
|
||||||
|
def save_results(self):
|
||||||
|
daemon.SetUseGlobalDNS(self.useGlobalDNSCheckbox.get_active())
|
||||||
|
daemon.SetGlobalDNS(self.dns1Entry.get_text(), self.dns2Entry.get_text(),
|
||||||
|
self.dns3Entry.get_text())
|
||||||
|
daemon.SetWirelessInterface(self.entryWirelessInterface.get_text())
|
||||||
|
daemon.SetWiredInterface(self.entryWiredInterface.get_text())
|
||||||
|
daemon.SetWPADriver(self.wpadrivers[self.wpadrivercombo.get_active()])
|
||||||
|
wired.SetAlwaysShowWiredInterface(self.wiredcheckbox.get_active())
|
||||||
|
daemon.SetAutoReconnect(self.reconnectcheckbox.get_active())
|
||||||
|
daemon.SetDebugMode(self.debugmodecheckbox.get_active())
|
||||||
|
daemon.SetSignalDisplayType(self.displaytypecheckbox.get_active())
|
||||||
|
if self.showlistradiobutton.get_active():
|
||||||
|
wired.SetWiredAutoConnectMethod(2)
|
||||||
|
elif self.lastusedradiobutton.get_active():
|
||||||
|
wired.SetWiredAutoConnectMethod(3)
|
||||||
|
else:
|
||||||
|
wired.SetWiredAutoConnectMethod(1)
|
||||||
|
|
||||||
|
# External Programs Tab
|
||||||
|
if self.dhcpautoradio.get_active():
|
||||||
|
dhcp_client = misc.AUTO
|
||||||
|
elif self.dhclientradio.get_active():
|
||||||
|
dhcp_client = misc.DHCLIENT
|
||||||
|
elif self.dhcpcdradio.get_active():
|
||||||
|
dhcp_client = misc.DHCPCD
|
||||||
|
else:
|
||||||
|
dhcp_client = misc.PUMP
|
||||||
|
daemon.SetDHCPClient(dhcp_client)
|
||||||
|
|
||||||
|
if self.linkautoradio.get_active():
|
||||||
|
link_tool = misc.AUTO
|
||||||
|
elif self.ethtoolradio.get_active():
|
||||||
|
link_tool = misc.ETHTOOL
|
||||||
|
else:
|
||||||
|
link_tool = misc.MIITOOL
|
||||||
|
daemon.SetLinkDetectionTool(link_tool)
|
||||||
|
|
||||||
|
if self.flushautoradio.get_active():
|
||||||
|
flush_tool = misc.AUTO
|
||||||
|
elif self.ipflushradio.get_active():
|
||||||
|
flush_tool = misc.IP
|
||||||
|
else:
|
||||||
|
flush_tool = misc.ROUTE
|
||||||
|
daemon.SetFlushTool(flush_tool)
|
||||||
|
|
||||||
|
[width, height] = self.dialog.get_size()
|
||||||
|
config.WriteWindowSize(width, height, "pref")
|
||||||
|
|
||||||
|
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 prep_settings_diag(self):
|
||||||
|
""" Set up anything that doesn't have to be persisted later. """
|
||||||
|
# External Programs tab
|
||||||
|
self.wTree.get_widget("gen_settings_label").set_label(language["gen_settings"])
|
||||||
|
self.wTree.get_widget("ext_prog_label").set_label(language["ext_programs"])
|
||||||
|
self.wTree.get_widget("dhcp_client_label").set_label(language["dhcp_client"])
|
||||||
|
self.wTree.get_widget("wired_detect_label").set_label(language["wired_detect"])
|
||||||
|
self.wTree.get_widget("route_flush_label").set_label(language["route_flush"])
|
||||||
|
|
||||||
|
entryWiredAutoMethod = self.wTree.get_widget("pref_wired_auto_label")
|
||||||
|
entryWiredAutoMethod.set_label('Wired Autoconnect Setting:')
|
||||||
|
entryWiredAutoMethod.set_alignment(0, 0)
|
||||||
|
atrlist = pango.AttrList()
|
||||||
|
atrlist.insert(pango.AttrWeight(pango.WEIGHT_BOLD, 0, 50))
|
||||||
|
entryWiredAutoMethod.set_attributes(atrlist)
|
||||||
|
|
||||||
|
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'])
|
||||||
|
self.set_label("pref_wifi_label", language['wireless_interface'] + ':')
|
||||||
|
self.set_label("pref_wired_label", language['wired_interface'] + ':')
|
||||||
|
self.set_label("pref_driver_label", language['wpa_supplicant_driver'] + ':')
|
||||||
87
wicd.py
87
wicd.py
@@ -39,16 +39,17 @@ def main() -- Runs the wicd frontend main loop.
|
|||||||
import sys
|
import sys
|
||||||
import gtk
|
import gtk
|
||||||
import gobject
|
import gobject
|
||||||
import dbus
|
|
||||||
import dbus.service
|
|
||||||
import getopt
|
import getopt
|
||||||
import os
|
import os
|
||||||
import pango
|
import pango
|
||||||
|
from dbus import DBusException
|
||||||
|
from dbus import version as dbus_version
|
||||||
|
|
||||||
# Wicd specific imports
|
# Wicd specific imports
|
||||||
import wpath
|
import wpath
|
||||||
import misc
|
import misc
|
||||||
import gui
|
import gui
|
||||||
|
from dbusmanager import DBusManager
|
||||||
|
|
||||||
# Import egg.trayicon if we're using an older gtk version
|
# Import egg.trayicon if we're using an older gtk version
|
||||||
if not (gtk.gtk_version[0] >= 2 and gtk.gtk_version[1] >= 10):
|
if not (gtk.gtk_version[0] >= 2 and gtk.gtk_version[1] >= 10):
|
||||||
@@ -61,7 +62,7 @@ if not (gtk.gtk_version[0] >= 2 and gtk.gtk_version[1] >= 10):
|
|||||||
else:
|
else:
|
||||||
USE_EGG = False
|
USE_EGG = False
|
||||||
|
|
||||||
if getattr(dbus, 'version', (0, 0, 0)) < (0, 80, 0):
|
if not dbus_version or (dbus_version < (0, 80, 0)):
|
||||||
import dbus.glib
|
import dbus.glib
|
||||||
else:
|
else:
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
from dbus.mainloop.glib import DBusGMainLoop
|
||||||
@@ -72,7 +73,7 @@ misc.RenameProcess("wicd-client")
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
wpath.chdir(__file__)
|
wpath.chdir(__file__)
|
||||||
|
|
||||||
bus = None
|
dbus_manager = None
|
||||||
daemon = None
|
daemon = None
|
||||||
wireless = None
|
wireless = None
|
||||||
wired = None
|
wired = None
|
||||||
@@ -428,8 +429,9 @@ class TrayIcon:
|
|||||||
return wireless.GetWirelessProperty(net_id, prop)
|
return wireless.GetWirelessProperty(net_id, prop)
|
||||||
|
|
||||||
net_menuitem = self.manager.get_widget("/Menubar/Menu/Connect/")
|
net_menuitem = self.manager.get_widget("/Menubar/Menu/Connect/")
|
||||||
net_menuitem.get_submenu().destroy()
|
submenu = net_menuitem.get_submenu()
|
||||||
net_menu = gtk.Menu()
|
self._clear_menu(submenu)
|
||||||
|
|
||||||
is_connecting = daemon.CheckIfConnecting()
|
is_connecting = daemon.CheckIfConnecting()
|
||||||
num_networks = wireless.GetNumberOfNetworks()
|
num_networks = wireless.GetNumberOfNetworks()
|
||||||
[status, info] = daemon.GetConnectionStatus()
|
[status, info] = daemon.GetConnectionStatus()
|
||||||
@@ -440,10 +442,10 @@ class TrayIcon:
|
|||||||
is_active = True
|
is_active = True
|
||||||
else:
|
else:
|
||||||
is_active = False
|
is_active = False
|
||||||
self._add_item_to_menu(net_menu, "Wired Network", "__wired__",
|
self._add_item_to_menu(submenu, "Wired Network", "__wired__",
|
||||||
0, is_connecting, is_active)
|
0, is_connecting, is_active)
|
||||||
sep = gtk.SeparatorMenuItem()
|
sep = gtk.SeparatorMenuItem()
|
||||||
net_menu.append(sep)
|
submenu.append(sep)
|
||||||
sep.show()
|
sep.show()
|
||||||
|
|
||||||
if num_networks > 0:
|
if num_networks > 0:
|
||||||
@@ -453,16 +455,33 @@ class TrayIcon:
|
|||||||
is_active = True
|
is_active = True
|
||||||
else:
|
else:
|
||||||
is_active = False
|
is_active = False
|
||||||
self._add_item_to_menu(net_menu, essid, "wifi", x,
|
self._add_item_to_menu(submenu, essid, "wifi", x,
|
||||||
is_connecting, is_active)
|
is_connecting, is_active)
|
||||||
|
|
||||||
net_menuitem.set_submenu(net_menu)
|
|
||||||
net_menuitem.show()
|
net_menuitem.show()
|
||||||
|
|
||||||
|
def init_network_menu(self):
|
||||||
|
net_menuitem = self.manager.get_widget("/Menubar/Menu/Connect/")
|
||||||
|
submenu = net_menuitem.get_submenu()
|
||||||
|
self._clear_menu(submenu)
|
||||||
|
|
||||||
|
loading_item = gtk.MenuItem(language['scanning'] + "...")
|
||||||
|
loading_item.set_sensitive(False)
|
||||||
|
loading_item.show()
|
||||||
|
submenu.append(loading_item)
|
||||||
|
#net_menuitem.set_submenu(net_menu)
|
||||||
|
net_menuitem.show()
|
||||||
|
|
||||||
|
def _clear_menu(self, menu):
|
||||||
|
for item in menu.get_children():
|
||||||
|
menu.remove(item)
|
||||||
|
item.destroy()
|
||||||
|
|
||||||
def toggle_wicd_gui(self):
|
def toggle_wicd_gui(self):
|
||||||
""" Toggles the wicd GUI. """
|
""" Toggles the wicd GUI. """
|
||||||
if not self.gui_win:
|
if not self.gui_win:
|
||||||
self.gui_win = gui.appGui()
|
self.gui_win = gui.appGui(dbus_manager)
|
||||||
|
bus = dbus_manager.get_bus()
|
||||||
bus.add_signal_receiver(self.gui_win.dbus_scan_finished,
|
bus.add_signal_receiver(self.gui_win.dbus_scan_finished,
|
||||||
'SendEndScanSignal',
|
'SendEndScanSignal',
|
||||||
'org.wicd.daemon')
|
'org.wicd.daemon')
|
||||||
@@ -476,7 +495,7 @@ class TrayIcon:
|
|||||||
else:
|
else:
|
||||||
self.gui_win.exit()
|
self.gui_win.exit()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
class EggTrayIconGUI(TrayIconGUI):
|
class EggTrayIconGUI(TrayIconGUI):
|
||||||
""" Tray Icon for gtk < 2.10.
|
""" Tray Icon for gtk < 2.10.
|
||||||
@@ -554,7 +573,9 @@ class TrayIcon:
|
|||||||
|
|
||||||
def on_popup_menu(self, status, button, timestamp):
|
def on_popup_menu(self, status, button, timestamp):
|
||||||
""" Opens the right click menu for the tray icon. """
|
""" Opens the right click menu for the tray icon. """
|
||||||
self.populate_network_menu()
|
self.init_network_menu()
|
||||||
|
wireless.Scan(reply_handler=self.populate_network_menu,
|
||||||
|
error_handler=lambda x: x)
|
||||||
self.menu.popup(None, None, None, button, timestamp)
|
self.menu.popup(None, None, None, button, timestamp)
|
||||||
|
|
||||||
def set_from_file(self, path = None):
|
def set_from_file(self, path = None):
|
||||||
@@ -577,30 +598,26 @@ Arguments:
|
|||||||
\t-a\t--no-animate\tRun the tray without network traffic tray animations.
|
\t-a\t--no-animate\tRun the tray without network traffic tray animations.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def connect_to_dbus():
|
def setup_dbus():
|
||||||
global bus, daemon, wireless, wired, config
|
global bus, daemon, wireless, wired, config, dbus_manager
|
||||||
# Connect to the daemon
|
|
||||||
bus = dbus.SystemBus()
|
dbus_manager = DBusManager()
|
||||||
try:
|
try:
|
||||||
print 'Attempting to connect tray to daemon...'
|
dbus_manager.connect_to_dbus()
|
||||||
proxy_obj = bus.get_object('org.wicd.daemon', '/org/wicd/daemon')
|
except DBusException:
|
||||||
print 'Success.'
|
|
||||||
except dbus.DBusException:
|
|
||||||
print "Can't connect to the daemon, trying to start it automatically..."
|
print "Can't connect to the daemon, trying to start it automatically..."
|
||||||
misc.PromptToStartDaemon()
|
misc.PromptToStartDaemon()
|
||||||
try:
|
try:
|
||||||
print 'Attempting to connect tray to daemon...'
|
dbus_manager.connect_to_dbus()
|
||||||
proxy_obj = bus.get_object('org.wicd.daemon', '/org/wicd/daemon')
|
except DBusException:
|
||||||
print 'Success.'
|
|
||||||
except dbus.DBusException:
|
|
||||||
gui.error(None, "Could not connect to wicd's D-Bus interface. " +
|
gui.error(None, "Could not connect to wicd's D-Bus interface. " +
|
||||||
"Make sure the daemon is started.")
|
"Make sure the daemon is started.")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
dbus_ifaces = dbus_manager.get_dbus_ifaces()
|
||||||
daemon = dbus.Interface(proxy_obj, 'org.wicd.daemon')
|
daemon = dbus_ifaces['daemon']
|
||||||
wireless = dbus.Interface(proxy_obj, 'org.wicd.daemon.wireless')
|
wireless = dbus_ifaces['wireless']
|
||||||
wired = dbus.Interface(proxy_obj, 'org.wicd.daemon.wired')
|
wired = dbus_ifaces['wired']
|
||||||
config = dbus.Interface(proxy_obj, 'org.wicd.daemon.config')
|
config = dbus_ifaces['config']
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
@@ -634,7 +651,7 @@ def main(argv):
|
|||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
print 'Loading...'
|
print 'Loading...'
|
||||||
connect_to_dbus()
|
setup_dbus()
|
||||||
|
|
||||||
if not use_tray:
|
if not use_tray:
|
||||||
the_gui = gui.appGui()
|
the_gui = gui.appGui()
|
||||||
@@ -651,10 +668,10 @@ def main(argv):
|
|||||||
if daemon.GetNeedWiredProfileChooser():
|
if daemon.GetNeedWiredProfileChooser():
|
||||||
daemon.SetNeedWiredProfileChooser(False)
|
daemon.SetNeedWiredProfileChooser(False)
|
||||||
tray_icon.icon_info.wired_profile_chooser()
|
tray_icon.icon_info.wired_profile_chooser()
|
||||||
|
|
||||||
|
bus = dbus_manager.get_bus()
|
||||||
bus.add_signal_receiver(tray_icon.icon_info.wired_profile_chooser,
|
bus.add_signal_receiver(tray_icon.icon_info.wired_profile_chooser,
|
||||||
'LaunchChooser', 'org.wicd.daemon')
|
'LaunchChooser', 'org.wicd.daemon')
|
||||||
|
|
||||||
bus.add_signal_receiver(tray_icon.icon_info.update_tray_icon,
|
bus.add_signal_receiver(tray_icon.icon_info.update_tray_icon,
|
||||||
'StatusChanged', 'org.wicd.daemon')
|
'StatusChanged', 'org.wicd.daemon')
|
||||||
print 'Done.'
|
print 'Done.'
|
||||||
@@ -663,12 +680,12 @@ def main(argv):
|
|||||||
mainloop = gobject.MainLoop()
|
mainloop = gobject.MainLoop()
|
||||||
try:
|
try:
|
||||||
mainloop.run()
|
mainloop.run()
|
||||||
except dbus.exceptions.DBusException:
|
except DBusException:
|
||||||
print 'Warning. Caught a D-Bus exception! Connection to daemon lost.'
|
print 'Warning. Caught a D-Bus exception! Connection to daemon lost.'
|
||||||
print 'Trying to reconnect...'
|
print 'Trying to reconnect...'
|
||||||
sleep(10)
|
sleep(10)
|
||||||
try:
|
try:
|
||||||
connect_to_dbus()
|
setup_dbus()
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user