diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-02-21 23:41:26 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-02-21 23:41:26 (GMT) |
commit | 0d7bdeb20a6a807852a92aa5e854d1f5bfa9d82f (patch) | |
tree | 95c338942de476ef6b15b8bdf8804f824bd76600 /sugar/activity | |
parent | 0556d5f51f05e7effde34cfa7d0e977a5b204ef1 (diff) |
Improve handle marshalling. Add an uri to the handle.
Diffstat (limited to 'sugar/activity')
-rw-r--r-- | sugar/activity/activityfactory.py | 2 | ||||
-rw-r--r-- | sugar/activity/activityfactoryservice.py | 4 | ||||
-rw-r--r-- | sugar/activity/activityhandle.py | 31 |
3 files changed, 26 insertions, 11 deletions
diff --git a/sugar/activity/activityfactory.py b/sugar/activity/activityfactory.py index 6878103..6148466 100644 --- a/sugar/activity/activityfactory.py +++ b/sugar/activity/activityfactory.py @@ -60,7 +60,7 @@ class ActivityCreationHandler(gobject.GObject): proxy_obj = bus.get_object(service_name, bundle.get_object_path()) factory = dbus.Interface(proxy_obj, "com.redhat.Sugar.ActivityFactory") - factory.create(str(self._activity_handle), + factory.create(self._activity_handle.get_dict(), reply_handler=self._reply_handler, error_handler=self._error_handler) diff --git a/sugar/activity/activityfactoryservice.py b/sugar/activity/activityfactoryservice.py index e520010..82fae4a 100644 --- a/sugar/activity/activityfactoryservice.py +++ b/sugar/activity/activityfactoryservice.py @@ -48,9 +48,9 @@ class ActivityFactoryService(dbus.service.Object): object_path = '/' + service_name.replace('.', '/') dbus.service.Object.__init__(self, bus_name, object_path) - @dbus.service.method("com.redhat.Sugar.ActivityFactory") + @dbus.service.method("com.redhat.Sugar.ActivityFactory", in_signature="a{ss}") def create(self, handle): - activity_handle = activityhandle.create_from_string(handle) + activity_handle = activityhandle.create_from_dict(handle) activity = self._constructor(activity_handle) self._activities.append(activity) diff --git a/sugar/activity/activityhandle.py b/sugar/activity/activityhandle.py index f9d1f30..24c9d67 100644 --- a/sugar/activity/activityhandle.py +++ b/sugar/activity/activityhandle.py @@ -21,14 +21,29 @@ class ActivityHandle(object): def __init__(self, activity_id): self.activity_id = activity_id self.pservice_id = None + self.uri = None - def __str__(self): - return self.activity_id + def get_presence_service(self): + if self.pservice_id: + pservice = PresenceService.get_instance() + return pservice.get_activity(self.pservice_id) + else: + return None - def get_presence_service(): - pservice = PresenceService.get_instance() - return pservice.get_activity(self._pservice_id) + def get_dict(self): + result = { 'activity_id' : self.activity_id } + if self.pservice_id: + result['pservice_id'] = self.pservice_id + if self.uri: + result['uri'] = self.uri -def create_from_string(handle): - activity_handle = ActivityHandle(handle) - activity_handle.pservice_id = handle + return result + +def create_from_dict(handle_dict): + result = ActivityHandle(handle_dict['activity_id']) + if handle_dict.has_key('pservice_id'): + result.pservice_id = handle_dict['pservice_id'] + if handle_dict.has_key('uri'): + result.uri = handle_dict['uri'] + + return result |