Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-03-29 19:02:36 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-03-29 19:02:36 (GMT)
commit6c9eb64de327791263f635d9ebc97ae2d10e3cc4 (patch)
tree90711767fbf1e8ef66a4c28ca51f2397f2fc70bb /shell
parent83a86e0ea1b6ce3f990552f0d0d599a04ef6411d (diff)
Handle device addition and activation correctly
Diffstat (limited to 'shell')
-rw-r--r--shell/model/devices/devicesmodel.py25
1 files changed, 22 insertions, 3 deletions
diff --git a/shell/model/devices/devicesmodel.py b/shell/model/devices/devicesmodel.py
index a161609..2685b7c 100644
--- a/shell/model/devices/devicesmodel.py
+++ b/shell/model/devices/devicesmodel.py
@@ -1,3 +1,4 @@
+import logging
import gobject
from model.devices import device
@@ -34,14 +35,28 @@ class DevicesModel(gobject.GObject):
for device in network_manager.get_devices():
self._check_network_device(device)
+ network_manager.connect('device-added',
+ self._network_device_added_cb)
+ network_manager.connect('device-activating',
+ self._network_device_activating_cb)
network_manager.connect('device-activated',
self._network_device_activated_cb)
network_manager.connect('device-removed',
self._network_device_removed_cb)
- def _network_device_activated_cb(self, network_manager, nm_device):
+ def _network_device_added_cb(self, network_manager, nm_device):
+ logging.debug("got added isgnal for %s" % nm_device.get_op())
+ state = nm_device.get_state()
+ if state == nmclient.DEVICE_STATE_ACTIVATING \
+ or state == nmclient.DEVICE_STATE_ACTIVATED:
+ self._check_network_device(nm_device)
+
+ def _network_device_activating_cb(self, network_manager, nm_device):
self._check_network_device(nm_device)
+ def _network_device_activated_cb(self, network_manager, nm_device):
+ pass
+
def _network_device_removed_cb(self, nm_device):
self._remove_network_device(nm_device)
@@ -51,6 +66,7 @@ class DevicesModel(gobject.GObject):
def _check_network_device(self, nm_device):
if not nm_device.is_valid():
+ logging.debug("Device %s not valid" % nm_device.get_op())
return
dtype = nm_device.get_type()
@@ -62,7 +78,12 @@ class DevicesModel(gobject.GObject):
return self._devices[str(nm_device.get_op())]
def _add_network_device(self, nm_device):
+ if self._devices.has_key(str(nm_device.get_op())):
+ logging.debug("Tried to add device %s twice" % nm_device.get_op())
+ return
+
dtype = nm_device.get_type()
+ logging.debug("Adding device %s type %d" % (nm_device.get_op(), dtype))
if dtype == nmclient.DEVICE_TYPE_802_11_WIRELESS:
self.add_device(wireless.Device(nm_device))
if dtype == nmclient.DEVICE_TYPE_802_11_MESH_OLPC:
@@ -79,8 +100,6 @@ class DevicesModel(gobject.GObject):
def add_device(self, device):
self._devices[device.get_id()] = device
- import logging
- logging.debug("adding device %s" % device.get_id())
self.emit('device-appeared', device)
def remove_device(self, device):