From 31c6ee1613f4b335a56eb3da794042ddc636c91e Mon Sep 17 00:00:00 2001 From: Muriel de Souza Godoi Date: Tue, 09 Oct 2007 13:28:07 +0000 Subject: Main release of create game mode. Game sharing is broken --- (limited to 'createtoolbar.py') diff --git a/createtoolbar.py b/createtoolbar.py index af6a2dc..385dc99 100755 --- a/createtoolbar.py +++ b/createtoolbar.py @@ -25,7 +25,9 @@ import os import gobject from sugar.graphics.toolbutton import ToolButton +from sugar.graphics.toggletoolbutton import ToggleToolButton from sugar.graphics.toolcombobox import ToolComboBox +from sugar.graphics.objectchooser import ObjectChooser class CreateToolbar(gtk.Toolbar): __gtype_name__ = 'CreateToolbar' @@ -33,7 +35,8 @@ class CreateToolbar(gtk.Toolbar): __gsignals__ = { 'create_new_game': (gobject.SIGNAL_RUN_FIRST, None, []), 'create_load_game': (gobject.SIGNAL_RUN_FIRST, None, [gobject.TYPE_PYOBJECT]), - 'create_save_game': (gobject.SIGNAL_RUN_FIRST, None, [gobject.TYPE_PYOBJECT]), + 'create_save_game': (gobject.SIGNAL_RUN_FIRST, None, [gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT]), + 'create_equal_pairs': (gobject.SIGNAL_RUN_FIRST, None, [gobject.TYPE_PYOBJECT]), } def __init__(self, activity): @@ -47,7 +50,7 @@ class CreateToolbar(gtk.Toolbar): new_image.set_from_file(new_icon) self._new_button = ToolButton() self._new_button.set_icon_widget(new_image) - self._new_button.set_tooltip(_('New game set')) + self._new_button.set_tooltip(_('New game')) self._new_button.connect('clicked', self._new_game_bt) self._add_widget(self._new_button) @@ -57,17 +60,9 @@ class CreateToolbar(gtk.Toolbar): load_image.set_from_file(load_icon) self._load_button = ToolButton() self._load_button.set_icon_widget(load_image) - self._load_button.set_tooltip(_('Load game set')) - self._load_button.connect('enter-notify-event', self._drop_palette) + self._load_button.set_tooltip(_('Load game')) + self._load_button.connect('clicked', self._load_game) self._add_widget(self._load_button) - self.games = os.listdir(os.path.join(os.path.dirname(__file__), 'games')) - self.games.sort() - palette = self._load_button.get_palette() - for game in self.games: - menu_item = gtk.MenuItem(game) - menu_item.connect('activate', self._game_changed_cb, game) - palette.menu.prepend(menu_item) - menu_item.show() # Save Button save_icon = os.path.join(os.path.dirname(__file__), "images/game-save.svg") @@ -75,8 +70,9 @@ class CreateToolbar(gtk.Toolbar): save_image.set_from_file(save_icon) self._save_button = ToolButton() self._save_button.set_icon_widget(save_image) - self._save_button.set_tooltip(_('Save game set')) + self._save_button.set_tooltip(_('Save game')) self._save_button.connect('clicked', self._save_game_bt) + self._save_button.set_sensitive(False) self._add_widget(self._save_button) # Separator @@ -87,12 +83,23 @@ class CreateToolbar(gtk.Toolbar): self._add_widget(gtk.Label(_('Game name: '))) self.game_name_entry = gtk.Entry() self._add_widget(self.game_name_entry) - - self._add_widget(gtk.CheckButton('Equal pairs')) - - self._add_widget(gtk.CheckButton('Grouped')) - + + self._equal_pairs = gtk.CheckButton(_('Equal pairs')) + self._add_widget(self._equal_pairs) + self._equal_pairs.connect('toggled', self._emit_equal_pairs) + self._grouped_icon1 = os.path.join(os.path.dirname(__file__), "images/equal_pairs1.svg") + self._grouped_icon2 = os.path.join(os.path.dirname(__file__), "images/equal_pairs2.svg") + self._grouped_image1 = gtk.Image() + self._grouped_image2 = gtk.Image() + self._grouped_image1.set_from_file(self._grouped_icon1) + self._grouped_image2.set_from_file(self._grouped_icon2) + self._grouped = ToggleToolButton() + self._grouped.set_icon_widget(self._grouped_image1) + self._grouped.set_tooltip(_('Click for grouped game')) + self._grouped.connect('toggled', self._grouped_cb) + self._add_widget(self._grouped) + def _add_widget(self, widget, expand=False): tool_item = gtk.ToolItem() tool_item.set_expand(expand) @@ -105,12 +112,57 @@ class CreateToolbar(gtk.Toolbar): self.game_name_entry.set_text(game_name) self.emit('create_load_game',game_name) - def _drop_palette(self, button): - button.get_palette().popdown(False) + def _load_game(self, button): + chooser = ObjectChooser(_('Choose memorize game'), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT) + jobject = '' + try: + result = chooser.run() + if result == gtk.RESPONSE_ACCEPT: + logging.debug('ObjectChooser: %r' % chooser.get_selected_object()) + jobject = chooser.get_selected_object() + if not jobject or not jobject.file_path: + return + finally: + chooser.destroy() + del chooser + + if jobject and jobject.file_path: + self.emit('create_load_game',jobject.file_path) + self._save_button.set_sensitive(False) def _new_game_bt(self, button): self.game_name_entry.set_text('') + self._equal_pairs.set_active(False) + self._grouped.set_active(False) self.emit('create_new_game') + self._new_button.set_sensitive(False) + self._save_button.set_sensitive(False) def _save_game_bt(self, button): - self.emit('create_save_game',self.game_name_entry.get_text()) \ No newline at end of file + self.emit('create_save_game',self.game_name_entry.get_text(), self._equal_pairs.get_active(), self._grouped.get_active()) + self._save_button.set_sensitive(False) + + def _emit_equal_pairs(self,checkbutton): + self.emit('create_equal_pairs',checkbutton.get_active()) + self._save_button.set_sensitive(True) + + def _grouped_cb(self,widget): + self._save_button.set_sensitive(True) + if self._grouped.get_active(): + self._grouped.set_icon_widget(self._grouped_image2) + self._grouped_image2.show() + self._grouped.set_tooltip(_('Click for ungrouped game')) + else: + self._grouped.set_icon_widget(self._grouped_image1) + self._grouped_image1.show() + self._grouped.set_tooltip(_('Click for grouped game')) + + def update_create_toolbar(self, widget, game_name, equal_pairs, grouped): + self.game_name_entry.set_text(game_name) + self._equal_pairs.set_active(equal_pairs == 'True') + self._grouped.set_active(grouped == '1') + + def update_buttons_status(self, widget, new, save): + self._new_button.set_sensitive(new) + self._save_button.set_sensitive(save) + \ No newline at end of file -- cgit v0.9.1