Example #1
0
        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");
            }
        }
Example #2
0
 public void DeserializeControls(HeliosVisualCollection controls, XmlReader xmlReader)
 {
     if (!xmlReader.IsEmptyElement)
     {
         xmlReader.ReadStartElement("Children");
         while (xmlReader.NodeType != XmlNodeType.EndElement)
         {
             HeliosVisual control = DeserializeControl(xmlReader);
             if (control != null)
             {
                 controls.Add(control);
             }
         }
         xmlReader.ReadEndElement();
     }
     else
     {
         xmlReader.Read();
     }
 }