X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=music_sampler%2Factions%2Fstop.py;fp=music_sampler%2Factions%2Fstop.py;h=88cc66d6299cf4803a8f7e4ffd42eafcb4c53710;hb=63ba5a8dc2aa4ec3e6f203b0ba4db249ecf0b00e;hp=0000000000000000000000000000000000000000;hpb=35bde798b6cda13579337b0ec5a803fdd5eab19a;p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git diff --git a/music_sampler/actions/stop.py b/music_sampler/actions/stop.py new file mode 100644 index 0000000..88cc66d --- /dev/null +++ b/music_sampler/actions/stop.py @@ -0,0 +1,42 @@ +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()