132 lines
3.4 KiB
C#
132 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace VEPROMS.CSLA.Library
|
|
{
|
|
[Serializable]
|
|
[TypeConverter(typeof(ExpandableObjectConverter))]
|
|
public class DocumentConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
|
|
{
|
|
#region XML
|
|
private XMLProperties _Xp;
|
|
private XMLProperties Xp
|
|
{
|
|
get { return _Xp; }
|
|
}
|
|
#endregion
|
|
#region Constructors
|
|
public Document _Document;
|
|
private DocumentInfo _DocumentInfo;
|
|
public DocumentConfig(Document document)
|
|
{
|
|
_Document = document;
|
|
string xml = _Document.Config;
|
|
if (xml == string.Empty) xml = "<config/>";
|
|
_Xp = new XMLProperties(xml);
|
|
}
|
|
public DocumentConfig(DocumentInfo documentInfo)
|
|
{
|
|
_DocumentInfo = documentInfo;
|
|
string xml = _DocumentInfo.Config;
|
|
if (xml == string.Empty) xml = "<config/>";
|
|
_Xp = new XMLProperties(xml);
|
|
}
|
|
internal string GetValue(string group, string item)
|
|
{
|
|
return _Xp[group, item];
|
|
}
|
|
#endregion
|
|
#region Properties
|
|
[Category("General")]
|
|
[DisplayName("Name")]
|
|
[Description("Name")]
|
|
public string Name
|
|
{
|
|
get { return (_Document != null ? _Document.LibTitle : _DocumentInfo.LibTitle); }
|
|
set { if (_Document != null) _Document.LibTitle = value; }
|
|
}
|
|
[Category("General")]
|
|
[DisplayName("Comment")]
|
|
[RefreshProperties(RefreshProperties.All)]
|
|
[Description("Comment")]
|
|
public string LibDoc_Comment
|
|
{
|
|
get
|
|
{
|
|
string s = _Xp["LibDoc", "Comment"];// get the saved value
|
|
|
|
return s;
|
|
}
|
|
set
|
|
{
|
|
_Xp["LibDoc", "Comment"] = value;
|
|
OnPropertyChanged("LibDoc_Comment");
|
|
}
|
|
}
|
|
[Category("Printing")]
|
|
[DisplayName("Length")]
|
|
[Description("Length of Document in Full and Partial Pages")]
|
|
public float Printing_Length
|
|
{
|
|
get
|
|
{
|
|
string s = _Xp["Printing", "Length"];// get the saved value
|
|
|
|
return float.Parse(s);
|
|
}
|
|
set
|
|
{
|
|
_Xp["Printing", "Length"] = string.Format("{0:0.0000}", value);
|
|
OnPropertyChanged("Printing_Length");
|
|
}
|
|
}
|
|
private static Regex byARGB = new Regex(@"Color \[A=([0-9]*), R=([0-9]*), G=([0-9]*), B=([0-9]*)\]");
|
|
private static Regex byName = new Regex(@"Color \[(.*)\]");
|
|
public static Color ColorFromString(string sColor)
|
|
{
|
|
Match myMatch = byARGB.Match(sColor);
|
|
if (myMatch.Groups.Count == 5)
|
|
return Color.FromArgb(int.Parse(myMatch.Groups[1].Value), int.Parse(myMatch.Groups[2].Value), int.Parse(myMatch.Groups[3].Value), int.Parse(myMatch.Groups[4].Value));
|
|
myMatch = byName.Match(sColor);
|
|
if (myMatch.Groups.Count == 2)
|
|
return Color.FromName(myMatch.Groups[1].Value);
|
|
if (sColor[0] == '[')
|
|
{
|
|
string[] parts = sColor.Substring(1, sColor.Length - 2).Split(",".ToCharArray());
|
|
return Color.FromArgb(Int32.Parse(parts[0]), Int32.Parse(parts[1]), Int32.Parse(parts[2]), Int32.Parse(parts[3]));
|
|
}
|
|
else return Color.FromName(sColor);
|
|
|
|
}
|
|
[Category("Printing")]
|
|
[DisplayName("Color")]
|
|
[Description("Color of Document Text")]
|
|
public Color Printing_Color
|
|
{
|
|
get
|
|
{
|
|
string sColor = _Xp["Printing", "Color"];
|
|
return ColorFromString(sColor);
|
|
}
|
|
set
|
|
{
|
|
_Xp["Printing", "Color"] = value.ToString();
|
|
OnPropertyChanged("Printing_Color");
|
|
}
|
|
}
|
|
#endregion
|
|
#region ToString
|
|
public override string ToString()
|
|
{
|
|
string s = _Xp.ToString();
|
|
if (s == "<Config/>" || s == "<Config></Config>") return string.Empty;
|
|
return s;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|