]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blobdiff - music_sampler/mapping.py
wait actions are now pausable and resettable
[perso/Immae/Projets/Python/MusicSampler.git] / music_sampler / mapping.py
index 99c99773b7751c213eb2546871fd3d2dfbb9d229..9e40d401852438e410f662cbf6544f70781e5b99 100644 (file)
@@ -206,15 +206,17 @@ class Mapping(RelativeLayout):
                 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:
@@ -223,6 +225,27 @@ class Mapping(RelativeLayout):
                 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))