private void ConnectorOnScriptingUnloaded(object sender, EventArgs <string, ScriptingType> e) { bool updated = false; if (e.Value2 == ScriptingType.Indicator) { lock (Indicators) { if (Indicators.ContainsKey(e.Value1)) { Indicators.Remove(e.Value1); updated = true; } } } else if (e.Value2 == ScriptingType.Signal) { lock (Signals) { var signal = Signals.FirstOrDefault(i => i.FullName == e.Value1); if (signal != null) { signal.State = State.Stopped; Signals.Remove(signal); updated = true; } } } if (updated && ScriptingListUpdated != null) { ScriptingListUpdated(); } }
public string SendIndicatorToServer(string solutionPath) { var indicatorName = Path.GetFileNameWithoutExtension(solutionPath); var DLLs = GetCompressedScriptingDlls(Path.GetDirectoryName(solutionPath)); if (!DLLs.ContainsKey(indicatorName + ".dll")) { return($"Failed to locate or compress {indicatorName} libraries"); } if (Indicators.ContainsKey(indicatorName)) { Indicators.Remove(indicatorName); ScriptingListUpdated?.Invoke(); IndicatorInstanceRemoved?.Invoke(this, new EventArgs <string>(indicatorName)); } _connector.Send(new SaveScriptingDataRequest { Files = DLLs, Path = indicatorName, RequestID = Guid.NewGuid().ToString(), ScriptingType = ScriptingType.Indicator }); return(String.Empty); }
private void ConnectorOnScriptingSaved(object sender, EventArgs <ScriptingSavedEventArgs> eventArgs) { if (eventArgs.Value.ScriptingType == Data.Contracts.ScriptingType.Indicator) { lock (Indicators) { if (Indicators.ContainsKey(eventArgs.Value.Name)) { Indicators.Remove(eventArgs.Value.Name); } Indicators.Add(eventArgs.Value.Name, eventArgs.Value.Parameters); } } else if (eventArgs.Value.ScriptingType == Data.Contracts.ScriptingType.Signal) { lock (Signals) { var signal = Signals.FirstOrDefault(i => i.FullName == eventArgs.Value.Name); if (signal != null) { signal.Parameters = new List <ScriptingParameterBase>(eventArgs.Value.Parameters); } else { signal = new Signal { FullName = eventArgs.Value.Name, Parameters = new List <ScriptingParameterBase>(eventArgs.Value.Parameters) }; } if (signal.State == State.New) { signal.State = State.Stopped; signal.SetDefaultParamSpace(); } if (Signals.All(i => i.FullName != signal.FullName)) { Signals.Add(signal); } } } ScriptingListUpdated?.Invoke(); }