using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Drawing; 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 = ""; _Xp = new XMLProperties(xml); } public DocumentConfig(DocumentInfo documentInfo) { _DocumentInfo = documentInfo; string xml = _DocumentInfo.Config; if (xml == string.Empty) xml = ""; _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"); } } [Category("Printing")] [DisplayName("Color")] [Description("Color of Document Text")] public Color Printing_Color { get { string sColor = _Xp["Printing", "Color"]; if (sColor == string.Empty) sColor = "Transparent"; 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])); } else return Color.FromName(sColor); } set { if (value.IsNamedColor) _Xp["Printing", "Color"] = value.Name; else { _Xp["Printing", "Color"] = string.Format("[{0},{1},{2}]", value.R, value.G, value.B); } OnPropertyChanged("Printing_Color"); } } #endregion #region ToString public override string ToString() { string s = _Xp.ToString(); if (s == "" || s == "") return string.Empty; return s; } #endregion } }