changeset 275:51bec5e6191e

Rework selecting tilesets
author Neil Muller <drnlmuller@gmail.com>
date Thu, 15 Sep 2011 17:41:12 +0200
parents b970f717479b
children 9c57025781e7
files mamba/habitats/editor.py
diffstat 1 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/habitats/editor.py	Thu Sep 15 17:40:35 2011 +0200
+++ b/mamba/habitats/editor.py	Thu Sep 15 17:41:12 2011 +0200
@@ -11,8 +11,8 @@
 from mamba.widgets.entrybox import EntryBox
 from mamba.widgets.listbox import ListBox
 from mamba.widgets.toollist import ToolListWidget
-from mamba.level import Level, TILE_MAP, THING_MAP
-from mamba.data import check_level_exists, list_levels
+from mamba.level import Level, Tileset, TILE_MAP, THING_MAP
+from mamba.data import check_level_exists, list_levels, list_tilesets
 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS,
         RESERVED_NAMES)
 
@@ -77,8 +77,7 @@
 
         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)
+        tilesetname.add_callback('clicked', self.list_tilesets)
         self.container.add(tilesetname)
         button_height += tilesetname.surface.get_height() + button_padding
         # TODO: Add Image widget for the current tool
@@ -208,8 +207,26 @@
         self.setup_toolbar()
         return True
 
-    def check_tileset(self, new_name):
-        return False
+    def list_tilesets(self, ev, widget):
+        tilesets = list_tilesets()
+        load_list = []
+        for name in tilesets:
+            if name == 'common':
+                continue
+            load_button = TextButton((0, 0), name)
+            load_button.add_callback('clicked', self.change_tileset, name)
+            load_list.append(load_button)
+        load_dialog = ListBox((200, 200), 'Select Level', load_list)
+        self.container.add(load_dialog)
+        load_dialog.grab_focus()
+
+    def change_tileset(self, ev, widget, new_name):
+        self.level.tileset = Tileset(new_name)
+        self.level.update_tiles_ascii()
+        self.level.restart()
+        self.clear_toolbar()
+        self.setup_toolbar()
+        return True
 
     def check_file(self, new_name):
         if new_name == self.level.level_name: