Mercurial > mamba
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') |