diff options
Diffstat (limited to 'music_sampler/mapping.py')
-rw-r--r-- | music_sampler/mapping.py | 33 |
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)) |