Mercurial > mamba
diff mamba/widgets/toollist.py @ 265:74ae1645df6e
Move hackery into list widget
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 15 Sep 2011 12:24:05 +0200 |
parents | |
children | 1e8dca95c48a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mamba/widgets/toollist.py Thu Sep 15 12:24:05 2011 +0200 @@ -0,0 +1,39 @@ +from mamba.widgets.base import Container +from mamba.widgets.text import TextButton + + +class ToolListWidget(Container): + """List of other widgets, with some paging trickery""" + + def __init__(self, rect, widget_list, page_length, padding=2): + self.widget_list = widget_list + self.page_length = page_length + self.padding = padding + self.page = 0 + super(ToolListWidget, self).__init__(rect) + self.fill_page() + + def fill_page(self): + start_page = self.page * self.page_length + end_page = start_page + self.page_length + button_height = self.rect.top + self.padding + button_left = self.rect.left + self.padding + for widget in self.widget_list[start_page:end_page]: + widget.rect.topleft = (button_left, button_height) + self.add(widget) + button_height += widget.rect.height + self.padding + if start_page > 0: + prev_but = TextButton((button_left, button_height), 'Prev') + prev_but.add_callback('clicked', self.change_page, -1) + self.add(prev_but) + if end_page < len(self.widget_list): + next_but = TextButton((button_left + 100, button_height), 'Next') + next_but.add_callback('clicked', self.change_page, 1) + self.add(next_but) + + def change_page(self, ev, widget, change): + self.page += change + for widget in self.children[:]: + self.remove(widget) + self.fill_page() + return True