public static void UpdateExposedState(VSTSignal signal, ParamPin pin, bool isExposed) { if (signal.PluginContext.PluginCommandStub.GetEffectName() == pin.PluginName) { signal.InfoForm.ChangeExposedState(pin.ParamIndex, isExposed); } }
void ParameterNamesConfig_Changed(IDiffSpread <string> spread) { //temp pin dictionary var prevPins = new Dictionary <string, ParamPin>(FParamPins); //create pin? foreach (var pinDefinitionString in spread) { if (string.IsNullOrWhiteSpace(pinDefinitionString)) { continue; } if (!prevPins.ContainsKey(pinDefinitionString)) { var paramPin = ParamPin.Parse(pinDefinitionString); var oa = new InputAttribute(paramPin.ParamName); //FLogger.Log(LogType.Debug, col.DataType.ToString()); paramPin.Pin = FHost.CreateValueInput(oa, typeof(float)); foreach (var signal in FInternalSignals) { UpdateExposedState(signal, paramPin, true); } FParamPins[pinDefinitionString] = paramPin; } else { prevPins.Remove(pinDefinitionString); } } //any pin which is left over can be removed foreach (var pin in prevPins) { FHost.DeletePin(pin.Value.Pin); FParamPins.Remove(pin.Key); foreach (var signal in FInternalSignals) { UpdateExposedState(signal, pin.Value, false); } } }