Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-02-04 18:52:47 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-02-04 18:52:47 (GMT)
commit46d2cc268e3e9a1badd58ec3c06a2e37993828c9 (patch)
tree4ab2463b6ae56e727e3be39f21886f4b6c3d1521 /src
parent9a2614ef57594b4f125732d969ef569b1ba0927c (diff)
show launcher screen as soon as possible. #243
So the user has inmediate feedback.
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/desktop/activitieslist.py13
-rw-r--r--src/jarabe/desktop/favoritesview.py19
-rw-r--r--src/jarabe/desktop/meshbox.py6
-rw-r--r--src/jarabe/frame/activitiestray.py5
-rw-r--r--src/jarabe/view/launcher.py36
-rw-r--r--src/jarabe/view/palettes.py15
6 files changed, 73 insertions, 21 deletions
diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
index a6d17b3..5d6f900 100644
--- a/src/jarabe/desktop/activitieslist.py
+++ b/src/jarabe/desktop/activitieslist.py
@@ -26,9 +26,11 @@ from sugar.graphics import style
from sugar.graphics.icon import CanvasIcon
from sugar.graphics.xocolor import XoColor
from sugar.activity import activityfactory
+from sugar.activity.activityhandle import ActivityHandle
from jarabe.model import bundleregistry
from jarabe.view.palettes import ActivityPalette
+from jarabe.view import launcher
class ActivitiesList(gtk.VBox):
__gtype_name__ = 'SugarActivitiesList'
@@ -257,7 +259,16 @@ class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
self._favorite_icon.props.favorite = self._favorite
def __icon_button_release_event_cb(self, icon, event):
- activityfactory.create(self._bundle)
+ activity_id = activityfactory.create_activity_id()
+
+ client = gconf.client_get_default()
+ xo_color = XoColor(client.get_string('/desktop/sugar/user/color'))
+
+ launcher.add_launcher(activity_id,
+ self._bundle.get_icon(),
+ xo_color)
+
+ activityfactory.create(self._bundle, ActivityHandle(activity_id))
def get_bundle_id(self):
return self._bundle_id
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py
index 6de290b..9535edf 100644
--- a/src/jarabe/desktop/favoritesview.py
+++ b/src/jarabe/desktop/favoritesview.py
@@ -30,12 +30,14 @@ from sugar.graphics.menuitem import MenuItem
from sugar.graphics.alert import Alert
from sugar.graphics.xocolor import XoColor
from sugar.activity import activityfactory
+from sugar.activity.activityhandle import ActivityHandle
from sugar.presence import presenceservice
from sugar import dispatch
from jarabe.view.palettes import JournalPalette
from jarabe.view.palettes import CurrentActivityPalette, ActivityPalette
from jarabe.view.buddymenu import BuddyMenu
+from jarabe.view import launcher
from jarabe.model.buddy import BuddyModel
from jarabe.model import shell
from jarabe.model import bundleregistry
@@ -530,9 +532,22 @@ class ActivityIcon(CanvasIcon):
def __button_release_event_cb(self, icon, event):
self.palette.popdown(immediate=True)
if get_settings().resume_mode and self._journal_entries:
- journal.misc.resume(self._journal_entries[0])
+ entry = self._journal_entries[0]
+ launcher.add_launcher(entry['activity_id'],
+ self._activity_info.get_icon(),
+ XoColor(entry.get('icon-color', '')))
+ journal.misc.resume(entry)
else:
- activityfactory.create(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)
def get_bundle_id(self):
return self._activity_info.get_bundle_id()
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index 24f55e1..eb6cc80 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -38,6 +38,7 @@ from sugar.util import unique_id
from jarabe.model import neighborhood
from jarabe.view.buddyicon import BuddyIcon
from jarabe.view.pulsingicon import CanvasPulsingIcon
+from jarabe.view import launcher
from jarabe.desktop.snowflakelayout import SnowflakeLayout
from jarabe.desktop.spreadlayout import SpreadLayout
from jarabe.desktop import keydialog
@@ -471,6 +472,11 @@ class ActivityView(hippo.CanvasBox):
handle = ActivityHandle(self._model.get_id())
bundle = bundleregistry.get_registry().get_bundle(bundle_id)
+
+ launcher.add_launcher(self._model.get_id(),
+ bundle.get_icon(),
+ self._model.get_color())
+
activityfactory.create(bundle, handle)
def set_filter(self, query):
diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py
index 3a64bf0..5a5febe 100644
--- a/src/jarabe/frame/activitiestray.py
+++ b/src/jarabe/frame/activitiestray.py
@@ -43,6 +43,7 @@ from jarabe.model import bundleregistry
from jarabe.model import filetransfer
from jarabe.view.palettes import JournalPalette, CurrentActivityPalette
from jarabe.view.pulsingicon import PulsingIcon
+from jarabe.view import launcher
from jarabe.frame.frameinvoker import FrameWidgetInvoker
from jarabe.frame.notification import NotificationIcon
import jarabe.frame
@@ -166,6 +167,10 @@ class ActivityInviteButton(BaseInviteButton):
registry = bundleregistry.get_registry()
bundle = registry.get_bundle(self._bundle_id)
+ launcher.add_launcher(self._activity_model.get_id(),
+ bundle.get_icon(),
+ self._activity_model.get_color())
+
handle = ActivityHandle(self._activity_model.get_id())
activityfactory.create(bundle, handle)
diff --git a/src/jarabe/view/launcher.py b/src/jarabe/view/launcher.py
index cc9e2a7..fde7f78 100644
--- a/src/jarabe/view/launcher.py
+++ b/src/jarabe/view/launcher.py
@@ -29,12 +29,12 @@ from jarabe.model import shell
from jarabe.view.pulsingicon import CanvasPulsingIcon
class LaunchWindow(hippo.CanvasWindow):
- def __init__(self, home_activity):
+ def __init__(self, activity_id, icon_path, icon_color):
gobject.GObject.__init__(
self, type_hint=gtk.gdk.WINDOW_TYPE_HINT_NORMAL)
- self._activity_id = home_activity.get_activity_id()
- self._box = LaunchBox(home_activity)
+ self._activity_id = activity_id
+ self._box = LaunchBox(activity_id, icon_path, icon_color)
self.set_root(self._box)
self.connect('realize', self.__realize_cb)
@@ -60,14 +60,13 @@ class LaunchWindow(hippo.CanvasWindow):
self._update_size()
class LaunchBox(hippo.CanvasBox):
- def __init__(self, home_activity):
+ def __init__(self, activity_id, icon_path, icon_color):
gobject.GObject.__init__(self, orientation=hippo.ORIENTATION_VERTICAL,
background_color=style.COLOR_WHITE.get_int())
- self._home_activity = home_activity
- self._activity_icon = CanvasPulsingIcon(
- file_name=home_activity.get_icon_path(),
- pulse_color=home_activity.get_icon_color())
+ self._activity_id = activity_id
+ self._activity_icon = CanvasPulsingIcon(file_name=icon_path,
+ pulse_color=icon_color)
self.append(self._activity_icon, hippo.PACK_EXPAND)
# FIXME support non-xo colors in CanvasPulsingIcon
@@ -98,7 +97,7 @@ class LaunchBox(hippo.CanvasBox):
self._activity_icon.props.pulsing = True
def __active_activity_changed_cb(self, model, activity):
- if activity == self._home_activity:
+ if activity.get_activity_id() == self._activity_id:
self._activity_icon.props.paused = False
else:
self._activity_icon.props.paused = True
@@ -123,22 +122,25 @@ def setup():
model.connect('launch-failed', __launch_failed_cb)
model.connect('launch-completed', __launch_completed_cb)
-def __launch_started_cb(home_model, home_activity):
- if home_activity.is_journal():
+def add_launcher(activity_id, icon_path, icon_color):
+
+ if activity_id in _launchers:
return
- launch_window = LaunchWindow(home_activity)
+ launch_window = LaunchWindow(activity_id, icon_path, icon_color)
launch_window.show()
- _launchers[home_activity.get_activity_id()] = launch_window
+ _launchers[activity_id] = launch_window
+
+def __launch_started_cb(home_model, home_activity):
+ add_launcher(home_activity.get_activity_id(), home_activity.get_icon_path(),
+ home_activity.get_icon_color())
def __launch_failed_cb(home_model, home_activity):
- if not home_activity.is_journal():
- _destroy_launcher(home_activity)
+ _destroy_launcher(home_activity)
def __launch_completed_cb(home_model, home_activity):
- if not home_activity.is_journal():
- _destroy_launcher(home_activity)
+ _destroy_launcher(home_activity)
def _destroy_launcher(home_activity):
activity_id = home_activity.get_activity_id()
diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py
index bc542ba..fb9e56e 100644
--- a/src/jarabe/view/palettes.py
+++ b/src/jarabe/view/palettes.py
@@ -30,8 +30,10 @@ 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 bundleregistry
+from jarabe.view import launcher
class BasePalette(Palette):
def __init__(self, home_activity):
@@ -153,7 +155,18 @@ class ActivityPalette(Palette):
self._favorite_icon.props.xo_color = xo_color
def __start_activate_cb(self, menu_item):
- activityfactory.create(self._bundle)
+ self.popdown(immediate=True)
+
+ 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._bundle.get_icon(),
+ xo_color)
+
+ handle = ActivityHandle(activity_id)
+ activityfactory.create(self._bundle, handle)
def __change_favorite_activate_cb(self, menu_item):
registry = bundleregistry.get_registry()