diff options
Diffstat (limited to 'calculate.py')
-rw-r--r-- | calculate.py | 111 |
1 files changed, 55 insertions, 56 deletions
diff --git a/calculate.py b/calculate.py index 79f362f..a88267b 100644 --- a/calculate.py +++ b/calculate.py @@ -24,20 +24,21 @@ import types import os from gettext import gettext as _ import string +import base64 import logging _logger = logging.getLogger('Calculate') -import gobject -import pygtk -pygtk.require('2.0') -import gtk -import pango -import base64 +#import gobject +#import pygtk +#pygtk.require('2.0') +from gi.repository import Gtk +from gi.repository import Gdk +#import pango -from sugar.activity import activity -import sugar.profile -from sugar.graphics.icon import CanvasIcon -from sugar.graphics.xocolor import XoColor +from sugar3.activity import activity +import sugar3.profile +from sugar3.graphics.icon import CanvasIcon +from sugar3.graphics.xocolor import XoColor from shareable_activity import ShareableActivity from layout import CalcLayout @@ -67,8 +68,8 @@ def findchar(text, chars, ofs=0): def _textview_realize_cb(widget): '''Change textview properties once window is created.''' - win = widget.get_window(gtk.TEXT_WINDOW_TEXT) - win.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND1)) + win = widget.get_window(Gtk.TEXT_WINDOW_TEXT) + win.set_cursor(Gdk.Cursor(Gdk.HAND1)) return False class Equation: @@ -131,7 +132,7 @@ class Equation: return size def append_with_superscript_tags(self, buf, text, *tags): - '''Add a text to a gtk.TextBuffer with superscript tags.''' + '''Add a text to a Gtk.TextBuffer with superscript tags.''' fontsize = self.determine_font_size(*tags) _logger.debug('font-size: %d', fontsize) @@ -157,16 +158,16 @@ class Equation: def create_lasteq_textbuf(self): ''' - Return a gtk.TextBuffer properly formatted for last equation - gtk.TextView. + Return a Gtk.TextBuffer properly formatted for last equation + Gtk.TextView. ''' is_error = isinstance(self.result, ParserError) - buf = gtk.TextBuffer() + buf = Gtk.TextBuffer() tagsmallnarrow = buf.create_tag(font=CalcLayout.FONT_SMALL_NARROW) tagbignarrow = buf.create_tag(font=CalcLayout.FONT_BIG_NARROW) tagbigger = buf.create_tag(font=CalcLayout.FONT_BIGGER) - tagjustright = buf.create_tag(justification=gtk.JUSTIFY_RIGHT) + tagjustright = buf.create_tag(justification=Gtk.JUSTIFY_RIGHT) tagred = buf.create_tag(foreground='#FF0000') # Add label and equation @@ -203,35 +204,34 @@ class Equation: """ Create a history object for this equation. In case of an SVG result this will be the image, otherwise it will - return a properly formatted gtk.TextView. + return a properly formatted Gtk.TextView. """ if isinstance(self.result, SVGImage): return self.result.get_image() - w = gtk.TextView() - w.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_fill_color())) - w.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_stroke_color())) - w.set_wrap_mode(gtk.WRAP_WORD_CHAR) - w.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_RIGHT, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_TOP, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_BOTTOM, 4) + w = Gtk.TextView() + w.modify_base(Gtk.STATE_NORMAL, Gdk.color_parse(self.color.get_fill_color())) + w.modify_bg(Gtk.STATE_NORMAL, Gdk.color_parse(self.color.get_stroke_color())) + w.set_wrap_mode(Gtk.WRAP_WORD_CHAR) + w.set_border_window_size(Gtk.TEXT_WINDOW_LEFT, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_RIGHT, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_TOP, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_BOTTOM, 4) w.connect('realize', _textview_realize_cb) buf = w.get_buffer() tagsmall = buf.create_tag(font=CalcLayout.FONT_SMALL) tagsmallnarrow = buf.create_tag(font=CalcLayout.FONT_SMALL_NARROW) tagbig = buf.create_tag(font=CalcLayout.FONT_BIG, - justification=gtk.JUSTIFY_RIGHT) - # TODO Fix for old Sugar 0.82 builds, red_float not available - bright = (gtk.gdk.color_parse(self.color.get_fill_color()).red_float + - gtk.gdk.color_parse(self.color.get_fill_color()).green_float + - gtk.gdk.color_parse(self.color.get_fill_color()).blue_float) / 3.0 + justification=Gtk.JUSTIFY_RIGHT) + bright = (Gdk.color_parse(self.color.get_fill_color()).red_float + + Gdk.color_parse(self.color.get_fill_color()).green_float + + Gdk.color_parse(self.color.get_fill_color()).blue_float) / 3.0 if bright < 0.5: - col = gtk.gdk.color_parse('white') + col = Gdk.color_parse('white') else: - col = gtk.gdk.color_parse('black') + col = Gdk.color_parse('black') tagcolor = buf.create_tag(foreground=col) # Add label, equation and result @@ -332,7 +332,7 @@ class Calculate(ShareableActivity): self.KEYMAP['divide'] = self.ml.div_sym self.KEYMAP['equal'] = self.ml.equ_sym - self.clipboard = gtk.Clipboard() + self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) self.select_reason = self.SELECT_SELECT self.buffer = u"" self.showing_version = 0 @@ -342,7 +342,7 @@ class Calculate(ShareableActivity): self.connect("key_press_event", self.keypress_cb) self.connect("destroy", self.cleanup_cb) - self.color = sugar.profile.get_color() + self.color = sugar3.profile.get_color() self.layout = CalcLayout(self) self.label_entry = self.layout.label_entry @@ -518,30 +518,29 @@ class Calculate(ShareableActivity): return res is not None def create_var_textview(self, name, value): - """Create a gtk.TextView for a variable""" + """Create a Gtk.TextView for a variable""" reserved = ["Ans", "LastEqn", "help"] if name in reserved: return None - w = gtk.TextView() - w.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_fill_color())) - w.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_stroke_color())) - w.set_wrap_mode(gtk.WRAP_WORD_CHAR) - w.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_RIGHT, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_TOP, 4) - w.set_border_window_size(gtk.TEXT_WINDOW_BOTTOM, 4) + w = Gtk.TextView() + w.modify_base(Gtk.STATE_NORMAL, Gdk.color_parse(self.color.get_fill_color())) + w.modify_bg(Gtk.STATE_NORMAL, Gdk.color_parse(self.color.get_stroke_color())) + w.set_wrap_mode(Gtk.WRAP_WORD_CHAR) + w.set_border_window_size(Gtk.TEXT_WINDOW_LEFT, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_RIGHT, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_TOP, 4) + w.set_border_window_size(Gtk.TEXT_WINDOW_BOTTOM, 4) w.connect('realize', _textview_realize_cb) buf = w.get_buffer() - # TODO Fix for old Sugar 0.82 builds, red_float not available - bright = (gtk.gdk.color_parse(self.color.get_fill_color()).red_float + - gtk.gdk.color_parse(self.color.get_fill_color()).green_float + - gtk.gdk.color_parse(self.color.get_fill_color()).blue_float) / 3.0 + bright = (Gdk.color_parse(self.color.get_fill_color()).red_float + + Gdk.color_parse(self.color.get_fill_color()).green_float + + Gdk.color_parse(self.color.get_fill_color()).blue_float) / 3.0 if bright < 0.5: - col = gtk.gdk.color_parse('white') + col = Gdk.color_parse('white') else: - col = gtk.gdk.color_parse('black') + col = Gdk.color_parse('black') tag = buf.create_tag(font=CalcLayout.FONT_SMALL_NARROW, foreground=col) @@ -758,19 +757,19 @@ class Calculate(ShareableActivity): if not self.text_entry.is_focus(): return - key = gtk.gdk.keyval_name(event.keyval) + key = Gdk.keyval_name(event.keyval) if event.hardware_keycode == 219: - if (event.state & gtk.gdk.SHIFT_MASK): + if (event.state & Gdk.SHIFT_MASK): key = 'divide' else: key = 'multiply' _logger.debug('Key: %s (%r, %r)', key, event.keyval, event.hardware_keycode) - if event.state & gtk.gdk.CONTROL_MASK: + if event.state & Gdk.CONTROL_MASK: if self.CTRL_KEYMAP.has_key(key): f = self.CTRL_KEYMAP[key] return f(self) - elif (event.state & gtk.gdk.SHIFT_MASK) and self.SHIFT_KEYMAP.has_key(key): + elif (event.state & Gdk.SHIFT_MASK) and self.SHIFT_KEYMAP.has_key(key): f = self.SHIFT_KEYMAP[key] return f(self) elif unicode(key) in self.IDENTIFIER_CHARS: @@ -899,9 +898,9 @@ class Calculate(ShareableActivity): return '' def main(): - win = gtk.Window(gtk.WINDOW_TOPLEVEL) + win = Gtk.Window(Gtk.WINDOW_TOPLEVEL) t = Calculate(win) - gtk.main() + Gtk.main() return 0 if __name__ == "__main__": |