diff --git a/daemon.py b/daemon.py
index 3cae710..9a607d2 100644
--- a/daemon.py
+++ b/daemon.py
@@ -39,6 +39,7 @@ import sys
import time
import getopt
import ConfigParser
+
# DBUS
import gobject
import dbus
@@ -665,6 +666,11 @@ class ConnectionWizard(dbus.service.Object):
iface = self.wifi.DetectWirelessInterface()
print 'automatically detected wireless interface', iface
return str(iface)
+
+ @dbus.service.method('org.wicd.daemon.wireless')
+ def IsWirelessUp(self):
+ """ Returns a boolean specifying if wireless is up or down. """
+ return self.wifi.IsUp()
@dbus.service.method('org.wicd.daemon.wireless')
def GetPrintableSignalStrength(self, iwconfig=None):
@@ -714,6 +720,18 @@ class ConnectionWizard(dbus.service.Object):
return x
print 'returning -1, current network not found'
return -1
+
+ @dbus.service.method('org.wicd.daemon.wireless')
+ def EnableWirelessInterface(self):
+ """ Calls a method to enable the wireless interface. """
+ result = self.wifi.EnableInterface()
+ return result
+
+ @dbus.service.method('org.wicd.daemon.wireless')
+ def DisableWirelessInterface(self):
+ """ Calls a method to disable the wireless interface. """
+ result = self.wifi.DisableInterface()
+ return result
@dbus.service.method('org.wicd.daemon.wireless')
def ConnectWireless(self, id):
@@ -863,6 +881,23 @@ class ConnectionWizard(dbus.service.Object):
self.wired.CheckPluggedIn())
else:
return self.__printReturn("returning plugged in", None)
+
+ @dbus.service.method('org.wicd.daemon.wired')
+ def IsWiredUp(self):
+ """ Returns a boolean specifying if wired iface is up or down. """
+ return self.wired.IsUp()
+
+ @dbus.service.method('org.wicd.daemon.wired')
+ def EnableWiredInterface(self):
+ """ Calls a method to enable the wired interface. """
+ result = self.wired.EnableInterface()
+ return result
+
+ @dbus.service.method('org.wicd.daemon.wired')
+ def DisableWiredInterface(self):
+ """ Calls a method to disable the wired interface. """
+ result = self.wired.DisableInterface()
+ return result
@dbus.service.method('org.wicd.daemon.wired')
def ConnectWired(self):
@@ -1453,7 +1488,6 @@ Arguments:
\t-h\t--help\t\tPrint this help.
"""
-
def daemonize():
""" Disconnect from the controlling terminal.
@@ -1489,7 +1523,6 @@ def daemonize():
print >> sys.stderr, "Fork #2 failed: %d (%s)" % (e.errno, e.strerror)
sys.exit(1)
-
def main(argv):
""" The main daemon program.
diff --git a/data/wicd.glade b/data/wicd.glade
index 81370cb..5f4cf8d 100644
--- a/data/wicd.glade
+++ b/data/wicd.glade
@@ -211,8 +211,77 @@
+
+
+
+
+
diff --git a/gui.py b/gui.py
index ff34cf3..ea2945c 100644
--- a/gui.py
+++ b/gui.py
@@ -1083,9 +1083,8 @@ class WiredProfileChooser:
instruct_label.set_alignment(0, 0)
stoppopcheckbox.set_active(False)
- # Remove widgets that were added to the normal
- # WiredNetworkEntry so that they can be added to
- # the pop-up wizard.
+ # Remove widgets that were added to the normal WiredNetworkEntry
+ # so that they can be added to the pop-up wizard.
wired_net_entry.vboxTop.remove(wired_net_entry.hbox_temp)
wired_net_entry.vboxTop.remove(wired_net_entry.profile_help)
@@ -1133,7 +1132,11 @@ class appGui:
"connect_clicked" : self.connect_hidden,
"preferences_clicked" : self.settings_dialog,
"about_clicked" : self.about_dialog,
- "create_adhoc_network_button_button" : self.create_adhoc_network}
+ "create_adhoc_network_button_button" : self.create_adhoc_network,
+ "on_iface_menu_enable_wireless" : self.on_enable_wireless,
+ "on_iface_menu_disable_wireless" : self.on_disable_wireless,
+ "on_iface_menu_enable_wired" : self.on_enable_wired,
+ "on_iface_menu_disable_wired" : self.on_disable_wired,}
self.wTree.signal_autoconnect(dic)
# Set some strings in the GUI - they may be translated
@@ -1157,7 +1160,16 @@ class appGui:
self.is_visible = True
self.window.connect('delete_event', self.exit)
-
+
+ if not wireless.IsWirelessUp():
+ self.wTree.get_widget("iface_menu_disable_wireless").hide()
+ else:
+ self.wTree.get_widget("iface_menu_enable_wireless").hide()
+ if not wired.IsWiredUp():
+ self.wTree.get_widget("iface_menu_disable_wired").hide()
+ else:
+ self.wTree.get_widget("iface_menu_enable_wired").hide()
+
size = config.ReadWindowSize()
width = size[0]
height = size[1]
@@ -1381,6 +1393,50 @@ class appGui:
self.refresh_networks(None, True, answer)
else:
dialog.destroy()
+
+ def on_enable_wireless(self, widget):
+ """ Called when the Enable Wireless Interface button is clicked. """
+ success = wireless.EnableWirelessInterface()
+ if success:
+ enable_item = self.wTree.get_widget("iface_menu_enable_wireless")
+ disable_item = self.wTree.get_widget("iface_menu_disable_wireless")
+ enable_item.hide()
+ disable_item.show()
+ else:
+ misc.error(self.window, "Failed to enable wireless interface.")
+
+ def on_disable_wireless(self, widget):
+ """ Called when the Disable Wireless Interface button is clicked. """
+ success = wireless.DisableWirelessInterface()
+ if success:
+ enable_item = self.wTree.get_widget("iface_menu_enable_wireless")
+ disable_item = self.wTree.get_widget("iface_menu_disable_wireless")
+ enable_item.show()
+ disable_item.hide()
+ else:
+ misc.error(self.window, "Failed to disable wireless interface.")
+
+ def on_enable_wired(self, widget):
+ """ Called when the Enable Wired Interface button is clicked. """
+ success = wired.EnableWiredInterface()
+ if success:
+ enable_item = self.wTree.get_widget("iface_menu_enable_wired")
+ disable_item = self.wTree.get_widget("iface_menu_disable_wired")
+ enable_item.hide()
+ disable_item.show()
+ else:
+ misc.error(self.window, "Failed to enable wired interface.")
+
+ def on_disable_wired(self, widget):
+ """ Called when the Disable Wired Interface button is clicked. """
+ success = wired.DisableWiredInterface()
+ if success:
+ enable_item = self.wTree.get_widget("iface_menu_enable_wired")
+ disable_item = self.wTree.get_widget("iface_menu_disable_wired")
+ enable_item.show()
+ disable_item.hide()
+ else:
+ misc.error(self.window, "Failed to disable wired interface.")
def cancel_connect(self, widget):
""" Alerts the daemon to cancel the connection process. """
diff --git a/networking.py b/networking.py
index 5f0c30d..cc9ca2b 100644
--- a/networking.py
+++ b/networking.py
@@ -285,6 +285,10 @@ class Wireless(Controller):
def GetIwconfig(self):
""" Get the out of iwconfig. """
return self.wiface.GetIwconfig()
+
+ def IsUp(self):
+ """ Calls the IsUp method for the wireless interface. """
+ return self.wiface.IsUp()
def CreateAdHocNetwork(self, essid, channel, ip, enctype, key,
enc_used, ics):
@@ -367,13 +371,12 @@ class Wireless(Controller):
wiface.SetAddress('0.0.0.0')
wiface.Down()
wiface.Up()
+
+ def EnableInterface(self):
+ return self.wiface.Up()
- def SetDriver(self):
- self.driver = self.GetDriverName()
-
- def GetDriverName(self):
- """ Gets the driver associated with the wireless interface. """
- return self.wiface.GetDriverName()
+ def DisableInterface(self):
+ return self.wiface.Down()
def SetWPADriver(self, driver):
self.wiface.SetWpaDriver(driver)
@@ -632,18 +635,9 @@ class Wired(Controller):
liface.Down()
liface.Up()
- def SetDriver(self):
- self.driver = self.GetDriverName()
-
- def GetDriverName(self):
- """ Get the driver associated with the wired interface. """
- return self.liface.GetDriverName()
-
- def LoadDriver(self):
- return self.liface.LoadDriver(self.driver)
-
- def UnloadDriver(self):
- return self.liface.UnloadDriver(self.driver)
+ def IsUp(self):
+ """ Calls the IsUp method for the wired interface. """
+ return self.liface.IsUp()
def EnableInterface(self):
return self.liface.Up()
diff --git a/wnettools.py b/wnettools.py
index f8fd95b..5c7c2fd 100644
--- a/wnettools.py
+++ b/wnettools.py
@@ -392,6 +392,20 @@ class Interface(object):
#if self.verbose: print cmd
output = misc.Run(cmd)
return misc.RunRegex(ip_pattern, output)
+
+ def IsUp(self):
+ """ Determines if the interface is up. """
+ cmd = "ifconfig " + self.iface
+ output = misc.Run(cmd)
+ lines = output.split('\n')
+ if len(lines) < 5:
+ return False
+
+ for line in lines[1:4]:
+ if line.strip().startswith('UP'):
+ return True
+
+ return False
class WiredInterface(Interface):
@@ -451,20 +465,6 @@ class WiredInterface(Interface):
return True
else:
return False
-
- def IsUp(self):
- """ Determines if the interface is up. """
- cmd = "ifconfig " + self.iface
- output = misc.Run(cmd)
- lines = output.split('\n')
- if len(lines) < 5:
- return False
-
- for line in lines[1:4]:
- if line.strip().startswith('UP'):
- return True
-
- return False
class WirelessInterface(Interface):