Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/edittoolbar.py
diff options
context:
space:
mode:
authorZach Stephens <zxs3926@rit.edu>2011-05-13 17:11:24 (GMT)
committer Zach Stephens <zxs3926@rit.edu>2011-05-13 17:11:24 (GMT)
commit3bf559404826b29a76f4dfb87286a7e66b2b4a8f (patch)
tree21b3d332bf77e5af6f7b1aba408b828775c45daf /edittoolbar.py
parent14b03cedf3e56e63fdd95ed699f4094b4e581f0e (diff)
Tutorial toolbar fully implemented. Pressing next will show you the next line of the script. Pressing previous will bring you to the previous category. Board widget modified to remove parts of the previous draw piece. Editor toolbar added, and the skeleton has been implemented in the working activity.
Diffstat (limited to 'edittoolbar.py')
-rw-r--r--edittoolbar.py218
1 files changed, 218 insertions, 0 deletions
diff --git a/edittoolbar.py b/edittoolbar.py
new file mode 100644
index 0000000..2c3a57d
--- /dev/null
+++ b/edittoolbar.py
@@ -0,0 +1,218 @@
+# -*- coding: UTF-8 -*-
+# Copyright 2007-2008 One Laptop Per Child
+# Copyright 2007 Gerard J. Cerchio <www.circlesoft.com>
+# Copyright 2008 Andrés Ambrois <andresambrois@gmail.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import gtk
+from os.path import join, dirname
+
+from gettext import gettext as _
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.objectchooser import ObjectChooser
+import logging
+from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT, TYPE_NONE, TYPE_INT
+
+class EditToolbar(gtk.Toolbar):
+ __gtype_name__ = 'EditToolbar'
+
+ __gsignals__ = {
+ 'add-black': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'add-white': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'add-x': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'add-circle': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'add-triangle': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'add-square': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'save-game': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ 'load-game': (SIGNAL_RUN_FIRST, TYPE_NONE, []),
+ }
+
+ def __init__(self, activity):
+ gtk.Toolbar.__init__(self)
+ self.activity = activity
+
+ # Add Black Toggle Button
+ add_black_icon = join(dirname(__file__), 'images', 'black.gif')
+ add_black_image = gtk.Image()
+ add_black_image.set_from_file(add_black_icon)
+ self._add_black_button = ToolButton()
+ self._add_black_button.set_icon_widget(add_black_image)
+ self._add_black_button.connect('clicked', self._add_black_cb)
+ self.insert(self._add_black_button, -1)
+ self._add_black_button.show()
+
+ # Add White Toggle Button
+ add_white_icon = join(dirname(__file__), 'images', 'white.gif')
+ add_white_image = gtk.Image()
+ add_white_image.set_from_file(add_white_icon)
+ self._add_white_button = ToolButton()
+ self._add_white_button.set_icon_widget(add_white_image)
+ self._add_white_button.connect('clicked', self._add_white_cb)
+ self.insert(self._add_white_button, -1)
+ self._add_white_button.show()
+
+ # Separator
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(True)
+ self.insert(separator, -1)
+
+ # Add X Toggle Button
+ add_x_icon = join(dirname(__file__), 'images', 'XWhite.gif')
+ add_x_image = gtk.Image()
+ add_x_image.set_from_file(add_x_icon)
+ self._add_x_button = ToolButton()
+ self._add_x_button.set_icon_widget(add_x_image)
+ self._add_x_button.connect('clicked', self._add_x_cb)
+ self.insert(self._add_x_button, -1)
+ self._add_x_button.show()
+
+ # Add Circle Toggle Button
+ add_circle_icon = join(dirname(__file__), 'images', 'CircleWhite.gif')
+ add_circle_image = gtk.Image()
+ add_circle_image.set_from_file(add_circle_icon)
+ self._add_circle_button = ToolButton()
+ self._add_circle_button.set_icon_widget(add_circle_image)
+ self._add_circle_button.connect('clicked', self._add_circle_cb)
+ self.insert(self._add_circle_button, -1)
+ self._add_circle_button.show()
+
+ # Add Triangle Toggle Button
+ add_triangle_icon = join(dirname(__file__), 'images', 'TriangleWhite.gif')
+ add_triangle_image = gtk.Image()
+ add_triangle_image.set_from_file(add_triangle_icon)
+ self._add_triangle_button = ToolButton()
+ self._add_triangle_button.set_icon_widget(add_triangle_image)
+ self._add_triangle_button.connect('clicked', self._add_triangle_cb)
+ self.insert(self._add_triangle_button, -1)
+ self._add_triangle_button.show()
+
+ # Add Square Toggle Button
+ add_square_icon = join(dirname(__file__), 'images', 'SquareWhite.gif')
+ add_square_image = gtk.Image()
+ add_square_image.set_from_file(add_square_icon)
+ self._add_square_button = ToolButton()
+ self._add_square_button.set_icon_widget(add_square_image)
+ self._add_square_button.connect('clicked', self._add_square_cb)
+ self.insert(self._add_square_button, -1)
+ self._add_square_button.show()
+
+ # Separator
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(True)
+ self.insert(separator, -1)
+
+ # Load Button
+ self._load_button = ToolButton()
+ self._load_button.set_label(_('Load'))
+ self._load_button.connect('clicked', self._load_cb)
+ self.insert(self._load_button, -1)
+ self._load_button.show()
+
+ # Save Button
+ self._save_button = ToolButton()
+ self._save_button.set_label(_('Save'))
+ self._save_button.connect('clicked', self._save_cb)
+ self.insert(self._save_button, -1)
+ self._save_button.show()
+
+ def _add_widget(self, widget, expand=False):
+ tool_item = gtk.ToolItem()
+ tool_item.set_expand(expand)
+ tool_item.add(widget)
+ widget.show()
+ self.insert(tool_item, -1)
+ tool_item.show()
+
+ def _add_black_cb(self, widget):
+ self._add_black_button.set_sensitive(False)
+ self.emit('add-black')
+
+ def activate_add_black(self):
+ self._add_black_button.set_sensitive(True)
+
+ def grey_out_add_black(self):
+ self._add_black_button.set_sensitive(False)
+
+ def _add_white_cb(self, widget):
+ self._add_white_button.set_sensitive(False)
+ self.emit('add-white')
+
+ def activate_add_white(self):
+ self._add_white_button.set_sensitive(True)
+
+ def grey_out_add_white(self):
+ self._add_white_button.set_sensitive(False)
+
+ def _add_x_cb(self, widget):
+ self._add_x_button.set_sensitive(False)
+ self.emit('add-x')
+
+ def activate_add_x(self):
+ self._add_x_button.set_sensitive(True)
+
+ def grey_out_add_x(self):
+ self._add_x_button.set_sensitive(False)
+
+ def _add_square_cb(self, widget):
+ self._add_square_button.set_sensitive(False)
+ self.emit('add-square')
+
+ def activate_add_square(self):
+ self._add_square_button.set_sensitive(True)
+
+ def grey_out_add_square(self):
+ self._add_square_button.set_sensitive(False)
+
+ def _add_circle_cb(self, widget):
+ self._add_circle_button.set_sensitive(False)
+ self.emit('add-circle')
+
+ def activate_add_circle(self):
+ self._add_circle_button.set_sensitive(True)
+
+ def grey_out_add_circle(self):
+ self._add_circle_button.set_sensitive(False)
+
+ def _add_triangle_cb(self, widget):
+ self._add_triangle_button.set_sensitive(False)
+ self.emit('add-triangle')
+
+ def activate_add_triangle(self):
+ self._add_triangle_button.set_sensitive(True)
+
+ def grey_out_add_triangle(self):
+ self._add_triangle_button.set_sensitive(False)
+
+ def _save_cb(self, widget):
+ self._save_button.set_sensitive(True)
+ self.emit('save-game')
+
+ def activate_save(self):
+ self._save_button.set_sensitive(True)
+
+ def grey_out_save(self):
+ self._save_button.set_sensitive(False)
+
+ def _load_cb(self, widget):
+ self._load_button.set_sensitive(True)
+ self.emit('load-game')
+
+ def activate_load(self):
+ self._load_button.set_sensitive(True)
+
+ def grey_out_load(self):
+ self._load_button.set_sensitive(False)
+