# HG changeset patch # User Neil Muller # Date 1316037420 -7200 # Node ID f0c14d9abd8428c795939af41190f041d0eea169 # Parent 676523572a013bbaf57cca9f55988aa3fe65cd71 Hack in multi-page toolbar diff -r 676523572a01 -r f0c14d9abd84 mamba/habitats/editor.py --- a/mamba/habitats/editor.py Wed Sep 14 23:49:45 2011 -0700 +++ b/mamba/habitats/editor.py Wed Sep 14 23:57:00 2011 +0200 @@ -13,6 +13,8 @@ from mamba.data import check_level_exists from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS +MAX_TOOLS = 8 + class EditorHabitat(Habitat): def __init__(self, level_name): @@ -22,6 +24,7 @@ self.container.add(self.edit_widget) self.container.add_callback(KEYDOWN, self.keydown_event) self.mode = 'Tile' + self.tool_page = 0 def on_enter(self): # We need to juggle the display to the correct size @@ -93,6 +96,10 @@ elif self.mode == 'Thing': tile_map = THING_MAP change_mode_text = 'Switch to Tiles' + total_tools = len(tile_map) + start_page = MAX_TOOLS * self.tool_page + end_page = start_page + MAX_TOOLS + tile_map = sorted(tile_map)[start_page:end_page] for tile_char in tile_map: try: tile = self.level.tileset[tile_char] @@ -115,6 +122,22 @@ tile_button.surface.get_height() + button_padding button_height += 2 + prev_page = None + next_page = None + if start_page > 0: + prev_page = TextButton((button_left, button_height), + 'Prev') + prev_page.add_callback('clicked', self.change_page, -1) + self.container.add(prev_page) + if end_page < total_tools: + next_page = TextButton((button_left + 100, button_height), + 'Next') + next_page.add_callback('clicked', self.change_page, +1) + self.container.add(next_page) + if prev_page: + button_height += prev_page.rect.height + elif next_page: + button_height += next_page.rect.height mode_button = TextButton((button_left, button_height), change_mode_text) mode_button.add_callback('clicked', self.change_toolbar) @@ -139,6 +162,12 @@ self.mode = 'Thing' elif self.mode == 'Thing': self.mode = 'Tile' + self.tool_page = 0 + self.clear_toolbar() + self.setup_toolbar() + + def change_page(self, ev, widget, change): + self.tool_page += change self.clear_toolbar() self.setup_toolbar()