tuikit/core/window.py
changeset 109 105b1affc3c2
parent 97 0c2e0c09ba5c
child 111 b055add74b18
equal deleted inserted replaced
97:0c2e0c09ba5c 109:105b1affc3c2
    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