From 7c135804bc53708a23c808640145e37ae3b22f6b Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sun, 25 Feb 2007 11:36:44 +0000 Subject: Handle device removal --- (limited to 'shell/view/home/HomeBox.py') diff --git a/shell/view/home/HomeBox.py b/shell/view/home/HomeBox.py index 4ab1140..e2483d2 100644 --- a/shell/view/home/HomeBox.py +++ b/shell/view/home/HomeBox.py @@ -45,7 +45,7 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): shell_model.connect('notify::state', self._shell_state_changed_cb) - self._device_icons = [] + self._device_icons = {} devices_model = shell_model.get_devices() for device in devices_model: @@ -59,13 +59,17 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): def _add_device(self, device): view = deviceview.create(device) self.append(view, hippo.PACK_FIXED) - self._device_icons.append(view) + self._device_icons[device.get_id()] = view + + def _remove_device(self, device): + self.remove(self._device_icons[device.get_id()]) + del self._device_icons[device.get_id()] def _device_appeared_cb(self, model, device): self._add_device(device) def _device_disappeared_cb(self, model, device): - pass + self._remove_device(device) def _shell_state_changed_cb(self, model, pspec): # FIXME handle all possible mode switches @@ -87,7 +91,7 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem): (height - icon_height) / 2) i = 0 - for icon in self._device_icons: + for icon in self._device_icons.values(): angle = 2 * math.pi / len(self._device_icons) * i + math.pi / 2 radius = units.grid_to_pixels(5) -- cgit v0.9.1