Add Layout, FixedLayout.
from tuikit.core.widget import Widget
from tuikit.layouts.fixed import FixedLayout
class Container(Widget):
"""Container widget.
Can contain other widgets to create hierarchical structure.
"""
def __init__(self, layout_class=FixedLayout):
Widget.__init__(self)
#: List of child widgets.
self.children = []
self.layout = layout_class()
def add(self, widget):
"""Add widget into container."""
self.children.append(widget)
widget.parent = self
widget.window = self.window
widget.set_theme(self.theme)
self.layout.add(widget)
def resize(self, w, h):
Widget.resize(self, w, h)
self.layout.resize()
def draw(self, buffer, x=0, y=0):
"""Draw child widgets."""
for child in self.children:
cx = x + child.x
cy = y + child.y
with buffer.clip(cx, cy, child.width, child.height):
child.draw(buffer, cx, cy)
def set_theme(self, theme):
Widget.set_theme(self, theme)
for child in self.children:
child.set_theme(theme)