Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/memorizetoolbar.py
diff options
context:
space:
mode:
Diffstat (limited to 'memorizetoolbar.py')
-rw-r--r--memorizetoolbar.py86
1 files changed, 67 insertions, 19 deletions
diff --git a/memorizetoolbar.py b/memorizetoolbar.py
index 98ddf0f..0c9df06 100644
--- a/memorizetoolbar.py
+++ b/memorizetoolbar.py
@@ -29,6 +29,12 @@ from sugar.graphics.menuitem import MenuItem
import logging
from gobject import SIGNAL_RUN_FIRST, TYPE_PYOBJECT
+#ARIEL
+import gtk
+from sugar.activity.activity import get_bundle_path
+import os
+import datetime
+
_logger = logging.getLogger('memorize-activity')
@@ -46,7 +52,9 @@ class MemorizeToolbarBuilder(gobject.GObject):
]
__gsignals__ = {
- 'game_changed': (SIGNAL_RUN_FIRST, None, 5 * [TYPE_PYOBJECT])
+ 'game_changed': (SIGNAL_RUN_FIRST, None, 5 * [TYPE_PYOBJECT]),
+ 'game_saved': (SIGNAL_RUN_FIRST, None, (gobject.TYPE_STRING,)),
+ 'game_selected': (SIGNAL_RUN_FIRST, None, (gobject.TYPE_STRING,))
}
def __init__(self, activity):
@@ -55,53 +63,93 @@ class MemorizeToolbarBuilder(gobject.GObject):
self.toolbar = self.activity.get_toolbar_box().toolbar
self.jobject = None
- # Change size combobox
- self._size_combo = ToolComboBox()
- self._sizes = ['4 X 4', '5 X 5', '6 X 6']
- for i, f in enumerate(self._sizes):
- self._size_combo.combo.append_item(i, f)
- self.size_handle_id = self._size_combo.combo.connect( \
- 'changed', self._game_size_cb)
- self.toolbar.insert(self._size_combo, -1)
- self._size_combo.combo.set_active(0)
-
# Change demo games button
self._demo_games = RadioMenuButton(icon_name='memorize-collection')
- self._demo_games.props.tooltip = _('Load demo games')
+ #ARIEL self._demo_games.props.tooltip = _('Load demo games')
+ self._demo_games.props.tooltip = _('Load/Save games')
for i, game in enumerate(self.translated_game_names):
menu_item = MenuItem(game)
menu_item.connect('activate', self.__activate_game_cb, i)
self._demo_games.props.palette.menu.append(menu_item)
menu_item.show()
+
+ #ARIEL list saved games
+ datadir = get_bundle_path() + "/data"
+ for filename in os.listdir(datadir):
+ if not filename.endswith(".json"):
+ continue
+
+ menu_item = MenuItem(filename)
+ menu_item.connect('activate', self.__activate_saved_game_cb, filename)
+ self._demo_games.props.palette.menu.append(menu_item)
+ menu_item.show()
+
+
+ #ARIEL Add Save game menu item
+ separator = gtk.SeparatorMenuItem()
+ self._demo_games.props.palette.menu.append(separator)
+ separator.show()
+ menu_item = MenuItem("Save current")
+ menu_item.connect('activate', self.__save_game_cb, i+1)
+ self._demo_games.props.palette.menu.append(menu_item)
+ menu_item.show()
+
self.toolbar.insert(self._demo_games, -1)
+ # Change size combobox
+ self._size_combo = ToolComboBox()
+ self._sizes = ['4 X 4', '5 X 5', '6 X 6']
+ for i, f in enumerate(self._sizes):
+ self._size_combo.combo.append_item(i, f)
+ self.size_handle_id = self._size_combo.combo.connect( \
+ 'changed', self._game_size_cb)
+ self.toolbar.insert(self._size_combo, -1)
+ self._size_combo.combo.set_active(0)
+
# Reset Button
self._restart_button = ToolButton('game-new')
self._restart_button.connect('clicked', self._game_reset_cb)
self._restart_button.set_tooltip(_('Restart Game'))
- self._restart_button.set_sensitive(False)
self.toolbar.insert(self._restart_button, -1)
self._restart_button.show()
def _game_reset_cb(self, widget):
- self._restart_button.set_sensitive(False)
self.activity.game.model.count = 0
self.emit('game_changed', None, None, 'reset', None, None)
def update_controls(self, active):
self._size_combo.set_sensitive(active)
self._demo_games.set_sensitive(active)
- self._restart_button.set_sensitive(active and
- self.activity.game.model.count > 0)
-
- def card_flipped(self, widget, identifier, signal=False):
- self._restart_button.set_sensitive(self.activity.game.model.count > 0)
+ self._restart_button.set_sensitive(active)
def _game_size_cb(self, widget):
game_size = int(self._sizes[self._size_combo.combo.get_active()][0])
self.emit('game_changed', None, game_size, 'size', None, None)
+ def __save_game_cb(self, menu, i):
+ """ARIEL Save current game
+ """
+ # Create data dir if not exists
+ datadir = get_bundle_path() + "/data"
+ if not os.path.exists(datadir):
+ os.mkdir(datadir)
+
+ # Build file name based on datetime
+ filename = "memorize_" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + ".json"
+ filepath = datadir + "/" + filename
+
+ # Get game matrix
+ self.emit('game_saved',filepath)
+
+ #~ # Write the file
+ #~ f = open ( filepath, "w" )
+ #~ f.close()
+
+ #ARIEL click in the menu item handler
+ def __activate_saved_game_cb(self, menu, filename):
+ self.emit('game_selected',filename)
+
def __activate_game_cb(self, menu, i):
self._game_selected_index = i
if self.activity.game.model.is_demo: