Ticket #353: 353.patch

File 353.patch, 3.6 KB (added by erikos, 15 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
    from sugar.graphics import style 
    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
    from sugar.bundle.activitybundle import ActivityBundle 
    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    """
    class NamingAlert(gtk.Window): 
    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)
    class NamingAlert(gtk.Window): 
    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 def get_icon_state(base_name, perc, step=5): 
    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