diff --git a/shell/HomeWindow.py b/shell/HomeWindow.py index 9534a81c..f19f4e0b 100644 --- a/shell/HomeWindow.py +++ b/shell/HomeWindow.py @@ -1,5 +1,6 @@ import gtk import goocanvas +import wnck from sugar.canvas.IconItem import IconItem from sugar.canvas.DonutItem import DonutItem @@ -7,10 +8,32 @@ from sugar.canvas.DonutItem import DonutItem class TasksItem(DonutItem): def __init__(self): DonutItem.__init__(self, 200) - self.add_piece(30) - self.add_piece(30) - self.add_piece(30) - self.add_piece(10) + + self._items = {} + + screen = wnck.screen_get_default() + for window in screen.get_windows(): + if not window.is_skip_tasklist(): + self._add(window) + screen.connect('window_opened', self.__window_opened_cb) + screen.connect('window_closed', self.__window_closed_cb) + + def __window_opened_cb(self, screen, window): + if not window.is_skip_tasklist(): + self._add(window) + + def __window_closed_cb(self, screen, window): + if not window.is_skip_tasklist(): + self._remove(window) + + def _remove(self, window): + item = self._items[window.get_xid()] + self.remove_child(item) + del self._items[window.get_xid()] + + def _add(self, window): + item = self.add_piece(100 / 8) + self._items[window.get_xid()] = item class ActivityItem(IconItem): def __init__(self, activity): diff --git a/sugar/canvas/DonutItem.py b/sugar/canvas/DonutItem.py index 19c56f80..df64e851 100644 --- a/sugar/canvas/DonutItem.py +++ b/sugar/canvas/DonutItem.py @@ -25,8 +25,6 @@ class PieceItem(goocanvas.Path): data += 'z' - print data - self.set_property('data', data) class DonutItem(goocanvas.Group): @@ -45,5 +43,11 @@ class DonutItem(goocanvas.Group): self.add_child(piece_item) piece_item.construct() + return piece_item + + def remove_piece(self, piece_item): + index = self.find(piece_item) + self.remove_child(index) + def get_radius(self): return self._radius