using System; using System.Collections.Generic; using System.Xml.Linq; using System.IO.Packaging; using System.Collections.ObjectModel; namespace Novacode { public class Footer : Container, IParagraphContainer { public bool PageNumbers { get { return false; } set { XElement e = XElement.Parse (@" 1 " ); Xml.AddFirst(e); } } internal Footer(DocX document, XElement xml, PackagePart mainPart): base(document, xml) { this.mainPart = mainPart; } public override Paragraph InsertParagraph() { Paragraph p = base.InsertParagraph(); p.PackagePart = mainPart; return p; } public override Paragraph InsertParagraph(int index, string text, bool trackChanges) { Paragraph p = base.InsertParagraph(index, text, trackChanges); p.PackagePart = mainPart; return p; } public override Paragraph InsertParagraph(Paragraph p) { p.PackagePart = mainPart; return base.InsertParagraph(p); } public override Paragraph InsertParagraph(int index, Paragraph p) { p.PackagePart = mainPart; return base.InsertParagraph(index, p); } public override Paragraph InsertParagraph(int index, string text, bool trackChanges, Formatting formatting) { Paragraph p = base.InsertParagraph(index, text, trackChanges, formatting); p.PackagePart = mainPart; return p; } public override Paragraph InsertParagraph(string text) { Paragraph p = base.InsertParagraph(text); p.PackagePart = mainPart; return p; } public override Paragraph InsertParagraph(string text, bool trackChanges) { Paragraph p = base.InsertParagraph(text, trackChanges); p.PackagePart = mainPart; return p; } public override Paragraph InsertParagraph(string text, bool trackChanges, Formatting formatting) { Paragraph p = base.InsertParagraph(text, trackChanges, formatting); p.PackagePart = mainPart; return p; } public override Paragraph InsertEquation(String equation) { Paragraph p = base.InsertEquation(equation); p.PackagePart = mainPart; return p; } public override ReadOnlyCollection Paragraphs { get { ReadOnlyCollection l = base.Paragraphs; foreach (var paragraph in l) { paragraph.mainPart = mainPart; } return l; } } public override List Tables { get { List
l = base.Tables; l.ForEach(x => x.mainPart = mainPart); return l; } } public new Table InsertTable(int rowCount, int columnCount) { if (rowCount < 1 || columnCount < 1) throw new ArgumentOutOfRangeException("Row and Column count must be greater than zero."); Table t = base.InsertTable(rowCount, columnCount); t.mainPart = mainPart; return t; } public new Table InsertTable(int index, Table t) { Table t2 = base.InsertTable(index, t); t2.mainPart = mainPart; return t2; } public new Table InsertTable(Table t) { t = base.InsertTable(t); t.mainPart = mainPart; return t; } public new Table InsertTable(int index, int rowCount, int columnCount) { if (rowCount < 1 || columnCount < 1) throw new ArgumentOutOfRangeException("Row and Column count must be greater than zero."); Table t = base.InsertTable(index, rowCount, columnCount); t.mainPart = mainPart; return t; } } }