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