Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinier Heeres <reinier@heeres.eu>2007-11-20 14:41:44 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-11-20 14:41:44 (GMT)
commit4495064fd4387cb340dfca0abf310cb04f46a61a (patch)
tree5eb6223d03312ca38d648fba075ab1b018ffddc6
parentd859b9507095c28f4c4c97ce697dc07f346ae88f (diff)
Implement activity palettes in mesh view, #4887
-rw-r--r--shell/view/home/MeshBox.py64
1 files changed, 55 insertions, 9 deletions
diff --git a/shell/view/home/MeshBox.py b/shell/view/home/MeshBox.py
index bb58c05..ee8599c 100644
--- a/shell/view/home/MeshBox.py
+++ b/shell/view/home/MeshBox.py
@@ -28,6 +28,7 @@ from sugar.graphics.icon import get_icon_state
from sugar.graphics import style
from sugar.graphics import palette
from sugar.graphics import iconentry
+from sugar.graphics.menuitem import MenuItem
from sugar import profile
from model import accesspointmodel
@@ -265,17 +266,47 @@ class ActivityView(hippo.CanvasBox):
self._layout = SnowflakeLayout()
self.set_layout(self._layout)
- self._icon = CanvasIcon(file_name=model.get_icon_name(),
- xo_color=model.get_color(), cache=True,
- size=style.STANDARD_ICON_SIZE)
- self._icon.connect('activated', self._clicked_cb)
- self._icon.set_tooltip(self._model.activity.props.name)
+ self._icon = self._create_icon()
self._layout.add_center(self._icon)
- self._model.activity.connect('notify::name', self._name_changed_cb)
+ self._update_palette()
- def _name_changed_cb(self, activity, pspec):
- self._icon.set_tooltip(activity.props.name)
+ activity = self._model.activity
+ activity.connect('notify::name', self._name_changed_cb)
+ activity.connect('notify::color', self._color_changed_cb)
+ activity.connect('notify::private', self._private_changed_cb)
+ activity.connect('joined', self._joined_changed_cb)
+ #FIXME: 'joined' signal not working, see #5032
+
+ def _create_icon(self):
+ icon = CanvasIcon(file_name=self._model.get_icon_name(),
+ xo_color=self._model.get_color(), cache=True,
+ size=style.STANDARD_ICON_SIZE)
+ icon.connect('activated', self._clicked_cb)
+ return icon
+
+ def _create_palette(self):
+ p = palette.Palette(self._model.activity.props.name)
+
+ private = self._model.activity.props.private
+ joined = self._model.activity.props.joined
+
+ if joined:
+ item = MenuItem(_('Resume'), 'activity-start')
+ item.connect('activate', self._clicked_cb)
+ item.show()
+ p.menu.append(item)
+ elif not private:
+ item = MenuItem(_('Join'), 'activity-start')
+ item.connect('activate', self._clicked_cb)
+ item.show()
+ p.menu.append(item)
+
+ return p
+
+ def _update_palette(self):
+ self._palette = self._create_palette()
+ self._icon.set_palette(self._palette)
def has_buddy_icon(self, key):
return self._icons.has_key(key)
@@ -306,6 +337,21 @@ class ActivityView(hippo.CanvasBox):
if hasattr(icon, 'set_filter'):
icon.set_filter(query)
+ def _name_changed_cb(self, activity, pspec):
+ self._update_palette()
+
+ def _color_changed_cb(self, activity, pspec):
+ self._layout.remove(self._icon)
+ self._icon = self._create_icon()
+ self._layout.add_center(self._icon)
+ self._icon.set_palette(self._palette)
+
+ def _private_changed_cb(self, activity, pspec):
+ self._update_palette()
+
+ def _joined_changed_cb(self, widget, event):
+ logging.debug('ActivityView._joined_changed_cb: AAAA!!!!')
+
_AUTOSEARCH_TIMEOUT = 1000
class MeshToolbar(gtk.Toolbar):
@@ -506,7 +552,7 @@ class MeshBox(hippo.CanvasBox):
if activity_model == None:
self._add_alone_buddy(buddy_model)
- else:
+ elif activity_model.get_id() in self._activities:
activity = self._activities[activity_model.get_id()]
icon = BuddyIcon(self._shell, buddy_model,