tuikit/core/container.py
author Radek Brich <radek.brich@devl.cz>
Thu, 27 Mar 2014 08:03:51 +0100
changeset 93 c1e79acb9fcb
parent 92 b97c4e25ed6d
child 94 e50dae408fe9
permissions -rw-r--r--
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)