diff options
author | Daniel Francis <francis@sugarlabs.org> | 2013-01-01 19:43:40 (GMT) |
---|---|---|
committer | Daniel Francis <francis@sugarlabs.org> | 2013-01-01 19:43:40 (GMT) |
commit | 9c5b89b28c94b7ec0a99f61c8b6e0df1b033fcb6 (patch) | |
tree | b9034f9673722c416338cd8b19c5b1d93864ac70 | |
parent | e3affd5174a3171926bebad53dada2432b558755 (diff) |
Use custom stock instead of gtk stock
Signed-off-by: Daniel Francis <francis@sugarlabs.org>
-rw-r--r-- | coloritem.py | 9 | ||||
-rw-r--r-- | help.py | 6 | ||||
-rw-r--r-- | item.py | 33 | ||||
-rw-r--r-- | radioitem.py | 4 | ||||
-rw-r--r-- | settingsitem.py | 6 | ||||
-rw-r--r-- | stock.py | 37 | ||||
-rw-r--r-- | toggleitem.py | 4 |
7 files changed, 55 insertions, 44 deletions
diff --git a/coloritem.py b/coloritem.py index 30a3ad3..227cbcb 100644 --- a/coloritem.py +++ b/coloritem.py @@ -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 @@ -28,6 +25,7 @@ from sugar.graphics.colorbutton import ColorToolButton from colors import color2string from item import Item +import stock class ColorItem(Item): @@ -54,8 +52,7 @@ class ColorItem(Item): if self.tooltip: self.toolitem.set_title(self.tooltip) else: - text = gtk.stock_lookup(self.stock_id)[1] - self.toolitem.set_title(text.replace('_', '')) + text = stock.get_label(self.stock_id) self.setup_accelerator() def _color_changed_cb(self, widget, pspec): @@ -1,7 +1,7 @@ -# -*- coding: utf-8 -*- +# Copyright (C) 2012-2013 S. Daniel Francis <francis@sugarlabs.org> # -# Copyright (C) 2012 S. Daniel Francis <francis@sugarlabs.org> # Based on helpbutton by Gonzalo Odiard <gonzalo@laptop.org> +# Copyright (C) 2012, Gonzalo Odiard # # 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 @@ -33,7 +33,7 @@ import helpcontent class Help(SettingsItem): def __init__(self, box): - title = gtk.stock_lookup(gtk.STOCK_HELP)[1] + title = stock.get_label(gtk.STOCK_HELP, False) stock.register('sweetener-help-contents', title, '<Ctrl>H', 'toolbar-help') SettingsItem.__init__(self, None, 'sweetener-help-contents') @@ -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 @@ -69,23 +66,35 @@ class Item(gobject.GObject): 'Could not set up accelerator; if toogletoolbutton, update your sugar version') def get_tool_item(self): - if self._stock_id in stock.icons: - icon_name = stock.icons[self._stock_id] - else: - icon_name = self._stock_id sensitive = self.sensitive - self.toolitem = ToolButton(icon_name) - self.toolitem.connect('clicked', self.activate_cb) + self.toolitem = ToolButton() self.setup_tooltip() + self.setup_tool_icon() + self.toolitem.connect('clicked', self.activate_cb) self.toolitem.set_sensitive(sensitive) return self.toolitem + def setup_tool_icon(self): + mstyle = self.toolitem.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(self.tooltip) else: - text = gtk.stock_lookup(self._stock_id)[1] - self.toolitem.set_tooltip(text.replace('_', '')) + self.toolitem.set_tooltip( + stock.get_label(self._stock_id)) self.setup_accelerator() def set_sensitive(self, setting): diff --git a/radioitem.py b/radioitem.py index 93c640b..b47e28a 100644 --- a/radioitem.py +++ b/radioitem.py @@ -36,9 +36,7 @@ class RadioItem(ToggleItem): self.toolitem = RadioToolButton() if self.group: self.toolitem.set_group(self.group.toolitem) - self.toolitem.set_named_icon(stock.icons[self._stock_id] - if self._stock_id in stock.icons - else self._stock_id) + self.setup_tool_icon() self.toolitem.set_active(self.default_value) self.toolitem.connect('toggled', self.toggled_cb) self.setup_tooltip() diff --git a/settingsitem.py b/settingsitem.py index 4dcfdf5..43ff987 100644 --- a/settingsitem.py +++ b/settingsitem.py @@ -40,11 +40,11 @@ class SettingsItem(Item): self.active = True def get_tool_item(self): - self.tool_item = Item.get_tool_item(self) - self.palette = self.toolitem.get_palette() + self.toolitem = Item.get_tool_item(self) + self.palette = self.toolitem.props.palette self.palette.set_content(self.content) self.content.show_all() - return self.tool_item + return self.toolitem def do_activate(self): if self.active: @@ -1,6 +1,4 @@ -# -*- 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 @@ -25,16 +23,10 @@ icon_factory = gtk.IconFactory() # Set the icon name for the stock items, this is used only in Sugar. # Associate here every default stock id with an icon name if you need it. -icons = {gtk.STOCK_ADD: 'list-add'} +stock_items = {} def register(name, label, accelerator, icon_name): - if accelerator == None: - keyval = 0 - mask = 0 - else: - keyval, mask = gtk.accelerator_parse(accelerator) - gtk.stock_add([(name, label, mask, keyval, '')]) if icon_name: icon_source = gtk.IconSource() icon_source.set_icon_name(icon_name) @@ -42,7 +34,11 @@ def register(name, label, accelerator, icon_name): icon.add_source(icon_source) icon_factory.add(name, icon) icon_factory.add_default() - icons[name] = icon_name + + iconset = gtk.icon_factory_lookup_default(name) + stock_items[name] = {'label': label, + 'accelerator': accelerator, + 'has_icon': iconset or None} def overwrite_stock(stock_id, new_accelerator): @@ -67,12 +63,25 @@ overwrite_stock(gtk.STOCK_REMOVE, '<Ctrl>R') overwrite_stock(gtk.STOCK_SELECT_COLOR, '<Ctrl>L') -def get_label(stock, underline): - text = gtk.stock_lookup(stock)[1] +def get_label(stock, underline=True): + text = stock_items[stock]['label'] if underline: text = text.replace('_', '') return text def get_accelerator(stock): - return gtk.stock_lookup(stock)[2:-1] + accelerator = stock_items[stock]['accelerator'] + return gtk.accelerator_parse(accelerator) if accelerator is not None \ + else (0, 0) + + +for i in gtk.stock_list_ids(): + # I am very noisy + # logger.debug(i) + info = gtk.stock_lookup(i) + iconset = gtk.icon_factory_lookup_default(i) + if info is not None: + stock_items[i] = {'label': info[1], + 'accelerator': gtk.accelerator_name(info[3], info[2]), + 'has_icon': iconset or None} diff --git a/toggleitem.py b/toggleitem.py index d7b8c86..62eb653 100644 --- a/toggleitem.py +++ b/toggleitem.py @@ -47,9 +47,7 @@ class ToggleItem(Item): def get_tool_item(self): self.toolitem = ToggleToolButton() - self.toolitem.set_named_icon(stock.icons[self._stock_id] - if self._stock_id in stock.icons - else self._stock_id) + self.setup_tool_icon() self.toolitem.set_active(self.default_value) self.toolitem.connect('toggled', self.toggled_cb) self.setup_tooltip() |