15 |
15 |
16 def __init__(self, buffer=None): |
16 def __init__(self, buffer=None): |
17 """New buffer for the window will be created unless given existing |
17 """New buffer for the window will be created unless given existing |
18 `buffer` as parameter.""" |
18 `buffer` as parameter.""" |
19 Container.__init__(self) |
19 Container.__init__(self) |
|
20 self.allow_focus = True |
|
21 self.trap_focus = True |
20 self._buffer = None |
22 self._buffer = None |
21 self.buffer = buffer or Buffer() |
23 self.buffer = buffer or Buffer() |
22 |
24 |
23 @property |
25 @property |
24 def buffer(self): |
26 def buffer(self): |
55 |
57 |
56 def __init__(self, timer): |
58 def __init__(self, timer): |
57 Container.__init__(self) |
59 Container.__init__(self) |
58 self.timer = timer |
60 self.timer = timer |
59 |
61 |
|
62 def draw(self, buffer): |
|
63 Container.draw(self, buffer) |
|
64 self.log.debug('%s has focus.', self.get_focused_widget().name) |
|
65 |
60 def resize(self, w, h): |
66 def resize(self, w, h): |
61 self.children[0].resize(w, h) |
67 self._widgets[0].resize(w, h) |
|
68 |
|
69 def keypress(self, keyname, char, mod): |
|
70 self.log.debug('keypress(%r, %r, %r)', keyname, char, mod) |
|
71 return Container.keypress(self, keyname, char, mod) |
62 |
72 |
63 def handle_event(self, event_name, *args): |
73 def handle_event(self, event_name, *args): |
64 """Handle input event to managed windows.""" |
74 """Handle input event to managed windows.""" |
65 handler = getattr(self, event_name, None) |
75 handler = getattr(self, event_name, None) |
66 if handler: |
76 if handler: |
67 handler(*args) |
77 handler(*args) |
68 else: |
78 else: |
69 raise Exception('Unknown event: %r %r' % (event_name, args)) |
79 raise Exception('Unknown event: %r %r' % (event_name, args)) |
|
80 |
|
81 def get_focused_widget(self): |
|
82 """Traverse the widget hierarchy to bottom |
|
83 and return actually focused Widget.""" |
|
84 node = self |
|
85 while isinstance(node, Container) and node.focus_widget: |
|
86 node = node.focus_widget |
|
87 return node |
|
88 |