Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/toolbars.py
diff options
context:
space:
mode:
authorReinier Heeres <reinier@heeres.eu>2007-11-18 10:45:42 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-11-18 10:45:42 (GMT)
commite0c9a2b65caca0b1d0d8e3c5983917d60aa3866a (patch)
tree9198c758a2ad914dfa6e66351ac631d150b7b9e3 /toolbars.py
parent19b52ed3f9ababe1b09a5294f6beb12816cb217d (diff)
Big update; see NEWS
Diffstat (limited to 'toolbars.py')
-rw-r--r--toolbars.py162
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):