# -*- coding: utf-8 -*- # # Copyright (C) 2012 S. Daniel Francis # # 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 # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. import logging logger = logging.getLogger('stock') from gi.repository import Gtk icon_factory = Gtk.IconFactory() # Set the icon name for the stock items, this is used only in Sugar. icons = {Gtk.STOCK_ADD: 'list-add'} def register(name, label, accelerator, icon_name): if accelerator == None: keyval = 0 mask = 0 else: keyval, mask = Gtk.accelerator_parse(accelerator) logger.debug(keyval) logger.debug(mask) item = Gtk.StockItem.new() item.stock_id = name item.label = label item.modifier = mask item.keyval = keyval Gtk.stock_add([item]) if icon_name: icon_source = Gtk.IconSource() icon_source.set_icon_name(icon_name) icon = Gtk.IconSet() icon.add_source(icon_source) icon_factory.add(name, icon) icon_factory.add_default() icons[name] = icon_name def overwrite_stock(stock_id, new_accelerator): info = Gtk.stock_lookup(stock_id) keyval, mask = Gtk.accelerator_parse(new_accelerator) info.modifier = mask info.keyval = keyval logger.debug(str(info)) Gtk.stock_add([info]) # Here we overwrite the key accelerators for some stock ids. # Feel free to add here any other stock id if you need it at your activity, # and send us a patch. overwrite_stock(Gtk.STOCK_SAVE_AS, 'S') overwrite_stock(Gtk.STOCK_ZOOM_IN, 'plus') overwrite_stock(Gtk.STOCK_ZOOM_OUT, 'minus') overwrite_stock(Gtk.STOCK_ZOOM_100, '0') # Key accelerator will be F11 on desktops and return on Sugar. overwrite_stock(Gtk.STOCK_FULLSCREEN, 'Return') overwrite_stock(Gtk.STOCK_ADD, 'A') overwrite_stock(Gtk.STOCK_REMOVE, 'R') overwrite_stock(Gtk.STOCK_SELECT_COLOR, 'L') def get_label(stock, underline): text = Gtk.stock_lookup(stock)[1] if underline: text = text.replace('_', '') return text def get_accelerator(stock): stock_id = Gtk.stock_lookup(stock) return stock_id.modifier, stock_id.keyval