diff --git a/PROMS/Volian.Print.Library/CPSGen.cs b/PROMS/Volian.Print.Library/CPSGen.cs new file mode 100644 index 00000000..3aa6491c --- /dev/null +++ b/PROMS/Volian.Print.Library/CPSGen.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml; +using VEPROMS.CSLA.Library; + +namespace Volian.Print.Library +{ + public class CPSGen + { + private vlnParagraph _MyVlnParagraph; + public vlnParagraph MyVlnParagraph + { + get { return _MyVlnParagraph; } + set { _MyVlnParagraph = value; } + } + public CPSGen(vlnParagraph myParagraph) + { + _MyVlnParagraph = myParagraph; + } + public void Generate(string fileName) + { + XmlDocument xd = new XmlDocument(); + XmlElement parent = xd.AppendChild(xd.CreateElement("Items")) as XmlElement; + Generate(0, 0,parent, MyVlnParagraph); + xd.Save(fileName); + } + public void Generate(int level,int fromType,XmlElement parent, vlnParagraph para) + { + ItemInfo itm = para.MyItemInfo; + XmlElement xe = parent.AppendChild(parent.OwnerDocument.CreateElement("Item")) as XmlElement; + AddAttribute(xe, "Level", level); + AddAttribute(xe, "FromType", fromType); + AddAttribute(xe, "Ordinal", itm.Ordinal); + AddAttribute(xe, "ParentID", (itm.ActiveParent as ItemInfo).ItemID); + //AddAttribute(xe, "Xoffset", para.XOffset); + AddAttribute(xe, "ItemID", itm.ItemID); + AddAttribute(xe, "PreviousID", itm.PreviousID); + AddAttribute(xe, "ContentID", itm.ContentID); + AddAttribute(xe, "DTS", itm.MyContent.DTS); + AddAttribute(xe, "UserID", itm.MyContent.UserID); + AddAttribute(xe, "Number", itm.MyContent.Number); + AddAttribute(xe, "Text", itm.MyContent.Text); + AddAttribute(xe, "Type", itm.MyContent.Type); + AddAttribute(xe, "FormatID", itm.MyContent.FormatID); + AddAttribute(xe, "Config", itm.MyContent.Config); + AddAttribute(xe, "Rtf", para.Rtf); + //AddParts(xe, "PartsAbove", para.PartsAbove); + //AddParts(xe, "PartsLeft", para.PartsLeft); + //AddParts(xe, "PartsRight", para.PartsRight); + //AddParts(xe, "PartsBelow", para.PartsBelow); + AddChildren(level,0, parent, "ChildrenAbove", para.ChildrenAbove); + AddChildren(level,0, parent, "ChildrenLeft", para.ChildrenLeft); + AddChildren(level,0, parent, "ChildrenRight", para.ChildrenRight); + AddChildren(level,0, parent, "ChildrenBelow", para.ChildrenBelow); + } + private void AddChildren(int level, int fromType, XmlElement parent, string name, vlnParagraphs children) + { + if (children == null || children.Count == 0) return; + //XmlElement xchildren = xe.OwnerDocument.AppendChild(xe.OwnerDocument.CreateElement(name)) as XmlElement; + foreach(vlnParagraph child in children) + { + //XmlElement xechild = xe.ParentNode.AppendChild(xe.OwnerDocument.CreateElement("Item")) as XmlElement; + Generate(level+1,0,parent,child); + } + } + //private void AddParts(XmlElement xe, string name, vlnPrintObjects parts) + //{ + // if (parts == null || parts.Count == 0) return; + // XmlElement xpart = xe.AppendChild(xe.OwnerDocument.CreateElement(name)) as XmlElement; + // foreach (vlnPrintObject part in parts) + // { + // XmlElement xechild = xpart.AppendChild(xe.OwnerDocument.CreateElement(part.GetType().Name)) as XmlElement; + // Generate(xechild, part); + // } + //} + //private void Generate(XmlElement xe, vlnPrintObject part) + //{ + // AddAttribute(xe, "Xoffset", part.XOffset); + // AddAttribute(xe, "Width", part.Width); + // AddAttribute(xe, "Rtf", part.Rtf); + //} + private void AddAttribute(XmlElement xe, string attr, object val) + { + if (val == null) return; + XmlAttribute xa = xe.OwnerDocument.CreateAttribute(attr); + xa.Value = val.ToString(); + xe.Attributes.Append(xa); + } + } +}