import pygame
from pygame import locals as pgl
-from naja.events import InvalidateTheWorld
+from naja.events import InvalidateTheWorld, SelectEvent
class Widget(object):
+ _is_selectable_func = None
+
def __init__(self, pos, size=None):
self.pos = pos
self.size = size or (0, 0)
# True for for this event
self._prepared = False
return False
- if ev.type == pgl.MOUSEBUTTONDOWN:
- self.callback('click')
+ if SelectEvent.matches(ev) or ev.type == pgl.MOUSEBUTTONDOWN:
+ return self.callback('click')
return False
def add_callback(self, event, callback):
def callback(self, event):
for callback in self.callbacks[event]:
callback(event)
+ return bool(self.callbacks[event])
+
+ def set_selectable_callback(self, func):
+ self._is_selectable_func = func
+
+ def is_selectable(self):
+ """Return False if this widget isn't selectable by SelectorWidget."""
+ if self._is_selectable_func is not None:
+ return self._is_selectable_func()
+ else:
+ return True
class Container(object):