Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }