Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/layout.py
diff options
context:
space:
mode:
Diffstat (limited to 'layout.py')
-rw-r--r--layout.py254
1 files changed, 119 insertions, 135 deletions
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