/// <summary>
        /// Add a node at the current location with a new pipe node
        /// </summary>
        /// <param name="templateName"></param>
        private void AddNode(string templateName)
        {
            GraphNodeTemplate template = _templates[templateName];
            BaseNodeConfig config = null;
            string label = null;

            if (template.TagType == typeof(LibraryNodeConfig))
            {
                using (SelectLibraryNodeForm frm = new SelectLibraryNodeForm())
                {
                    if (frm.ShowDialog(this) == DialogResult.OK)
                    {
                        NodeLibraryManager.NodeLibraryType type = frm.Node;
                        object nodeConfig = null;

                        if (type.ConfigType != null)
                        {
                            nodeConfig = Activator.CreateInstance(type.ConfigType);
                        }

                        config = new LibraryNodeConfig(type.Type, type.Name, nodeConfig);

                        if (!String.IsNullOrWhiteSpace(type.NodeName))
                        {
                            label = type.NodeName;
                        }
                    }
                }
            }
            else
            {
                config = (BaseNodeConfig)Activator.CreateInstance(template.TagType);
            }

            if (config != null)
            {
                if (label != null)
                {
                    config.Label = label;
                }
                else
                {
                    config.Label = template.GetNewName();
                }

                GraphNode n = AddNode(config, _currMousePos, 0.0f);

                if (config is MasterLayerNodeConfig)
                {
                    MasterLayerNodeConfig masterConfig = config as MasterLayerNodeConfig;
                    masterConfig.Slave.Label = config.Label + "-Slave";
                    AddLinkLine(n, AddNode(masterConfig.Slave, new PointF(_currMousePos.X + 75.0f, _currMousePos.Y), 0.0f));
                }

                netEditor.SelectedObject = n;
            }
        }
Exemple #2
0
        private void libraryNodeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LogPacket[] packets = GetPackets(true);

            if (packets.Length > 0)
            {
                using (SelectLibraryNodeForm frm = new SelectLibraryNodeForm())
                {
                    if (frm.ShowDialog() == DialogResult.OK)
                    {
                        RunScriptFromLibraryNode(packets, frm.Node);

                        if (!parseWithToolStripMenuItem.DropDownItems.ContainsKey(frm.Node.Type.FullName))
                        {
                            ToolStripMenuItem item = new ToolStripMenuItem(frm.Node.Name, null, null, frm.Node.Type.FullName);

                            item.Click += new EventHandler(parseWithNodeLibraryCache_Click);
                            item.Tag = frm.Node;

                            parseWithToolStripMenuItem.DropDownItems.Add(item);
                        }
                    }
                }
            }
        }