changeset 229:b0ef7eecc67a

Make filename editable
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 23:07:56 +0200
parents d83fd4ebddd3
children e4f983b68ef5
files mamba/habitats/editor.py
diffstat 1 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/habitats/editor.py	Wed Sep 14 23:07:01 2011 +0200
+++ b/mamba/habitats/editor.py	Wed Sep 14 23:07:56 2011 +0200
@@ -7,7 +7,10 @@
 from mamba.widgets.level import EditLevelWidget
 from mamba.widgets.text import TextWidget, TextButton
 from mamba.widgets.imagebutton import ImageButtonWidget
+#from mamba.widgets.messagebox import MessageBox
+from mamba.widgets.entrybox import EntryBox
 from mamba.level import Level, TILE_MAP, THING_MAP
+from mamba.data import check_level_exists
 from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS
 
 
@@ -50,11 +53,12 @@
         button_left = 820
         button_padding = 5
 
-        filename = TextWidget(
+        filename = TextButton(
                 (button_left, button_height),
                 'File: %s' % self.level.level_name, color='white')
+        filename.add_callback('clicked', self.edit_filename)
         self.container.add(filename)
-        button_height += filename.surface.get_height() + button_padding
+        button_height += filename.rect.height + button_padding
 
         levelname = TextWidget(
                 (button_left, button_height),
@@ -141,3 +145,19 @@
         for widget in self.container.children[:]:
             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)
+        self.container.add(editbox)
+        editbox.grab_focus()
+
+    def check_file(self, new_name):
+        if new_name == self.level.level_name:
+            return True  # No-op change
+        if check_level_exists(new_name):
+            # TODO: Popup warning
+            return False
+        self.level.level_name = new_name
+        self.clear_toolbar()
+        self.setup_toolbar()