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:10:09 (GMT)
committer Daniel Francis <francis@sugarlabs.org>2013-01-01 19:10:09 (GMT)
commit1265546eda5b8ba30a5e430c50ad08f15b31c692 (patch)
tree74c0490e348c352f70d17cd2f1436c1715cb77e0
parentd0a2a5ed99725f7ae9eb429467952e09b92b091e (diff)
Use own stock
Signed-off-by: Daniel Francis <francis@sugarlabs.org>
-rw-r--r--coloritem.py5
-rw-r--r--help.py8
-rw-r--r--item.py58
-rw-r--r--radioitem.py19
-rw-r--r--settingsitem.py7
-rw-r--r--shortcontentitem.py8
-rw-r--r--stock.py38
-rw-r--r--toggleitem.py14
8 files changed, 101 insertions, 56 deletions
diff --git a/coloritem.py b/coloritem.py
index 1db0e69..03d0955 100644
--- a/coloritem.py
+++ b/coloritem.py
@@ -1,5 +1,5 @@
"""The color item gives the user the posibility to choice a colour."""
-# 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
@@ -24,6 +24,7 @@ import gtk
from colors import color2string
from item import Item
+import stock
class ColorItem(Item):
@@ -58,7 +59,7 @@ class ColorItem(Item):
if self.tooltip:
title = self.tooltip
else:
- title = gtk.stock_lookup(self.stock_id)[1]
+ title = stock.get_title(self.stock_id)
dialog = gtk.ColorSelectionDialog(title)
dialog.set_transient_for(self.parent)
color_selection = dialog.get_color_selection()
diff --git a/help.py b/help.py
index 7d45790..b5ae931 100644
--- a/help.py
+++ b/help.py
@@ -1,5 +1,5 @@
""" 'Help' and 'About' information."""
-# 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
@@ -41,7 +41,7 @@ class AboutItem(Item):
dialog.set_authors(info.authors)
dialog.set_license(info.license)
dialog.set_wrap_license(True)
- dialog.set_logo_icon_name('graph-plotter')
+ dialog.set_logo_icon_name(info.lower_name)
dialog.run()
dialog.destroy()
@@ -54,9 +54,9 @@ class Help(ItemGroup):
"""Constructor.
box -- sweetener.ItemBox where append it
"""
- title = gtk.stock_lookup(gtk.STOCK_HELP)[1]
+ title = stock.get_label(gtk.STOCK_HELP, False)
ItemGroup.__init__(self, box, title, 'toolbar-help')
- stock.register('sweetener-help-contents', _('Contents'),
+ stock.register('sweetener-help-contents', title,
'F1', 'gtk-help')
contents = Item('sweetener-help-contents')
contents.connect('activate', lambda w: gtk.show_uri(None,
diff --git a/item.py b/item.py
index b2727e4..9291e2d 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
@@ -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
diff --git a/radioitem.py b/radioitem.py
index 20f7b66..87b0e7e 100644
--- a/radioitem.py
+++ b/radioitem.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
@@ -23,6 +20,8 @@ logger = logging.getLogger('toggleoption')
import gtk
from toggleitem import ToggleItem
+import stock
+
class RadioItem(ToggleItem):
def __init__(self, group, default_value=True,
@@ -31,17 +30,19 @@ class RadioItem(ToggleItem):
self.group = group
def get_menu_item(self):
- stock_info = gtk.stock_lookup(self.stock_id)
- self.menuitem = gtk.RadioMenuItem(self.group.menuitem if self.group !=\
- None else None, stock_info[1])
+ self.menuitem = gtk.RadioMenuItem(self.group.menuitem if self.group !=
+ None else None,
+ stock.get_label(self.stock_id,
+ False))
self.menuitem.set_active(self.default_value)
self.menuitem.connect('toggled', self.toggled_cb)
self.setup_accelerator()
return self.menuitem
def get_tool_item(self):
- self.toolitem = gtk.RadioToolButton(self.group.toolitem if self.group !=\
- None else None, self._stock_id)
+ self.toolitem = gtk.RadioToolButton(self.group.toolitem
+ if self.group != None else None)
+ 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 a690597..f4016ac 100644
--- a/settingsitem.py
+++ b/settingsitem.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
@@ -43,7 +40,7 @@ class SettingsItem(Item):
if self.tooltip:
title = self.tooltip
else:
- title = gtk.stock_lookup(self.stock_id)[1]
+ title = stock.get_title(self.stock_id)
dialog = gtk.Dialog(title, self.parent)
dialog.vbox.pack_start(self.content, True, True)
self.content.show()
diff --git a/shortcontentitem.py b/shortcontentitem.py
index 7b4a5f4..1c757c7 100644
--- a/shortcontentitem.py
+++ b/shortcontentitem.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
@@ -25,6 +22,7 @@ import gobject
import gtk
from item import Item
+import stock
class ShortContentItem(Item):
@@ -45,7 +43,7 @@ class ShortContentItem(Item):
if self.tooltip:
title = self.tooltip
else:
- title = gtk.stock_lookup(self.stock_id)[1].replace('_', '')
+ title = stock.get_label(self.stock_id)
window = gtk.Dialog(title, self.parent)
window.set_modal(False)
window.set_decorated(True)
diff --git a/stock.py b/stock.py
index 4f3b213..8e281c9 100644
--- a/stock.py
+++ b/stock.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
@@ -24,14 +21,10 @@ import gtk
icon_factory = gtk.IconFactory()
+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)
@@ -40,6 +33,12 @@ def register(name, label, accelerator, icon_name):
icon_factory.add(name, icon)
icon_factory.add_default()
+ 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):
info = list(gtk.stock_lookup(stock_id))
@@ -64,12 +63,25 @@ overwrite_stock(gtk.STOCK_REMOVE, '<Shift>Delete')
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 d95aec9..80c6096 100644
--- a/toggleitem.py
+++ b/toggleitem.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
@@ -22,7 +19,9 @@ import logging
logger = logging.getLogger('toggleoption')
import gobject
import gtk
+
from item import Item
+import stock
class ToggleItem(Item):
@@ -35,8 +34,8 @@ class ToggleItem(Item):
self.active = default_value
def get_menu_item(self):
- stock_info = gtk.stock_lookup(self.stock_id)
- self.menuitem = gtk.CheckMenuItem(stock_info[1])
+ self.menuitem = gtk.CheckMenuItem(stock.get_label(self.stock_id,
+ False))
self.menuitem.set_active(self.default_value)
self.menuitem.connect('toggled', self.toggled_cb)
self.setup_accelerator()
@@ -52,7 +51,8 @@ class ToggleItem(Item):
self.emit('toggled', active)
def get_tool_item(self):
- self.toolitem = gtk.ToggleToolButton(self._stock_id)
+ self.toolitem = gtk.ToggleToolButton()
+ self.setup_tool_icon()
self.toolitem.set_active(self.default_value)
self.toolitem.connect('toggled', self.toggled_cb)
self.setup_tooltip()