NamingAlert: Icon dependent on the entry type #353
This commit is contained in:
parent
997c384405
commit
780efa55b0
@ -16,7 +16,9 @@
|
|||||||
# Boston, MA 02111-1307, USA.
|
# Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
import gettext
|
import gettext
|
||||||
|
import os
|
||||||
|
|
||||||
|
import gio
|
||||||
import gtk
|
import gtk
|
||||||
import gobject
|
import gobject
|
||||||
import hippo
|
import hippo
|
||||||
@ -26,6 +28,7 @@ from sugar.graphics import style
|
|||||||
from sugar.graphics.icon import Icon
|
from sugar.graphics.icon import Icon
|
||||||
from sugar.graphics.xocolor import XoColor
|
from sugar.graphics.xocolor import XoColor
|
||||||
from sugar.graphics.icon import CanvasIcon
|
from sugar.graphics.icon import CanvasIcon
|
||||||
|
from sugar.graphics.icon import get_icon_file_name
|
||||||
from sugar.graphics.entry import CanvasEntry
|
from sugar.graphics.entry import CanvasEntry
|
||||||
from sugar.graphics.toolbutton import ToolButton
|
from sugar.graphics.toolbutton import ToolButton
|
||||||
from sugar.graphics.canvastextview import CanvasTextView
|
from sugar.graphics.canvastextview import CanvasTextView
|
||||||
@ -34,6 +37,22 @@ from sugar.bundle.activitybundle import ActivityBundle
|
|||||||
|
|
||||||
_ = lambda msg: gettext.dgettext('sugar-toolkit', msg)
|
_ = lambda msg: gettext.dgettext('sugar-toolkit', msg)
|
||||||
|
|
||||||
|
def _get_icon_name(metadata):
|
||||||
|
file_name = None
|
||||||
|
|
||||||
|
mime_type = metadata.get('mime_type', '')
|
||||||
|
if not file_name and mime_type:
|
||||||
|
icons = gio.content_type_get_icon(mime_type)
|
||||||
|
for icon_name in icons.props.names:
|
||||||
|
file_name = get_icon_file_name(icon_name)
|
||||||
|
if file_name is not None:
|
||||||
|
break
|
||||||
|
|
||||||
|
if file_name is None or not os.path.exists(file_name):
|
||||||
|
file_name = get_icon_file_name('application-octet-stream')
|
||||||
|
|
||||||
|
return file_name
|
||||||
|
|
||||||
class NamingToolbar(gtk.Toolbar):
|
class NamingToolbar(gtk.Toolbar):
|
||||||
""" Toolbar of the naming alert
|
""" Toolbar of the naming alert
|
||||||
"""
|
"""
|
||||||
@ -212,8 +231,8 @@ class NamingAlert(gtk.Window):
|
|||||||
self._favorite_icon = self._create_favorite_icon()
|
self._favorite_icon = self._create_favorite_icon()
|
||||||
header.append(self._favorite_icon)
|
header.append(self._favorite_icon)
|
||||||
|
|
||||||
activity_icon = self._create_activity_icon()
|
entry_icon = self._create_entry_icon()
|
||||||
header.append(activity_icon)
|
header.append(entry_icon)
|
||||||
|
|
||||||
self._title = self._create_title()
|
self._title = self._create_title()
|
||||||
header.append(self._title, hippo.PACK_EXPAND)
|
header.append(self._title, hippo.PACK_EXPAND)
|
||||||
@ -233,14 +252,22 @@ class NamingAlert(gtk.Window):
|
|||||||
favorite_icon = FavoriteIcon(False)
|
favorite_icon = FavoriteIcon(False)
|
||||||
return favorite_icon
|
return favorite_icon
|
||||||
|
|
||||||
def _create_activity_icon(self):
|
def _create_entry_icon(self):
|
||||||
|
bundle_id = self._activity.metadata.get('activity', '')
|
||||||
|
if not bundle_id:
|
||||||
|
bundle_id = self._activity.metadata.get('bundle_id', '')
|
||||||
|
|
||||||
|
if bundle_id == '':
|
||||||
|
file_name = _get_icon_name(self._activity.metadata)
|
||||||
|
else:
|
||||||
activity_bundle = ActivityBundle(self._bundle_path)
|
activity_bundle = ActivityBundle(self._bundle_path)
|
||||||
activity_icon = CanvasIcon(file_name=activity_bundle.get_icon())
|
file_name = activity_bundle.get_icon()
|
||||||
|
entry_icon = CanvasIcon(file_name=file_name)
|
||||||
if self._activity.metadata.has_key('icon-color') and \
|
if self._activity.metadata.has_key('icon-color') and \
|
||||||
self._activity.metadata['icon-color']:
|
self._activity.metadata['icon-color']:
|
||||||
activity_icon.props.xo_color = XoColor( \
|
entry_icon.props.xo_color = XoColor( \
|
||||||
self._activity.metadata['icon-color'])
|
self._activity.metadata['icon-color'])
|
||||||
return activity_icon
|
return entry_icon
|
||||||
|
|
||||||
def _create_title(self):
|
def _create_title(self):
|
||||||
title = CanvasEntry()
|
title = CanvasEntry()
|
||||||
|
@ -926,3 +926,13 @@ def get_icon_state(base_name, perc, step=5):
|
|||||||
return icon_name
|
return icon_name
|
||||||
|
|
||||||
strength = strength + step
|
strength = strength + step
|
||||||
|
|
||||||
|
def get_icon_file_name(icon_name):
|
||||||
|
icon_theme = gtk.icon_theme_get_default()
|
||||||
|
info = icon_theme.lookup_icon(icon_name, gtk.ICON_SIZE_LARGE_TOOLBAR, 0)
|
||||||
|
if not info:
|
||||||
|
return None
|
||||||
|
filename = info.get_filename()
|
||||||
|
del info
|
||||||
|
return filename
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user