tuikit/layouts/offset.py
author Radek Brich <radek.brich@devl.cz>
Mon, 16 Feb 2015 21:17:43 +0100
changeset 117 8680c2333546
parent 115 b4ff7392003a
permissions -rw-r--r--
Update FixedLayout. Add demo launcher.

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]))