Example #1
0
        public override void ReadXml(XmlReader reader)
        {
            TypeConverter colorConverter = TypeDescriptor.GetConverter(typeof(Color));

            base.ReadXml(reader);
            KnobImage = reader.ReadElementString("KnobImage");
            if (!reader.IsEmptyElement)
            {
                Positions.Clear();
                reader.ReadStartElement("Positions");
                int i = 1;
                while (reader.NodeType != XmlNodeType.EndElement)
                {
                    Positions.Add(new RotarySwitchPosition(this, i++, reader.GetAttribute("Name"), Double.Parse(reader.GetAttribute("Rotation"), CultureInfo.InvariantCulture)));
                    reader.Read();
                }
                reader.ReadEndElement();
            }
            else
            {
                reader.Read();
            }
            DefaultPosition = int.Parse(reader.ReadElementString("DefaultPosition"), CultureInfo.InvariantCulture);

            if (reader.Name.Equals("Lines"))
            {
                DrawLines = true;
                reader.ReadStartElement("Lines");
                LineThickness = double.Parse(reader.ReadElementString("Thickness"), CultureInfo.InvariantCulture);
                LineLength    = double.Parse(reader.ReadElementString("Length"), CultureInfo.InvariantCulture);
                LineColor     = (Color)colorConverter.ConvertFromInvariantString(reader.ReadElementString("Color"));
                reader.ReadEndElement();
            }
            else
            {
                DrawLines = false;
            }

            if (reader.Name.Equals("Labels"))
            {
                DrawLabels = true;
                reader.ReadStartElement("Labels");
                LabelColor     = (Color)colorConverter.ConvertFromInvariantString(reader.ReadElementString("Color"));
                MaxLabelWidth  = double.Parse(reader.ReadElementString("MaxWidth"), CultureInfo.InvariantCulture);
                MaxLabelHeight = double.Parse(reader.ReadElementString("MaxHeight"), CultureInfo.InvariantCulture);
                LabelDistance  = double.Parse(reader.ReadElementString("Distance"), CultureInfo.InvariantCulture);
                LabelFormat.ReadXml(reader);
                reader.ReadEndElement();
            }
            else
            {
                DrawLabels = false;
            }

            if (reader.Name.Equals("ClickType"))
            {
                reader.ReadStartElement("ClickType");
                ClickType = (ClickType)Enum.Parse(typeof(ClickType), reader.ReadElementString("Type"));
                if (ClickType == Controls.ClickType.Swipe)
                {
                    SwipeSensitivity = double.Parse(reader.ReadElementString("Sensitivity"), CultureInfo.InvariantCulture);
                }
                reader.ReadEndElement();
            }
            else
            {
                ClickType        = Controls.ClickType.Swipe;
                SwipeSensitivity = 0d;
            }

            try
            {
                bool mw;
                bool.TryParse(reader.ReadElementString("MouseWheel"), out mw);
                MouseWheelAction = mw;
            }
            catch
            {
                MouseWheelAction = true;
            }

            BeginTriggerBypass(true);
            CurrentPosition = DefaultPosition;
            EndTriggerBypass(true);
        }