comparison mamba/habitats/editor.py @ 479:3f37e011c3b6

Neater buttons
author Neil Muller <drnlmuller@gmail.com>
date Sat, 17 Sep 2011 22:12:16 +0200
parents 4986c22fe5fd
children 68898de788cc
comparison
equal deleted inserted replaced
478:ce3a50c4caaa 479:3f37e011c3b6
26 26
27 27
28 class EditorHabitat(Habitat): 28 class EditorHabitat(Habitat):
29 def __init__(self, level): 29 def __init__(self, level):
30 super(EditorHabitat, self).__init__(EDIT_SCREEN) 30 super(EditorHabitat, self).__init__(EDIT_SCREEN)
31 self.toolbar = {}
31 self.level = level 32 self.level = level
32 self.container.paused = False 33 self.container.paused = False
33 self.edit_widget = EditLevelWidget(self.level) 34 self.edit_widget = EditLevelWidget(self.level)
34 self.container.add(self.edit_widget) 35 self.container.add(self.edit_widget)
35 self.container.add_callback(KEYDOWN, self.keydown_event) 36 self.container.add_callback(KEYDOWN, self.keydown_event)
128 self.floor_button.add_callback('clicked', self.change_tool, 129 self.floor_button.add_callback('clicked', self.change_tool,
129 '.', 'Floor') 130 '.', 'Floor')
130 self.edit_widget.set_tool('.') 131 self.edit_widget.set_tool('.')
131 button_height += (self.floor_button.surface.get_height() 132 button_height += (self.floor_button.surface.get_height()
132 + button_padding) 133 + button_padding)
133 if self.mode == 'Tiles': 134 if self.mode in self.toolbar:
134 tile_map = TILE_MAP 135 # FIXME: This needs to be recreated on tileset changes
135 elif self.mode == 'Things': 136 self.tool_widget = self.toolbar[self.mode]
136 tile_map = THING_MAP
137 else: 137 else:
138 tile_map = [] 138 if self.mode == 'Tiles':
139 tool_list = [] 139 tile_map = TILE_MAP
140 for tile_char in sorted(tile_map): 140 elif self.mode == 'Things':
141 try: 141 tile_map = THING_MAP
142 tile = self.level.tileset[tile_char]
143 except pygame.error:
144 # Ignore stuff we can't load for now
145 continue
146 if tile is None:
147 continue
148 if tile.name:
149 text = tile.name
150 else: 142 else:
151 text = 'Tile' 143 tile_map = []
152 tile_button = ImageButtonWidget((0, 0), tile.image, text, 144 tool_list = []
153 color='white') 145 for tile_char in sorted(tile_map):
154 tile_button.add_callback('clicked', self.change_tool, 146 try:
155 tile_char, text) 147 tile = self.level.tileset[tile_char]
156 tool_list.append(tile_button) 148 except pygame.error:
157 if self.mode == "Sprites": 149 # Ignore stuff we can't load for now
158 for name in ['Add', 'Edit', 'Delete']: 150 continue
159 tile_button = TextButton((0, 0), '%s Sprite' % name) 151 if tile is None:
160 tile_button.add_callback('clicked', self.sprite_tool, 152 continue
161 name) 153 if tile.name:
154 text = tile.name
155 else:
156 text = 'Tile'
157 tile_button = ImageButtonWidget((0, 0), tile.image, text,
158 color='white')
159 tile_button.add_callback('clicked', self.change_tool,
160 tile_char, text)
162 tool_list.append(tile_button) 161 tool_list.append(tile_button)
163 self.tool_widget = ToolListWidget((button_left, button_height), 162 if self.mode == "Sprites":
164 tool_list, MAX_TOOLS, start_key=K_2) 163 for name in ['Add', 'Edit', 'Delete']:
164 tile_button = TextButton((0, 0), '%s Sprite' % name)
165 tile_button.add_callback('clicked', self.sprite_tool,
166 name)
167 tool_list.append(tile_button)
168 self.tool_widget = ToolListWidget((button_left, button_height),
169 tool_list, MAX_TOOLS, start_key=K_2)
170 self.toolbar[self.mode] = self.tool_widget
165 self.container.add(self.tool_widget) 171 self.container.add(self.tool_widget)
166 button_height = self.container.rect.top + MODE_HEIGHT 172 button_height = self.container.rect.top + MODE_HEIGHT
167 if self.mode == 'Tiles': 173 if self.mode == 'Tiles':
168 mode_button1 = TextButton((button_left, button_height), 174 mode_button1 = TextButton((button_left, button_height),
169 'Things') 175 'Things')