diff options
author | Reinier Heeres <reinier@heeres.eu> | 2007-11-18 10:45:42 (GMT) |
---|---|---|
committer | Reinier Heeres <reinier@heeres.eu> | 2007-11-18 10:45:42 (GMT) |
commit | e0c9a2b65caca0b1d0d8e3c5983917d60aa3866a (patch) | |
tree | 9198c758a2ad914dfa6e66351ac631d150b7b9e3 /toolbars.py | |
parent | 19b52ed3f9ababe1b09a5294f6beb12816cb217d (diff) |
Big update; see NEWS
Diffstat (limited to 'toolbars.py')
-rw-r--r-- | toolbars.py | 162 |
1 files changed, 103 insertions, 59 deletions
diff --git a/toolbars.py b/toolbars.py index cc137dd..600e554 100644 --- a/toolbars.py +++ b/toolbars.py @@ -4,46 +4,70 @@ import pygtk pygtk.require('2.0') import gtk from mathlib import MathLib + +from sugar.graphics.palette import Palette +from sugar.graphics.menuitem import MenuItem from sugar.graphics.toolbutton import ToolButton from sugar.graphics.toggletoolbutton import ToggleToolButton import logging _logger = logging.getLogger('calc-activity') -class TextToolButton(gtk.ToolButton): - def __init__(self, text, cb): - gtk.ToolButton.__init__(self) - self.set_label(text) - self.connect('clicked', cb) +from gettext import gettext as _ class IconToolButton(ToolButton): - def __init__(self, text, cb): - ToolButton.__init__(self, text) + def __init__(self, icon_name, text, cb, help_cb=None): + ToolButton.__init__(self) + + self.set_label(icon_name) + self.create_palette(text, help_cb) + self.connect('clicked', cb) -class TextToggleToolButton(gtk.ToggleToolButton): + def create_palette(self, text, help_cb): + p = Palette(text) + + if help_cb is not None: + item = MenuItem(_('Help'), 'action-help') + item.connect('activate', help_cb) + item.show() + p.menu.append(item) + + self.set_palette(p) + +class IconToggleToolButton(ToggleToolButton): def __init__(self, items, cb): - gtk.ToggleToolButton.__init__(self) + ToggleToolButton.__init__(self) self.items = items - self.set_label(items[0]) + self.set_label(items[0][0]) + self.set_tooltip(items[0][1]) self.selected = 0 self.connect('clicked', self.toggle_button) self.callback = cb def toggle_button(self, w): self.selected = (self.selected + 1) % len(self.items) - self.set_label(self.items[self.selected]) + but = self.items[self.selected] + self.set_label(but[0]) + self.set_tooltip(but[1]) if self.callback is not None: - self.callback(self.items[self.selected]) + self.callback(but[0]) -class IconToggleToolButton(ToggleToolButton): - def __init__(self, text, cb): - ToggleToolButton.__init__(self, text) +class TextToggleToolButton(gtk.ToggleToolButton): + def __init__(self, items, cb): + gtk.ToggleToolButton.__init__(self) + self.items = items + self.set_label(items[0]) + self.selected = 0 self.connect('clicked', self.toggle_button) + self.callback = cb def toggle_button(self, w): + self.selected = (self.selected + 1) % len(self.items) + but = self.items[self.selected] + self.set_label(but) if self.callback is not None: - self.callback(self.items[self.selected]) + self.callback(but) class LineSeparator(gtk.SeparatorToolItem): def __init__(self): @@ -54,109 +78,129 @@ class EditToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - self.insert(TextToolButton('Copy', + self.insert(IconToolButton('copy', _('Copy'), lambda x: calc.text_copy()), -1) - self.insert(TextToolButton('Paste', + self.insert(IconToolButton('paste', _('Paste'), lambda x: calc.text_paste()), -1) - self.insert(TextToolButton('Cut', + self.insert(IconToolButton('cut', _('Cut'), lambda x: calc.text_cut()), -1) class AlgebraToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - self.insert(TextToolButton('square', - lambda x: calc.button_pressed(calc.TYPE_OP_POST, '^2')), -1) + self.insert(IconToolButton('square', _('Square'), + lambda x: calc.button_pressed(calc.TYPE_OP_POST, '^2'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(square)')), -1) - self.insert(TextToolButton('sqrt', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sqrt')), -1) + self.insert(IconToolButton('sqrt', _('Square root'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sqrt'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(sqrt)')), -1) self.insert(LineSeparator(), -1) - self.insert(TextToolButton('exp', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'exp')), -1) + self.insert(IconToolButton('exp', _('e to the power x'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'exp'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(exp)')), -1) - self.insert(TextToolButton('ln', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'ln')), -1) + self.insert(IconToolButton('ln', _('Natural logarithm'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'ln'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(sqrt)')), -1) self.insert(LineSeparator(), -1) - self.insert(TextToolButton('fac', - lambda x: calc.button_pressed(calc.TYPE_OP_POST, '!')), -1) + self.insert(IconToolButton('fac', _('Factorial'), + lambda x: calc.button_pressed(calc.TYPE_OP_POST, '!'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(fac)')), -1) class TrigonometryToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - self.insert(TextToolButton('sin', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sin')), -1) + self.insert(IconToolButton('sin', _('Sine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sin'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(sin)')), -1) - self.insert(TextToolButton('cos', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'cos')), -1) + self.insert(IconToolButton('cos', _('Cosine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'cos'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(cos)')), -1) - self.insert(TextToolButton('tan', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'tan')), -1) + self.insert(IconToolButton('tan', _('Tangent'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'tan'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(tan)')), -1) self.insert(LineSeparator(), -1) - self.insert(TextToolButton('asin', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'asin')), -1) + self.insert(IconToolButton('asin', _('Arc sine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'asin'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(asin)')), -1) - self.insert(TextToolButton('acos', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'acos')), -1) + self.insert(IconToolButton('acos', _('Arc cosine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'acos'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(acos)')), -1) - self.insert(TextToolButton('atan', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'atan')), -1) + self.insert(IconToolButton('atan', _('Arc tangent'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'atan'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(atan)')), -1) self.insert(LineSeparator(), -1) - self.insert(TextToolButton('sinh', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sinh')), -1) + self.insert(IconToolButton('sinh', _('Hyperbolic sine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sinh'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(sinh)')), -1) - self.insert(TextToolButton('cosh', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'cosh')), -1) + self.insert(IconToolButton('cosh', _('Hyperbolic cosine'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'cosh'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(cosh)')), -1) - self.insert(TextToolButton('tanh', - lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'tanh')), -1) + self.insert(IconToolButton('tanh', _('Hyperbolic tangent'), + lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'tanh'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(tanh)')), -1) class BooleanToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - self.insert(TextToolButton('and', - lambda x: calc.button_pressed(calc.TYPE_OP_POST, '&')), -1) + self.insert(IconToolButton('and', _('Logical and'), + lambda x: calc.button_pressed(calc.TYPE_OP_POST, '&'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(and))')), -1) - self.insert(TextToolButton('or', - lambda x: calc.button_pressed(calc.TYPE_OP_POST, '|')), -1) + self.insert(IconToolButton('or', _('Logical or'), + lambda x: calc.button_pressed(calc.TYPE_OP_POST, '|'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(or)')), -1) - self.insert(TextToolButton('xor', - lambda x: calc.button_pressed(calc.TYPE_OP_POST, '^')), -1) + self.insert(IconToolButton('xor', _('Logical xor'), + lambda x: calc.button_pressed(calc.TYPE_OP_POST, '^'), + lambda x: calc.button_pressed(calc.TYPE_TEXT, 'help(xor)')), -1) self.insert(LineSeparator(), -1) - self.insert(TextToolButton('eq', + self.insert(IconToolButton('eq', _('Equals'), lambda x: calc.button_pressed(calc.TYPE_OP_POST, '=')), -1) - self.insert(TextToolButton('neq', + self.insert(IconToolButton('neq', _('Not equals'), lambda x: calc.button_pressed(calc.TYPE_OP_POST, '!=')), -1) class ConstantsToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - self.insert(TextToolButton('pi', + self.insert(IconToolButton('pi', _('Pi'), lambda x: calc.button_pressed(calc.TYPE_TEXT, 'pi')), -1) - self.insert(TextToolButton('e', + self.insert(IconToolButton('e', _('e'), lambda x: calc.button_pressed(calc.TYPE_TEXT, 'e')), -1) class FormatToolbar(gtk.Toolbar): def __init__(self, calc): gtk.Toolbar.__init__(self) - el = ['deg', 'rad'] - self.insert(TextToggleToolButton(el, + el = [ + ['deg', _('Degrees')], + ['rad', _('Radians')] + ] + self.insert(IconToggleToolButton(el, lambda x: self.update_angle_type(x, calc)), -1) def update_angle_type(self, text, calc): |