diff gamelib/savegame.py @ 571:2921169e545b

Don't rely on connect listener call order (PGU stores listeners in a dict).
author Simon Cross <hodgestar@gmail.com>
date Sat, 28 Nov 2009 20:21:27 +0000
parents a8dde729000a
children 95c71a13468c
line wrap: on
line diff
--- a/gamelib/savegame.py	Sat Nov 28 20:00:42 2009 +0000
+++ b/gamelib/savegame.py	Sat Nov 28 20:21:27 2009 +0000
@@ -217,13 +217,18 @@
 class SaveDialog(BaseSaveRestoreDialog):
     """Save game dialog."""
 
-    def __init__(self, gameboard):
+    def __init__(self, gameboard, saved_func=None):
         BaseSaveRestoreDialog.__init__(self, "Save Game ...", "Save", allow_new=True)
+        if saved_func is None:
+            self._saved_func = lambda _val: None
+        else:
+            self._saved_func = saved_func
         self.connect(gui.CHANGE, self._save, gameboard)
 
     def _save(self, gameboard):
         filename = self.get_fullpath()
         if filename is None:
+            self._saved_func(False)
             return
 
         data = gameboard.save_game()
@@ -234,9 +239,11 @@
         try:
             write_savegame(filename, data, snapshot, level_name, timestamp)
         except Exception, e:
+            self._saved_func(False)
             print "Failed to save game: %s" % (e,)
-            self.value = None
+            return
 
+        self._saved_func(True)
 
 class RestoreDialog(BaseSaveRestoreDialog):
     """Restore game dialog."""