tuikit/core/widget.py
changeset 87 ee5ea9671f28
child 89 94f5baef19ac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tuikit/core/widget.py	Mon Mar 17 23:44:18 2014 +0100
@@ -0,0 +1,56 @@
+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