Added unit tests.
Removed overloads which confussed API.
Its now possible to create one Picture and insert it into the main document, headers and footers.
2) Gave UnitTests internal access to DocX.dll
DocX AssemblyInfo.cs
[assembly: InternalsVisibleTo("UnitTests")]
3) Updated target framework to .NET 4.0.
4) Fixed bug with InsertText() Formatting object was set to null by default, should have been new Formatting()
Added support for document orientation (portrait or landscape), below is a code example of how to use this new feature.
// Create a new document.
using (DocX document = DocX.Create(@"C:\Users\Cathal\Desktop\Hello.docx"))
{
// Set this documents orientation to landscape and save.
document.PageLayout.Orientation = Orientation.Landscape;
document.SaveAs(@"Landscape.docx");
// Set this documents orientation to portrait and save.
document.PageLayout.Orientation = Orientation.Portrait;
document.SaveAs(@"Portrait.docx");
}
Save() now extracts the first <w:sectPr> tag instead of looking for one at the 'correct' document position.
Apparently <w:sectPr> tags can even be nested inside <w:Prp> tags and word will still open them.
Thanks to srwright for bringing this bug to my attention.
Rewrote the core behind (Insert and Remove)Text() functions. Most if not all issues with XElement splitting have been fixed by this changeset.
Major new functions are listed below.
Paragraph
-----------
GetFirstRunEffectedByInsert()
GetFirstRunEffectedByInsertRecursive()
Run
----
GetFirstTextEffectedByInsert()
GetFirstTextEffectedByInsertRecursive()
HelperFunctions
-----------------
GetText
GetTextRecursive
GetSize(XElement Xml)
This new recursive search method does not return the same Paragraph multiple times thus the problem with Textbox's has also been fixed.
Fixed a bug in Paragraph.AppendHyperlink(h) that caused any custom formatting to be applied to the runs before the Hyperlink instead of the Hyperlink itself. The below is now possible
Paragraph p = document.InsertParagraph();
p.Append("Check out this ").Color(Color.Red).AppendHyperlink(h).Color(Color.Green).Append(", it's really cool").Color(Color.Blue);
Removed Rebuild[Images, Pictures, Tables, CustomProperties], this work is now done by getter functions, this is a much cleaner approach.
Added Getter and Setter functions for Hyperlink. Also added Hyperlink properties for Document, Paragraph, Table, Row and Cell.
Added similar functions for Pictures.
----------
Created an abstract class called DocXElement and made every document element such as {Table, Row, Cell, Paragraph, Run, Text, etc} extend it.
Created an abstract class InsertBeforeOrAfter which is derived from DocXElement. This provides functions for inserting, page breaks, Paragraphs and Tables before and after self.
Moved Text and Run inside Paragraph, keep consistancy with Table which contains Row and Cell.
To Do: Investigated why the Picture class had two internal constructors. I removed one.
Added a _ to each .cs file that does not contain instanceable types, {Enumerations.cs, Extensions.cs, etc}
Bugs fixed
----------
Cell had a parameter Paragraph, this was incorrect as paragraphs can contain multiple Paragraphs. Now it returns a List<Paragraph>
InsertDocProperty now returns a DocProperty instead of void.
New features
------------
InsertDocProperty now contains overloads for the parameter track changes.
Cell now contains a Shading property, this can be used to set the background color of a cell.
Cathal: Added overloads to ReplaceText for Format checking and replacement.
Joel: Added Row.MergeCells
Joel: Added Row.Height property
Joel: Added Cell.Width property
A huge thanks to Joel: The first user to submit working & tested functions\properties for inclusion in DocX.
Cleaned up: This is the full source for DocX v1.0.0.7 sorry about the confussion. Visual Studio's Team Foundation Server plugin dosen't like me very much.