--- /dev/null
+def run(action, music=None, fade_out=0, wait=False,
+ set_wait_id=None, **kwargs):
+ previous = None
+ for music in action.music_list(music):
+ if music.is_loaded_paused() or music.is_loaded_playing():
+ if previous is not None:
+ previous.stop(fade_out=fade_out)
+ previous = music
+ else:
+ music.stop(fade_out=fade_out)
+
+ if previous is not None:
+ action.waiting_music = previous
+ previous.stop(
+ fade_out=fade_out,
+ wait=wait,
+ set_wait_id=set_wait_id)
+
+def description(action, music=None, fade_out=0, wait=False,
+ set_wait_id=None, **kwargs):
+
+ message = "stopping "
+ if music is not None:
+ message += "music « {} »".format(music.name)
+ else:
+ message += "all musics"
+
+ if fade_out > 0:
+ message += " with {}s fadeout".format(fade_out)
+ if wait:
+ if set_wait_id is not None:
+ message += " (waiting the end of fadeout, with id {})"\
+ .format(set_wait_id)
+ else:
+ message += " (waiting the end of fadeout)"
+
+ return message
+
+def interrupt(action, music=None, fade_out=0, wait=False,
+ set_wait_id=None, **kwargs):
+ if action.waiting_music is not None:
+ action.waiting_music.wait_event.set()