#1888 Choose the correct mime type when adding text from Write to the clipboard.

This commit is contained in:
Tomeu Vizoso 2007-07-14 13:53:49 +02:00
parent 614d9336cc
commit 1d2f84d0af
5 changed files with 40 additions and 26 deletions

2
NEWS
View File

@ -1,3 +1,5 @@
* #1888 Choose the correct mime type when adding text from Write to the
clipboard. (tomeu)
* #2149, #2150: fixes for the clipboard palette. (tomeu) * #2149, #2150: fixes for the clipboard palette. (tomeu)
* #2163 Arrow icons in the intro screen buttons. (marco) * #2163 Arrow icons in the intro screen buttons. (marco)

View File

@ -20,7 +20,6 @@ import urlparse
from sugar.objects import mime from sugar.objects import mime
from sugar import activity from sugar import activity
from sugar import util
import objecttypeservice import objecttypeservice
@ -111,7 +110,7 @@ class ClipboardObject:
if not self._formats: if not self._formats:
return '' return ''
format = util.choose_most_significant_mime_type(self._formats.keys()) format = mime.choose_most_significant(self._formats.keys())
if format == 'text/uri-list': if format == 'text/uri-list':
data = self._formats['text/uri-list'].get_data() data = self._formats['text/uri-list'].get_data()

View File

@ -31,7 +31,6 @@ from sugar.clipboard import clipboardservice
from sugar.datastore import datastore from sugar.datastore import datastore
from sugar.objects import mime from sugar.objects import mime
from sugar import profile from sugar import profile
from sugar import util
class ClipboardMenu(Palette): class ClipboardMenu(Palette):
@ -160,7 +159,7 @@ class ClipboardMenu(Palette):
cb_service = clipboardservice.get_instance() cb_service = clipboardservice.get_instance()
obj = cb_service.get_object(self._object_id) obj = cb_service.get_object(self._object_id)
format = util.choose_most_significant_mime_type(obj['FORMATS']) format = mime.choose_most_significant(obj['FORMATS'])
data = cb_service.get_object_data(self._object_id, format) data = cb_service.get_object_data(self._object_id, format)
if format == 'text/uri-list': if format == 'text/uri-list':

View File

@ -15,6 +15,8 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA. # Boston, MA 02111-1307, USA.
import logging
from sugar import _sugarext from sugar import _sugarext
def get_for_file(file_name): def get_for_file(file_name):
@ -40,3 +42,37 @@ def get_primary_extension(mime_type):
_extensions_cache[mime_type] = None _extensions_cache[mime_type] = None
return None return None
def choose_most_significant(mime_types):
logging.debug('Choosing between %r.' % mime_types)
if not mime_types:
return ''
if 'text/uri-list' in mime_types:
return 'text/uri-list'
for mime_category in ['image/', 'text/', 'application/']:
for mime_type in mime_types:
# skip text/plain and text/html, these have lower priority.
if mime_type in ['text/plain', 'text/html']:
continue
if mime_type.startswith(mime_category):
# skip mozilla private types (second component starts with '_')
if mime_type.split('/')[1].startswith('_'):
continue
# take out the specifier after ';' that mozilla likes to add
mime_type = mime_type.split(';')[0]
logging.debug('Choosed %r!' % mime_type)
return mime_type
if 'text/html' in mime_types:
return 'text/html'
if 'text/plain' in mime_types or 'STRING' in mime_types:
return 'text/plain'
logging.debug('Returning first: %r.' % mime_types[0])
return mime_types[0]

View File

@ -128,25 +128,3 @@ def set_proc_title(title):
except: except:
return False return False
def choose_most_significant_mime_type(mime_types):
logging.debug('Choosing between %r.' % mime_types)
if not mime_types:
return ''
if 'text/uri-list' in mime_types:
return 'text/uri-list'
for mime_category in ['image/', 'text/', 'application/']:
for mime_type in mime_types:
if mime_type.startswith(mime_category) and \
not mime_type.split('/')[1].startswith('_'):
mime_type = mime_type.split(';')[0]
logging.debug('Choosed %r!' % mime_type)
return mime_type
if 'STRING' in mime_types:
return 'text/plain'
logging.debug('Returning first: %r.' % mime_types[0])
return mime_types[0]