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 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);
        }
Example #3
0
        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);
        }