adding plugin menu

This commit is contained in:
langolierz
2020-03-01 19:09:52 +00:00
parent 2b62f763df
commit 98fc2e1fbf
6 changed files with 88 additions and 3 deletions

View File

@@ -28,12 +28,12 @@ class AsyncWrite(threading.Thread):
data_file.close()
class Data(object):
BANK_DATA_JSON = 'display_data.json'
SHADER_BANK_DATA_JSON = 'shader_bank_data.json'
SETTINGS_JSON = 'settings.json'
ACTIVE_PLUGINS = 'active_plugins.json'
DEFAULT_SETTINGS_JSON = 'settings_default.json'
KEYPAD_MAPPING_JSON = 'keypad_action_mapping.json'
OSC_MAPPING_JSON = 'osc_action_mapping.json'
@@ -85,6 +85,10 @@ class Data(object):
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.BANK_DATA_JSON):
self.bank_data = self._read_json(self.BANK_DATA_JSON)
self.active_plugins = {}
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.ACTIVE_PLUGINS):
self.bank_data = self._read_json(self.ACTIVE_PLUGINS)
self.shader_bank_data = [self.create_empty_shader_bank() for i in range(3)]
if os.path.isfile(self.PATH_TO_DATA_OBJECTS + self.SHADER_BANK_DATA_JSON):
self.shader_bank_data = self._read_json(self.SHADER_BANK_DATA_JSON)
@@ -111,6 +115,20 @@ class Data(object):
def initialise_plugins(self):
#initialise plugin manager
self.plugins = plugin_collection.PluginCollection("plugins", self.message_handler, self)
self.compare_plugins_list()
def compare_plugins_list(self):
current_plugins = [type(plugin).__name__ for plugin in self.plugins.get_plugins(plugin_collection.Plugin)]
plugins_to_add = set(current_plugins) - set(self.active_plugins.keys())
plugins_to_remove = set(self.active_plugins) - set(current_plugins)
for k in plugins_to_remove:
self.active_plugins.pop(k, None)
for k in plugins_to_add:
self.active_plugins[k] = False
#switch off all plugins if disabled ...
if self.settings['system']['USE_PLUGINS']['value'] == 'disabled':
self.active_plugins = {x:False for x in self.active_plugins}
def load_midi_mapping_for_device(self, device_name):
# check if custom config file exists on disk for this device name
@@ -443,11 +461,15 @@ class Data(object):
display_modes.append(["SHDR_BNK",'PLAY_SHADER'])
if self.settings['detour']['TRY_DEMO']['value'] == 'enabled':
display_modes.append(["FRAMES",'NAV_DETOUR'])
if self.settings['system']['USE_PLUGINS']['value'] == 'enabled':
display_modes.append(["PLUGINS",'NAV_PLUGINS'])
if hasattr(self, 'plugins') and self.plugins is not None:
from data_centre.plugin_collection import DisplayPlugin
for plugin in self.plugins.get_plugins(DisplayPlugin):
display_modes.append(plugin.get_display_modes())
is_active = self.active_plugins[type(plugin).__name__]
if is_active:
display_modes.append(plugin.get_display_modes())
if not with_nav_mode:
return [mode[0] for mode in display_modes]