diff options
Diffstat (limited to 'layout.py')
-rw-r--r-- | layout.py | 254 |
1 files changed, 119 insertions, 135 deletions
@@ -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 |