]> git.immae.eu Git - perso/Immae/Projets/Python/MusicSampler.git/blame - helpers/__init__.py
Move classes to separate file
[perso/Immae/Projets/Python/MusicSampler.git] / helpers / __init__.py
CommitLineData
1df30f07 1# -*- coding: utf-8 -*-
e7f8dab4 2import threading
be27763f
IB
3from .music_file import *
4from .mapping import *
e7f8dab4
IB
5
6draw_lock = threading.RLock()
8f88a3e4 7
e7f8dab4 8def parse_config(mapping):
8f88a3e4
IB
9 import yaml
10 stream = open("config.yml", "r")
11 config = yaml.load(stream)
12 stream.close()
13
14 aliases = config['aliases']
15 seen_files = {}
16
e7f8dab4
IB
17 file_lock = threading.RLock()
18
8f88a3e4 19 for mapped_key in config['keys']:
e7f8dab4 20 key = mapping.find_by_unicode(mapped_key)
8f88a3e4
IB
21 if key is None:
22 continue
23
24 for action in config['keys'][mapped_key]:
25 action_name = list(action)[0]
26 action_args = {}
27 if action[action_name] is None:
28 action[action_name] = []
29
e7f8dab4
IB
30 if 'include' in action[action_name]:
31 included = action[action_name]['include']
32 del(action[action_name]['include'])
33
34 if isinstance(included, str):
35 action[action_name].update(aliases[included], **action[action_name])
36 else:
37 for included_ in included:
38 action[action_name].update(aliases[included_], **action[action_name])
39
8f88a3e4 40 for argument in action[action_name]:
e7f8dab4 41 if argument == 'file':
8f88a3e4
IB
42 filename = action[action_name]['file']
43 if filename not in seen_files:
e7f8dab4 44 seen_files[filename] = MusicFile(filename, file_lock)
8f88a3e4 45
d8ab67c7 46 action_args['music'] = seen_files[filename]
8f88a3e4
IB
47
48 else:
49 action_args[argument] = action[action_name][argument]
50
51 key.add_action(action_name, **action_args)