Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-10-16 15:19:43 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-10-16 15:19:43 (GMT)
commit7364e0078e28c09186b2548c328d83dca60df2d2 (patch)
tree322f60c0952a04087c712106734f796981cb3127 /src
parent21f553385df5bc68b629de4eaccccec2ee0d4557 (diff)
Add support for generic object types
Diffstat (limited to 'src')
-rw-r--r--src/sugar/mime.py78
1 files changed, 75 insertions, 3 deletions
diff --git a/src/sugar/mime.py b/src/sugar/mime.py
index b009fec..53f9a46 100644
--- a/src/sugar/mime.py
+++ b/src/sugar/mime.py
@@ -18,9 +18,63 @@
import os
import logging
+from gettext import gettext as _
from sugar import _sugarbaseext
+_extensions = None
+_globs_timestamps = None
+_generic_types = [
+{ 'id' : 'Text',
+ 'name' : _('Text'),
+ 'icon' : 'text-x-generic',
+ 'types' : ['text/plain', 'text/rtf', 'application/pdf',
+ 'application/x-pdf', 'text/html',
+ 'application/vnd.oasis.opendocument.text',
+ 'application/rtf', 'text/rtf']
+},
+{ 'id' : 'Image',
+ 'name' : _('Image'),
+ 'icon' : 'image-x-generic',
+ 'types' : ['image/png', 'image/gif', 'image/jpeg']
+},
+{ 'id' : 'Audio',
+ 'name' : _('Audio'),
+ 'icon' : 'audio-x-generic',
+ 'types' : ['audio/ogg', 'audio/x-wav', 'audio/wav']
+},
+{ 'id' : 'Video',
+ 'name' : _('Video'),
+ 'icon' : 'video-x-generic',
+ 'types' : ['video/ogg', 'application/ogg']
+},
+{ 'id' : 'Link',
+ 'name' : _('Link'),
+ 'icon' : 'text-uri-list',
+ 'types' : ['text/x-moz-url', 'text/uri-list']
+}]
+
+class ObjectType(object):
+ def __init__(self, type_id, name, icon, mime_types):
+ self.type_id = type_id
+ self.name = name
+ self.icon = icon
+ self.mime_types = mime_types
+
+def get_generic_type(type_id):
+ types = get_all_generic_types()
+ for generic_type in types:
+ if type_id == generic_type.type_id:
+ return generic_type
+
+def get_all_generic_types():
+ types = []
+ for generic_type in _generic_types:
+ object_type = ObjectType(generic_type['id'], generic_type['name'],
+ generic_type['icon'], generic_type['types'])
+ types.append(object_type)
+ return types
+
def get_for_file(file_name):
mime_type = _sugarbaseext.get_mime_type_for_file(file_name)
if mime_type == 'application/octet-stream':
@@ -33,12 +87,24 @@ def get_for_file(file_name):
def get_from_file_name(file_name):
return _sugarbaseext.get_mime_type_from_file_name(file_name)
+def get_mime_icon(mime_type):
+ generic_type = _get_generic_type_for_mime(mime_type)
+ if generic_type:
+ return generic_type['icon']
+
+ return mime_type.replace('/', '-')
+
+def get_mime_description(mime_type):
+ generic_type = _get_generic_type_for_mime(mime_type)
+ if generic_type:
+ return generic_type['name']
+
+ import gnomevfs
+ return gnomevfs.mime_get_description(mime_type)
+
def get_mime_parents(mime_type):
return _sugarbaseext.list_mime_parents(mime_type)
-_extensions = None
-_globs_timestamps = None
-
def get_primary_extension(mime_type):
global extensions
global _globs_timestamps
@@ -148,3 +214,9 @@ def _file_looks_like_text(file_name):
pass
return False
+
+def _get_generic_type_for_mime(mime_type):
+ for generic_type in _generic_types:
+ if mime_type in generic_type['types']:
+ return generic_type
+ return None