Date: Saturday, June 17, 2017 @ 14:41:49 Author: bgyorgy Revision: 237908
upgpkg: sugar-activity-calculate 44-1 Update to new version Modified: sugar-activity-calculate/trunk/PKGBUILD Deleted: sugar-activity-calculate/trunk/0001-Port-to-GTK3.patch -------------------------+ 0001-Port-to-GTK3.patch | 964 ---------------------------------------------- PKGBUILD | 9 2 files changed, 3 insertions(+), 970 deletions(-) Deleted: 0001-Port-to-GTK3.patch =================================================================== --- 0001-Port-to-GTK3.patch 2017-06-17 14:40:36 UTC (rev 237907) +++ 0001-Port-to-GTK3.patch 2017-06-17 14:41:49 UTC (rev 237908) @@ -1,964 +0,0 @@ -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?= <[email protected]> -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 - Modified: PKGBUILD =================================================================== --- PKGBUILD 2017-06-17 14:40:36 UTC (rev 237907) +++ PKGBUILD 2017-06-17 14:41:49 UTC (rev 237908) @@ -3,7 +3,7 @@ pkgname=sugar-activity-calculate _pkgname=Calculate -pkgver=43 +pkgver=44 pkgrel=1 pkgdesc="Graphing calculator for Sugar" arch=('any') @@ -12,15 +12,12 @@ 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') +source=(https://download.sugarlabs.org/sources/sucrose/fructose/$_pkgname/$_pkgname-$pkgver.tar.bz2) +sha256sums=('917c5be892f50e95209c952330bd22c3e4768bfdfe09b5fa78e9e1fa3c9385ab') prepare() { cd $_pkgname-$pkgver sed -i 's@^#!.*python$@#!/usr/bin/python2@' setup.py - patch -Np1 -i ../0001-Port-to-GTK3.patch } package() {
