# -*- coding: utf-8 -*-
-import threading
from .music_file import *
from .mapping import *
-
-draw_lock = threading.RLock()
+from .lock import *
+import yaml
def parse_config(mapping):
- import yaml
stream = open("config.yml", "r")
config = yaml.load(stream)
stream.close()
aliases = config['aliases']
seen_files = {}
- file_lock = threading.RLock()
+ file_lock = Lock("file")
+
+ channel_id = 0
for mapped_key in config['keys']:
key = mapping.find_by_unicode(mapped_key)
if argument == 'file':
filename = action[action_name]['file']
if filename not in seen_files:
- seen_files[filename] = MusicFile(filename, file_lock)
+ seen_files[filename] = MusicFile(filename, file_lock, channel_id)
+ channel_id = channel_id + 1
action_args['music'] = seen_files[filename]
action_args[argument] = action[action_name][argument]
key.add_action(action_name, **action_args)
+
+ for key_property in config['key_properties']:
+ key = mapping.find_by_unicode(key_property)
+ if key is None:
+ continue
+
+ if 'description' in config['key_properties'][key_property]:
+ key.set_description(config['key_properties'][key_property]['description'])
+ if 'color' in config['key_properties'][key_property]:
+ key.set_color(config['key_properties'][key_property]['color'])
+
+ # Return the number of channels reserved
+ return channel_id + 1