private void rebuildConnections(GraphControl graph, Dictionary <string, CConnectionFields> inputs, Dictionary <string, CConnectionFields> outputs) { foreach (String key in inputs.Keys) { CConnectionFields inputFields = inputs[key]; NodeConnection conn = new NodeConnection(); conn.Tag = TagFactory.GetTagObject(inputFields.Tag); conn.Name = inputFields.name; String[] fromNameParts = inputFields.From.Split(':'); String fromNodeName = fromNameParts[0]; String fromItemName = fromNameParts[1]; String[] toNameParts = inputFields.To.Split(':'); String toNodeName = toNameParts[0]; String toItemName = toNameParts[1]; Node fromNode = findNode(graph, fromNodeName); NodeItem fromItem = findItem(fromNode, fromItemName); Node toNode = findNode(graph, toNodeName); NodeItem toItem = findItem(toNode, toItemName); graph.Connect(fromItem.Output, toItem.Input); conn.FromItem = fromItemName; conn.ToItem = toItemName; } foreach (String key in outputs.Keys) { CConnectionFields outputFields = outputs[key]; NodeConnection conn = new NodeConnection(); conn.Tag = TagFactory.GetTagObject(outputFields.Tag); conn.Name = outputFields.name; String[] fromNameParts = outputFields.From.Split(':'); String fromNodeName = fromNameParts[0]; String fromItemName = fromNameParts[1]; String[] toNameParts = outputFields.To.Split(':'); String toNodeName = toNameParts[0]; String toItemName = toNameParts[1]; Node fromNode = findNode(graph, fromNodeName); NodeItem fromItem = findItem(fromNode, fromItemName); Node toNode = findNode(graph, toNodeName); NodeItem toItem = findItem(toNode, toItemName); graph.Connect(fromItem.Output, toItem.Input); conn.FromItem = fromItemName; conn.ToItem = toItemName; } graph.Refresh(); }
private void rebuildGraph(GraphControl graph) { Dictionary <String, CConnectionFields> inputs = new Dictionary <String, CConnectionFields>(); Dictionary <String, CConnectionFields> outputs = new Dictionary <String, CConnectionFields>(); foreach (CNodeFields node in m_graphFields.Nodes) { m_idNameMap.Add(node.id, node.name); Node n = new Node(node.Title); n.Location = node.Location; foreach (CNodeItemFields item in node.Items) { String name = ""; if (item.name != null) { name = item.name.Split(':')[1]; } if (item.Input != null) { foreach (CConnectionFields conn in item.Input) { if (!inputs.ContainsKey(conn.id)) { inputs.Add(conn.id, conn); } } } if (item.Output != null) { foreach (CConnectionFields conn in item.Output) { if (!outputs.ContainsKey(conn.id)) { outputs.Add(conn.id, conn); } } } switch (item.ItemType) { case "Graph.Items.NodeCompositeItem": { NodeCompositeItem temp = new NodeCompositeItem(item.IOMode); temp.Name = name; foreach (CItemPartFields part in item.ItemParts) { switch (part.PartType) { case "Graph.Items.ItemTextBoxPart": { ItemTextBoxPart p = new ItemTextBoxPart(part.Text); p.Name = part.name; temp.AddPart(p); } break; default: { } break; } } if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } if (temp.Name.Contains("button_")) { temp.Clicked += m_parentForm.GetConvMouseHandler(); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); n.AddItem(temp); } break; case "Graph.Items.NodeTextBoxItem": { NodeTextBoxItem temp = new NodeTextBoxItem(item.Text, item.IOMode); temp.Name = name; if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); n.AddItem(temp); } break; case "Graph.Items.NodeLabelItem": { NodeLabelItem temp = new NodeLabelItem(item.Text, item.IOMode); temp.Name = name; if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); if (temp.Name == "EditNodeItem") { temp.Clicked += m_parentForm.GetEditMouseHandler(); } n.AddItem(temp); } break; default: { //NodeItem temp = new NodeItem(item.IOMode); } break; } } graph.AddNode(n); } rebuildConnections(graph, inputs, outputs); }