[arch-commits] Commit in sugar-activity-calculate (4 files)
Balló György
bgyorgy at archlinux.org
Wed Feb 15 04:07:34 UTC 2017
Date: Wednesday, February 15, 2017 @ 04:07:33
Author: bgyorgy
Revision: 212489
archrelease: copy trunk to community-any
Added:
sugar-activity-calculate/repos/
sugar-activity-calculate/repos/community-any/
sugar-activity-calculate/repos/community-any/0001-Port-to-GTK3.patch
(from rev 212488, sugar-activity-calculate/trunk/0001-Port-to-GTK3.patch)
sugar-activity-calculate/repos/community-any/PKGBUILD
(from rev 212488, sugar-activity-calculate/trunk/PKGBUILD)
-------------------------+
0001-Port-to-GTK3.patch | 964 ++++++++++++++++++++++++++++++++++++++++++++++
PKGBUILD | 30 +
2 files changed, 994 insertions(+)
Copied: sugar-activity-calculate/repos/community-any/0001-Port-to-GTK3.patch (from rev 212488, sugar-activity-calculate/trunk/0001-Port-to-GTK3.patch)
===================================================================
--- repos/community-any/0001-Port-to-GTK3.patch (rev 0)
+++ repos/community-any/0001-Port-to-GTK3.patch 2017-02-15 04:07:33 UTC (rev 212489)
@@ -0,0 +1,964 @@
+From 80a5111bd2bde5cc1cafeddd13a76a4a083f5bf5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ball=C3=83=C2=83=C3=82=C2=B3=20Gy=C3=83=C2=83=C3=82=C2=B6r?=
+ =?UTF-8?q?gy?= <ballogyor at gmail.com>
+Date: Tue, 14 Feb 2017 20:49:52 +0100
+Subject: [PATCH] Port to GTK3
+
+---
+ calculate.py | 105 +++++++++---------
+ layout.py | 293 +++++++++++++++++++++++---------------------------
+ setup.py | 2 +-
+ shareable_activity.py | 10 +-
+ svgimage.py | 8 +-
+ toolbars.py | 57 +++++-----
+ 6 files changed, 227 insertions(+), 248 deletions(-)
+
+diff --git a/calculate.py b/calculate.py
+index d7eeef8..8abb103 100644
+--- a/calculate.py
++++ b/calculate.py
+@@ -25,13 +25,14 @@ from gettext import gettext as _
+ import logging
+ _logger = logging.getLogger('Calculate')
+
+-import pygtk
+-pygtk.require('2.0')
+-import gtk
++import gi
++gi.require_version('Gtk', '3.0')
++from gi.repository import Gtk
++from gi.repository import Gdk
+ import base64
+
+-import sugar.profile
+-from sugar.graphics.xocolor import XoColor
++import sugar3.profile
++from sugar3.graphics.xocolor import XoColor
+
+ from shareable_activity import ShareableActivity
+ from layout import CalcLayout
+@@ -63,8 +64,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.TextWindowType.TEXT)
++ win.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND1))
+ return False
+
+
+@@ -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)
+ tagsuper = buf.create_tag(rise=fontsize / 2)
+@@ -184,16 +185,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.Justification.RIGHT)
+ tagred = buf.create_tag(foreground='#FF0000')
+
+ # Add label and equation
+@@ -233,39 +234,39 @@ 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 = Gtk.TextView()
+ w.modify_base(
+- gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_fill_color()))
++ Gtk.StateType.NORMAL, 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)
++ Gtk.StateType.NORMAL,
++ Gdk.color_parse(self.color.get_stroke_color()))
++ w.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
++ w.set_border_window_size(Gtk.TextWindowType.LEFT, 4)
++ w.set_border_window_size(Gtk.TextWindowType.RIGHT, 4)
++ w.set_border_window_size(Gtk.TextWindowType.TOP, 4)
++ w.set_border_window_size(Gtk.TextWindowType.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)
++ justification=Gtk.Justification.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
++ 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
+@@ -371,7 +372,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
+@@ -381,7 +382,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
+@@ -561,34 +562,34 @@ 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 = Gtk.TextView()
+ w.modify_base(
+- gtk.STATE_NORMAL, gtk.gdk.color_parse(self.color.get_fill_color()))
++ Gtk.StateType.NORMAL, 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)
++ Gtk.StateType.NORMAL,
++ Gdk.color_parse(self.color.get_stroke_color()))
++ w.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
++ w.set_border_window_size(Gtk.TextWindowType.LEFT, 4)
++ w.set_border_window_size(Gtk.TextWindowType.RIGHT, 4)
++ w.set_border_window_size(Gtk.TextWindowType.TOP, 4)
++ w.set_border_window_size(Gtk.TextWindowType.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
++ 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)
+@@ -785,7 +786,7 @@ class Calculate(ShareableActivity):
+ def text_copy(self):
+ if self.layout.graph_selected is not None:
+ self.clipboard.set_image(
+- self.layout.graph_selected.child.get_pixbuf())
++ self.layout.graph_selected.get_child().get_pixbuf())
+ self.layout.toggle_select_graph(self.layout.graph_selected)
+ else:
+ str = self.text_entry.get_text()
+@@ -817,20 +818,20 @@ 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.get_state() & Gdk.ModifierType.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.get_state() & Gdk.ModifierType.CONTROL_MASK:
+ if key in self.CTRL_KEYMAP:
+ f = self.CTRL_KEYMAP[key]
+ return f(self)
+- elif (event.state & gtk.gdk.SHIFT_MASK) and key in self.SHIFT_KEYMAP:
++ elif (event.get_state() & Gdk.ModifierType.SHIFT_MASK) and key in self.SHIFT_KEYMAP:
+ f = self.SHIFT_KEYMAP[key]
+ return f(self)
+ elif unicode(key) in self.IDENTIFIER_CHARS:
+@@ -965,9 +966,9 @@ class Calculate(ShareableActivity):
+
+
+ def main():
+- win = gtk.Window(gtk.WINDOW_TOPLEVEL)
++ win = Gtk.Window(Gtk.WindowType.TOPLEVEL)
+ t = Calculate(win)
+- gtk.main()
++ Gtk.main()
+ return 0
+
+ if __name__ == "__main__":
+diff --git a/layout.py b/layout.py
+index 6075afb..22560f1 100644
+--- a/layout.py
++++ b/layout.py
+@@ -19,13 +19,14 @@
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+ 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.combobox import ComboBox
++import gi
++gi.require_version('Gtk', '3.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.combobox import ComboBox
+ from toolbars import EditToolbar
+ from toolbars import AlgebraToolbar
+ from toolbars import TrigonometryToolbar
+@@ -33,9 +34,9 @@ from toolbars import BooleanToolbar
+ from toolbars import MiscToolbar
+
+ try:
+- from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
+- from sugar.activity.widgets import ActivityToolbarButton
+- from sugar.activity.widgets import StopButton
++ from sugar3.graphics.toolbarbox import ToolbarButton, ToolbarBox
++ from sugar3.activity.widgets import ActivityToolbarButton
++ from sugar3.activity.widgets import StopButton
+ except ImportError:
+ pass
+
+@@ -64,7 +65,7 @@ class CalcLayout:
+ self.create_dialog()
+
+ def create_color(self, rf, gf, bf):
+- return gtk.gdk.Color(int(rf * 0xFFFF), int(gf * 0xFFFF),
++ return Gdk.Color(int(rf * 0xFFFF), int(gf * 0xFFFF),
+ int(bf * 0xFFFF))
+
+ def create_button_data(self):
+@@ -134,75 +135,51 @@ class CalcLayout:
+ """Setup most of the dialog."""
+
+ # Toolbar
+- try:
+- self._toolbar_box = ToolbarBox()
+-
+- activity_button = ActivityToolbarButton(self._parent)
+- self._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
+- self._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-trigonometry',
+- _('Trigonometry'),
+- TrigonometryToolbar(self._parent),
+- -1)
+-
+- append('toolbar-boolean',
+- _('Boolean'),
+- BooleanToolbar(self._parent),
+- -1)
+-
+- self._misc_toolbar = MiscToolbar(
+- self._parent,
+- target_toolbar=self._toolbar_box.toolbar)
+-
+- append('toolbar-constants',
+- _('Miscellaneous'),
+- self._misc_toolbar,
+- 5)
+-
+- self._stop_separator = gtk.SeparatorToolItem()
+- self._stop_separator.props.draw = False
+- self._stop_separator.set_expand(True)
+- self._stop_separator.show()
+- self._toolbar_box.toolbar.insert(self._stop_separator, -1)
+-
+- self._stop = StopButton(self._parent)
+- self._toolbar_box.toolbar.insert(self._stop, -1)
+-
+- self._toolbar_box.show_all()
+- self._parent.set_toolbar_box(self._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()
++ self._toolbar_box = ToolbarBox()
++ activity_button = ActivityToolbarButton(self._parent)
++ self._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
++ self._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-trigonometry',
++ _('Trigonometry'),
++ TrigonometryToolbar(self._parent),
++ -1)
++ append('toolbar-boolean',
++ _('Boolean'),
++ BooleanToolbar(self._parent),
++ -1)
++ self._misc_toolbar = MiscToolbar(
++ self._parent,
++ target_toolbar=self._toolbar_box.toolbar)
++ append('toolbar-constants',
++ _('Miscellaneous'),
++ self._misc_toolbar,
++ 5)
++ self._stop_separator = Gtk.SeparatorToolItem()
++ self._stop_separator.props.draw = False
++ self._stop_separator.set_expand(True)
++ self._stop_separator.show()
++ self._toolbar_box.toolbar.insert(self._stop_separator, -1)
++ self._stop = StopButton(self._parent)
++ self._toolbar_box.toolbar.insert(self._stop, -1)
++ self._toolbar_box.show_all()
++ self._parent.set_toolbar_box(self._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)
+@@ -211,31 +188,31 @@ 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.set_border_width(0)
+- self.grid.set_row_spacings(0)
+- self.grid.set_col_spacings(4)
++ self.grid = Gtk.Grid()
++ self.grid.set_column_homogeneous (True)
++ self.grid.set_row_spacing(0)
++ self.grid.set_column_spacing(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=_('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, False, True, 0)
+
+- self.text_entry = gtk.Entry()
++ self.text_entry = Gtk.Entry()
+ try:
+ self.text_entry.props.im_module = 'gtk-im-context-simple'
+ except AttributeError:
+@@ -243,95 +220,95 @@ class CalcLayout:
+ 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)
++ self.grid.attach(vc1, 0, 0, 7, 6)
+
+ # Left part: buttons
+- 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)
++ self.pad = Gtk.Grid()
++ self.pad.set_column_homogeneous (True)
++ self.pad.set_row_spacing(6)
++ self.pad.set_column_spacing(6)
+ self.create_button_data()
+ self.buttons = {}
+ for x, y, w, h, cap, bgcol, cb in self.button_data:
+ button = self.create_button(
+ _(cap), cb, self.col_white, bgcol, w, h)
+ self.buttons[cap] = button
+- self.pad.attach(button, x, x + w, y, y + h)
++ self.pad.attach(button, x, y, w, h)
+
+- eb = gtk.EventBox()
++ eb = Gtk.EventBox()
+ eb.add(self.pad)
+- eb.modify_bg(gtk.STATE_NORMAL, self.col_black)
+- self.grid.attach(eb, 0, 7, 6, 26)
++ eb.modify_bg(Gtk.StateType.NORMAL, self.col_black)
++ self.grid.attach(eb, 0, 6, 7, 20)
+
+ # 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, True, True, 0)
+ hc2.set_border_width(6)
+- self.grid.attach(hc2, 7, 11, 0, 2)
++ self.grid.attach(hc2, 7, 0, 4, 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)
++ 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)
+
+ # TODO Fix for old Sugar 0.82 builds, red_float not available
+- xo_color = sugar.profile.get_color()
++ xo_color = sugar3.profile.get_color()
+ bright = (
+- gtk.gdk.color_parse(xo_color.get_fill_color()).red_float +
+- gtk.gdk.color_parse(xo_color.get_fill_color()).green_float +
+- gtk.gdk.color_parse(xo_color.get_fill_color()).blue_float) / 3.0
++ Gdk.color_parse(xo_color.get_fill_color()).red_float +
++ Gdk.color_parse(xo_color.get_fill_color()).green_float +
++ Gdk.color_parse(xo_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)
++ self.grid.attach(self.last_eq, 7, 2, 4, 5)
+
+ # 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, True, True, 0)
++ vbox.pack_start(self.variable_vbox, True, True, 0)
+ scrolled_window.add_with_viewport(vbox)
+- self.grid.attach(scrolled_window, 7, 11, 7, 26)
++ self.grid.attach(scrolled_window, 7, 7, 4, 19)
+
+- gtk.gdk.screen_get_default().connect('size-changed',
++ Gdk.Screen.get_default().connect('size-changed',
+ self._configure_cb)
+
+ def _configure_cb(self, event):
+@@ -369,19 +346,19 @@ class CalcLayout:
+ widget.set_visible_window(True)
+ widget.set_above_child(True)
+ self.graph_selected = widget
+- white = gtk.gdk.color_parse('white')
+- widget.modify_bg(gtk.STATE_NORMAL, white)
++ white = Gdk.color_parse('white')
++ widget.modify_bg(Gtk.StateType.NORMAL, white)
+ else:
+ widget.set_visible_window(False)
+ self.graph_selected = False
+
+ 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."""
+
+ GraphEventBox = None
+- if isinstance(textview, gtk.Image):
++ if isinstance(textview, Gtk.Image):
+ # Add the image inside the eventBox
+- GraphEventBox = gtk.EventBox()
++ GraphEventBox = Gtk.EventBox()
+ GraphEventBox.add(textview)
+ GraphEventBox.set_visible_window(False)
+ GraphEventBox.connect(
+@@ -390,10 +367,10 @@ class CalcLayout:
+
+ if prepend:
+ if GraphEventBox:
+- self.history_vbox.pack_start(GraphEventBox, False, True)
++ self.history_vbox.pack_start(GraphEventBox, False, True, 0)
+ self.history_vbox.reorder_child(GraphEventBox, 0)
+ else:
+- 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:
+ if GraphEventBox:
+@@ -404,7 +381,7 @@ class CalcLayout:
+ if own:
+ if GraphEventBox:
+ self._own_equations.append(GraphEventBox)
+- GraphEventBox.child.show()
++ GraphEventBox.get_child().show()
+ else:
+ self._own_equations.append(textview)
+ textview.show()
+@@ -412,7 +389,7 @@ class CalcLayout:
+ if self._showing_all_history:
+ if GraphEventBox:
+ self._other_equations.append(GraphEventBox)
+- GraphEventBox.child.show()
++ GraphEventBox.get_child().show()
+ else:
+ self._other_equations.append(textview)
+ textview.show()
+@@ -421,8 +398,8 @@ class CalcLayout:
+ """Show both owned and other equations."""
+ self._showing_all_history = True
+ for key in self._other_equations:
+- if isinstance(key, gtk.EventBox):
+- key.child.show()
++ if isinstance(key, Gtk.EventBox):
++ key.get_child().show()
+ else:
+ key.show()
+
+@@ -430,20 +407,20 @@ class CalcLayout:
+ """Show only owned equations."""
+ self._showing_all_history = False
+ for key in self._other_equations:
+- if isinstance(key, gtk.EventBox):
+- key.child.hide()
++ if isinstance(key, Gtk.EventBox):
++ key.get_child().hide()
+ else:
+ 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()
+@@ -461,7 +438,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)
+@@ -473,9 +450,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()
+@@ -490,6 +467,6 @@ 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.TextWindowType.TEXT)
++ win.set_cursor(Gdk.Cursor.new(Gdk.CursorType.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 2f38737..79bdb3b 100644
+--- a/shareable_activity.py
++++ b/shareable_activity.py
+@@ -1,10 +1,10 @@
+ import dbus
+-import gobject
++from gi.repository import GObject
+ 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')
+@@ -258,7 +258,7 @@ class ShareableActivity(activity.Activity):
+ return
+
+ self._syncreq_buddy = 0
+- self._sync_hid = gobject.timeout_add(2000, self._request_sync_cb)
++ self._sync_hid = GObject.timeout_add(2000, self._request_sync_cb)
+ self._request_sync_cb()
+
+ def _request_sync_cb(self):
+diff --git a/svgimage.py b/svgimage.py
+index 6a70b2b..96234a4 100644
+--- a/svgimage.py
++++ b/svgimage.py
+@@ -20,8 +20,8 @@
+ import logging
+ _logger = logging.getLogger('SVGImage')
+
+-import gtk
+-import rsvg
++from gi.repository import Gtk
++from gi.repository import Rsvg
+
+
+ class SVGImage:
+@@ -39,9 +39,9 @@ class SVGImage:
+ return self._svg_data
+
+ def render_svg(self):
+- self._handle = rsvg.Handle(data=self._svg_data)
++ self._handle = Rsvg.Handle.new_from_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 0513944..c6b7102 100644
+--- a/toolbars.py
++++ b/toolbars.py
+@@ -1,16 +1,17 @@
+ # -*- coding: utf-8 -*-
+ # toolbars.py, see CalcActivity.py for info
+
+-import pygtk
+-pygtk.require('2.0')
+-import gtk
++import gi
++gi.require_version('Gtk', '3.0')
++from gi.repository import Gtk
++from gi.repository import Gdk
+ 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 sugar.graphics.style import GRID_CELL_SIZE
++from sugar3.graphics.palette import Palette
++from sugar3.graphics.menuitem import MenuItem
++from sugar3.graphics.toolbutton import ToolButton
++from sugar3.graphics.toggletoolbutton import ToggleToolButton
++from sugar3.graphics.style import GRID_CELL_SIZE
+
+ import logging
+ _logger = logging.getLogger('calc-activity')
+@@ -22,7 +23,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
+@@ -36,12 +37,12 @@ class IconToolButton(ToolButton):
+ ToolButton.__init__(self)
+
+ if _icon_exists(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)
+@@ -68,7 +69,7 @@ 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.props.icon_name = items[0]['icon']
+ elif 'html' in items[0]:
+ self.set_label(items[0]['html'])
+ # self.set_tooltip(items[0][1])
+@@ -81,7 +82,7 @@ class IconToggleToolButton(ToggleToolButton):
+ self.selected = (self.selected + 1) % len(self.items)
+ but = self.items[self.selected]
+ if 'icon' in but and _icon_exists(but['icon']):
+- self.set_named_icon(but['icon'])
++ self.props.icon_name = but['icon']
+ elif 'html' in but:
+ _logger.info('Setting html: %s', but['html'])
+ self.set_label(but['html'])
+@@ -93,10 +94,10 @@ class IconToggleToolButton(ToggleToolButton):
+ 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
+@@ -116,17 +117,17 @@ class TextToggleToolButton(gtk.ToggleToolButton):
+ 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'))
+@@ -152,10 +153,10 @@ 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(
+@@ -211,10 +212,10 @@ 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'),
+@@ -268,10 +269,10 @@ 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'),
+@@ -300,12 +301,12 @@ class BooleanToolbar(gtk.Toolbar):
+ self.show_all()
+
+
+-class MiscToolbar(gtk.Toolbar):
++class MiscToolbar(Gtk.Toolbar):
+
+ def __init__(self, calc, target_toolbar=None):
+ self._target_toolbar = target_toolbar
+
+- gtk.Toolbar.__init__(self)
++ Gtk.Toolbar.__init__(self)
+
+ self.insert(IconToolButton('constants-pi', _('Pi'),
+ lambda x: calc.button_pressed(
+@@ -381,7 +382,7 @@ class MiscToolbar(gtk.Toolbar):
+ self.show_all()
+
+ def update_layout(self):
+- if gtk.gdk.screen_width() < 14 * GRID_CELL_SIZE or \
++ if Gdk.Screen.width() < 14 * GRID_CELL_SIZE or \
+ self._target_toolbar is None:
+ target_toolbar = self
+ if self._target_toolbar is not None:
+--
+2.11.1
+
Copied: sugar-activity-calculate/repos/community-any/PKGBUILD (from rev 212488, sugar-activity-calculate/trunk/PKGBUILD)
===================================================================
--- repos/community-any/PKGBUILD (rev 0)
+++ repos/community-any/PKGBUILD 2017-02-15 04:07:33 UTC (rev 212489)
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+
+pkgname=sugar-activity-calculate
+_pkgname=Calculate
+pkgver=43
+pkgrel=1
+pkgdesc="Graphing calculator for Sugar"
+arch=('any')
+url="https://wiki.sugarlabs.org/go/Activities/Calculate"
+license=('GPL')
+groups=('sugar-fructose')
+depends=('sugar-toolkit-gtk3')
+optdepends=('python2-matplotlib: alternative plotting backend')
+source=(https://download.sugarlabs.org/sources/sucrose/fructose/$_pkgname/$_pkgname-$pkgver.tar.bz2
+ 0001-Port-to-GTK3.patch)
+sha256sums=('8fa75a00c5e2799708fdca8ee189c5596558c9c98c6cada3c2e4d6002911a5ed'
+ '28fbbe30673dea2a69d1a6600ac35a56b0e3ffe81797b963f87d98364e1b27ab')
+
+prepare() {
+ cd $_pkgname-$pkgver
+ sed -i 's@^#!.*python$@#!/usr/bin/python2@' setup.py
+ patch -Np1 -i ../0001-Port-to-GTK3.patch
+}
+
+package() {
+ cd $_pkgname-$pkgver
+ python2 setup.py install --prefix "$pkgdir/usr"
+ rm -r "$pkgdir"/usr/share/applications
+}
More information about the arch-commits
mailing list