Mercurial > boomslang
diff pyntnclick/widgets/listbox.py @ 555:c0474fe18b96 pyntnclick
Copy in widgets from mamba (currently unused)
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Sat, 11 Feb 2012 14:09:46 +0200 |
parents | |
children | f9f04cb35697 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyntnclick/widgets/listbox.py Sat Feb 11 14:09:46 2012 +0200 @@ -0,0 +1,45 @@ +from mamba.widgets.base import Box +from mamba.widgets.toollist import ToolListWidget +from mamba.widgets.text import TextWidget, TextButton + + +class ListBox(Box): + + 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) + self.rect.height += 5 + + def close(self, ev, widget): + if hasattr(self.parent, 'paused'): + self.parent.paused = False + self.parent.remove(self) + return True + + def grab_focus(self): + return self.ok_button.grab_focus()