Mercurial > mamba
view mamba/widgets/listbox.py @ 272:a061dd62127c
Hook up load and new buttons
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 15 Sep 2011 17:09:21 +0200 |
parents | |
children | 170d4a43c00e |
line wrap: on
line source
import pygame from pygame.constants import SRCALPHA from mamba.widgets.base import Container from mamba.widgets.toollist import ToolListWidget from mamba.widgets.text import TextWidget, TextButton class ListBox(Container): def __init__(self, rect, text, widget_list, page_length=8): super(ListBox, self).__init__(rect) self.message = TextWidget(rect, text) self.toolbar = ToolListWidget(rect, widget_list, page_length, start_key=None) self.prepare() self.modal = True def prepare(self): width = max(self.toolbar.rect.width, self.message.rect.width) if width > self.message.rect.width: message_pos = (self.rect.left + width / 2 - self.message.rect.width / 2, self.rect.top) else: message_pos = (self.rect.left, self.rect.top + 5) tool_pos = (self.rect.left, self.rect.top + self.message.rect.height + 2) self.message.rect.topleft = message_pos self.toolbar.rect.topleft = tool_pos self.toolbar.fill_page() # Fix alignment self.add(self.message) self.add(self.toolbar) self.ok_button = ok_button = TextButton((0, 0), 'OK') ok_pos = (self.rect.left + width / 2 - ok_button.rect.width / 2, tool_pos[1] + 2 + self.toolbar.rect.height) ok_button.rect.topleft = ok_pos ok_button.add_callback('clicked', self.close) self.add(ok_button) def draw(self, surface): background = pygame.Surface(self.rect.size, SRCALPHA) background.fill(pygame.Color('gray')) surface.blit(background, self.rect) super(ListBox, self).draw(surface) def close(self, ev, widget): self.parent.remove(self) return True def grab_focus(self): return self.ok_button.grab_focus()