public IEnumerable <string> DeserializeControl(HeliosVisualCollection controls, XmlReader xmlReader) { TypeConverter boolConverter = TypeDescriptor.GetConverter(typeof(bool)); HeliosVisual control = (HeliosVisual)CreateNewObject("Visual", xmlReader.GetAttribute("TypeIdentifier")); if (control != null) { string name = xmlReader.GetAttribute("Name"); if (xmlReader.GetAttribute("SnapTarget") != null) { control.IsSnapTarget = (bool)boolConverter.ConvertFromInvariantString(xmlReader.GetAttribute("SnapTarget")); } if (xmlReader.GetAttribute("Locked") != null) { control.IsLocked = (bool)boolConverter.ConvertFromInvariantString(xmlReader.GetAttribute("Locked")); } if (xmlReader.IsEmptyElement) { xmlReader.Read(); } else { xmlReader.ReadStartElement("Control"); control.ReadXml(xmlReader); foreach (string progress in DeserializeControls(control.Children, xmlReader)) { yield return(progress); } ; xmlReader.ReadEndElement(); } control.Name = name; controls.Add(control); yield return($"loaded {control.TypeIdentifier}"); } else { xmlReader.Skip(); yield return("failed to load a control"); } }
public HeliosVisual DeserializeControl(XmlReader xmlReader) { TypeConverter boolConverter = TypeDescriptor.GetConverter(typeof(bool)); HeliosVisual control = (HeliosVisual)CreateNewObject("Visual", xmlReader.GetAttribute("TypeIdentifier")); if (control != null) { string name = xmlReader.GetAttribute("Name"); if (xmlReader.GetAttribute("SnapTarget") != null) { control.IsSnapTarget = (bool)boolConverter.ConvertFromInvariantString(xmlReader.GetAttribute("SnapTarget")); } if (xmlReader.GetAttribute("Locked") != null) { control.IsLocked = (bool)boolConverter.ConvertFromInvariantString(xmlReader.GetAttribute("Locked")); } if (xmlReader.IsEmptyElement) { xmlReader.Read(); } else { xmlReader.ReadStartElement("Control"); control.ReadXml(xmlReader); DeserializeControls(control.Children, xmlReader); xmlReader.ReadEndElement(); } control.Name = name; } else { xmlReader.Skip(); } return(control); }
public HeliosVisual CreateInstance() { HeliosVisual control = ConfigManager.ModuleManager.CreateControl(_typeIdentifier); if (control != null) { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; settings.CloseInput = true; StringReader templateReader = new StringReader(_templateControl); XmlReader xmlReader = XmlReader.Create(templateReader, settings); xmlReader.ReadStartElement("TemplateValues"); control.ReadXml(xmlReader); xmlReader.ReadEndElement(); xmlReader.Close(); templateReader.Close(); control.Name = Name; } return(control); }