tuikit/core/widget.py
author Radek Brich <radek.brich@devl.cz>
Mon, 17 Mar 2014 23:44:18 +0100
changeset 87 ee5ea9671f28
child 89 94f5baef19ac
permissions -rw-r--r--
Add core Widget, Container. Add widgets Label.

from tuikit.core.coords import Point, Size


class Widget:

    """Base class for all widgets."""

    _num_instances = 0

    def __init__(self):
        #: Widget name is used for logging etc. Not visible anywhere.
        self._num_instances += 1
        self.name = '{}{}'.format(
            self.__class__.__name__,
            self._num_instances)

        #: Parent Widget
        self.parent = None
        #: Window owning this Widget
        self.window = None

        ### placing and size
        #: Position inside parent widget. Modified by layout manager.
        self.pos = Point()
        #: Actual size. Modified by layout manager.
        self.size = Size(10, 10)
        #: Requested size. Layout manager will use this when placing the widget.
        self.sizereq = Size(1, 1)
        #: Minimal size of widget. Widget will never be sized smaller than this.
        self.sizemin = Size(1, 1)
        #: Maximum size of widget. Widget will never be sized bigger than this.
        #: None means no maximum size (infinite).
        self.sizemax = Size(None, None)

    ## placing and size ##

    @property
    def x(self):
        return self.pos.x

    @property
    def y(self):
        return self.pos.y

    @property
    def width(self):
        return self.size.w

    @property
    def height(self):
        return self.size.h

    ## drawing ##

    def draw(self, buffer, x, y):
        pass