changeset 236:09247e08aeda

Refactor edit calling code. Tweak toolbar layout
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 23:32:08 +0200
parents 5b021e8498b3
children 9498b259c248
files mamba/habitats/editor.py
diffstat 1 files changed, 23 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/habitats/editor.py	Wed Sep 14 23:31:36 2011 +0200
+++ b/mamba/habitats/editor.py	Wed Sep 14 23:32:08 2011 +0200
@@ -49,26 +49,28 @@
 
     def setup_toolbar(self):
         """Draw the editor toolbar"""
-        button_height = 20
+        button_height = 5
         button_left = 820
-        button_padding = 5
+        button_padding = 2
 
         filename = TextButton(
                 (button_left, button_height),
                 'File: %s' % self.level.level_name, color='white')
-        filename.add_callback('clicked', self.edit_filename)
+        filename.add_callback('clicked', self.do_edit,
+                'Specify filename', self.level.level_name, self.check_file)
         self.container.add(filename)
         button_height += filename.rect.height + button_padding
-
-        levelname = TextWidget(
-                (button_left, button_height),
+        levelname = TextButton((button_left, button_height),
                 'Level: %s' % self.level.name, color='white')
+        levelname.add_callback('clicked', self.do_edit,
+                'Edit Level Title', self.level.name, self.update_name)
         self.container.add(levelname)
-        button_height += levelname.surface.get_height() + button_padding
+        button_height += levelname.rect.height + button_padding
 
-        tilesetname = TextWidget(
-                (button_left, button_height),
+        tilesetname = TextButton((button_left, button_height),
                 'Tileset: %s' % self.level.tileset.name, color='white')
+        tilesetname.add_callback('clicked', self.do_edit, 'Edit Tileset',
+                self.level.tileset.name, self.check_tileset)
         self.container.add(tilesetname)
         button_height += tilesetname.surface.get_height() + button_padding
         # TODO: Add Image widget for the current tool
@@ -146,12 +148,20 @@
             if widget is not self.edit_widget:
                 self.container.remove(widget)
 
-    def edit_filename(self, ev, widget):
-        editbox = EntryBox((200, 200), 'Enter level filename',
-                self.level.level_name, self.check_file)
+    def do_edit(self, ev, widget, message, init_value, callback):
+        editbox = EntryBox((200, 200), message, init_value, callback)
         self.container.add(editbox)
         editbox.grab_focus()
 
+    def update_name(self, new_name):
+        self.level.name = new_name
+        self.clear_toolbar()
+        self.setup_toolbar()
+        return True
+
+    def check_tileset(self, new_name):
+        return False
+
     def check_file(self, new_name):
         if new_name == self.level.level_name:
             return True  # No-op change
@@ -161,3 +171,4 @@
         self.level.level_name = new_name
         self.clear_toolbar()
         self.setup_toolbar()
+        return True