--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tuikit/core/window.py Mon Mar 17 20:40:04 2014 +0100
@@ -0,0 +1,46 @@
+from tuikit.core.buffer import Buffer
+from tuikit.core.signal import Signal
+
+
+class Window:
+
+ """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."""
+ 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."""
+ buffer.draw(self.buffer, x, y)