Move DSObject.resume() from sugar-toolkit to the shell
This commit is contained in:
parent
e97ab8eddb
commit
13682dd1b4
@ -23,8 +23,6 @@ import os
|
||||
import gobject
|
||||
|
||||
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.activitybundle import ActivityBundle
|
||||
from sugar import mime
|
||||
@ -116,32 +114,6 @@ class DSObject(object):
|
||||
|
||||
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):
|
||||
return self.metadata['mime_type'] in \
|
||||
[ActivityBundle.MIME_TYPE, ActivityBundle.DEPRECATED_MIME_TYPE]
|
||||
@ -152,59 +124,6 @@ class DSObject(object):
|
||||
def is_bundle(self):
|
||||
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):
|
||||
if self._destroyed:
|
||||
logging.warning('This DSObject has already been destroyed!.')
|
||||
|
Loading…
Reference in New Issue
Block a user