# HG changeset patch # User Neil Muller # Date 1378132856 -7200 # Node ID 02423600d958a65b53bab5cbcbbdf047c79d988f # Parent 7d022648aa4ea42da15edc165ea9bb690d4ae28c Use dialogs to report save results diff -r 7d022648aa4e -r 02423600d958 nagslang/level.py --- 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 diff -r 7d022648aa4e -r 02423600d958 tools/area_editor.py --- 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)