comparison mamba/habitats/editor.py @ 275:51bec5e6191e

Rework selecting tilesets
author Neil Muller <drnlmuller@gmail.com>
date Thu, 15 Sep 2011 17:41:12 +0200
parents a061dd62127c
children 9c57025781e7
comparison
equal deleted inserted replaced
274:b970f717479b 275:51bec5e6191e
9 from mamba.widgets.imagebutton import ImageButtonWidget 9 from mamba.widgets.imagebutton import ImageButtonWidget
10 #from mamba.widgets.messagebox import MessageBox 10 #from mamba.widgets.messagebox import MessageBox
11 from mamba.widgets.entrybox import EntryBox 11 from mamba.widgets.entrybox import EntryBox
12 from mamba.widgets.listbox import ListBox 12 from mamba.widgets.listbox import ListBox
13 from mamba.widgets.toollist import ToolListWidget 13 from mamba.widgets.toollist import ToolListWidget
14 from mamba.level import Level, TILE_MAP, THING_MAP 14 from mamba.level import Level, Tileset, TILE_MAP, THING_MAP
15 from mamba.data import check_level_exists, list_levels 15 from mamba.data import check_level_exists, list_levels, list_tilesets
16 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS, 16 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS,
17 RESERVED_NAMES) 17 RESERVED_NAMES)
18 18
19 MAX_TOOLS = 6 19 MAX_TOOLS = 6
20 20
75 self.container.add(levelname) 75 self.container.add(levelname)
76 button_height += levelname.rect.height + button_padding 76 button_height += levelname.rect.height + button_padding
77 77
78 tilesetname = TextButton((button_left, button_height), 78 tilesetname = TextButton((button_left, button_height),
79 'Tileset: %s' % self.level.tileset.name, color='white') 79 'Tileset: %s' % self.level.tileset.name, color='white')
80 tilesetname.add_callback('clicked', self.do_edit, 'Edit Tileset', 80 tilesetname.add_callback('clicked', self.list_tilesets)
81 self.level.tileset.name, self.check_tileset)
82 self.container.add(tilesetname) 81 self.container.add(tilesetname)
83 button_height += tilesetname.surface.get_height() + button_padding 82 button_height += tilesetname.surface.get_height() + button_padding
84 # TODO: Add Image widget for the current tool 83 # TODO: Add Image widget for the current tool
85 self.current_tool = TextWidget((button_left, button_height), 84 self.current_tool = TextWidget((button_left, button_height),
86 'Tool: Floor', color='white') 85 'Tool: Floor', color='white')
206 self.level.name = new_name 205 self.level.name = new_name
207 self.clear_toolbar() 206 self.clear_toolbar()
208 self.setup_toolbar() 207 self.setup_toolbar()
209 return True 208 return True
210 209
211 def check_tileset(self, new_name): 210 def list_tilesets(self, ev, widget):
212 return False 211 tilesets = list_tilesets()
212 load_list = []
213 for name in tilesets:
214 if name == 'common':
215 continue
216 load_button = TextButton((0, 0), name)
217 load_button.add_callback('clicked', self.change_tileset, name)
218 load_list.append(load_button)
219 load_dialog = ListBox((200, 200), 'Select Level', load_list)
220 self.container.add(load_dialog)
221 load_dialog.grab_focus()
222
223 def change_tileset(self, ev, widget, new_name):
224 self.level.tileset = Tileset(new_name)
225 self.level.update_tiles_ascii()
226 self.level.restart()
227 self.clear_toolbar()
228 self.setup_toolbar()
229 return True
213 230
214 def check_file(self, new_name): 231 def check_file(self, new_name):
215 if new_name == self.level.level_name: 232 if new_name == self.level.level_name:
216 return True # No-op change 233 return True # No-op change
217 if check_level_exists(new_name): 234 if check_level_exists(new_name):