]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blobdiff - music_sampler/actions/wait.py
Rename helpers to music_sampler
[perso/Immae/Projets/Python/MusicSampler.git] / music_sampler / actions / wait.py
diff --git a/music_sampler/actions/wait.py b/music_sampler/actions/wait.py
new file mode 100644 (file)
index 0000000..ea42408
--- /dev/null
@@ -0,0 +1,40 @@
+import threading
+
+def run(action, duration=0, music=None, set_wait_id=None, **kwargs):
+    if set_wait_id is not None:
+        action.mapping.add_wait_id(set_wait_id, action)
+
+    action.sleep_event = threading.Event()
+    action.sleep_event_timer = threading.Timer(
+            duration,
+            action.sleep_event.set)
+
+    if music is not None:
+        music.wait_end()
+
+    action.sleep_event_timer.start()
+    action.sleep_event.wait()
+
+def description(action, duration=0, music=None, set_wait_id=None, **kwargs):
+    message = ""
+    if music is None:
+        message += "waiting {}s" \
+                .format(duration)
+    elif duration == 0:
+        message += "waiting the end of « {} »" \
+                .format(music.name)
+    else:
+        message += "waiting the end of « {} » + {}s" \
+                .format(music.name, duration)
+
+    if set_wait_id is not None:
+        message += " (setting id = {})".format(set_wait_id)
+
+    return message
+
+def interrupt(action, duration=0, music=None, **kwargs):
+    if action.sleep_event is not None:
+        action.sleep_event.set()
+        action.sleep_event_timer.cancel()
+    if music is not None:
+        music.wait_event.set()