# HG changeset patch # User Stefano Rivera # Date 1316297596 -7200 # Node ID 9393dc6f5707d068883bf0aa866566768c583815 # Parent a332f8b3619cde23c573124c821eae823fbef174 Hook up pager buttons in level menu diff -r a332f8b3619c -r 9393dc6f5707 mamba/habitats/levelmenu.py --- a/mamba/habitats/levelmenu.py Sun Sep 18 00:12:16 2011 +0200 +++ b/mamba/habitats/levelmenu.py Sun Sep 18 00:13:16 2011 +0200 @@ -1,5 +1,6 @@ """Level menu.""" +import pygame from pygame.locals import KEYDOWN, K_PAGEUP, K_PAGEDOWN from mamba.constants import ESCAPE_KEYS @@ -7,7 +8,7 @@ from mamba.gamestate import done_levels from mamba.data import get_official_levels, load_image from mamba.level import Level -from mamba.widgets.text import TextButton +from mamba.widgets.overlay import OverlayButton from mamba.widgets.base import GridContainer from mamba.widgets.levelbutton import LevelButton @@ -30,16 +31,21 @@ self.grid_container = GridContainer(width=self.WIDTH) self.container.add(self.grid_container) - self.prev_button = TextButton((50, 550), u"\N{LEFTWARDS ARROW}") - self.prev_button.add_callback('clicked', self.change_page, -1) - self.container.add(self.prev_button) - - self.next_button = TextButton((700, 550), u"\N{RIGHTWARDS ARROW}") - self.next_button.add_callback('clicked', self.change_page, 1) - self.container.add(self.next_button) + self.prev_button = self.add_box((9, 497), (52, 45), 'left', + self.change_page, -1) + self.next_button = self.add_box((738, 497), (54, 44), 'right', + self.change_page, 1) + self.add_box((12, 11), (142, 41), 'back', self.return_to_mainmenu) self.container.add_callback(KEYDOWN, self.keydown_event) + def add_box(self, pos, size, overlay_name, clicked, *args): + image = load_image('menus/submenu-%s.png' % overlay_name) + box = OverlayButton(pygame.Rect(pos, size), image) + box.add_callback('clicked', clicked, *args) + self.container.add(box) + return box + def draw_background(self): self.surface.blit(self.bg_image, self.surface.get_rect()) diff -r a332f8b3619c -r 9393dc6f5707 mamba/habitats/mainmenu.py --- a/mamba/habitats/mainmenu.py Sun Sep 18 00:12:16 2011 +0200 +++ b/mamba/habitats/mainmenu.py Sun Sep 18 00:13:16 2011 +0200 @@ -8,7 +8,7 @@ from mamba.constants import ESCAPE_KEYS from mamba.engine import Habitat, NewHabitatEvent from mamba.level import Level -from mamba.widgets.overlay import OverlayButton +from mamba.widgets.overlay import OverlayOnFocusButton class MainMenu(Habitat): @@ -30,7 +30,7 @@ def add_box(self, pos, size, overlay_name, clicked): image = load_image('menus/highlight-%s.png' % overlay_name) - box = OverlayButton(pygame.Rect(pos, size), image) + box = OverlayOnFocusButton(pygame.Rect(pos, size), image) box.add_callback('clicked', clicked) self.container.add(box) return box diff -r a332f8b3619c -r 9393dc6f5707 mamba/widgets/overlay.py --- a/mamba/widgets/overlay.py Sun Sep 18 00:12:16 2011 +0200 +++ b/mamba/widgets/overlay.py Sun Sep 18 00:13:16 2011 +0200 @@ -1,8 +1,23 @@ from mamba.widgets.base import Button +class OverlayOnFocusButton(Button): + """A non-visiable clickable area, that causes an overlay to be + displayed when focussed""" + + def __init__(self, rect, image): + self.image = image + super(OverlayOnFocusButton, self).__init__(rect) + self.focussable = True + + def draw(self, surface): + if self.focussed: + surface.blit(self.image, surface.get_rect()) + + class OverlayButton(Button): - """A non-visiable clickable area, that causes an overlay to be display""" + """A non-visiable clickable area, that causes an overlay to be + displayed. Doesn't really understand this focus thing.""" def __init__(self, rect, image): self.image = image @@ -10,5 +25,5 @@ self.focussable = True def draw(self, surface): - if self.focussed: + if not self.disabled: surface.blit(self.image, surface.get_rect())