Attachments you submit will be routed for moderation. If you have an account, please log in first.

Ticket #353: 353.patch

File 353.patch, 3.6 KB (added by erikos, 4 years ago)
  • src/sugar/activity/namingalert.py

    diff --git a/src/sugar/activity/namingalert.py b/src/sugar/activity/namingalert.py
    index 724d76a..11b7688 100644
    a b  
    1616# Boston, MA 02111-1307, USA. 
    1717 
    1818import gettext 
     19import os 
    1920 
     21import gio 
    2022import gtk 
    2123import gobject 
    2224import hippo 
     
    2628from sugar.graphics.icon import Icon 
    2729from sugar.graphics.xocolor import XoColor 
    2830from sugar.graphics.icon import CanvasIcon 
     31from sugar.graphics.icon import get_icon_file_name 
    2932from sugar.graphics.entry import CanvasEntry 
    3033from sugar.graphics.toolbutton import ToolButton 
    3134from sugar.graphics.canvastextview import CanvasTextView 
     
    3437 
    3538_ = lambda msg: gettext.dgettext('sugar-toolkit', msg) 
    3639 
     40def _get_icon_name(metadata): 
     41    file_name = None 
     42 
     43    mime_type = metadata.get('mime_type', '') 
     44    if not file_name and mime_type: 
     45        icons = gio.content_type_get_icon(mime_type) 
     46        for icon_name in icons.props.names: 
     47            file_name = get_icon_file_name(icon_name) 
     48            if file_name is not None: 
     49                break 
     50 
     51    if file_name is None or not os.path.exists(file_name): 
     52        file_name = get_icon_file_name('application-octet-stream') 
     53 
     54    return file_name 
     55 
    3756class NamingToolbar(gtk.Toolbar): 
    3857    """ Toolbar of the naming alert 
    3958    """ 
     
    212231        self._favorite_icon = self._create_favorite_icon() 
    213232        header.append(self._favorite_icon) 
    214233         
    215         activity_icon = self._create_activity_icon() 
    216         header.append(activity_icon) 
     234        entry_icon = self._create_entry_icon() 
     235        header.append(entry_icon) 
    217236         
    218237        self._title = self._create_title() 
    219238        header.append(self._title, hippo.PACK_EXPAND) 
     
    233252        favorite_icon = FavoriteIcon(False) 
    234253        return favorite_icon 
    235254     
    236     def _create_activity_icon(self): 
    237         activity_bundle = ActivityBundle(self._bundle_path) 
    238         activity_icon = CanvasIcon(file_name=activity_bundle.get_icon()) 
     255    def _create_entry_icon(self): 
     256        bundle_id = self._activity.metadata.get('activity', '') 
     257        if not bundle_id: 
     258            bundle_id = self._activity.metadata.get('bundle_id', '') 
     259 
     260        if bundle_id == '': 
     261            file_name = _get_icon_name(self._activity.metadata) 
     262        else:     
     263            activity_bundle = ActivityBundle(self._bundle_path) 
     264            file_name = activity_bundle.get_icon() 
     265        entry_icon = CanvasIcon(file_name=file_name) 
    239266        if self._activity.metadata.has_key('icon-color') and \ 
    240267                self._activity.metadata['icon-color']: 
    241             activity_icon.props.xo_color = XoColor( \ 
     268            entry_icon.props.xo_color = XoColor( \ 
    242269                self._activity.metadata['icon-color']) 
    243         return activity_icon 
     270        return entry_icon 
    244271     
    245272    def _create_title(self): 
    246273        title = CanvasEntry() 
  • src/sugar/graphics/icon.py

    diff --git a/src/sugar/graphics/icon.py b/src/sugar/graphics/icon.py
    index f901519..6057652 100644
    a b  
    926926            return icon_name 
    927927 
    928928        strength = strength + step 
     929 
     930def get_icon_file_name(icon_name): 
     931    icon_theme = gtk.icon_theme_get_default() 
     932    info = icon_theme.lookup_icon(icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR, 0) 
     933    if not info: 
     934        return None 
     935    filename = info.get_filename() 
     936    del info 
     937    return filename 
     938