Move DSObject.resume() from sugar-toolkit to the shell
This commit is contained in:
parent
9e6ef4d2a9
commit
8c2bc01b6b
@ -23,8 +23,6 @@ import os
|
|||||||
import gobject
|
import gobject
|
||||||
|
|
||||||
from sugar.datastore import dbus_helpers
|
from sugar.datastore import dbus_helpers
|
||||||
from sugar import activity
|
|
||||||
from sugar.activity.activityhandle import ActivityHandle
|
|
||||||
from sugar.bundle.contentbundle import ContentBundle
|
from sugar.bundle.contentbundle import ContentBundle
|
||||||
from sugar.bundle.activitybundle import ActivityBundle
|
from sugar.bundle.activitybundle import ActivityBundle
|
||||||
from sugar import mime
|
from sugar import mime
|
||||||
@ -116,32 +114,6 @@ class DSObject(object):
|
|||||||
|
|
||||||
file_path = property(get_file_path, set_file_path)
|
file_path = property(get_file_path, set_file_path)
|
||||||
|
|
||||||
def _get_activities_for_mime(self, mime_type):
|
|
||||||
registry = activity.get_registry()
|
|
||||||
result = registry.get_activities_for_type(mime_type)
|
|
||||||
if not result:
|
|
||||||
for parent_mime in mime.get_mime_parents(mime_type):
|
|
||||||
result.extend(registry.get_activities_for_type(parent_mime))
|
|
||||||
return result
|
|
||||||
|
|
||||||
def get_activities(self):
|
|
||||||
activities = []
|
|
||||||
|
|
||||||
bundle_id = self.metadata.get('activity', '')
|
|
||||||
if bundle_id:
|
|
||||||
activity_info = activity.get_registry().get_activity(bundle_id)
|
|
||||||
if activity_info:
|
|
||||||
activities.append(activity_info)
|
|
||||||
|
|
||||||
mime_type = self.metadata.get('mime_type', '')
|
|
||||||
if mime_type:
|
|
||||||
activities_info = self._get_activities_for_mime(mime_type)
|
|
||||||
for activity_info in activities_info:
|
|
||||||
if activity_info.bundle_id != bundle_id:
|
|
||||||
activities.append(activity_info)
|
|
||||||
|
|
||||||
return activities
|
|
||||||
|
|
||||||
def is_activity_bundle(self):
|
def is_activity_bundle(self):
|
||||||
return self.metadata['mime_type'] in \
|
return self.metadata['mime_type'] in \
|
||||||
[ActivityBundle.MIME_TYPE, ActivityBundle.DEPRECATED_MIME_TYPE]
|
[ActivityBundle.MIME_TYPE, ActivityBundle.DEPRECATED_MIME_TYPE]
|
||||||
@ -152,59 +124,6 @@ class DSObject(object):
|
|||||||
def is_bundle(self):
|
def is_bundle(self):
|
||||||
return self.is_activity_bundle() or self.is_content_bundle()
|
return self.is_activity_bundle() or self.is_content_bundle()
|
||||||
|
|
||||||
def resume(self, bundle_id=None):
|
|
||||||
from sugar.activity import activityfactory
|
|
||||||
|
|
||||||
if self.is_activity_bundle() and not bundle_id:
|
|
||||||
|
|
||||||
logging.debug('Creating activity bundle')
|
|
||||||
bundle = ActivityBundle(self.file_path)
|
|
||||||
if not bundle.is_installed():
|
|
||||||
logging.debug('Installing activity bundle')
|
|
||||||
bundle.install()
|
|
||||||
elif bundle.need_upgrade():
|
|
||||||
logging.debug('Upgrading activity bundle')
|
|
||||||
bundle.upgrade()
|
|
||||||
|
|
||||||
logging.debug('activityfactory.creating bundle with id %r',
|
|
||||||
bundle.get_bundle_id())
|
|
||||||
activityfactory.create(bundle.get_bundle_id())
|
|
||||||
|
|
||||||
elif self.is_content_bundle() and not bundle_id:
|
|
||||||
|
|
||||||
logging.debug('Creating content bundle')
|
|
||||||
bundle = ContentBundle(self.file_path)
|
|
||||||
if not bundle.is_installed():
|
|
||||||
logging.debug('Installing content bundle')
|
|
||||||
bundle.install()
|
|
||||||
|
|
||||||
activities = self._get_activities_for_mime('text/html')
|
|
||||||
if len(activities) == 0:
|
|
||||||
logging.warning('No activity can open HTML content bundles')
|
|
||||||
return
|
|
||||||
|
|
||||||
uri = bundle.get_start_uri()
|
|
||||||
logging.debug('activityfactory.creating with uri %s', uri)
|
|
||||||
activityfactory.create_with_uri(activities[0].bundle_id,
|
|
||||||
bundle.get_start_uri())
|
|
||||||
else:
|
|
||||||
if not self.get_activities() and bundle_id is None:
|
|
||||||
logging.warning('No activity can open this object, %s.' %
|
|
||||||
self.metadata.get('mime_type', None))
|
|
||||||
return
|
|
||||||
if bundle_id is None:
|
|
||||||
bundle_id = self.get_activities()[0].bundle_id
|
|
||||||
|
|
||||||
activity_id = self.metadata['activity_id']
|
|
||||||
object_id = self.object_id
|
|
||||||
|
|
||||||
if activity_id:
|
|
||||||
handle = ActivityHandle(object_id=object_id,
|
|
||||||
activity_id=activity_id)
|
|
||||||
activityfactory.create(bundle_id, handle)
|
|
||||||
else:
|
|
||||||
activityfactory.create_with_object_id(bundle_id, object_id)
|
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
if self._destroyed:
|
if self._destroyed:
|
||||||
logging.warning('This DSObject has already been destroyed!.')
|
logging.warning('This DSObject has already been destroyed!.')
|
||||||
|
Loading…
Reference in New Issue
Block a user