Beispiel #1
0
        /// <summary>
        /// Asks Dynamo what the path & name of the currently open file is.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic CurrentFile(dynamic parameters)
        {
            string filePath = "";
            string fileName = "";

            ServerViewExtension.RunInContext(() =>
            {
                filePath = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.FileName;
                if (string.IsNullOrWhiteSpace(filePath))
                {
                    filePath = "File has not been saved yet";
                    fileName = "Home - Default Name";
                }
                else
                {
                    int ind  = filePath.LastIndexOf("\\");
                    fileName = filePath.Remove(0, (ind + 1));
                }
            }
                                             );

            var html = @"<h3>File Path of Current File</h3>" + filePath + "</br>" + @"<h3>File Name of Current File</h3>" + fileName;

            return(Response.AsText(html, "text/html"));
        }
Beispiel #2
0
        /// <summary>
        /// Clears (deletes) everything on the Dynamo canvas, including Nodes, Annotations, etc.
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns>HTML result summary.</returns>
        public dynamic Clear(dynamic parameters)
        {
            string html = "";
            int    nodeCountBefore = 0, nodeCountAfter = 0;

            ServerViewExtension.RunInContext(() =>
            {
                nodeCountBefore = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.Nodes.Count();

                var vm = ServerViewExtension.dynamoViewModel;
                vm.Model.ClearCurrentWorkspace();

                nodeCountAfter = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.Nodes.Count();
            }
                                             );

            if (nodeCountAfter < nodeCountBefore)
            {
                html = $"Cleared {nodeCountBefore - nodeCountAfter} nodes from canvas.";
            }
            else
            {
                html = "Did not clear any nodes from canvas.";
            }

            return(Response.AsText(html, "text/html"));
        }
Beispiel #3
0
        /// <summary>
        /// Instruct Dynamo to open the specified file, must have the .dyn extension.
        /// If any file is currently open, it closes it before opening the new one.
        /// </summary>
        /// <param name="parameters">Requires a property called "filepath", which specified the filepath to load from.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic OpenFile(dynamic parameters)
        {
            if (string.IsNullOrWhiteSpace(parameters.filepath))
            {
                return("Empty filepath supplied");
            }

            string result = "";
            string file   = parameters.filepath;

            if (!file.ToUpper().EndsWith(DYNAMO_FILE_EXTENSION))
            {
                return("File does not have the correct extension (.DYN)");
            }
            if (!File.Exists(file))
            {
                return(404);
            }

            ServerViewExtension.RunInContext(() =>
            {
                var vm = ServerViewExtension.dynamoViewModel;

                vm.CloseHomeWorkspaceCommand.Execute(null);
                vm.OpenCommand.Execute(file);
                result = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.FileName;
            });

            return(Response.AsText("Opened file : " + result, "text/html"));
        }
Beispiel #4
0
        /// <summary>
        /// Forces Dynamo to run the currently open graph.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic RunGraph(dynamic parameters)
        {
            ServerViewExtension.RunInContext(() =>
            {
                var vm = ServerViewExtension.dynamoViewModel;
                vm.CurrentSpaceViewModel.RunSettingsViewModel.Model.RunType = RunType.Manual;
                vm.Model.ForceRun();
            });

            return("ran");
        }
Beispiel #5
0
        /// <summary>
        /// Uploads a graph (.dyn) file to Dynamo and instruct Dynamo to open it.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic UploadFile(dynamic parameters)
        {
            string file = "";

            ServerViewExtension.RunInContext(() =>
            {
                file = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.FileName;
            }
                                             );

            var html = @"<h3>Currently open file</h3></br>" + file;

            return(Response.AsText(html, "text/html"));
        }
Beispiel #6
0
        /// <summary>
        /// Closes the currently open Dynamo file, if any.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic CloseFile(dynamic parameters)
        {
            string file = "";

            ServerViewExtension.RunInContext(() =>
            {
                file = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.FileName;
                ServerViewExtension.DynamoLogger.Log("Closed " + file);
                ServerViewExtension.dynamoViewModel.CloseHomeWorkspaceCommand.Execute(null);
            }
                                             );

            return("Closed file : " + file);
        }
Beispiel #7
0
        /// <summary>
        /// Add a node to the Dynamo canvas.
        /// </summary>
        /// <param name="parameters">The node name, example : List.Map</param>
        /// <returns>HTML result summary.</returns>
        public dynamic AddNode(dynamic parameters)
        {
            string node = parameters.nodename;

            if (string.IsNullOrWhiteSpace(node))
            {
                return("Supplied node was empty");
            }

            string result  = "";
            var    command = new Dynamo.Models.DynamoModel.CreateNodeCommand(Guid.NewGuid().ToString(), node, 100, 100, true, false);
            var    nodes   = "";

            ServerViewExtension.RunInContext(() =>
            {
                try
                {
                    int countBefore = ServerViewExtension.dynamoViewModel.Model.CurrentWorkspace.Nodes.Count();

                    ServerViewExtension.dynamoViewModel.Model.ExecuteCommand(command);
                    int countAfter = ServerViewExtension.dynamoViewModel.Model.CurrentWorkspace.Nodes.Count();

                    var n = ServerViewExtension.dynamoViewModel.Model.CurrentWorkspace.Nodes.Select(x => "<li>" + x.Name).ToArray();
                    nodes = string.Join("</li> ", n);

                    var nodeCountDiff = countAfter - countBefore;

                    if (nodeCountDiff < 1)
                    {
                        result = $"Could not add your {node} node to canvas.";
                    }
                    else if (nodeCountDiff == 1)
                    {
                        result = $"Added {node} node to the canvas.";
                    }
                    else
                    {
                        throw new Exception($"Added {nodeCountDiff} nodes to the canvas, expected was 1.");
                    }
                }
                catch (System.Exception e)
                {
                    result = "Something went wrong, error : " + e.Message;
                }
            });
            return(Response.AsText(result, "text/html"));
        }
Beispiel #8
0
        /// <summary>
        /// Get the list of currently installed packages in Dynamo.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic GetPackages(dynamic parameters)
        {
            string html         = "";
            var    packageNames = new List <string>();
            var    uniqueLibs   = new HashSet <string>();


            ServerViewExtension.RunInContext(() =>
            {
                var nsm = ServerViewExtension.dynamoViewModel.Model.SearchModel;
                List <Dynamo.Search.SearchElements.NodeSearchElement> nodes = nsm.SearchEntries.ToList();

                var libs = nodes
                           .Where(x => x.Categories.Count > 0)
                           .Select(x => x.Categories.FirstOrDefault())
                           .ToList();

                libs.Sort();
                uniqueLibs = new HashSet <string>(libs);

                packageNames = ServerViewExtension.dynamoViewModel.Model.ExtensionManager.Extensions
                               .Select(x => x.Name)
                               .ToList();
            });

            html = "<h2>Currently installed pacakges : </h2>" +
                   "<ul>";

            foreach (var item in uniqueLibs)
            {
                html += "<li>" + item + "</li>";
            }
            html += "</ul></br>";

            html += "<h2>Currently installed extensions : </h2>" +
                    "<ul>";

            foreach (var item in packageNames)
            {
                html += "<li>" + item + "</li>";
            }
            html += "</ul></br>";
            html += "<em>Note : only Extensions are listed above, does not include ViewExtensions.";

            return(Response.AsText(html, "text/html"));
        }
Beispiel #9
0
        /// <summary>
        /// Remove the specified package from Dynamo, using the Package Manager.
        /// </summary>
        /// <param name="parameters">The name of the package to remove.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic RemovePackage(dynamic parameters)
        {
            string html = "";
            int    packageCountBefore = 0, packageCountAfter = 0;

            ServerViewExtension.RunInContext(() =>
            {
                // TODO : implement package removal
            }
                                             );

            if (packageCountAfter < packageCountBefore)
            {
                html = $"Removed {packageCountBefore - packageCountAfter} packages from Dynamo.";
            }
            else
            {
                html = "Did not remove any packages from Dynamo.";
            }

            return(Response.AsText(html, "text/html"));
        }
Beispiel #10
0
        /// <summary>
        /// Saves the currently open Dynamo file.
        /// </summary>
        /// <param name="parameters">Not used, can specify null.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic SaveFile(dynamic parameters)
        {
            string file   = "";
            string result = "";

            ServerViewExtension.RunInContext(() =>
            {
                file = ServerViewExtension.viewLoadedParams.CurrentWorkspaceModel.FileName;
                if (string.IsNullOrWhiteSpace(file))
                {
                    result = "No file is open, did not save anything.";
                }
                else
                {
                    ServerViewExtension.DynamoLogger.Log("Saving " + file);
                    ServerViewExtension.dynamoViewModel.SaveCommand.Execute(null);
                    result = "Successfully Saved file : " + file;
                }
            }
                                             );

            return(result);
        }
Beispiel #11
0
        /// <summary>
        /// Installs the specified package in Dynamo, using the Package Manager.
        /// </summary>
        /// <param name="parameters">The name of the package to install.</param>
        /// <returns>HTML result summary.</returns>
        public dynamic InstallPackage(dynamic parameters)
        {
            string packageName = parameters.packagename;

            if (string.IsNullOrWhiteSpace(packageName))
            {
                return("Supplied package name was invalid or empty.");
            }

            string result = "";
            int    packageCountBefore = 0, packageCountAfter = 0;

            ServerViewExtension.RunInContext(() =>
            {
                try
                {
                    // TODO : implement package install
                    result = "To be implemented.";
                }
                catch (System.Exception e)
                {
                    result = "Something went wrong, error : " + e.Message;
                }
            });

            if (packageCountAfter > packageCountBefore)
            {
                result = $"Installed {packageCountBefore - packageCountAfter} packages from Dynamo.";
            }
            else
            {
                result = "Did not install any package to Dynamo.";
            }

            return(Response.AsText(result, "text/html"));
        }