changeset 575:95c71a13468c

Convert failed save/restore print messages to warning dialogs.
author Simon Cross <hodgestar@gmail.com>
date Sat, 28 Nov 2009 20:31:48 +0000
parents ecad90bbdc61
children 2a913d34c95a
files gamelib/misc.py gamelib/savegame.py
diffstat 2 files changed, 34 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/gamelib/misc.py	Sat Nov 28 20:30:49 2009 +0000
+++ b/gamelib/misc.py	Sat Nov 28 20:31:48 2009 +0000
@@ -117,6 +117,35 @@
         return gui.Dialog.event(self, e)
 
 
+class WarnDialog(gui.Dialog):
+    def __init__(self, title, message, **params):
+        title = gui.Label(title)
+
+        body = gui.Table()
+        body.tr()
+        body.td(gui.Label(message), colspan=3)
+        body.tr()
+        body.td(gui.Spacer(0, 15), colspan=3)
+
+        ok_button = gui.Button("Ok")
+        ok_button.connect(gui.CLICK, self.clicked)
+
+        body.tr()
+        body.td(gui.Spacer(0, 0), colspan=2)
+        body.td(ok_button, align=-1)
+
+        gui.Dialog.__init__(self, title, body, **params)
+
+    def clicked(self):
+        self.close()
+
+    def event(self, e):
+        if e.type == KEYDOWN and e.key == K_ESCAPE:
+            self.clicked()
+            return True
+        return gui.Dialog.event(self, e)
+
+
 # Utility layout functions
 
 def make_box(text, markup=False):
--- a/gamelib/savegame.py	Sat Nov 28 20:30:49 2009 +0000
+++ b/gamelib/savegame.py	Sat Nov 28 20:31:48 2009 +0000
@@ -15,6 +15,7 @@
 import version
 import gameboard
 import serializer
+import misc
 
 TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%S"
 
@@ -240,7 +241,7 @@
             write_savegame(filename, data, snapshot, level_name, timestamp)
         except Exception, e:
             self._saved_func(False)
-            print "Failed to save game: %s" % (e,)
+            misc.WarnDialog("Save Failed", str(e)).open()
             return
 
         self._saved_func(True)
@@ -260,17 +261,17 @@
         try:
             data, screenshot, level_name, timestamp = read_savegame(filename)
         except Exception, e:
-            print "Failed to load game: %s" % (e,)
+            misc.WarnDialog("Restore Failed", str(e)).open()
             return
 
         if 'refid' not in data or 'class' not in data or data['class'] != gameboard.GameBoard.__name__:
-            print "Failed to load game: Invalid game data."
+            misc.WarnDialog("Restore Failed", "Saved game board state invalid.").open()
             return
 
         try:
             new_gameboard = serializer.unsimplify(data)
         except Exception, e:
-            print "Failed to load game: %s" % (e,)
+            misc.WarnDialog("Restore Failed", str(e)).open()
             return
 
         restore_func(new_gameboard)