X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Fbase.py;h=815d1d3a3f1cf23fedcc776ff980b5d4b727b051;hb=cb722a960176f4ebd0b0769c1f017ae2c32d52f8;hp=81f11b649df9734371017f34891fa3ec6b360505;hpb=bcc041da95b01ae36c2198b5c6bc4bd75dcc0c24;p=naja.git diff --git a/naja/widgets/base.py b/naja/widgets/base.py index 81f11b6..815d1d3 100644 --- a/naja/widgets/base.py +++ b/naja/widgets/base.py @@ -3,10 +3,12 @@ from collections import defaultdict 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) @@ -38,8 +40,8 @@ class Widget(object): # 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): @@ -48,6 +50,17 @@ class Widget(object): 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):