Show activities again

This commit is contained in:
Marco Pesenti Gritti 2006-09-25 16:40:15 +02:00
parent e31bcc76b3
commit 2ee61e4475
2 changed files with 65 additions and 7 deletions

View File

@ -6,6 +6,23 @@ import conf
from sugar.canvas.IconItem import IconItem from sugar.canvas.IconItem import IconItem
from view.home.IconLayout import IconLayout from view.home.IconLayout import IconLayout
from view.BuddyIcon import BuddyIcon from view.BuddyIcon import BuddyIcon
from sugar.canvas.SnowflakeLayout import SnowflakeLayout
class ActivityView(goocanvas.Group):
def __init__(self, shell, menu_shell, model):
goocanvas.Group.__init__(self)
self._model = model
self._layout = SnowflakeLayout()
icon = IconItem(icon_name=model.get_icon_name(),
color=model.get_color(), size=80)
self.add_child(icon)
self._layout.set_root(icon)
def get_size_request(self):
size = self._layout.get_size()
return [size, size]
class MeshGroup(goocanvas.Group): class MeshGroup(goocanvas.Group):
def __init__(self, shell, menu_shell): def __init__(self, shell, menu_shell):
@ -15,16 +32,54 @@ class MeshGroup(goocanvas.Group):
self._menu_shell = menu_shell self._menu_shell = menu_shell
self._model = shell.get_model().get_mesh() self._model = shell.get_model().get_mesh()
self._layout = IconLayout(shell.get_grid()) self._layout = IconLayout(shell.get_grid())
self._buddies = {}
self._activities = {}
for buddy_model in self._model.get_buddies(): for buddy_model in self._model.get_buddies():
self._add_buddy(buddy_model) self._add_buddy(buddy_model)
self._model.connect('buddy-added', self._buddy_added_cb) self._model.connect('buddy-added', self._buddy_added_cb)
self._model.connect('buddy-removed', self._buddy_removed_cb)
for activity_model in self._model.get_activities():
self._add_activity(activity_model)
self._model.connect('activity-added', self._activity_added_cb)
self._model.connect('activity-removed', self._activity_removed_cb)
def _buddy_added_cb(self, model, buddy_model): def _buddy_added_cb(self, model, buddy_model):
self._add_buddy(buddy_model) self._add_buddy(buddy_model)
def _buddy_removed_cb(self, model, buddy_model):
self._remove_buddy(buddy_model)
def _activity_added_cb(self, model, activity_model):
self._add_activity(activity_model)
def _activity_removed_cb(self, model, activity_model):
self._remove_activity(activity_model)
def _add_buddy(self, buddy_model): def _add_buddy(self, buddy_model):
icon = BuddyIcon(self._shell, self._menu_shell, buddy_model) icon = BuddyIcon(self._shell, self._menu_shell, buddy_model)
icon.props.size = 80
self.add_child(icon) self.add_child(icon)
self._buddies[buddy_model.get_name()] = icon
self._layout.add_icon(icon) self._layout.add_icon(icon)
def _remove_buddy(self, buddy_model):
icon = self._buddies[buddy_model.get_name()]
self.remove_child(icon)
del self._buddies[buddy_model.get_name()]
def _add_activity(self, activity_model):
icon = ActivityView(self._shell, self._menu_shell, activity_model)
self.add_child(icon)
self._activities[activity_model.get_id()] = icon
self._layout.add_icon(icon)
def _remove_activity(self, activity_model):
icon = self._activities[activity_model.get_id()]
self.remove_child(icon)
del self._activities[activity_model.get_id()]

View File

@ -11,6 +11,7 @@ class SnowflakeLayout:
def __init__(self): def __init__(self):
self._root = None self._root = None
self._children = [] self._children = []
self._size = 0
def set_root(self, icon): def set_root(self, icon):
self._root = icon self._root = icon
@ -27,7 +28,7 @@ class SnowflakeLayout:
[width, height] = self._root.get_size_request() [width, height] = self._root.get_size_request()
matrix = cairo.Matrix(1, 0, 0, 1, 0, 0) matrix = cairo.Matrix(1, 0, 0, 1, 0, 0)
matrix.translate(self._cx, self._cy) matrix.translate(self._cx - (width / 2), self._cy - (height / 2))
self._root.set_transform(matrix) self._root.set_transform(matrix)
def _layout_child(self, child, index): def _layout_child(self, child, index):
@ -44,15 +45,17 @@ class SnowflakeLayout:
matrix.translate(x, y) matrix.translate(x, y)
child.set_transform(matrix) child.set_transform(matrix)
def get_size(self):
return self._size
def _layout(self): def _layout(self):
self._r = SnowflakeLayout._BASE_RADIUS + \ self._r = SnowflakeLayout._BASE_RADIUS + \
SnowflakeLayout._CHILDREN_FACTOR * len(self._children) SnowflakeLayout._CHILDREN_FACTOR * len(self._children)
self._size = self._r * 2 + SnowflakeLayout._BORDER + \
SnowflakeLayout._FLAKE_DISTANCE * 2
c = self._r + SnowflakeLayout._BORDER + \ self._cx = self._size / 2
SnowflakeLayout._FLAKE_DISTANCE * 2 self._cy = self._size / 2
self._cx = c
self._cy = c
self._layout_root() self._layout_root()