4 def run(action
, duration
=0, music
=None, set_wait_id
=None, **kwargs
):
5 action
.mapping
.add_wait(action
, wait_id
=set_wait_id
)
7 action
.sleep_event
= threading
.Event()
8 action
.sleep_event_timer
= threading
.Timer(
10 action
.sleep_event
.set)
12 action
.sleep_event_initial_duration
= duration
13 action
.sleep_event_paused
= False
14 action
.sleep_event_left_time
= duration
19 if duration
<= 0 or not action
.sleep_event_paused
:
20 action
.sleep_event_timer
.start()
21 action
.sleep_event_started_time
= time
.time()
23 action
.sleep_event
.wait()
25 def description(action
, duration
=0, music
=None, set_wait_id
=None, **kwargs
):
29 message
+= "waiting {}s"
30 formats
.append(duration
)
32 message
+= "waiting the end of « {} »"
33 formats
.append(music
.name
)
35 message
+= "waiting the end of « {} » + {}s"
36 formats
.append(music
.name
)
37 formats
.append(duration
)
39 if set_wait_id
is not None:
40 message
+= " (setting id = {})"
41 formats
.append(set_wait_id
)
43 return _(message
).format(*formats
)
45 def pause(action
, **kwargs
):
46 if action
.sleep_event_paused
:
49 action
.sleep_event_paused
= True
51 if not action
.sleep_event_timer
.is_alive():
54 action
.sleep_event_timer
.cancel()
56 action
.sleep_event_left_time
= action
.sleep_event_left_time\
57 - (time
.time() - action
.sleep_event_started_time
)
58 if action
.sleep_event_left_time
< 0:
59 action
.sleep_event
.set()
61 def unpause(action
, **kwargs
):
62 if not action
.sleep_event_paused
:
65 action
.sleep_event_paused
= False
67 action
.sleep_event_timer
= threading
.Timer(
68 action
.sleep_event_left_time
,
69 action
.sleep_event
.set)
71 action
.sleep_event_timer
.start()
72 action
.sleep_event_started_time
= time
.time()
74 def reset(action
, **kwargs
):
75 action
.sleep_event_timer
.cancel()
77 action
.sleep_event_left_time
= action
.sleep_event_initial_duration
79 if action
.sleep_event_paused
:
82 action
.sleep_event_timer
= threading
.Timer(
83 action
.sleep_event_left_time
,
84 action
.sleep_event
.set)
86 action
.sleep_event_timer
.start()
87 action
.sleep_event_started_time
= time
.time()
89 def interrupt(action
, duration
=0, music
=None, **kwargs
):
90 if action
.sleep_event
is not None:
91 action
.sleep_event
.set()
92 action
.sleep_event_timer
.cancel()
94 music
.wait_event
.set()