Mercurial > boomslang
comparison pyntnclick/widgets/base.py @ 694:58d78038a197 pyntnclick
Better modal wrapping.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Tue, 14 Feb 2012 15:46:20 +0200 |
parents | c8b683dd56d3 |
children | e9265818a96c |
comparison
equal
deleted
inserted
replaced
693:c8b683dd56d3 | 694:58d78038a197 |
---|---|
22 self.disabled = False | 22 self.disabled = False |
23 self.callbacks = collections.defaultdict(list) | 23 self.callbacks = collections.defaultdict(list) |
24 # To track which widget the mouse is over | 24 # To track which widget the mouse is over |
25 self.mouseover_widget = self | 25 self.mouseover_widget = self |
26 | 26 |
27 def set_parent(self, parent): | |
28 self.parent = parent | |
29 | |
27 def add_callback(self, eventtype, callback, *args): | 30 def add_callback(self, eventtype, callback, *args): |
28 self.callbacks[eventtype].append((callback, args)) | 31 self.callbacks[eventtype].append((callback, args)) |
29 | 32 |
30 def event(self, ev): | 33 def event(self, ev): |
31 "Don't override this without damn good reason" | 34 "Don't override this without damn good reason" |
115 return True | 118 return True |
116 if super(Container, self).event(ev): | 119 if super(Container, self).event(ev): |
117 return True | 120 return True |
118 | 121 |
119 def add(self, widget): | 122 def add(self, widget): |
120 widget.parent = self | 123 widget.set_parent(self) |
121 self.children.append(widget) | 124 self.children.append(widget) |
122 self.rect = self.rect.union(widget.rect) | 125 self.rect = self.rect.union(widget.rect) |
123 return widget | 126 return widget |
124 | 127 |
125 def remove(self, widget): | 128 def remove(self, widget): |
126 widget.parent = None | 129 widget.set_parent(None) |
127 self.children.remove(widget) | 130 self.children.remove(widget) |
128 | 131 |
129 def remove_all(self): | 132 def remove_all(self): |
130 for widget in reversed(self.children[:]): | 133 for widget in reversed(self.children[:]): |
131 self.remove(widget) | 134 self.remove(widget) |
219 | 222 |
220 def __init__(self, widget, close_callback=None): | 223 def __init__(self, widget, close_callback=None): |
221 super(ModalWrapper, self).__init__(widget.rect, widget.gd) | 224 super(ModalWrapper, self).__init__(widget.rect, widget.gd) |
222 self.close_callback = close_callback | 225 self.close_callback = close_callback |
223 self.add(widget) | 226 self.add(widget) |
227 self.add_callback(MOUSEBUTTONDOWN, self.close) | |
224 widget.add_callback(MOUSEBUTTONDOWN, self.close) | 228 widget.add_callback(MOUSEBUTTONDOWN, self.close) |
229 | |
230 def set_parent(self, parent): | |
231 super(ModalWrapper, self).set_parent(parent) | |
232 if parent: | |
233 self.rect = self.parent.rect | |
225 | 234 |
226 def close(self, ev, widget): | 235 def close(self, ev, widget): |
227 if self.parent: | 236 if self.parent: |
228 self.parent.remove(self) | 237 self.parent.remove(self) |
229 if self.close_callback: | 238 if self.close_callback: |