From 575a5d91bab90fc6dee435e3c8c9b98b1e1bed24 Mon Sep 17 00:00:00 2001 From: Gary Martin Date: Sat, 24 Nov 2012 18:11:04 +0000 Subject: 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. --- 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'), -- cgit v0.9.1