示例#1
0
        public static Graph OpenGraph(string name)
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return(null);
            }

            if (loaded_graphs.ContainsKey(name))
            {
                return(loaded_graphs[name]);
            }

            Graph graph = new Graph(name);

            if (graph.Import(engine_directory + project_directory + "/"))
            {
                VSLogger.Log("Loaded graph '" + name + "'");
                loaded_graphs[name] = graph;
                return(graph);
            }
            else
            {
                VSLogger.LogError("Failed to open graph '" + name + "'");
                return(null);
            }
        }
示例#2
0
        public static void SaveOpenGraphs()
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return;
            }

            foreach (KeyValuePair <string, Graph> g in loaded_graphs)
            {
                g.Value.Export(engine_directory + project_directory + "/");
                VSLogger.Log("Saved graph '" + g.Key + "'");
            }
        }
示例#3
0
        public static Graph NewGraph(string name)
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return(null);
            }

            Graph graph = new Graph(name);

            VSLogger.Log("New graph '" + name + "'");

            loaded_graphs[name] = graph;
            return(graph);
        }
示例#4
0
        public static void SaveSettings()
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return;
            }

            JsonObject json = new JsonObject();

            json.Put("python_exe_directory", python_exe_directory);
            json.Put("core_modules_directory", core_modules_directory);
            json.Put("project_directory", project_directory);
            json.Put("executable_directory", executable_directory);

            File.WriteAllText(engine_directory + engine_settings_path, json.ToString());
            VSLogger.Log("Saved '" + engine_settings_path + "'");
        }
示例#5
0
        public static void LoadSettings()
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return;
            }

            try
            {
                string     raw_json = File.ReadAllText(engine_directory + engine_settings_path);
                JsonObject json     = new JsonObject(raw_json);

                python_exe_directory   = json.Get("python_exe_directory", python_exe_directory);
                core_modules_directory = json.Get("core_modules_directory", core_modules_directory);
                project_directory      = json.Get("project_directory", project_directory);
                executable_directory   = json.Get("executable_directory", executable_directory);

                VSLogger.Log("Loaded '" + engine_settings_path + "'");
            }
            catch (FileNotFoundException) { }
            catch (DirectoryNotFoundException) { }
        }
示例#6
0
        public static bool CompileAndRun(Graph graph)
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return(false);
            }

            try
            {
                string graph_path = Compiler.main.Compile(graph);
                VSLogger.Log("===Executing '" + graph.display_name + "'===");
                PythonConsole.RunGraph(graph_path, input_function);
                VSLogger.Log("===Finished execution===");
                return(true);
            }
            catch (Exception e)
            {
                VSLogger.LogError(e.Message + "\n" + e.StackTrace);
                VSLogger.Log("===Aborting execution===");
                return(false);
            }
        }
示例#7
0
        public static void Init()
        {
            initialised = true;
            VSLogger.Log("Initialising VScriptEngine");

            if (engine_directory == "")
            {
                VSLogger.LogError("VScriptEngine 'engine_directory' not set");
                initialised = false;
                return;
            }

            LoadSettings();
            Directory.CreateDirectory(engine_directory + core_modules_directory);
            Library.main.LoadModules(engine_directory + core_modules_directory);

            PythonConsole.exe_path = python_exe_directory;


            Directory.CreateDirectory(engine_directory + project_directory);

            loaded_graphs = new Dictionary <string, Graph>();
            VSLogger.Log("VScriptEngine initialised");
        }
示例#8
0
        public static void CloseGraph(string name, bool save = true)
        {
            if (!initialised)
            {
                VSLogger.LogError("VScriptEngine not initialised");
                return;
            }

            if (loaded_graphs.ContainsKey(name))
            {
                if (save)
                {
                    loaded_graphs[name].Export(engine_directory + project_directory + "/");
                    VSLogger.Log("Saved graph '" + name + "'");
                }

                loaded_graphs.Remove(name);
                VSLogger.Log("Closed graph '" + name + "'");
            }
            else
            {
                VSLogger.LogError("Cannot close graph '" + name + "' as it is not open");
            }
        }