Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/view/clipboardicon.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/view/clipboardicon.py')
-rw-r--r--shell/view/clipboardicon.py39
1 files changed, 25 insertions, 14 deletions
diff --git a/shell/view/clipboardicon.py b/shell/view/clipboardicon.py
index ade37bd..42c5453 100644
--- a/shell/view/clipboardicon.py
+++ b/shell/view/clipboardicon.py
@@ -4,6 +4,7 @@ from sugar.graphics.menuicon import MenuIcon
from view.clipboardmenu import ClipboardMenu
from sugar.activity import ActivityFactory
from sugar.clipboard import clipboardservice
+from sugar import util
class ClipboardIcon(MenuIcon):
@@ -39,22 +40,32 @@ class ClipboardIcon(MenuIcon):
else:
return None
+ def _activity_create_success_cb(self, handler, activity):
+ activity.start(util.unique_id())
+ activity.execute("open_document", [self._object_id])
+
+ def _activity_create_error_cb(self, handler, err):
+ pass
+
def _icon_activated_cb(self, icon):
- if self._percent == 100:
- cb_service = clipboardservice.get_instance()
-
- (name, percent, icon, preview, format_types) = \
- cb_service.get_object(self._object_id)
+ if self._percent < 100:
+ return
- if format_types:
- logging.debug("_icon_activated_cb: " + self._object_id)
-
- activity_id = self._get_activity_for_mime_type(format_types[0])
-
- if activity_id:
- activity = ActivityFactory.create(activity_id)
- activity.start()
- activity.execute("open_document", [self._object_id])
+ cb_service = clipboardservice.get_instance()
+ (name, percent, icon, preview, format_types) = \
+ cb_service.get_object(self._object_id)
+ if not format_types:
+ return
+
+ logging.debug("_icon_activated_cb: " + self._object_id)
+ activity_type = self._get_activity_for_mime_type(format_types[0])
+ if not activity_type:
+ return
+
+ # Launch the activity to handle this item
+ handler = ActivityFactory.create(activity_type)
+ handler.connect('success', self._activity_create_success_cb)
+ handler.connect('error', self._activity_create_error_cb)
def _popup_action_cb(self, popup, action):
self.popdown()