Mercurial > mamba
comparison mamba/widgets/toollist.py @ 479:3f37e011c3b6
Neater buttons
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 17 Sep 2011 22:12:16 +0200 |
parents | 03d0a7dbb724 |
children | 90a59251c93b |
comparison
equal
deleted
inserted
replaced
478:ce3a50c4caaa | 479:3f37e011c3b6 |
---|---|
13 self.page_length = page_length | 13 self.page_length = page_length |
14 self.padding = padding | 14 self.padding = padding |
15 self.page = 0 | 15 self.page = 0 |
16 self.start_key = start_key | 16 self.start_key = start_key |
17 super(ToolListWidget, self).__init__(rect) | 17 super(ToolListWidget, self).__init__(rect) |
18 self.prev_but = None | |
19 self.next_but = None | |
18 self.fill_page() | 20 self.fill_page() |
19 # We do this to avoid needing to worry about focus too much | 21 # We do this to avoid needing to worry about focus too much |
20 self.add_callback(KEYUP, self.handle_key) | 22 self.add_callback(KEYUP, self.handle_key) |
21 self.focussable = True | 23 self.focussable = True |
22 | 24 |
23 def fill_page(self): | 25 def fill_page(self): |
24 for widget in self.children[:]: | 26 for widget in self.children[:]: |
25 self.remove(widget) | 27 self.remove(widget) |
26 self.hot_keys = {} | 28 self.hot_keys = {} |
27 self.prev_but = self.next_but = None | |
28 start_page = self.page * self.page_length | 29 start_page = self.page * self.page_length |
29 end_page = start_page + self.page_length | 30 end_page = start_page + self.page_length |
30 button_height = self.rect.top + self.padding | 31 button_height = self.rect.top + self.padding |
31 button_left = self.rect.left + self.padding | 32 button_left = self.rect.left + self.padding |
32 key = self.start_key | 33 key = self.start_key |
35 self.add(widget) | 36 self.add(widget) |
36 if key: | 37 if key: |
37 self.hot_keys[key] = widget | 38 self.hot_keys[key] = widget |
38 key += 1 | 39 key += 1 |
39 button_height += widget.rect.height + self.padding | 40 button_height += widget.rect.height + self.padding |
40 if start_page > 0: | 41 if not self.prev_but: |
41 self.prev_but = TextButton((button_left, button_height), 'Prev') | 42 self.prev_but = TextButton((button_left, button_height), 'Prev') |
42 self.prev_but.add_callback('clicked', self.change_page, -1) | 43 self.prev_but.add_callback('clicked', self.change_page, -1) |
43 self.add(self.prev_but) | 44 else: |
44 if end_page < len(self.widget_list): | 45 self.prev_but.rect.top = max(button_height, self.prev_but.rect.top) |
46 if not self.next_but: | |
45 self.next_but = TextButton((button_left + 100, button_height), | 47 self.next_but = TextButton((button_left + 100, button_height), |
46 'Next') | 48 'Next') |
47 self.next_but.add_callback('clicked', self.change_page, 1) | 49 self.next_but.add_callback('clicked', self.change_page, 1) |
48 self.add(self.next_but) | 50 else: |
51 self.next_but.rect.top = max(button_height, self.next_but.rect.top) | |
52 if start_page > 0: | |
53 self.prev_but.enable() | |
54 else: | |
55 self.prev_but.disable() | |
56 if end_page < len(self.widget_list): | |
57 self.next_but.enable() | |
58 else: | |
59 self.next_but.disable() | |
60 self.add(self.prev_but) | |
61 self.add(self.next_but) | |
62 for widget in self.children[:]: | |
63 if widget in self.widget_list: | |
64 # Standardise widdths | |
65 widget.rect.width = self.rect.width - 2 | |
66 widget.prepare() | |
49 | 67 |
50 def handle_key(self, ev, widget): | 68 def handle_key(self, ev, widget): |
51 if hasattr(self.parent, 'paused') and self.parent.paused: | 69 if hasattr(self.parent, 'paused') and self.parent.paused: |
52 # No hotjets when pasued | 70 # No hotjets when pasued |
53 return False | 71 return False |