Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGary Martin <gary@garycmartin.com>2012-11-24 18:11:04 (GMT)
committer Gary Martin <gary@garycmartin.com>2012-11-24 18:11:04 (GMT)
commit575a5d91bab90fc6dee435e3c8c9b98b1e1bed24 (patch)
treee04c50644d0de41e697e9ad3be4b6da8a0fc3c84
parentfa0bf8ee2d79bd7ae73410a4de8d051221a02e52 (diff)
Initial GTK3/gi.repository/sugar3 port
This commit launches but is not yet in a very usable state due to missing toolbar icons and the canvas going partly off the bottom of the screen.
-rw-r--r--calculate.py111
-rw-r--r--layout.py254
-rwxr-xr-xsetup.py2
-rw-r--r--shareable_activity.py6
-rw-r--r--svgimage.py4
-rw-r--r--toolbars.py53
6 files changed, 208 insertions, 222 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__":
diff --git a/layout.py b/layout.py
index 5a77357..95f67a0 100644
--- a/layout.py
+++ b/layout.py
@@ -1,22 +1,22 @@
# layout.py, see calculate.py for info
from gettext import gettext as _
-import pygtk
-pygtk.require('2.0')
-import gtk
-import pango
-from sugar.activity import activity
-import sugar.profile
-from sugar.graphics.roundbox import CanvasRoundBox
-from sugar.graphics.combobox import ComboBox
-from toolbars import *
-try:
- from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
- from sugar.activity.widgets import ActivityToolbarButton
- from sugar.activity.widgets import StopButton
-except ImportError:
- pass
+#import pygtk
+#pygtk.require('2.0')
+from gi.repository import Gtk
+from gi.repository import Gdk
+from gi.repository import Pango
+
+from sugar3.activity import activity
+import sugar3.profile
+#from sugar3.graphics.roundbox import CanvasRoundBox
+from sugar3.graphics.combobox import ComboBox
+from sugar3.graphics.toolbarbox import ToolbarButton, ToolbarBox
+from sugar3.activity.widgets import ActivityToolbarButton
+from sugar3.activity.widgets import StopButton
+
+from toolbars import *
class CalcLayout:
@@ -41,7 +41,7 @@ class CalcLayout:
self.create_dialog()
def create_color(self, rf, gf, bf):
- return gtk.gdk.Color(int(rf*0xFFFF), int(gf*0xFFFF), int(bf*0xFFFF))
+ return Gdk.Color(int(rf*0xFFFF), int(gf*0xFFFF), int(bf*0xFFFF))
def create_button_data(self):
"""Create a list with button information. We need to do that here
@@ -88,70 +88,58 @@ class CalcLayout:
"""Setup most of the dialog."""
# Toolbar
- try:
- toolbar_box = ToolbarBox()
+ toolbar_box = ToolbarBox()
- activity_button = ActivityToolbarButton(self._parent)
- toolbar_box.toolbar.insert(activity_button, 0)
+ activity_button = ActivityToolbarButton(self._parent)
+ toolbar_box.toolbar.insert(activity_button, 0)
- def append(icon_name, label, page, position):
- toolbar_button = ToolbarButton()
- toolbar_button.props.page = page
- toolbar_button.props.icon_name = icon_name
- toolbar_button.props.label = label
- toolbar_box.toolbar.insert(toolbar_button, position)
-
- append('toolbar-edit',
- _('Edit'),
- EditToolbar(self._parent),
- -1)
+ def append(icon_name, label, page, position):
+ toolbar_button = ToolbarButton()
+ toolbar_button.props.page = page
+ toolbar_button.props.icon_name = icon_name
+ toolbar_button.props.label = label
+ toolbar_box.toolbar.insert(toolbar_button, position)
+
+ append('toolbar-edit',
+ _('Edit'),
+ EditToolbar(self._parent),
+ -1)
- append('toolbar-algebra',
- _('Algebra'),
- AlgebraToolbar(self._parent),
- -1)
+ append('toolbar-algebra',
+ _('Algebra'),
+ AlgebraToolbar(self._parent),
+ -1)
- append('toolbar-trigonometry',
- _('Trigonometry'),
- TrigonometryToolbar(self._parent),
- -1)
-
- append('toolbar-boolean',
- _('Boolean'),
- BooleanToolbar(self._parent),
- -1)
-
- append('toolbar-constants',
- _('Miscellaneous'),
- MiscToolbar(self._parent, target_toolbar=toolbar_box.toolbar),
- 5)
+ append('toolbar-trigonometry',
+ _('Trigonometry'),
+ TrigonometryToolbar(self._parent),
+ -1)
+
+ append('toolbar-boolean',
+ _('Boolean'),
+ BooleanToolbar(self._parent),
+ -1)
+
+ append('toolbar-constants',
+ _('Miscellaneous'),
+ MiscToolbar(self._parent, target_toolbar=toolbar_box.toolbar),
+ 5)
- separator = gtk.SeparatorToolItem()
- separator.props.draw = False
- separator.set_expand(True)
- separator.show()
- toolbar_box.toolbar.insert(separator, -1)
-
- stop = StopButton(self._parent)
- toolbar_box.toolbar.insert(stop, -1)
-
- toolbar_box.show_all()
- self._parent.set_toolbar_box(toolbar_box)
-
- except NameError:
- # Use old toolbar design
- toolbox = activity.ActivityToolbox(self._parent)
- self._parent.set_toolbox(toolbox)
- toolbox.add_toolbar(_('Edit'), EditToolbar(self._parent))
- toolbox.add_toolbar(_('Algebra'), AlgebraToolbar(self._parent))
- toolbox.add_toolbar(_('Trigonometry'), TrigonometryToolbar(self._parent))
- toolbox.add_toolbar(_('Boolean'), BooleanToolbar(self._parent))
- toolbox.add_toolbar(_('Miscellaneous'), MiscToolbar(self._parent))
- toolbox.show_all()
+ separator = Gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ separator.show()
+ toolbar_box.toolbar.insert(separator, -1)
+
+ stop = StopButton(self._parent)
+ toolbar_box.toolbar.insert(stop, -1)
+
+ toolbar_box.show_all()
+ self._parent.set_toolbar_box(toolbar_box)
# Some layout constants
- self.input_font = pango.FontDescription(str='sans bold 12')
- self.button_font = pango.FontDescription(str='sans bold 16')
+ self.input_font = Pango.FontDescription('sans bold 12')
+ self.button_font = Pango.FontDescription('sans bold 16')
self.col_white = self.create_color(1.00, 1.00, 1.00)
self.col_gray1 = self.create_color(0.76, 0.76, 0.76)
self.col_gray2 = self.create_color(0.50, 0.50, 0.50)
@@ -160,51 +148,48 @@ class CalcLayout:
self.col_red = self.create_color(1.00, 0.00, 0.00)
# Big - Table, 16 rows, 10 columns, homogeneously divided
- self.grid = gtk.Table(26, 11, True)
+ self.grid = Gtk.Table(26, 11, True)
self.grid.set_border_width(0)
self.grid.set_row_spacings(0)
self.grid.set_col_spacings(4)
# Left part: container and input
- vc1 = gtk.VBox(False, 0)
- hc1 = gtk.HBox(False, 10)
- eb = gtk.EventBox()
+ vc1 = Gtk.VBox(False, 0)
+ hc1 = Gtk.HBox(False, 10)
+ eb = Gtk.EventBox()
eb.add(hc1)
- eb.modify_bg(gtk.STATE_NORMAL, self.col_black)
+ eb.modify_bg(Gtk.StateType.NORMAL, self.col_black)
eb.set_border_width(12)
- eb2 = gtk.EventBox()
+ eb2 = Gtk.EventBox()
eb2.add(eb)
- eb2.modify_bg(gtk.STATE_NORMAL, self.col_black)
- label1 = gtk.Label(_('Label:'))
- label1.modify_fg(gtk.STATE_NORMAL, self.col_white)
+ eb2.modify_bg(Gtk.StateType.NORMAL, self.col_black)
+ label1 = Gtk.Label(_('Label:'))
+ label1.modify_fg(Gtk.StateType.NORMAL, self.col_white)
label1.set_alignment(1, 0.5)
hc1.pack_start(label1, expand=False, fill=False, padding=10)
- self.label_entry = gtk.Entry()
- self.label_entry.modify_bg(gtk.STATE_INSENSITIVE, self.col_black)
+ self.label_entry = Gtk.Entry()
+ self.label_entry.modify_bg(Gtk.StateType.INSENSITIVE, self.col_black)
hc1.pack_start(self.label_entry, expand=True, fill=True, padding=0)
- vc1.pack_start(eb2, expand=False)
+ vc1.pack_start(eb2, expand=False, fill=True, padding=0)
- self.text_entry = gtk.Entry()
- try:
- self.text_entry.props.im_module = 'gtk-im-context-simple'
- except AttributeError:
- pass
+ self.text_entry = Gtk.Entry()
+ self.text_entry.props.im_module = 'gtk-im-context-simple'
self.text_entry.set_size_request(-1, 75)
self.text_entry.connect('key_press_event', self._parent.ignore_key_cb)
self.text_entry.modify_font(self.input_font)
- self.text_entry.modify_bg(gtk.STATE_INSENSITIVE, self.col_black)
- eb = gtk.EventBox()
+ self.text_entry.modify_bg(Gtk.StateType.INSENSITIVE, self.col_black)
+ eb = Gtk.EventBox()
eb.add(self.text_entry)
- eb.modify_bg(gtk.STATE_NORMAL, self.col_black)
+ eb.modify_bg(Gtk.StateType.NORMAL, self.col_black)
eb.set_border_width(12)
- eb2 = gtk.EventBox()
+ eb2 = Gtk.EventBox()
eb2.add(eb)
- eb2.modify_bg(gtk.STATE_NORMAL, self.col_black)
+ eb2.modify_bg(Gtk.StateType.NORMAL, self.col_black)
vc1.pack_start(eb2, expand=True, fill=True, padding=0)
self.grid.attach(vc1, 0, 7, 0, 6)
# Left part: buttons
- self.pad = gtk.Table(9, 6, True)
+ self.pad = Gtk.Table(9, 6, True)
self.pad.set_row_spacings(12)
self.pad.set_col_spacings(12)
self.pad.set_border_width(12)
@@ -215,65 +200,64 @@ class CalcLayout:
self.buttons[cap] = button
self.pad.attach(button, x, x + w, y, y + h)
- eb = gtk.EventBox()
+ eb = Gtk.EventBox()
eb.add(self.pad)
- eb.modify_bg(gtk.STATE_NORMAL, self.col_black)
+ eb.modify_bg(Gtk.StateType.NORMAL, self.col_black)
self.grid.attach(eb, 0, 7, 6, 26)
# Right part: container and equation button
- hc2 = gtk.HBox()
+ hc2 = Gtk.HBox()
combo = ComboBox()
combo.append_item(0, _('All equations'))
combo.append_item(1, _('My equations'))
combo.append_item(2, _('Show variables'))
combo.set_active(0)
combo.connect('changed', self._history_filter_cb)
- hc2.pack_start(combo)
+ hc2.pack_start(combo, expand=True, fill=True, padding=0)
hc2.set_border_width(6)
self.grid.attach(hc2, 7, 11, 0, 2)
# Right part: last equation
- self.last_eq = gtk.TextView()
+ self.last_eq = Gtk.TextView()
self.last_eq.set_editable(False)
- self.last_eq.set_wrap_mode(gtk.WRAP_WORD_CHAR)
+ self.last_eq.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
self.last_eq.connect('realize', self._textview_realize_cb)
- self.last_eq.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse(
- sugar.profile.get_color().get_fill_color()))
- self.last_eq.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(
- sugar.profile.get_color().get_stroke_color()))
- self.last_eq.set_border_window_size(gtk.TEXT_WINDOW_LEFT, 4)
- self.last_eq.set_border_window_size(gtk.TEXT_WINDOW_RIGHT, 4)
- self.last_eq.set_border_window_size(gtk.TEXT_WINDOW_TOP, 4)
- self.last_eq.set_border_window_size(gtk.TEXT_WINDOW_BOTTOM, 4)
-
- # TODO Fix for old Sugar 0.82 builds, red_float not available
- bright = (gtk.gdk.color_parse(sugar.profile.get_color().get_fill_color()).red_float +
- gtk.gdk.color_parse(sugar.profile.get_color().get_fill_color()).green_float +
- gtk.gdk.color_parse(sugar.profile.get_color().get_fill_color()).blue_float) / 3.0
+ self.last_eq.modify_base(Gtk.StateType.NORMAL, Gdk.color_parse(
+ sugar3.profile.get_color().get_fill_color()))
+ self.last_eq.modify_bg(Gtk.StateType.NORMAL, Gdk.color_parse(
+ sugar3.profile.get_color().get_stroke_color()))
+ self.last_eq.set_border_window_size(Gtk.TextWindowType.LEFT, 4)
+ self.last_eq.set_border_window_size(Gtk.TextWindowType.RIGHT, 4)
+ self.last_eq.set_border_window_size(Gtk.TextWindowType.TOP, 4)
+ self.last_eq.set_border_window_size(Gtk.TextWindowType.BOTTOM, 4)
+
+ bright = (Gdk.color_parse(sugar3.profile.get_color().get_fill_color()).red_float +
+ Gdk.color_parse(sugar3.profile.get_color().get_fill_color()).green_float +
+ Gdk.color_parse(sugar3.profile.get_color().get_fill_color()).blue_float) / 3.0
if bright < 0.5:
- self.last_eq.modify_text(gtk.STATE_NORMAL, self.col_white)
+ self.last_eq.modify_text(Gtk.StateType.NORMAL, self.col_white)
else:
- self.last_eq.modify_text(gtk.STATE_NORMAL, self.col_black)
+ self.last_eq.modify_text(Gtk.StateType.NORMAL, self.col_black)
self.grid.attach(self.last_eq, 7, 11, 2, 7)
# Right part: history
- scrolled_window = gtk.ScrolledWindow()
- scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
+ scrolled_window = Gtk.ScrolledWindow()
+ scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- self.history_vbox = gtk.VBox()
+ self.history_vbox = Gtk.VBox()
self.history_vbox.set_homogeneous(False)
self.history_vbox.set_border_width(0)
self.history_vbox.set_spacing(4)
- self.variable_vbox = gtk.VBox()
+ self.variable_vbox = Gtk.VBox()
self.variable_vbox.set_homogeneous(False)
self.variable_vbox.set_border_width(0)
self.variable_vbox.set_spacing(4)
- vbox = gtk.VBox()
- vbox.pack_start(self.history_vbox)
- vbox.pack_start(self.variable_vbox)
+ vbox = Gtk.VBox()
+ vbox.pack_start(self.history_vbox, expand=True, fill=True, padding=0)
+ vbox.pack_start(self.variable_vbox, expand=True, fill=True, padding=0)
scrolled_window.add_with_viewport(vbox)
self.grid.attach(scrolled_window, 7, 11, 7, 26)
@@ -296,13 +280,13 @@ class CalcLayout:
self.history_vbox.show()
def add_equation(self, textview, own, prepend=False):
- """Add a gtk.TextView of an equation to the history_vbox."""
+ """Add a Gtk.TextView of an equation to the history_vbox."""
if prepend:
- self.history_vbox.pack_start(textview, False, True)
+ self.history_vbox.pack_start(textview, False, True, 0)
self.history_vbox.reorder_child(textview, 0)
else:
- self.history_vbox.pack_end(textview, False, True)
+ self.history_vbox.pack_end(textview, False, True,0 )
if own:
self._own_equations.append(textview)
@@ -325,14 +309,14 @@ class CalcLayout:
key.hide()
def add_variable(self, varname, textview):
- """Add a gtk.TextView of a variable to the variable_vbox."""
+ """Add a Gtk.TextView of a variable to the variable_vbox."""
if varname in self._var_textviews:
self.variable_vbox.remove(self._var_textviews[varname])
del self._var_textviews[varname]
self._var_textviews[varname] = textview
- self.variable_vbox.pack_start(textview, False, True)
+ self.variable_vbox.pack_start(textview, False, True, 0)
# Reorder textviews for a sorted list
names = self._var_textviews.keys()
@@ -350,7 +334,7 @@ class CalcLayout:
def create_button(self, cap, cb, fgcol, bgcol, width, height):
"""Create a button that is set up properly."""
- button = gtk.Button(_(cap))
+ button = Gtk.Button(_(cap))
self.modify_button_appearance(button, fgcol, bgcol, width, height)
button.connect("clicked", cb)
button.connect("key_press_event", self._parent.ignore_key_cb)
@@ -362,9 +346,9 @@ class CalcLayout:
height = 50 * height
button.get_child().set_size_request(width, height)
button.get_child().modify_font(self.button_font)
- button.get_child().modify_fg(gtk.STATE_NORMAL, fgcol)
- button.modify_bg(gtk.STATE_NORMAL, bgcol)
- button.modify_bg(gtk.STATE_PRELIGHT, bgcol)
+ button.get_child().modify_fg(Gtk.StateType.NORMAL, fgcol)
+ button.modify_bg(Gtk.StateType.NORMAL, bgcol)
+ button.modify_bg(Gtk.StateType.PRELIGHT, bgcol)
def _history_filter_cb(self, combo):
selection = combo.get_active()
@@ -379,7 +363,7 @@ class CalcLayout:
def _textview_realize_cb(self, 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
diff --git a/setup.py b/setup.py
index ec0f64e..9a141b3 100755
--- a/setup.py
+++ b/setup.py
@@ -1,3 +1,3 @@
#!/usr/bin/env python
-from sugar.activity import bundlebuilder
+from sugar3.activity import bundlebuilder
bundlebuilder.start()
diff --git a/shareable_activity.py b/shareable_activity.py
index c418666..b749765 100644
--- a/shareable_activity.py
+++ b/shareable_activity.py
@@ -3,9 +3,9 @@ from dbus import Interface
from dbus.service import method, signal
import telepathy
-from sugar.activity import activity
-from sugar.presence import presenceservice
-from sugar.presence.sugartubeconn import SugarTubeConnection
+from sugar3.activity import activity
+from sugar3.presence import presenceservice
+from sugar3.presence.sugartubeconn import SugarTubeConnection
import logging
_logger = logging.getLogger('ShareableActivity')
diff --git a/svgimage.py b/svgimage.py
index 5469107..62ba46c 100644
--- a/svgimage.py
+++ b/svgimage.py
@@ -20,7 +20,7 @@
import logging
_logger = logging.getLogger('SVGImage')
-import gtk
+from gi.repository import Gtk
import rsvg
class SVGImage:
@@ -40,7 +40,7 @@ class SVGImage:
def render_svg(self):
self._handle = rsvg.Handle(data=self._svg_data)
self._pixbuf = self._handle.get_pixbuf()
- self._image = gtk.Image()
+ self._image = Gtk.Image()
self._image.set_from_pixbuf(self._pixbuf)
self._image.set_alignment(0.5, 0)
return self._image
diff --git a/toolbars.py b/toolbars.py
index 9240395..bb9358f 100644
--- a/toolbars.py
+++ b/toolbars.py
@@ -1,15 +1,16 @@
# -*- coding: UTF-8 -*-
# toolbars.py, see CalcActivity.py for info
-import pygtk
-pygtk.require('2.0')
-import gtk
+#import pygtk
+#pygtk.require('2.0')
+from gi.repository 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
+from sugar3.graphics.palette import Palette
+from sugar3.graphics.menuitem import MenuItem
+from sugar3.graphics.toolbutton import ToolButton
+from sugar3.graphics.toggletoolbutton import ToggleToolButton
import logging
_logger = logging.getLogger('calc-activity')
@@ -20,7 +21,7 @@ def _icon_exists(name):
if name == '':
return False
- theme = gtk.icon_theme_get_default()
+ theme = Gtk.IconTheme.get_default()
info = theme.lookup_icon(name, 0, 0)
if info:
return True
@@ -32,12 +33,13 @@ class IconToolButton(ToolButton):
ToolButton.__init__(self)
if _icon_exists(icon_name):
- self.set_icon(icon_name)
+ #self.set_icon(icon_name)
+ self.props.icon_name = icon_name
else:
if alt_html == '':
alt_html = icon_name
- label = gtk.Label()
+ label = Gtk.Label()
label.set_markup(alt_html)
label.show()
self.set_label_widget(label)
@@ -63,7 +65,8 @@ class IconToggleToolButton(ToggleToolButton):
ToggleToolButton.__init__(self)
self.items = items
if 'icon' in items[0] and _icon_exists(items[0]['icon']):
- self.set_named_icon(items[0]['icon'])
+ #self.set_named_icon(items[0]['icon'])
+ self.props.icon_name = items[0]['icon']
elif 'html' in items[0]:
self.set_label(items[0]['html'])
# self.set_tooltip(items[0][1])
@@ -87,9 +90,9 @@ class IconToggleToolButton(ToggleToolButton):
else:
self.callback(but)
-class TextToggleToolButton(gtk.ToggleToolButton):
+class TextToggleToolButton(Gtk.ToggleToolButton):
def __init__(self, items, cb, desc, index=False):
- gtk.ToggleToolButton.__init__(self)
+ Gtk.ToggleToolButton.__init__(self)
self.items = items
self.set_label(items[0])
self.selected = 0
@@ -108,14 +111,14 @@ class TextToggleToolButton(gtk.ToggleToolButton):
else:
self.callback(but)
-class LineSeparator(gtk.SeparatorToolItem):
+class LineSeparator(Gtk.SeparatorToolItem):
def __init__(self):
- gtk.SeparatorToolItem.__init__(self)
+ Gtk.SeparatorToolItem.__init__(self)
self.set_draw(True)
-class EditToolbar(gtk.Toolbar):
+class EditToolbar(Gtk.Toolbar):
def __init__(self, calc):
- gtk.Toolbar.__init__(self)
+ Gtk.Toolbar.__init__(self)
copy_tool = ToolButton('edit-copy')
copy_tool.set_tooltip(_('Copy'))
@@ -140,9 +143,9 @@ class EditToolbar(gtk.Toolbar):
self.show_all()
-class AlgebraToolbar(gtk.Toolbar):
+class AlgebraToolbar(Gtk.Toolbar):
def __init__(self, calc):
- gtk.Toolbar.__init__(self)
+ Gtk.Toolbar.__init__(self)
self.insert(IconToolButton('algebra-square', _('Square'),
lambda x: calc.button_pressed(calc.TYPE_OP_POST, '**2'),
@@ -183,9 +186,9 @@ class AlgebraToolbar(gtk.Toolbar):
self.show_all()
-class TrigonometryToolbar(gtk.Toolbar):
+class TrigonometryToolbar(Gtk.Toolbar):
def __init__(self, calc):
- gtk.Toolbar.__init__(self)
+ Gtk.Toolbar.__init__(self)
self.insert(IconToolButton('trigonometry-sin', _('Sine'),
lambda x: calc.button_pressed(calc.TYPE_FUNCTION, 'sin'),
@@ -229,9 +232,9 @@ class TrigonometryToolbar(gtk.Toolbar):
self.show_all()
-class BooleanToolbar(gtk.Toolbar):
+class BooleanToolbar(Gtk.Toolbar):
def __init__(self, calc):
- gtk.Toolbar.__init__(self)
+ Gtk.Toolbar.__init__(self)
self.insert(IconToolButton('boolean-and', _('Logical and'),
lambda x: calc.button_pressed(calc.TYPE_OP_POST, '&'),
@@ -255,9 +258,9 @@ class BooleanToolbar(gtk.Toolbar):
self.show_all()
-class MiscToolbar(gtk.Toolbar):
+class MiscToolbar(Gtk.Toolbar):
def __init__(self, calc, target_toolbar=None):
- gtk.Toolbar.__init__(self)
+ Gtk.Toolbar.__init__(self)
self.insert(IconToolButton('constants-pi', _('Pi'),
lambda x: calc.button_pressed(calc.TYPE_TEXT, 'pi'),