diff options
-rw-r--r-- | helpers/key.py | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/helpers/key.py b/helpers/key.py index c21f9ae..3c98ce7 100644 --- a/helpers/key.py +++ b/helpers/key.py | |||
@@ -6,6 +6,7 @@ from kivy.uix.behaviors import ButtonBehavior | |||
6 | from .action import Action | 6 | from .action import Action |
7 | from . import debug_print | 7 | from . import debug_print |
8 | import time | 8 | import time |
9 | import threading | ||
9 | from transitions.extensions import HierarchicalMachine as Machine | 10 | from transitions.extensions import HierarchicalMachine as Machine |
10 | 11 | ||
11 | class Key(ButtonBehavior, Widget): | 12 | class Key(ButtonBehavior, Widget): |
@@ -17,7 +18,12 @@ class Key(ButtonBehavior, Widget): | |||
17 | 'failed', | 18 | 'failed', |
18 | { | 19 | { |
19 | 'name': 'loaded', | 20 | 'name': 'loaded', |
20 | 'children': ['no_config', 'no_actions', 'running'] | 21 | 'children': [ |
22 | 'no_config', | ||
23 | 'no_actions', | ||
24 | 'running', | ||
25 | 'protecting_repeat' | ||
26 | ] | ||
21 | } | 27 | } |
22 | ] | 28 | ] |
23 | 29 | ||
@@ -86,8 +92,13 @@ class Key(ButtonBehavior, Widget): | |||
86 | { | 92 | { |
87 | 'trigger': 'finish', | 93 | 'trigger': 'finish', |
88 | 'source': 'loaded_running', | 94 | 'source': 'loaded_running', |
95 | 'dest': 'loaded_protecting_repeat' | ||
96 | }, | ||
97 | { | ||
98 | 'trigger': 'repeat_protection_finished', | ||
99 | 'source': 'loaded_protecting_repeat', | ||
89 | 'dest': 'loaded' | 100 | 'dest': 'loaded' |
90 | } | 101 | }, |
91 | ] | 102 | ] |
92 | 103 | ||
93 | key_sym = StringProperty(None) | 104 | key_sym = StringProperty(None) |
@@ -111,6 +122,8 @@ class Key(ButtonBehavior, Widget): | |||
111 | def get_alias_color(self): | 122 | def get_alias_color(self): |
112 | if self.is_loaded_inactive(): | 123 | if self.is_loaded_inactive(): |
113 | return [1, 1, 1, 1] | 124 | return [1, 1, 1, 1] |
125 | elif self.is_loaded_protecting_repeat(): | ||
126 | return [*self.custom_color, 100/255] | ||
114 | elif self.is_loaded(allow_substates=True): | 127 | elif self.is_loaded(allow_substates=True): |
115 | return [*self.custom_color, 1] | 128 | return [*self.custom_color, 1] |
116 | elif self.is_failed(): | 129 | elif self.is_failed(): |
@@ -183,6 +196,15 @@ class Key(ButtonBehavior, Widget): | |||
183 | 196 | ||
184 | self.parent.finished_running(self, start_time) | 197 | self.parent.finished_running(self, start_time) |
185 | 198 | ||
199 | def on_enter_loaded_protecting_repeat(self, modifiers): | ||
200 | if 'repeat_delay' in self.config['properties']: | ||
201 | self.protecting_repeat_timer = threading.Timer( | ||
202 | self.config['properties']['repeat_delay'], | ||
203 | self.repeat_protection_finished) | ||
204 | self.protecting_repeat_timer.start() | ||
205 | else: | ||
206 | self.repeat_protection_finished() | ||
207 | |||
186 | # This one cannot be in the Machine state since it would be queued to run | 208 | # This one cannot be in the Machine state since it would be queued to run |
187 | # *after* the loop is ended... | 209 | # *after* the loop is ended... |
188 | def interrupt(self): | 210 | def interrupt(self): |