event.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from touch_objects import OBJECT_NAMES
  2. class Event(object):
  3. """
  4. Abstract base class for events triggered by an event driver. These events
  5. are delegated to gesture trackers, to be translated to gestures. To be able
  6. to check whether an event is located within a widget, a position is
  7. required. Therefore, the touch object that triggers the event is is linked
  8. to the event object.
  9. """
  10. _type = NotImplemented
  11. def __init__(self, touch_object):
  12. self.touch_object = touch_object
  13. self.stopped = self.stopped_immidiate = False
  14. def __getattr__(self, name):
  15. if name in OBJECT_NAMES \
  16. and type(self.touch_object) == OBJECT_NAMES[name]:
  17. return self.touch_object
  18. raise AttributeError("'%s' object has no attribute '%s'"
  19. % (self.__class__.__name__, name))
  20. def get_type(self):
  21. return self._type
  22. def get_touch_object(self):
  23. return self.touch_object
  24. def get_position(self):
  25. return self.touch_object.get_position()
  26. def stop_propagation(self):
  27. self.stopped = True
  28. def is_propagation_stopped(self):
  29. return self.stopped
  30. def stop_immidiate_propagation(self):
  31. self.stop_propagation()
  32. self.stopped_immidiate = True
  33. def is_immediate_propagation_stopped(self):
  34. return self.stopped_immidiate