Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2007-07-11 09:39:40 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2007-07-11 09:39:40 (GMT)
commitbb71cd61cff6a577e3ccd3179f38bbc71a567b0f (patch)
tree626f13a81d782e72b5887186d4e9931ccbe61a11 /sugar
parentbbbea6167dbc5e34fb3cff4653e269fcc18ab937 (diff)
#1888 Fix opening items from the clipboard.
Diffstat (limited to 'sugar')
-rw-r--r--sugar/datastore/datastore.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/sugar/datastore/datastore.py b/sugar/datastore/datastore.py
index 26ea49e..45af947 100644
--- a/sugar/datastore/datastore.py
+++ b/sugar/datastore/datastore.py
@@ -20,6 +20,9 @@ import logging
import gobject
from sugar.datastore import dbus_helpers
+from sugar import activity
+from sugar.activity.bundle import Bundle
+from sugar.activity import activityfactory
class DSMetadata(gobject.GObject):
__gsignals__ = {
@@ -85,6 +88,37 @@ class DSObject:
file_path = property(get_file_path, set_file_path)
+ def get_activities(self):
+ activities = []
+
+ if self.metadata['activity']:
+ activity_info = activity.get_registry().get_activity(self.metadata['activity'])
+ activities.append(activity_info)
+
+ mime_type = self.metadata['mime_type']
+ if mime_type:
+ activities_info = activity.get_registry().get_activities_for_type(mime_type)
+ for activity_info in activities_info:
+ if activity_info.service_name != self.metadata['activity']:
+ activities.append(activity_info)
+
+ return activities
+
+ def is_bundle(self):
+ return self.metadata['mime_type'] == 'application/vnd.olpc-x-sugar'
+
+ def resume(self):
+ if self.is_bundle():
+ bundle = Bundle(self.file_path)
+ if not bundle.is_installed():
+ bundle.install()
+
+ activityfactory.create(bundle.get_service_name())
+ else:
+ activity_info = self.get_activities()[0]
+ activityfactory.create_with_object_id(activity_info.service_name,
+ self.object_id)
+
def get(object_id):
logging.debug('datastore.get')
metadata = dbus_helpers.get_properties(object_id)