Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2008-06-07 11:46:23 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2008-06-07 11:46:23 (GMT)
commit728918620802ffc288bb0486f1de2850e000a6b2 (patch)
tree1c88d78dcfb40bd53982f5046cd1596885d63fb1 /src
parent6c55853ca71f52fd22310825c4a687dc4841a1e3 (diff)
Launchbox implementation.
Diffstat (limited to 'src')
-rw-r--r--src/view/home/launchbox.py61
1 files changed, 59 insertions, 2 deletions
diff --git a/src/view/home/launchbox.py b/src/view/home/launchbox.py
index c9e0ffc..f435375 100644
--- a/src/view/home/launchbox.py
+++ b/src/view/home/launchbox.py
@@ -18,14 +18,71 @@ import hippo
import gobject
from sugar.graphics import style
+from sugar.graphics import animator
+from sugar.graphics.xocolor import XoColor
+
+from model import shellmodel
+from view.pulsingicon import CanvasPulsingIcon
class LaunchBox(hippo.CanvasBox):
def __init__(self):
gobject.GObject.__init__(
self, background_color=style.COLOR_WHITE.get_int())
+ self._activity_icon = CanvasPulsingIcon()
+
+ vbox = hippo.CanvasBox(orientation=hippo.ORIENTATION_VERTICAL)
+ vbox.append(self._activity_icon, hippo.PACK_EXPAND)
+ self.append(vbox, hippo.PACK_EXPAND)
+
+ self._animator = animator.Animator(0.3)
+
+ self._home = shellmodel.get_instance().get_home()
+ self._home.connect('active-activity-changed',
+ self.__active_activity_changed_cb)
+
+ self._update_icon()
+
+ def zoom_in(self):
+ logging.debug('zooming in to activity')
+
+ self._activity_icon.props.size = style.STANDARD_ICON_SIZE
+
+ self._animator.remove_all()
+ self._animator.add(_Animation(self._activity_icon,
+ style.STANDARD_ICON_SIZE,
+ style.XLARGE_ICON_SIZE))
+ self._animator.start()
+
+ logging.debug('starting pulse')
+
+ self._activity_icon.props.pulsing = True
+
def suspend(self):
- pass
+ self._activity_icon.props.paused = True
def resume(self):
- pass
+ self._activity_icon.props.paused = False
+
+ def _update_icon(self):
+ activity = self._home.get_active_activity()
+ if activity:
+ self._activity_icon.props.file_name = activity.get_icon_path()
+ self._activity_icon.props.pulse_color = activity.get_icon_color()
+ else:
+ self._activity_icon.props.file_name = None
+
+ def __active_activity_changed_cb(self, model, activity):
+ self._update_icon()
+
+class _Animation(animator.Animation):
+ def __init__(self, icon, start_size, end_size):
+ animator.Animation.__init__(self, 0.0, 1.0)
+
+ self._icon = icon
+ self.start_size = start_size
+ self.end_size = end_size
+
+ def next_frame(self, current):
+ d = (self.end_size - self.start_size) * current
+ self._icon.props.size = self.start_size + d