diff options
Diffstat (limited to 'sugar/activity/registry.py')
-rw-r--r-- | sugar/activity/registry.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sugar/activity/registry.py b/sugar/activity/registry.py new file mode 100644 index 0000000..1efda45 --- /dev/null +++ b/sugar/activity/registry.py @@ -0,0 +1,58 @@ +# Copyright (C) 2006, Red Hat, Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +import dbus + +_SHELL_SERVICE = "org.laptop.Shell" +_SHELL_PATH = "/org/laptop/Shell" +_REGISTRY_IFACE = "org.laptop.Shell.ActivityRegistry" + +def _activity_info_from_dict(info_dict): + return ActivityInfo(info_dict['name'], info_dict['icon'], + info_dict['service_name'], info_dict['path']) + +class ActivityInfo(object): + def __init__(self, name, icon, service_name, path): + self.name = name + self.icon = icon + self.service_name = service_name + self.path = path + + def to_dict(self): + return { 'name' : self.name, + 'icon' : self.icon, + 'service_name' : self.service_name, + 'path' : self.path + } + +class ActivityRegistry(object): + def __init__(self): + bus = dbus.SessionBus() + bus_object = bus.get_object(_SHELL_SERVICE, _SHELL_PATH) + self._registry = dbus.Interface(bus_object, _REGISTRY_IFACE) + + def get_activities_for_name(self, name): + result = [] + + activities = self._registry.GetActivitiesForName(name) + for info_dict in activities: + result.append(_activity_info_from_dict(info_dict)) + + return result + + def get_activities_for_type(self, mime_type): + pass |