From ab47d2a1269c20d70f42942c4295c056544491f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Wed, 27 Jul 2016 00:14:08 +0200 Subject: Add possibility to reload YML config file --- helpers/mapping.py | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) (limited to 'helpers/mapping.py') diff --git a/helpers/mapping.py b/helpers/mapping.py index 864afbe..1256696 100644 --- a/helpers/mapping.py +++ b/helpers/mapping.py @@ -1,5 +1,5 @@ from kivy.uix.relativelayout import RelativeLayout -from kivy.properties import NumericProperty, ListProperty +from kivy.properties import NumericProperty, ListProperty, StringProperty from kivy.core.window import Window from kivy.clock import Clock @@ -56,13 +56,34 @@ class Mapping(RelativeLayout): 'trigger': 'success', 'source': 'loading', 'dest': 'loaded' + }, + { + 'trigger': 'reload', + 'source': 'loaded', + 'dest': 'configuring' } ] master_volume = NumericProperty(100) ready_color = ListProperty([1, 165/255, 0, 1]) + state = StringProperty("") def __init__(self, **kwargs): + self.keys = [] + self.running = [] + self.wait_ids = {} + self.open_files = {} + + Machine(model=self, states=self.STATES, + transitions=self.TRANSITIONS, initial='initial', + ignore_invalid_triggers=True, queued=True) + super(Mapping, self).__init__(**kwargs) + self.keyboard = Window.request_keyboard(self.on_keyboard_closed, self) + self.keyboard.bind(on_key_down=self.on_keyboard_down) + + self.configure() + + def on_enter_configuring(self): if Config.builtin_mixing: self.mixer = Mixer() else: @@ -74,14 +95,13 @@ class Mapping(RelativeLayout): error_print("Error while loading configuration: {}".format(e), with_trace=True) sys.exit() + else: + self.success() - self.keys = [] - self.running = [] - self.wait_ids = {} - - super(Mapping, self).__init__(**kwargs) - self.keyboard = Window.request_keyboard(self.on_keyboard_closed, self) - self.keyboard.bind(on_key_down=self.on_keyboard_down) + def on_enter_loading(self): + for key in self.keys: + key.reload() + self.success() # Kivy events def add_widget(self, widget, index=0): @@ -112,6 +132,8 @@ class Mapping(RelativeLayout): thread.join() sys.exit() + elif 'ctrl' in modifiers and keycode[0] == 114: + threading.Thread(name="MSReload", target=self.reload).start() return True # Helpers @@ -143,6 +165,8 @@ class Mapping(RelativeLayout): self.ready_color = [0, 1, 0, 1] elif result == "partial": self.ready_color = [1, 0, 0, 1] + else: + self.ready_color = [1, 165/255, 0, 1] ## Some global actions def stop_all_running(self): @@ -347,8 +371,14 @@ class Mapping(RelativeLayout): music_properties[filename], filename) - seen_files[filename] = MusicFile( - filename, self, **music_property) + if filename in self.open_files: + self.open_files[filename]\ + .reload_properties(**music_property) + + seen_files[filename] = self.open_files[filename] + else: + seen_files[filename] = MusicFile( + filename, self, **music_property) if filename not in key_properties[mapped_key]['files']: key_properties[mapped_key]['files'] \ -- cgit v1.2.3