changeset 240:f0c14d9abd84

Hack in multi-page toolbar
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 23:57:00 +0200
parents 676523572a01
children 3e09664e1fbd
files mamba/habitats/editor.py
diffstat 1 files changed, 29 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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()