# -*- coding: UTF-8 -*- # Copyright 2007-2008 One Laptop Per Child # Copyright 2007 Gerard J. Cerchio # Copyright 2008 Andrés Ambrois # # 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__ = { 'edit': (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 self._is_editing = 0 # Edit Button self._edit_button = ToolButton() self._edit_button.set_label(_('Edit')) self._edit_button.connect('clicked', self._edit_cb) self.insert(self._edit_button, -1) self._edit_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 _edit_cb(self, widget): if self._is_editing == 0: self._is_editing = 1 self._edit_button.set_label(_('Finished')) else: self._is_editing = 0 self._edit_button.set_label(_('Edit')) self._edit_button.set_sensitive(True) self.emit('edit') def activate_edit(self): self._edit_button.set_sensitive(True) def grey_out_edit(self): self._edit_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)