self.wait_ids[None] = []
self.wait_ids[None].append(action_or_wait)
- def interrupt_wait(self, wait_id=None):
+ def matching_wait_ids(self, wait_id=None):
if wait_id is None:
- ids_to_interrupt = list(self.wait_ids.keys())
+ matching_ids = list(self.wait_ids.keys())
elif wait_id in self.wait_ids:
- ids_to_interrupt = [wait_id]
+ matching_ids = [wait_id]
else:
- ids_to_interrupt = []
+ matching_ids = []
+ return matching_ids
- for _wait_id in ids_to_interrupt:
+ def interrupt_wait(self, wait_id=None):
+ for _wait_id in self.matching_wait_ids(wait_id=wait_id):
action_or_waits = self.wait_ids[_wait_id]
del(self.wait_ids[_wait_id])
for action_or_wait in action_or_waits:
else:
action_or_wait.set()
+ def pause_wait(self, wait_id=None):
+ for _wait_id in self.matching_wait_ids(wait_id=wait_id):
+ action_or_waits = self.wait_ids[_wait_id]
+ for action_or_wait in action_or_waits:
+ if isinstance(action_or_wait, Action):
+ action_or_wait.pause()
+
+ def unpause_wait(self, wait_id=None):
+ for _wait_id in self.matching_wait_ids(wait_id=wait_id):
+ action_or_waits = self.wait_ids[_wait_id]
+ for action_or_wait in action_or_waits:
+ if isinstance(action_or_wait, Action):
+ action_or_wait.unpause()
+
+ def reset_wait(self, wait_id=None):
+ for _wait_id in self.matching_wait_ids(wait_id=wait_id):
+ action_or_waits = self.wait_ids[_wait_id]
+ for action_or_wait in action_or_waits:
+ if isinstance(action_or_wait, Action):
+ action_or_wait.reset()
+
# Methods to control running keys
def start_running(self, key, start_time):
self.running.append((key, start_time))