diff options
author | John (J5) Palmieri <johnp@redhat.com> | 2007-08-27 19:47:58 (GMT) |
---|---|---|
committer | John (J5) Palmieri <johnp@redhat.com> | 2007-08-27 19:47:58 (GMT) |
commit | c06d63948794cce11e5b59e98f2ec2122a433972 (patch) | |
tree | 955687e89dbdff6dfc29ee2d07cf3d8f5aeea9c7 /sugar/activity/registry.py | |
parent | 2cae66b0ea86235788220c9f7b05aa2ad4fdc58f (diff) |
Make D-Bus calls async on startup
Diffstat (limited to 'sugar/activity/registry.py')
-rw-r--r-- | sugar/activity/registry.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sugar/activity/registry.py b/sugar/activity/registry.py index 8fdae2f..39c2b3c 100644 --- a/sugar/activity/registry.py +++ b/sugar/activity/registry.py @@ -77,6 +77,29 @@ class ActivityRegistry(gobject.GObject): info_list = self._registry.GetActivities() return self._convert_info_list(info_list) + def _get_activities_cb(self, reply_handler, info_list): + result = [] + i = 0 + for info_dict in info_list: + result.append(_activity_info_from_dict(info_dict)) + + reply_handler(result) + + def _get_activities_error_cb(self, error_handler, e): + if error_handler: + error_handler(e) + else: + logging.error('Error getting activities async: %s' % str(e)) + + def get_activities_async(self, reply_handler=None, error_handler=None): + if not reply_handler: + logging.error('Function get_activities_async called without a reply handler. Can not run.') + return + + self._registry.GetActivities( + reply_handler=lambda info_list:self._get_activities_cb(reply_handler, info_list), + error_handler=lambda e:self._get_activities_error_cb(error_handler, e)) + def get_activity(self, service_name): if self._service_name_to_activity_info.has_key(service_name): return self._service_name_to_activity_info[service_name] |