annotate pyntnclick/widgets/toollist.py @ 803:bcc9277a23e6 pyntnclick

Refactor widget positioning API. Remove unused widgets
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 27 Jan 2013 14:52:16 +0200
parents efa58c92b304
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
558
f9f04cb35697 s/mamba/pyntnclick/
Stefano Rivera <stefano@rivera.za.net>
parents: 555
diff changeset
1 from pyntntclick.widgets.base import Container
f9f04cb35697 s/mamba/pyntnclick/
Stefano Rivera <stefano@rivera.za.net>
parents: 555
diff changeset
2 from pyntntclick.widgets.text import TextButton
555
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
4
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5 class ToolListWidget(Container):
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
6 """List of other widgets, with some paging trickery"""
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
7
803
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 726
diff changeset
8 def __init__(self, pos, gd, size, widget_list, page_length,
559
b7d8b89de71a Rip out keyboard handling
Stefano Rivera <stefano@rivera.za.net>
parents: 558
diff changeset
9 padding=2):
555
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10 widget_list.sort(key=lambda w: w.text)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
11 self.widget_list = widget_list
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
12 self.page_length = page_length
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13 self.padding = padding
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
14 self.page = 0
803
bcc9277a23e6 Refactor widget positioning API. Remove unused widgets
Stefano Rivera <stefano@rivera.za.net>
parents: 726
diff changeset
15 super(ToolListWidget, self).__init__(pos, gd, size)
555
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
16 self.prev_but = None
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
17 self.next_but = None
726
efa58c92b304 Move prepare out of __init__ and into everywhere else
Neil Muller <neil@dip.sun.ac.za>
parents: 639
diff changeset
18
efa58c92b304 Move prepare out of __init__ and into everywhere else
Neil Muller <neil@dip.sun.ac.za>
parents: 639
diff changeset
19 def prepare(self):
555
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
20 self.fill_page()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
21
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
22 def fill_page(self):
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
23 for widget in self.children[:]:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
24 self.remove(widget)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
25 start_page = self.page * self.page_length
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
26 end_page = start_page + self.page_length
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
27 button_height = self.rect.top + self.padding
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
28 button_left = self.rect.left + self.padding
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
29 for widget in self.widget_list[start_page:end_page]:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
30 widget.rect.topleft = (button_left, button_height)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
31 self.add(widget)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
32 button_height += widget.rect.height + self.padding
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
33 if not self.prev_but:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
34 self.prev_but = TextButton((button_left, button_height),
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
35 u'\N{LEFTWARDS ARROW}')
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
36 self.prev_but.add_callback('clicked', self.change_page, -1)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
37 else:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
38 self.prev_but.rect.top = max(button_height, self.prev_but.rect.top)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
39 if not self.next_but:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
40 self.next_but = TextButton((button_left + 100, button_height),
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
41 u'\N{RIGHTWARDS ARROW}')
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
42 self.next_but.add_callback('clicked', self.change_page, 1)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
43 else:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
44 self.next_but.rect.top = max(button_height, self.next_but.rect.top)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
45 if start_page > 0:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
46 self.prev_but.enable()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
47 else:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
48 self.prev_but.disable()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
49 if end_page < len(self.widget_list):
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
50 self.next_but.enable()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
51 else:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
52 self.next_but.disable()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
53 self.add(self.prev_but)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
54 self.add(self.next_but)
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
55 for widget in self.children[:]:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
56 if widget in self.widget_list:
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
57 # Standardise widdths
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
58 widget.rect.width = self.rect.width - 2
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
59 widget.prepare()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
60
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
61 def change_page(self, ev, widget, change):
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
62 self.page += change
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
63 self.fill_page()
c0474fe18b96 Copy in widgets from mamba (currently unused)
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
64 return True