changeset 122:02423600d958

Use dialogs to report save results
author Neil Muller <drnlmuller@gmail.com>
date Mon, 02 Sep 2013 16:40:56 +0200
parents 7d022648aa4e
children 23b533d6f27e
files nagslang/level.py tools/area_editor.py
diffstat 2 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/nagslang/level.py	Mon Sep 02 16:04:11 2013 +0200
+++ b/nagslang/level.py	Mon Sep 02 16:40:56 2013 +0200
@@ -66,23 +66,23 @@
     def all_closed(self):
         """Check if all the polygons are closed"""
         closed = True
-        for poly in self.polygons.values():
+        messages = []
+        for index, poly in self.polygons.items():
             if len(poly) == 0:
                 # We ignore empty polygons
                 continue
             elif len(poly) == 1:
                 closed = False
-                print "\033[31mError: polygon too small\033[0m"
+                messages.append("Error: polygon %s too small" % index)
             elif poly[-1] != poly[0]:
                 closed = False
-                print "\033[31mError: polygon not closed\033[0m"
-        return closed
+                messages.append("Error: polygon %s not closed" % index)
+        return closed, messages
 
     def save(self):
-        closed = self.all_closed()
+        closed, _ = self.all_closed()
         if not closed:
-            print 'Not saving the level'
-            return
+            return False
         with resources.get_file('levels', self.name, mode='w') as f:
             f.write('X-Size: %s\n' % self.x)
             f.write('Y-Size: %s\n' % self.y)
@@ -93,7 +93,7 @@
                 f.write('Polygon %d : %d\n' % (i, len(poly)))
                 for point in poly:
                     f.write('Point: %d %d\n' % point)
-        print 'level %s saved' % self.name
+        return True
 
     def get_size(self):
         return self.x, self.y
--- a/tools/area_editor.py	Mon Sep 02 16:04:11 2013 +0200
+++ b/tools/area_editor.py	Mon Sep 02 16:40:56 2013 +0200
@@ -20,6 +20,7 @@
 from albow.root import RootWidget
 from albow.widget import Widget
 from albow.controls import Button
+from albow.dialogs import alert
 
 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
 
@@ -260,7 +261,14 @@
             self.level_widget.key_down(ev)
 
     def save(self):
-        level.save()
+        closed, messages = self.level.all_closed()
+        if closed:
+            self.level.save()
+            # display success
+            alert("Level %s saved successfully." % self.level.name)
+        else:
+            # display errors
+            alert("Failed to save level.\n\n%s" % '\n'.join(messages))
 
     def mouse_move(self, ev):
         self.level_widget.mouse_move(ev)