diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-09-26 08:09:55 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-09-26 08:09:55 (GMT) |
commit | 2a197bb8b863a0f2a71e40a501fe5f2e8e07f371 (patch) | |
tree | c7f2f088b5c628aaa61ec31284121fb790d18f97 /services | |
parent | 55baffea32b3754ca120a75ce1b1ebd76ba613f8 (diff) | |
parent | 8ff6cbab1ea5f2b45064c278fbf77e4a1931f5c2 (diff) |
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'services')
-rw-r--r-- | services/shell/objecttypeservice.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/services/shell/objecttypeservice.py b/services/shell/objecttypeservice.py index 4e806d4..c4910f7 100644 --- a/services/shell/objecttypeservice.py +++ b/services/shell/objecttypeservice.py @@ -16,9 +16,13 @@ import dbus import dbus.service +import gnomevfs +import gtk from gettext import gettext as _ +import bundleregistry + _REGISTRY_IFACE = "org.laptop.ObjectTypeRegistry" _REGISTRY_PATH = "/org/laptop/ObjectTypeRegistry" @@ -53,6 +57,11 @@ class ObjectTypeRegistry(dbus.service.Object): 'text-uri-list', ['text/x-moz-url', 'text/uri-list']) + self._activity_registry = bundleregistry.get_registry() + for bundle in self._activity_registry: + self._add_activity(self._activity_registry, bundle) + self._activity_registry.connect('bundle-added', self._add_activity) + def _add_primitive(self, type_id, name, icon, mime_types): object_type = {'type_id': type_id, 'name': name, @@ -60,6 +69,30 @@ class ObjectTypeRegistry(dbus.service.Object): 'mime_types': mime_types} self._types[type_id] = object_type + def _add_activity(self, activity_registry, bundle): + mime_types = bundle.get_mime_types() + if mime_types is None: + return + + icon_theme = gtk.icon_theme_get_default() + for mime_type in mime_types: + if self._get_type_for_mime(mime_type) is not None: + continue + + name = gnomevfs.mime_get_description(mime_type) + if name is None: + continue + + icon = mime_type.replace('/', '-') + if icon_theme.lookup_icon(icon, gtk.ICON_SIZE_BUTTON, 0) is None: + continue + + object_type = {'type_id': mime_type, + 'name': name, + 'icon': icon, + 'mime_types': [mime_type]} + self._types[mime_type] = object_type + def _get_type_for_mime(self, mime_type): for object_type in self._types.values(): if mime_type in object_type['mime_types']: |