Add core Widget, Container. Add widgets Label.
from tuikit.core.buffer import Buffer
from tuikit.core.signal import Signal
from tuikit.core.container import Container
class Window(Container):
"""Window is rectangular part of screen containing widgets.
Widgets are drawn into window, events are routed to widgets through window.
"""
def __init__(self, buffer=None):
"""New buffer for the window will be created unless given existing
`buffer` as parameter."""
Container.__init__(self)
self._buffer = None
self._size = None
self.sig_resized = Signal()
self.buffer = buffer or Buffer()
@property
def buffer(self):
return self._buffer
@buffer.setter
def buffer(self, buffer):
# disconnect signals from old buffer
if self._buffer:
self.sig_resized.disconnect(self._buffer.resize)
# replace the buffer
self._buffer = buffer
self._size = buffer.size
# resize buffer when window gets resized
self.sig_resized.connect(buffer.resize)
@property
def size(self):
return self._size.readonly()
def resize(self, w, h):
self._buffer.resize(w, h)
self.sig_resized(w, h)
def draw(self, buffer, x=0, y=0):
"""Draw this window into buffer at x, y coords."""
Container.draw(self, self.buffer)
buffer.draw(self.buffer, x, y)