public void CreateViewer(MathNodeRoot item) { MathExpViewer mv = holder.AddMathViewer(item, 50, 50); ReturnIcon ri = holder.CreateReturnIcon(item.DataType); LinkLineNode.JoinToEnd((LinkLineNode)mv.OutputPorts[0].NextNode, ri.InPort); }
public MathExpViewer AddEmptyMathExpViewer() { IDesignerHost host = (IDesignerHost)dsf.GetService(typeof(IDesignerHost)); MathExpViewer v = (MathExpViewer)host.CreateComponent(typeof(MathExpViewer)); root.Controls.Add(v); return(v); }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <returns></returns> public MathExpViewer LoadMathItem(MathExpItem item) { if (string.IsNullOrEmpty(item.Name)) { item.Name = this.CreateName("item"); } MathExpViewer v = AddEmptyMathExpViewer(); // v.ImportMathItem(item); return(v); }
private void copyToClipboard() { if (selectionService.PrimarySelection != null) { MathExpViewer mv = selectionService.PrimarySelection as MathExpViewer; if (mv != null) { MathExpGroup mg = new MathExpGroup(); MathExpItem mi = mv.ExportMathItem(mg); XmlDocument doc = new XmlDocument(); XmlNode node = doc.CreateElement("MathExpression"); doc.AppendChild(node); mi.SaveToXmlNode(_writer, node); Clipboard.SetData("MathItem", doc.OuterXml); enablePaste(); } } }
/// <summary> /// /// </summary> /// <param name="MathExpression"></param> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public MathExpViewer AddMathViewer(MathNodeRoot MathExpression, int x, int y) { string name = CreateName(XmlSerialization.XML_Math); IDesignerHost host = (IDesignerHost)dsf.GetService(typeof(IDesignerHost)); MathExpViewer v = (MathExpViewer)host.CreateComponent(typeof(MathExpViewer)); root.Controls.Add(v); v.Visible = true; v.Location = new Point(x, y); // v.LoadData((MathNodeRoot)MathExpression.Clone()); // v.Name = name; v.Site.Name = v.Name; propertyGrid1.SelectedObject = v; root.Refresh(); root.Changed = true; return(v); }
void componentChangeService_ComponentRemoving(object sender, ComponentEventArgs e) { if (bLoading) { return; } MathExpViewer mv = e.Component as MathExpViewer; if (mv != null) { List <LinkLineNodePort> ports = mv.GetPorts(); for (int i = 0; i < ports.Count; i++) { LinkLineNode l = ports[i]; l.ClearLine(); root.Controls.Remove(ports[i]); root.Controls.Remove(ports[i].Label); if (l is LinkLineNodeInPort) { if (l.LinkedOutPort == null) { //it is not linked to an output, remove all nodes l = (LinkLineNode)l.PrevNode; while (l != null) { root.Controls.Remove(l); l = (LinkLineNode)l.PrevNode; } } else { l.LinkedOutPort.LinkedPortID = 0; //replace this port with a node LinkLineNode prev = (LinkLineNode)l.PrevNode; LinkLineNode end = new LinkLineNode(null, prev); end.Location = l.Location; root.Controls.Add(end); prev.SetNext(end); if (prev.Line == null) { prev.CreateForwardLine(); } else { if (prev.Line.EndPoint == l) { prev.Line.SetEnd(end); } else { end.CreateBackwardLine(); } } } } else if (l is LinkLineNodeOutPort) { if (l.LinkedInPort == null) { //it is not linked to an input, remove all nodes l = (LinkLineNode)l.NextNode; while (l != null) { root.Controls.Remove(l); l = (LinkLineNode)l.NextNode; } } else { l.LinkedInPort.LinkedPortID = 0; //replace this port with a node LinkLineNode next = (LinkLineNode)l.NextNode; if (next.Parent != null) { LinkLineNode end = new LinkLineNode(next, null); end.Location = l.Location; next.Parent.Controls.Add(end); next.SetPrevious(end); if (next.Line == null) { next.CreateBackwardLine(); } else { if (next.Line.StartPoint == l) { next.Line.SetStart(end); } else { end.CreateForwardLine(); } } } } } } } }