comparison pyntnclick/widgets/filechooser.py @ 709:d279a7dd166a pyntnclick

Fix paging bug. Better widget spacing
author Neil Muller <neil@dip.sun.ac.za>
date Sun, 05 Aug 2012 13:53:21 +0200
parents 6b8fa2248ee1
children d4f97c8e0dbe
comparison
equal deleted inserted replaced
708:9b6d68ba627e 709:d279a7dd166a
61 left = self.rect.left + self.padding 61 left = self.rect.left + self.padding
62 # Add current directory at the top 62 # Add current directory at the top
63 widget = LabelWidget((0, 0), self.gd, self.curdir[-30:], color='black') 63 widget = LabelWidget((0, 0), self.gd, self.curdir[-30:], color='black')
64 widget.rect.topleft = (left, top) 64 widget.rect.topleft = (left, top)
65 self.add(widget) 65 self.add(widget)
66 upbut = TextButton((left + self.padding + widget.rect.width, top), 66 upbut = TextButton((left + 2 * self.padding + widget.rect.width, top),
67 self.gd, u'\N{LEFTWARDS ARROW WITH HOOK}Back one level') 67 self.gd, u'\N{LEFTWARDS ARROW WITH HOOK}Back one level')
68 upbut.add_callback('clicked', self.change_dir, os.pardir) 68 upbut.add_callback('clicked', self.change_dir, os.pardir)
69 self.add(upbut) 69 self.add(upbut)
70 top += max(widget.rect.height, upbut.rect.height) + 4 * self.padding 70 top += max(widget.rect.height, upbut.rect.height) + 4 * self.padding
71 page_top = top 71 page_top = top
72 page_left = left 72 page_left = left
73 top += self.padding
73 for entry in entries[start_page:end_page]: 74 for entry in entries[start_page:end_page]:
74 if entry in self.dirs: 75 if entry in self.dirs:
75 widget = self._dir_button(entry) 76 widget = self._dir_button(entry)
76 else: 77 else:
77 widget = self._file_button(entry) 78 widget = self._file_button(entry)
78 widget.rect.topleft = (left, top) 79 widget.rect.topleft = (left, top)
79 self.add(widget) 80 self.add(widget)
80 top += widget.rect.height + self.padding 81 top += widget.rect.height + self.padding
81 page_left = max(page_left, left + widget.rect.width) 82 page_left = max(page_left, left + widget.rect.width + self.padding)
82 # Add page list buttons 83 # Add page list buttons
83 if not self.prev_but: 84 if not self.prev_but:
84 self.prev_but = TextButton((0, 0), self.gd, u'\N{UPWARDS ARROW}') 85 self.prev_but = TextButton((0, 0), self.gd, u'\N{UPWARDS ARROW}')
85 self.prev_but.add_callback('clicked', self.change_page, -1) 86 self.prev_but.add_callback('clicked', self.change_page, -1)
86 self.prev_but.rect.topleft = (page_left, page_top) 87 self.prev_but.rect.topleft = (page_left, page_top)
87 if not self.next_but: 88 if not self.next_but:
88 self.next_but = TextButton((0, 0), self.gd, u'\N{DOWNWARDS ARROW}') 89 self.next_but = TextButton((0, 0), self.gd, u'\N{DOWNWARDS ARROW}')
89 self.next_but.add_callback('clicked', self.change_page, -1) 90 self.next_but.add_callback('clicked', self.change_page, +1)
90 page_top = max(top - self.next_but.rect.height, 91 page_top = max(top - self.next_but.rect.height,
91 self.prev_but.rect.bottom + self.padding) 92 self.prev_but.rect.bottom + self.padding)
92 self.next_but.rect.topleft = (page_left, page_top) 93 self.next_but.rect.topleft = (page_left, page_top)
93 if self.page > 0: 94 if self.page > 0:
94 self.prev_but.enable() 95 self.prev_but.enable()
95 else: 96 else:
96 self.prev_but.disable() 97 self.prev_but.disable()
97 if end_page < len(entries): 98 if end_page + 1 < len(entries):
98 self.next_but.enable() 99 self.next_but.enable()
99 else: 100 else:
100 self.next_but.disable() 101 self.next_but.disable()
101 self.add(self.next_but) 102 self.add(self.next_but)
102 self.add(self.prev_but) 103 self.add(self.prev_but)
103 # Add OK and Cancel buttons 104 # Add OK and Cancel buttons
105 top = max(self.prev_but.rect.bottom + self.padding,
106 top + 2 * self.padding)
104 ok_but = TextButton((left, top), self.gd, 'OK') 107 ok_but = TextButton((left, top), self.gd, 'OK')
105 ok_but.add_callback('clicked', self.ok) 108 ok_but.add_callback('clicked', self.ok)
106 self.add(ok_but) 109 self.add(ok_but)
107 cancel_but = TextButton( 110 cancel_but = TextButton(
108 (left + ok_but.rect.width + 4 * self.padding, top), 111 (left + ok_but.rect.width + 4 * self.padding, top),