diff options
Diffstat (limited to 'item.py')
-rw-r--r-- | item.py | 58 |
1 files changed, 47 insertions, 11 deletions
@@ -1,7 +1,4 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012 S. Daniel Francis <francis@sugarlabs.org> +# Copyright (C) 2012-2013 S. Daniel Francis <francis@sugarlabs.org> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -53,10 +50,20 @@ class Item(gobject.GObject): def get_menu_item(self): sensitive = self.sensitive - self.menuitem = gtk.ImageMenuItem(self._stock_id) - self.menuitem.set_sensitive(sensitive) - self.menuitem.connect('activate', self.activate_cb) - self.setup_accelerator() + if stock.stock_items[self.stock_id]['has_icon'] is not None: + self.menuitem = gtk.ImageMenuItem() + self.menuitem.set_label(stock.get_label(self.stock_id, False)) + self.menuitem.set_use_underline(True) + self.menuitem.set_sensitive(sensitive) + self.menuitem.connect('activate', self.activate_cb) + self.setup_accelerator() + self.setup_menu_icon() + else: + self.menuitem = gtk.MenuItem(stock.get_label(self.stock_id, False)) + self.menuitem.set_use_underline(True) + self.menuitem.set_sensitive(sensitive) + self.menuitem.connect('activate', self.activate_cb) + self.setup_accelerator() return self.menuitem def activate_cb(self, widget): @@ -71,18 +78,47 @@ class Item(gobject.GObject): gtk.ACCEL_VISIBLE) def get_tool_item(self): - self.toolitem = gtk.ToolButton(self._stock_id) + self.toolitem = gtk.ToolButton() + self.setup_tool_icon() self.toolitem.connect('clicked', self.activate_cb) self.toolitem.set_sensitive(self.sensitive) self.setup_tooltip() return self.toolitem + def setup_menu_icon(self): + mstyle = self.menuitem.get_style() + iconset = stock.stock_items[self.stock_id]['has_icon'] + if iconset is not None: + try: + pixbuf = iconset.render_icon(mstyle, gtk.TEXT_DIR_NONE, + gtk.STATE_NORMAL, + gtk.ICON_SIZE_MENU) + image = gtk.image_new_from_pixbuf(pixbuf) + self.menuitem.set_image(image) + except Exception, err: + logger.debug(self.stock_id) + logger.error(err) + + def setup_tool_icon(self): + mstyle = self.menuitem.get_style() + iconset = stock.stock_items[self.stock_id]['has_icon'] + if iconset is not None: + try: + pixbuf = iconset.render_icon(mstyle, gtk.TEXT_DIR_NONE, + gtk.STATE_NORMAL, + gtk.ICON_SIZE_LARGE_TOOLBAR) + image = gtk.image_new_from_pixbuf(pixbuf) + image.show() + self.toolitem.set_icon_widget(image) + except Exception, err: + logger.debug(self.stock_id) + logger.error(err) + def setup_tooltip(self): if self.tooltip: self.toolitem.set_tooltip_text(self.tooltip) else: - text = gtk.stock_lookup(self.stock_id)[1] - self.toolitem.set_tooltip_text(text.replace('_', '')) + self.toolitem.set_tooltip_text(stock.get_label(self.stock_id)) def emit_signal(self, widget, signal_name): print self.stock_id |