tuikit/layouts/offset.py
author Radek Brich <radek.brich@devl.cz>
Sun, 22 Feb 2015 09:53:13 +0100
changeset 119 dd91747504dd
parent 117 8680c2333546
permissions -rw-r--r--
Redraw widgets on request. Add scrollbar demo.

from .layout import Layout
from tuikit.core.coords import Point


class OffsetLayout(Layout):

    """Offsets widget position. Used by Viewport and ScrollView."""

    def __init__(self):
        Layout.__init__(self)
        self._offset = Point()
        self._widget_pos = {}

    @property
    def offset(self):
        """Offset of child widgets."""
        return self._offset

    def add(self, widget, x=0, y=0):
        Layout.add(self, widget)
        self._widget_pos[widget] = (x, y)

    def update(self, _w, _h):
        for widget in self._managed_widgets:
            widget.resize(*widget.sizereq)
            widget.pos.update(*(self.offset + self._widget_pos[widget]))