#2695: Recognize text files as such.
This commit is contained in:
		
							parent
							
								
									cace8c0a47
								
							
						
					
					
						commit
						dfe8ff6806
					
				
							
								
								
									
										3
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								NEWS
									
									
									
									
									
								
							| @ -1,6 +1,7 @@ | |||||||
|  | * #2695: Recognize text files as such. (tomeu) | ||||||
| * #2669: Add a border to the inner of the frame. (marco) | * #2669: Add a border to the inner of the frame. (marco) | ||||||
| * #2703: Update macedonian translation. (ArangelAngov) | * #2703: Update macedonian translation. (ArangelAngov) | ||||||
| * #2543: Offer multiple activities for opening clipboard objects. | * #2543: Offer multiple activities for opening clipboard objects. (tomeu) | ||||||
| 
 | 
 | ||||||
| Snapshot d93122bf5e | Snapshot d93122bf5e | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -92,7 +92,7 @@ class ClipboardBox(hippo.CanvasBox): | |||||||
|         if not selection.data: |         if not selection.data: | ||||||
|             return |             return | ||||||
| 
 | 
 | ||||||
|         logging.debug('ClipboardBox: adding type ' + selection.type + ' ' + selection.data) |         logging.debug('ClipboardBox: adding type ' + selection.type) | ||||||
| 
 | 
 | ||||||
|         cb_service = clipboardservice.get_instance() |         cb_service = clipboardservice.get_instance() | ||||||
|         if selection.type == 'text/uri-list': |         if selection.type == 'text/uri-list': | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| # Copyright (C) 2006-2007, Red Hat, Inc. | # Copyright (C) 2006-2007, Red Hat, Inc. | ||||||
|  | # Copyright (C) 2007, One Laptop Per Child | ||||||
| # | # | ||||||
| # This library is free software; you can redistribute it and/or | # This library is free software; you can redistribute it and/or | ||||||
| # modify it under the terms of the GNU Lesser General Public | # modify it under the terms of the GNU Lesser General Public | ||||||
| @ -20,7 +21,13 @@ import logging | |||||||
| from sugar import _sugarext | from sugar import _sugarext | ||||||
| 
 | 
 | ||||||
| def get_for_file(file_name): | def get_for_file(file_name): | ||||||
|     return _sugarext.get_mime_type_for_file(file_name) |     mime_type = _sugarext.get_mime_type_for_file(file_name) | ||||||
|  |     if mime_type == 'application/octet-stream': | ||||||
|  |         if _file_looks_like_text(file_name): | ||||||
|  |             return 'text/plain' | ||||||
|  |         else: | ||||||
|  |             return 'application/octet-stream' | ||||||
|  |     return mime_type | ||||||
|          |          | ||||||
| def get_from_file_name(file_name): | def get_from_file_name(file_name): | ||||||
|     return _sugarext.get_mime_type_from_file_name(file_name) |     return _sugarext.get_mime_type_from_file_name(file_name) | ||||||
| @ -80,3 +87,22 @@ def choose_most_significant(mime_types): | |||||||
| 
 | 
 | ||||||
|     logging.debug('Returning first: %r.' % mime_types[0]) |     logging.debug('Returning first: %r.' % mime_types[0]) | ||||||
|     return mime_types[0] |     return mime_types[0] | ||||||
|  | 
 | ||||||
|  | def _file_looks_like_text(file_name): | ||||||
|  |     f = open(file_name, 'r') | ||||||
|  |     try: | ||||||
|  |         sample = f.read(256) | ||||||
|  |     finally: | ||||||
|  |         f.close() | ||||||
|  | 
 | ||||||
|  |     if '\000' in sample: | ||||||
|  |         return False | ||||||
|  | 
 | ||||||
|  |     for encoding in ('ascii', 'latin_1', 'utf_8', 'utf_16'): | ||||||
|  |         try: | ||||||
|  |             string = unicode(sample, encoding) | ||||||
|  |             return True | ||||||
|  |         except Exception, e: | ||||||
|  |             pass | ||||||
|  | 
 | ||||||
|  |     return False | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Tomeu Vizoso
						Tomeu Vizoso