diff options
Diffstat (limited to 'edittoolbar.py')
-rw-r--r-- | edittoolbar.py | 218 |
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) + |