diff options
Diffstat (limited to 'activities/web/linksview.py')
-rw-r--r-- | activities/web/linksview.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/activities/web/linksview.py b/activities/web/linksview.py new file mode 100644 index 0000000..fde1156 --- /dev/null +++ b/activities/web/linksview.py @@ -0,0 +1,36 @@ +import hippo + +from sugar.graphics.bubble import Bubble + +class LinksView(hippo.Canvas): + def __init__(self, model): + hippo.Canvas.__init__(self) + + self._bubbles = {} + + self._box = hippo.CanvasBox(background_color=0x414141ff) + self.set_root(self._box) + + for link in model: + self._add_link(link) + + model.connect('link_added', self._link_added_cb) + model.connect('link_removed', self._link_removed_cb) + + def _add_link(self, link): + bubble = Bubble(color=link.buddy.get_color()) + self._box.append(link) + + self._bubbles[link] = bubble + + def _remove_link(self, link): + bubble = self._bubbles[link] + self._box.remove(bubble) + + del self._bubbles[link] + + def _link_added_cb(self, model, link): + self._add_link(link) + + def _link_removed_cb(self, model, link): + self._removed_link(link) |