--- a/tuikit/core/widget.py Wed Sep 03 19:17:04 2014 +0200
+++ b/tuikit/core/widget.py Wed Sep 03 21:56:20 2014 +0200
@@ -1,4 +1,4 @@
-from tuikit.core.coords import Point, Size
+from tuikit.core.coords import Point, Size, Rect
from tuikit.core.theme import default_theme
from tuikit.core.signal import Signal
@@ -15,9 +15,7 @@
self._num_instances += 1
#: Widget name is used for logging etc. Not visible anywhere.
- self.name = '{}{}'.format(
- self.__class__.__name__,
- self._num_instances)
+ self.name = '%s#%s' % (self.__class__.__name__, self._num_instances)
#: Parent Widget
self.parent = None
@@ -40,8 +38,9 @@
self.sizemax = Size(None, None)
#: Cursor is position where text input will occur.
+ #: The cursor coordinates are relative to widget.
self._cursor = Point()
- #: Cursor is displayed on screen only if the widget is focused.
+ #: Cursor is displayed on screen only when the widget is focused.
self._cursor_visible = False
#: Hidden widget does not affect layout.
@@ -71,11 +70,15 @@
@property
def size(self):
- return self._size.readonly()
+ return self._size.immutable()
def resize(self, w, h):
self._size.update(w, h)
+ @property
+ def boundaries(self):
+ return Rect._make(self.pos, self._size)
+
## drawing, looks ##
def draw(self, buffer):
@@ -100,7 +103,13 @@
@property
def cursor(self):
- return self._cursor
+ """Return cursor coordinates.
+
+ Returns None if cursor is set outside of widget boundaries.
+
+ """
+ if self._cursor in Rect._make((0, 0), self._size):
+ return self._cursor
@property
def cursor_visible(self):
@@ -126,6 +135,18 @@
return True
self.log.debug('Not consumed: %s', ev)
+ def mousedown(self, button, pos):
+ self._log.debug('mousedown(btn=%r, pos=%r)',
+ button, pos)
+
+ def mouseup(self, button, pos):
+ self._log.debug('mouseup(btn=%r, pos=%r)',
+ button, pos)
+
+ def mousemove(self, button, pos, relpos):
+ self._log.debug('mousemove(btn=%r, pos=%r, relpos=%r)',
+ button, pos, relpos)
+
## timeouts ##
def add_timeout(self, delay, callback, *args):
@@ -155,4 +176,9 @@
@property
def log(self):
- return logging.getLogger('tuikit.' + self.name)
+ """Logger for widget debugging.
+
+ Logger name contains full module name, class name and instance number.
+
+ """
+ return logging.getLogger('%s.%s' % (self.__module__, self.name))