private static ParameterValues CreateParameterValues(PluginContract.Control control, Dictionary <string, string> configParameters) { var parameterValues = new ParameterValues(); foreach (var configParameter in configParameters) { var controlConfigParameter = control.ConfigParameters.FirstOrDefault(x => x.SymbolicName.Equals(configParameter.Key, StringComparison.OrdinalIgnoreCase)) ?? control.View.ConfigParameters.FirstOrDefault(x => x.SymbolicName.Equals(configParameter.Key, StringComparison.OrdinalIgnoreCase)) ?? control.View.PluginParameters.FirstOrDefault(x => x.SymbolicName.Equals(configParameter.Key, StringComparison.OrdinalIgnoreCase)); switch (controlConfigParameter) { case IntConfigParameter icp: parameterValues.Add(new IntParameterValue(icp, int.Parse(configParameter.Value))); break; case StringConfigParameter scp: parameterValues.Add(new StringParameterValue(scp, configParameter.Value)); break; case BoolConfigParameter bcp: parameterValues.Add(new BoolParameterValue(bcp, configParameter.Value != null ? bool.Parse(configParameter.Value) : bcp.DefaultValue)); break; default: throw new NotImplementedException($"{controlConfigParameter.GetType().Name} is not yet implemented!"); } } foreach (var pluginParameter in control.View.PluginParameters) { switch (pluginParameter) { case IntConfigParameter icp: parameterValues.Add(new IntParameterValue(icp, icp.DefaultValue)); break; case StringConfigParameter scp: parameterValues.Add(new StringParameterValue(scp, scp.DefaultValue)); break; case BoolConfigParameter bcp: parameterValues.Add(new BoolParameterValue(bcp, bcp.DefaultValue)); break; default: throw new NotImplementedException($"{pluginParameter.GetType().Name} is not yet implemented!"); } } return(parameterValues); }
public void Subscribe(int panelId, PluginContract.Control control, ParameterValues parameterValues) { control.Subscribe(parameterValues, panelId, OnControlChanged); }
private static MakroBoard.ApiModels.Control ToApiControl(PluginContract.Control control) { return(new ApiModels.Control(control.SymbolicName, ToApiView(control.View), ToApiConfigParameters(control.ConfigParameters), control is PluginContract.ListControl listControl ? listControl.SubControls.Select(ToApiControl) : null)); }