Guest User

Untitled

a guest
Dec 16th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. """
  2. Stacks are used for house-keeping. Nothing more.
  3. Event-callback bonds need only be recorded in _event_bindings to work.
  4.  
  5. _event_stacks = {MAIN MENU: [Event: [(callback, args, kwargs), ...]]}
  6.  
  7. _event_bindings = {EVENT TYPE: {
  8. Event: [(callback, args, kwargs), ...]
  9. }
  10. }
  11.  
  12. """
  13.  
  14. class EventHandler(object):
  15. _active_stack = None
  16. _event_stacks = {}
  17. _event_bindings = {}
  18.  
  19. def add_stack(self, name):
  20. self._active_stack = {}
  21. self._event_stack[name] = self._active_stack
  22.  
  23. def remove_stack(self, name):
  24. if name in _event_stack:
  25. #TODO event stack remove
  26. for event_type in _event_stack:
  27. pass
  28.  
  29. def event_listen(self, event, callback, *args, **kwargs):
  30. if not event._type in self._event_bindings:
  31. self._event_bindings[event._type] = {}
  32. if not event in self._event_bindings[event._type]:
  33. self._event_bindings[event._type][event] = []
  34. self._event_bindings[event._type][event].append((callback, args, kwargs))
  35.  
  36. if self._active_stack:
  37. if not event in self._active_stack:
  38. self._active_stack[event] = []
  39. self._active_stack[event].append(callback)
  40.  
  41. def event_unlisten(self, event, callback):
  42. pass #TODO
  43.  
  44. def event_emit(self, event):
  45. if event._type in self._event_bindings:
  46. for event_prototype in self._event_bindings:
  47. if event._respects_pattern_of(event_prototype):
  48. pass #TODO
  49.  
  50. class Event:
  51. _type = None
  52. def _respects_pattern_of(self, event):
  53. """Override this method to, for instance, check for presses of a key"""
  54. return True
  55.  
  56. def __eq__(self, other):
  57. return self._respects_pattern_of(other) and other._respects_pattern_of(self)
  58.  
  59. def __hash__(self):
  60. return self._type.__hash__()#self._respects_pattern_of.__hash__()
  61.  
  62. if __name__ == '__main__':
  63. anus = EventHandler()
  64. gay = Event()
  65. throb = lambda: None
  66.  
  67. anus.event_listen(gay, throb)
  68. anus.event_listen(gay, throb)
  69. print anus._event_bindings
Add Comment
Please, Sign In to add comment