Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/calculate.py
diff options
context:
space:
mode:
Diffstat (limited to 'calculate.py')
-rw-r--r--calculate.py111
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__":