diff options
Diffstat (limited to 'src/jarabe/view/palettes.py')
-rw-r--r-- | src/jarabe/view/palettes.py | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index 2beceff..d9c1f6b 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -28,31 +28,42 @@ from sugar.graphics.menuitem import MenuItem from sugar.graphics.icon import Icon from sugar.graphics import style from sugar.graphics.xocolor import XoColor -from sugar.activity import activityfactory -from sugar.activity.activityhandle import ActivityHandle from jarabe.model import shell -from jarabe.view import launcher from jarabe.view.viewsource import setup_view_source +from jarabe.journal import misc + class BasePalette(Palette): def __init__(self, home_activity): Palette.__init__(self) - if home_activity.props.launching: - home_activity.connect('notify::launching', - self._launching_changed_cb) + self._notify_launch_hid = None + + if home_activity.props.launch_status == shell.Activity.LAUNCHING: + self._notify_launch_hid = home_activity.connect( \ + 'notify::launch-status', self.__notify_launch_status_cb) self.set_primary_text(_('Starting...')) + elif home_activity.props.launch_status == shell.Activity.LAUNCH_FAILED: + self._on_failed_launch() else: self.setup_palette() - def _launching_changed_cb(self, home_activity, pspec): - if not home_activity.props.launching: - self.setup_palette() - def setup_palette(self): raise NotImplementedError + def _on_failed_launch(self): + self.set_primary_text(_('Activity failed to start')) + + def __notify_launch_status_cb(self, home_activity, pspec): + home_activity.disconnect(self._notify_launch_hid) + self._notify_launch_hid = None + if home_activity.props.launch_status == shell.Activity.LAUNCH_FAILED: + self._on_failed_launch() + else: + self.setup_palette() + + class CurrentActivityPalette(BasePalette): def __init__(self, home_activity): self._home_activity = home_activity @@ -97,10 +108,6 @@ class CurrentActivityPalette(BasePalette): self._home_activity.get_window().activate( \ gtk.get_current_event_time()) - def __active_window_changed_cb(self, screen, previous_window=None): - setup_view_source() - self._screen.disconnect(self._active_window_changed_sid) - def __stop_activate_cb(self, menu_item): self._home_activity.get_window().close(1) @@ -112,7 +119,7 @@ class ActivityPalette(Palette): self._activity_info = activity_info client = gconf.client_get_default() - color = XoColor(client.get_string("/desktop/sugar/user/color")) + color = XoColor(client.get_string('/desktop/sugar/user/color')) activity_icon = Icon(file=activity_info.get_icon(), xo_color=color, icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) @@ -133,17 +140,8 @@ class ActivityPalette(Palette): def __start_activate_cb(self, menu_item): self.popdown(immediate=True) + misc.launch(self._activity_info) - client = gconf.client_get_default() - xo_color = XoColor(client.get_string('/desktop/sugar/user/color')) - - activity_id = activityfactory.create_activity_id() - launcher.add_launcher(activity_id, - self._activity_info.get_icon(), - xo_color) - - handle = ActivityHandle(activity_id) - activityfactory.create(self._activity_info, handle) class JournalPalette(BasePalette): def __init__(self, home_activity): @@ -196,6 +194,7 @@ class JournalPalette(BasePalette): self._free_space_label.props.label = _('%(free_space)d MB Free') % \ {'free_space': free_space / (1024 * 1024)} + class VolumePalette(Palette): def __init__(self, mount): Palette.__init__(self, label=mount.get_name()) @@ -245,4 +244,3 @@ class VolumePalette(Palette): self._progress_bar.props.fraction = fraction self._free_space_label.props.label = _('%(free_space)d MB Free') % \ {'free_space': free_space / (1024 * 1024)} - |