示例#1
0
        private static Layout LayoutFromXml(XElement layoutXml, Gadget parent = null)
        {
            var layout = new Layout();

            /*foreach (var gadgetXml in layoutXml.Elements()) {
             *  layout.Gadgets.Add(GadgetFromXml(gadgetXml));
             * }*/
            layout.Gadgets.AddRange(GadgetsFromXml(layoutXml, parent));
            return(layout);
        }
示例#2
0
        private static Gadget[] GadgetsFromXml(XElement gadgetsXml, Gadget parent = null)
        {
            var children = new List <Gadget>();

            foreach (var childXml in gadgetsXml.Elements())
            {
                switch (childXml.Name.LocalName)
                {
                case "gadget": children.Add(GadgetFromXml(childXml, parent)); break;
                }
            }
            return(children.OrderBy(c => c.Z).ToArray());
        }
示例#3
0
        private static Gadget GadgetFromXml(XElement gadgetXml, Gadget parent = null)
        {
            Debug.Assert(gadgetXml.Name.LocalName == "gadget");
            var    type   = gadgetXml.AttributeOrNull("type");
            Gadget gadget = null;

            gadget = new Gadget(type);
            foreach (var attr in gadgetXml.Attributes())
            {
                switch (attr.Name.LocalName)
                {
                case "name": gadget.Name = attr.Value; break;

                case "size1024": gadget.Rectangle1024 = ToRectangle(attr.Value); break;

                case "sizeRel1024": {
                    var rect = ToRectangle(attr.Value);
                    rect.X               = rect.X * parent.Rectangle1024.Width / 1024;
                    rect.Y               = rect.Y * parent.Rectangle1024.Height / 768;
                    rect.Width           = rect.Width * parent.Rectangle1024.Width / 1024;
                    rect.Height          = rect.Height * parent.Rectangle1024.Height / 768;
                    rect.X              += parent.Rectangle1024.X;
                    rect.Y              += parent.Rectangle1024.Y;
                    gadget.Rectangle1024 = rect;
                } break;

                case "hidden": gadget.Hidden = true; break;

                case "z": gadget.Z = int.Parse(attr.Value); break;

                default: gadget.Values.Add(attr.Name.LocalName, attr.Value); break;
                }
            }
            gadget.Text         = gadgetXml.GetImmediateValue();
            gadget.Command      = gadgetXml.ElementOrNull("command");
            gadget.Children     = GadgetsFromXml(gadgetXml, gadget);
            gadget.StateEntries = gadgetXml.Elements("stateentry").Select(e =>
                                                                          new StateEntry()
            {
                Background = e.AttributeOrNull("background"),
            }
                                                                          ).ToArray();
            foreach (var child in gadget.Children)
            {
                child.Parent = gadget;
            }
            return(gadget);
        }