Exemplo n.º 1
0
        public static Label Create(XmlReader reader, IWidget parent = null)
        {
            Label label = new Label();

            label.ReadCurrentElement(reader, parent);

            if (reader.GetAttribute("alignment") != null)
            {
                label.SetAlignment((TextAnchor)Enum.Parse(typeof(TextAnchor), reader.GetAttribute("alignment")));
            }

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case "Text":
                        string tType = reader.GetAttribute("type");
                        switch (tType)
                        {
                        case "formatted":
                            label.textType = TextType.Formatted;
                            label.Text     = reader.ReadElementContentAsString();
                            break;

                        case "dynamic":
                            label.textType = TextType.Dynamic;

                            string argName  = "@" + reader.GetAttribute("argument");
                            string propName = reader.ReadElementContentAsString();
                            label.LinkArgNameToValue(argName, propName, label.valueIndex++);

                            label.Text = propName;
                            break;

                        case "function":
                            label.textModifier = new GenericAction(label, "OnTextChange", "UI", reader.ReadElementContentAsString());
                            break;

                        case "script":
                            throw new NotImplementedException();

                        default:
                        case "static":
                            label.textType = TextType.Static;
                            label.Text     = reader.ReadElementContentAsString();
                            break;
                        }
                        break;

                    default:
                        label.ReadSubElement(reader);
                        break;
                    }
                }
            }

            label.FinalizeRead();

            return(label);
        }