public void SetScriptSettings(int scriptId, string[] settings) { Dictionary <string, string[]> settingsDict = GetScriptSettings(scriptId); if (settingsDict == null || settings.Length == 0) { return; } for (int i = 0; i < settingsDict.Count; i++) { if (settings.Length == i) { break; } string[] vals = settingsDict[settingsDict.ElementAt(i).Key]; vals[0] = settings[i]; } if (ProcessorScripts.ContainsKey(scriptId)) { ProcessorScripts[scriptId].OnSettingsChange(); } else if (DetectorScripts.ContainsKey(scriptId)) { DetectorScripts[scriptId].OnSettingsChange(); } }
public Dictionary <int, int> GetPresetSelectionDict(string presetName = null, Dictionary <string, string[]> preset = null) { if (presetName != null && preset == null) { preset = Presets[presetName]; } Dictionary <int, int> selectionDict = new Dictionary <int, int>(); for (int i = 0; i < preset.Count; i++) { int scriptVal = -1; foreach (ISignalProcessor processor in ProcessorScripts.Values) { if (processor.GetType().Name == preset.Keys.ElementAt(i)) { scriptVal = ProcessorScripts.FirstOrDefault(x => x.Value == processor).Key; } } foreach (ISignalDetector detector in DetectorScripts.Values) { if (detector.GetType().Name == preset.Keys.ElementAt(i)) { scriptVal = DetectorScripts.FirstOrDefault(x => x.Value == detector).Key; } } selectionDict.Add(i, scriptVal); } return(selectionDict); }
public void CompileScript(string filepath, int index) { CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerParameters parameters = new CompilerParameters() { GenerateInMemory = true, ReferencedAssemblies = { Assembly.GetEntryAssembly().Location, "System.dll", "System.Core.dll", "NAudio.dll", "MathNet.Numerics.dll", "System.Numerics.dll" } }; CompilerResults results = provider.CompileAssemblyFromFile(parameters, filepath); if (results.Errors.HasErrors) { string errors = ""; foreach (CompilerError error in results.Errors) { errors += string.Format("Error #{0}: {1}\n", error.ErrorNumber, error.ErrorText); } Console.Write(errors); } else { Assembly assembly = results.CompiledAssembly; Object instance = assembly.CreateInstance(assembly.GetTypes()[0].FullName); if (instance.GetType().GetInterfaces().Contains(typeof(ISignalProcessor))) { ProcessorScripts.Add(index, (ISignalProcessor)instance); if (ProcessorScripts[index].Settings != null) { SettingDefaults[index] = ProcessorScripts[index].Settings.Values.ToList().Select(s => s.First()).ToArray(); } Console.WriteLine("Loaded processor script successfully - " + instance.GetType().Name); } else if (instance.GetType().GetInterfaces().Contains(typeof(ISignalDetector))) { DetectorScripts.Add(index, (ISignalDetector)instance); if (DetectorScripts[index].Settings != null) { SettingDefaults[index] = DetectorScripts[index].Settings.Values.ToList().Select(s => s.First()).ToArray(); } Console.WriteLine("Loaded detector script successfully - " + instance.GetType().Name); } } }
public Dictionary <string, string[]> GetScriptSettings(int scriptId) { if (ProcessorScripts.ContainsKey(scriptId)) { return(ProcessorScripts[scriptId].Settings); } else if (DetectorScripts.ContainsKey(scriptId)) { return(DetectorScripts[scriptId].Settings); } else { return(null); } }
public string GetScriptName(int scriptId) { if (ProcessorScripts.ContainsKey(scriptId)) { return(ProcessorScripts[scriptId].GetType().Name); } else if (DetectorScripts.ContainsKey(scriptId)) { return(DetectorScripts[scriptId].GetType().Name); } else { return(null); } }