| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- from geometry import Positionable
- from touch_objects import OBJECT_NAMES
- class Event(Positionable):
- """
- Abstract base class for events triggered by an event driver. These events
- are delegated to gesture trackers, to be translated to gestures. To be able
- to check whether an event is located within a area, a position is
- required. Therefore, the touch object that triggers the event is is linked
- to the event object.
- """
- _type = NotImplemented
- def __init__(self, touch_object):
- super(Event, self).__init__(*touch_object)
- self.touch_object = touch_object
- self.stopped = self.stopped_immidiate = False
- self.offset = Positionable(0, 0)
- def __getattr__(self, name):
- if name in OBJECT_NAMES \
- and type(self.touch_object) == OBJECT_NAMES[name]:
- return self.touch_object
- raise AttributeError("'%s' object has no attribute '%s'"
- % (self.__class__.__name__, name))
- def get_offset(self):
- return self - self.offset
- def set_offset(self, offset):
- self.offset.set_position(*offset)
- def set_root_area(self, area):
- x, y = area
- self.x -= x
- self.y -= y
- def get_type(self):
- return self._type
- def get_touch_object(self):
- return self.touch_object
- def stop_propagation(self):
- self.stopped = True
- def is_propagation_stopped(self):
- return self.stopped
- def stop_immidiate_propagation(self):
- self.stop_propagation()
- self.stopped_immidiate = True
- def is_immediate_propagation_stopped(self):
- return self.stopped_immidiate
|