public void PasteFromClipboard() { INode node; using (MemoryStream stream = new MemoryStream()) { StreamWriter writer = new StreamWriter(stream); writer.Write((string)Clipboard.GetDataObject().GetData(DataFormats.UnicodeText, true)); writer.Flush(); stream.Position = 0; BOP.Deserializer deserializer = DesignerTree.FormDesigner.FrontendSession.CreateDeserializer(); deserializer.FindReference += new BOP.FindReferenceHandler(DeserializeFindReference); node = (INode)deserializer.Deserialize(stream, null); DesignerTree.FormDesigner.Dataphoria.Warnings.AppendErrors(DesignerTree.FormDesigner, deserializer.Errors, true); } Node.Children.Add(node); RecursiveGetUniqueName(node); // make names unique after adding the node in order to properly account for all nodes DesignerNode designerNode = AddNode(node); TreeView.SelectedNode = designerNode; designerNode.ExpandAll(); DesignerTree.Modified(); }
public void CopyFromNode(DesignerNode source, DropLinePosition position) { INode node; using (MemoryStream stream = new MemoryStream()) { BOP.Serializer serializer = DesignerTree.FormDesigner.FrontendSession.CreateSerializer(); serializer.Serialize(stream, source); DesignerTree.FormDesigner.Dataphoria.Warnings.AppendErrors(DesignerTree.FormDesigner, serializer.Errors, true); stream.Position = 0; BOP.Deserializer deserializer = DesignerTree.FormDesigner.FrontendSession.CreateDeserializer(); deserializer.FindReference += new BOP.FindReferenceHandler(DeserializeFindReference); node = (INode)deserializer.Deserialize(stream, null); DesignerTree.FormDesigner.Dataphoria.Warnings.AppendErrors(DesignerTree.FormDesigner, deserializer.Errors, true); } RecursiveGetUniqueName(node); PlaceNewNode(node, position); DesignerTree.Modified(); }