tuikit/core/widget.py
changeset 87 ee5ea9671f28
child 89 94f5baef19ac
equal deleted inserted replaced
86:0978fb755d31 87:ee5ea9671f28
       
     1 from tuikit.core.coords import Point, Size
       
     2 
       
     3 
       
     4 class Widget:
       
     5 
       
     6     """Base class for all widgets."""
       
     7 
       
     8     _num_instances = 0
       
     9 
       
    10     def __init__(self):
       
    11         #: Widget name is used for logging etc. Not visible anywhere.
       
    12         self._num_instances += 1
       
    13         self.name = '{}{}'.format(
       
    14             self.__class__.__name__,
       
    15             self._num_instances)
       
    16 
       
    17         #: Parent Widget
       
    18         self.parent = None
       
    19         #: Window owning this Widget
       
    20         self.window = None
       
    21 
       
    22         ### placing and size
       
    23         #: Position inside parent widget. Modified by layout manager.
       
    24         self.pos = Point()
       
    25         #: Actual size. Modified by layout manager.
       
    26         self.size = Size(10, 10)
       
    27         #: Requested size. Layout manager will use this when placing the widget.
       
    28         self.sizereq = Size(1, 1)
       
    29         #: Minimal size of widget. Widget will never be sized smaller than this.
       
    30         self.sizemin = Size(1, 1)
       
    31         #: Maximum size of widget. Widget will never be sized bigger than this.
       
    32         #: None means no maximum size (infinite).
       
    33         self.sizemax = Size(None, None)
       
    34 
       
    35     ## placing and size ##
       
    36 
       
    37     @property
       
    38     def x(self):
       
    39         return self.pos.x
       
    40 
       
    41     @property
       
    42     def y(self):
       
    43         return self.pos.y
       
    44 
       
    45     @property
       
    46     def width(self):
       
    47         return self.size.w
       
    48 
       
    49     @property
       
    50     def height(self):
       
    51         return self.size.h
       
    52 
       
    53     ## drawing ##
       
    54 
       
    55     def draw(self, buffer, x, y):
       
    56         pass