From e1a599bb8508e1a0607e052a2f086289844dee60 Mon Sep 17 00:00:00 2001 From: Daniel Francis Date: Tue, 02 Oct 2012 01:20:34 +0000 Subject: Initial commit --- (limited to 'desktop/sweetener/item.py') diff --git a/desktop/sweetener/item.py b/desktop/sweetener/item.py new file mode 100644 index 0000000..1b5fc8e --- /dev/null +++ b/desktop/sweetener/item.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# -*- 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('option') + +import gobject +import gtk + +import stock + + +class Item(gobject.GObject): + __gsignals__ = {'activate': (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + tuple())} + menuitem = None + toolitem = None + + def __init__(self, stock_id=None, important=False): + gobject.GObject.__init__(self) + self._stock_id = stock_id + self.accel_group = None + self.important = important + self.connection = None + self.connection_data = None + self.tooltip = None + + def set_stock_id(self, stock_id): + self._stock_id = stock_id + + def get_stock_id(self): + return self._stock_id + + stock_id = property(get_stock_id, set_stock_id) + + def get_menu_item(self): + self.menuitem = gtk.ImageMenuItem(self._stock_id) + self.menuitem.connect('activate', self.activate_cb) + self.setup_accelerator() + return self.menuitem + + def activate_cb(self, widget): + self.emit('activate') + + def setup_accelerator(self): + accelerator = stock.get_accelerator(self.stock_id) + logger.debug(str(accelerator)) + if accelerator[1] > 0: + self.menuitem.add_accelerator('activate', + self.accel_group, accelerator[1], accelerator[0], + gtk.ACCEL_VISIBLE) + + def get_tool_item(self): + self.toolitem = gtk.ToolButton(self._stock_id) + self.toolitem.connect('clicked', self.activate_cb) + self.setup_tooltip() + return self.toolitem + + 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('_', '')) + + def emit_signal(self, widget, signal_name): + print self.stock_id + print self.get_stock_id() + self.emit(signal_name) -- cgit v0.9.1