aboutsummaryrefslogtreecommitdiff
path: root/music_sampler/mapping.py
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2016-08-12 18:21:22 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2016-08-12 18:23:02 +0200
commitd4217fda2ff3991eb1ee9a9bec6acff751798507 (patch)
tree5a7606c28aa5845d1ffebb78742e2d2c2fe39c5a /music_sampler/mapping.py
parent51f6ce0fdb32061b681d63e8de4d96eb8b59e1e9 (diff)
downloadMusicSampler-d4217fda2ff3991eb1ee9a9bec6acff751798507.tar.gz
MusicSampler-d4217fda2ff3991eb1ee9a9bec6acff751798507.tar.zst
MusicSampler-d4217fda2ff3991eb1ee9a9bec6acff751798507.zip
wait actions are now pausable and resettable1.2.3
This fixes https://git.immae.eu/mantisbt/view.php?id=6
Diffstat (limited to 'music_sampler/mapping.py')
-rw-r--r--music_sampler/mapping.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/music_sampler/mapping.py b/music_sampler/mapping.py
index 99c9977..9e40d40 100644
--- a/music_sampler/mapping.py
+++ b/music_sampler/mapping.py
@@ -206,15 +206,17 @@ class Mapping(RelativeLayout):
206 self.wait_ids[None] = [] 206 self.wait_ids[None] = []
207 self.wait_ids[None].append(action_or_wait) 207 self.wait_ids[None].append(action_or_wait)
208 208
209 def interrupt_wait(self, wait_id=None): 209 def matching_wait_ids(self, wait_id=None):
210 if wait_id is None: 210 if wait_id is None:
211 ids_to_interrupt = list(self.wait_ids.keys()) 211 matching_ids = list(self.wait_ids.keys())
212 elif wait_id in self.wait_ids: 212 elif wait_id in self.wait_ids:
213 ids_to_interrupt = [wait_id] 213 matching_ids = [wait_id]
214 else: 214 else:
215 ids_to_interrupt = [] 215 matching_ids = []
216 return matching_ids
216 217
217 for _wait_id in ids_to_interrupt: 218 def interrupt_wait(self, wait_id=None):
219 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
218 action_or_waits = self.wait_ids[_wait_id] 220 action_or_waits = self.wait_ids[_wait_id]
219 del(self.wait_ids[_wait_id]) 221 del(self.wait_ids[_wait_id])
220 for action_or_wait in action_or_waits: 222 for action_or_wait in action_or_waits:
@@ -223,6 +225,27 @@ class Mapping(RelativeLayout):
223 else: 225 else:
224 action_or_wait.set() 226 action_or_wait.set()
225 227
228 def pause_wait(self, wait_id=None):
229 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
230 action_or_waits = self.wait_ids[_wait_id]
231 for action_or_wait in action_or_waits:
232 if isinstance(action_or_wait, Action):
233 action_or_wait.pause()
234
235 def unpause_wait(self, wait_id=None):
236 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
237 action_or_waits = self.wait_ids[_wait_id]
238 for action_or_wait in action_or_waits:
239 if isinstance(action_or_wait, Action):
240 action_or_wait.unpause()
241
242 def reset_wait(self, wait_id=None):
243 for _wait_id in self.matching_wait_ids(wait_id=wait_id):
244 action_or_waits = self.wait_ids[_wait_id]
245 for action_or_wait in action_or_waits:
246 if isinstance(action_or_wait, Action):
247 action_or_wait.reset()
248
226 # Methods to control running keys 249 # Methods to control running keys
227 def start_running(self, key, start_time): 250 def start_running(self, key, start_time):
228 self.running.append((key, start_time)) 251 self.running.append((key, start_time))