Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Francis <francis@sugarlabs.org>2013-01-01 19:43:40 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2013-01-01 19:43:40 (GMT)
commit9c5b89b28c94b7ec0a99f61c8b6e0df1b033fcb6 (patch)
treeb9034f9673722c416338cd8b19c5b1d93864ac70
parente3affd5174a3171926bebad53dada2432b558755 (diff)
Use custom stock instead of gtk stock
Signed-off-by: Daniel Francis <francis@sugarlabs.org>
-rw-r--r--coloritem.py9
-rw-r--r--help.py6
-rw-r--r--item.py33
-rw-r--r--radioitem.py4
-rw-r--r--settingsitem.py6
-rw-r--r--stock.py37
-rw-r--r--toggleitem.py4
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):
diff --git a/help.py b/help.py
index c2250ff..3325ed3 100644
--- a/help.py
+++ b/help.py
@@ -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')
diff --git a/item.py b/item.py
index 29d0a3d..e20ab93 100644
--- a/item.py
+++ b/item.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
@@ -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:
diff --git a/stock.py b/stock.py
index 9ceb998..09f9724 100644
--- a/stock.py
+++ b/stock.py
@@ -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()