Mercurial > rinkhals
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."""