Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-11 19:53:26 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-11 19:53:26 (GMT)
commit8b784a6223b1afad45cc9788626f0cb76bbe763c (patch)
treecca5925806849a4eb5491f543e5ed16c0817fb56 /services
parentd74f966f6dad1936d263293dbbab43835089fafc (diff)
Add default mime type handlers
Diffstat (limited to 'services')
-rw-r--r--services/shell/bundleregistry.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/services/shell/bundleregistry.py b/services/shell/bundleregistry.py
index fbcef87..8de49ff 100644
--- a/services/shell/bundleregistry.py
+++ b/services/shell/bundleregistry.py
@@ -29,6 +29,20 @@ def _get_data_dirs():
else:
return [ '/usr/local/share/', '/usr/share/' ]
+def _load_mime_defaults():
+ defaults = {}
+
+ f = open(env.get_data_path('mime.defaults'), 'r')
+ for line in f.readlines():
+ line = line.strip()
+ if line and not line.startswith('#'):
+ mime = line[:line.find(' ')]
+ handler = line[line.rfind(' ') + 1:]
+ defaults[mime] = handler
+ f.close()
+
+ return defaults
+
class _ServiceManager(object):
"""Internal class responsible for creating dbus service files
@@ -72,6 +86,7 @@ class BundleRegistry(gobject.GObject):
self._bundles = []
self._search_path = []
self._service_manager = _ServiceManager()
+ self._mime_defaults = _load_mime_defaults()
def get_bundle(self, service_name):
"""Returns an bundle given his service name"""
@@ -120,7 +135,10 @@ class BundleRegistry(gobject.GObject):
result = []
for bundle in self._bundles:
if bundle.get_mime_types() and mime_type in bundle.get_mime_types():
- result.append(bundle)
+ if self._mime_defaults[mime_type] == bundle.get_service_name():
+ result.insert(0, bundle)
+ else:
+ result.append(bundle)
return result
def get_registry():