Ejemplo n.º 1
0
        static JObject ConvertOption(ConvContext ctx, XElement xnode, JObject jnode)
        {
            switch (ctx.XParent.Name.LocalName)
            {
            case "radioselect":
            case "select":
            case "multiselect":
            case "pillselect":
            {
                var jopt = new JObject();
                ConvertParamString(ctx, xnode, jopt, "key");
                ConvertParamString(ctx, xnode, jopt, "icon");
                jopt["value"] = (string)xnode;

                var jarr = ctx.JParent["enum"] as JArray;
                jarr.Add(jopt);
                return(null);
            }

            default:
            {
                //

                return(jnode);
            }
            }
        }
Ejemplo n.º 2
0
        static void ConvertGLColLabel(ConvContext ctx, XElement xnode, JObject jnode)
        {
            var text = (string)xnode.Attribute("grid-col-defs");

            if (text == null)
            {
                return;
            }

            var parts = text.Split(' ');

            if (parts.Length != 2)
            {
                throw new InvalidDataException($"Invalid grid-col-defs format for: {text}");
            }

            var cl = new GLColLabel();

            if (int.TryParse(parts[0], out cl.Col1) == false)
            {
                throw new InvalidDataException($"Invalid grid-col-defs format for: {text}");
            }

            if (int.TryParse(parts[1], out cl.Col2) == false)
            {
                throw new InvalidDataException($"Invalid grid-col-defs format for: {text}");
            }
            ctx.ColLabel = cl;
        }
Ejemplo n.º 3
0
 static JObject ConvertSelect(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "value");
     ConvertJSON(ctx, xnode, jnode, "options");
     jnode["enum"] = new JArray();
     return(jnode);
 }
Ejemplo n.º 4
0
        public static JObject ConvertRoot(XDocument xin)
        {
            XElement xroot = xin.Root;

            if (xroot == null ||
                xroot.Name != (XName)"auForm"
                )
            {
                throw new InvalidDataException("Bad or missing root element.");
            }

            var ctx = new ConvContext();

            var jout = new JObject();

            jout["type"] = "form";
            foreach (XElement xsct in xroot.Elements("section"))
            {
                JProperty jsct = ConvertSection(ctx, xsct);
                if (jout.Property(jsct.Name) != null)
                {
                    throw new InvalidDataException($"Duplicate section name: {jsct.Name}");
                }
                jout.Add(jsct);
            }
            return(jout);
        }
Ejemplo n.º 5
0
 static JObject ConvertTextArea(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "path");
     ConvertParam(ctx, xnode, jnode, "conv");
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertJSON(ctx, xnode, jnode, "validate");
     return(jnode);
 }
Ejemplo n.º 6
0
 static JObject ConvertTextBlock(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "path");
     ConvertParam(ctx, xnode, jnode, "conv");
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertParam(ctx, xnode, jnode, "text");
     return(jnode);
 }
Ejemplo n.º 7
0
 static JObject ConvertNumBox(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParamString(ctx, xnode, jnode, "pre");
     ConvertParamString(ctx, xnode, jnode, "post");
     ConvertStringOrJSON(ctx, xnode, jnode, "value");
     ConvertParamBool(ctx, xnode, jnode, "readonly");
     return(jnode);
 }
Ejemplo n.º 8
0
 static JObject ConvertButton(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "text");
     ConvertStringOrJSON(ctx, xnode, jnode, "icon");
     ConvertStringOrJSON(ctx, xnode, jnode, "cssClass");
     ConvertParamString(ctx, xnode, jnode, "width");
     return(jnode);
 }
Ejemplo n.º 9
0
 static JObject ConvertRadioBox(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "text");
     ConvertStringOrJSON(ctx, xnode, jnode, "checked");
     ConvertParamString(ctx, xnode, jnode, "value");
     ConvertParamString(ctx, xnode, jnode, "group");
     ConvertJSON(ctx, xnode, jnode, "font");
     return(jnode);
 }
Ejemplo n.º 10
0
 static JObject ConvertStack(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParamBool(ctx, xnode, jnode, "inline");
     ConvertParamString(ctx, xnode, jnode, "bg");
     ConvertParamString(ctx, xnode, jnode, "overflow-y");
     ConvertParamString(ctx, xnode, jnode, "height");
     ConvertGLColLabel(ctx, xnode, jnode);
     return(jnode);
 }
Ejemplo n.º 11
0
 static JObject ConvertSelect(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "path");
     ConvertParam(ctx, xnode, jnode, "conv");
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertJSON(ctx, xnode, jnode, "validate");
     ConvertJSON(ctx, xnode, jnode, "options");
     jnode["enum"] = new JArray();
     return(jnode);
 }
Ejemplo n.º 12
0
 static JObject ConvertPicker(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "path");
     ConvertParam(ctx, xnode, jnode, "conv");
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertParam(ctx, xnode, jnode, "text");
     ConvertJSON(ctx, xnode, jnode, "validate");
     ConvertJSON(ctx, xnode, jnode, "options");
     return(jnode);
 }
Ejemplo n.º 13
0
        static void ConvertParamString(ConvContext ctx, XElement xnode, JObject jnode, string name)
        {
            var text = (string)xnode.Attribute(name);

            if (text == null)
            {
                return;
            }

            jnode[name] = text;
        }
Ejemplo n.º 14
0
        static void ConvertParamBool(ConvContext ctx, XElement xnode, JObject jnode, string name)
        {
            var value = (bool?)xnode.Attribute(name);

            if (value == null)
            {
                return;
            }

            jnode[name] = value;
        }
Ejemplo n.º 15
0
        static void ConvertJSON(ConvContext ctx, XElement xnode, JObject jnode, string name)
        {
            var text = (string)xnode.Attribute(name);

            if (text == null)
            {
                return;
            }

            jnode[name] = JToken.Parse(text);
        }
Ejemplo n.º 16
0
        static void ConvertStringOrJSON(ConvContext ctx, XElement xnode, JObject jnode, string name)
        {
            var text = (string)xnode.Attribute(name);

            if (text == null)
            {
                return;
            }

            if (text.StartsWith("{") && text.EndsWith("}"))
            {
                jnode[name] = JToken.Parse(text);
            }
            else
            {
                jnode[name] = text;
            }
        }
Ejemplo n.º 17
0
        static void ConvertThickness(ConvContext ctx, XElement xnode, JObject jnode, string name)
        {
            var text = (string)xnode.Attribute(name);

            if (string.IsNullOrEmpty(text))
            {
                return;
            }

            var jthick = new JObject();
            var parts  = text.Split(',');

            switch (parts.Length)
            {
            case 1:
                jthick["top"]    = ConvertMetric(parts[0]);
                jthick["right"]  = ConvertMetric(parts[0]);
                jthick["bottom"] = ConvertMetric(parts[0]);
                jthick["left"]   = ConvertMetric(parts[0]);
                break;

            case 2:
                jthick["top"]    = ConvertMetric(parts[0]);
                jthick["right"]  = ConvertMetric(parts[1]);
                jthick["bottom"] = ConvertMetric(parts[0]);
                jthick["left"]   = ConvertMetric(parts[1]);
                break;

            case 4:
                jthick["top"]    = ConvertMetric(parts[0]);
                jthick["right"]  = ConvertMetric(parts[1]);
                jthick["bottom"] = ConvertMetric(parts[2]);
                jthick["left"]   = ConvertMetric(parts[3]);
                break;

            default:
                throw new InvalidDataException($"Invalid thickness format for: {name}");
            }
            jnode[name] = jthick;
        }
Ejemplo n.º 18
0
        static JProperty ConvertSection(ConvContext pctx, XElement xsct)
        {
            var name = (string)xsct.Attribute("name");

            if (string.IsNullOrEmpty(name))
            {
                throw new InvalidDataException("Missing section name.");
            }

            var cctx = pctx.CreateChild();

            cctx.XParent = xsct;

            var xnode = xsct.Elements().FirstOrDefault();

            if (xnode != null)
            {
                return(new JProperty(name, ConvertNode(cctx, xnode)));
            }
            else
            {
                return(new JProperty(name, new JObject()));
            }
        }
Ejemplo n.º 19
0
 static JObject ConvertColorBox(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "value");
     return(jnode);
 }
Ejemplo n.º 20
0
        static JObject ConvertNode(ConvContext pctx, XElement xnode)
        {
            var jnode = new JObject();

            string name   = xnode.Name.LocalName;
            int    dotpos = name.IndexOf('.');

            if (dotpos >= 0)
            {
                var propName = name.Substring(dotpos + 1);
                var cctx     = pctx.CreateChild();
                foreach (XElement xchild in xnode.Elements())
                {
                    JObject jc = ConvertNode(cctx, xchild);
                    pctx.JParent[propName] = jc;
                    break;
                }
                return(null);
            }
            else
            {
                ConvInfo cvInfo = _cvInfoMap[name];
                jnode["type"] = name;

                var id = (string)xnode.Attribute("id");
                if (string.IsNullOrEmpty(id) == false)
                {
                    pctx.IdMap[id] = true;
                    jnode["id"]    = id;
                }

                ConvertParamString(pctx, xnode, jnode, "halign");
                ConvertParamString(pctx, xnode, jnode, "margin");
                //ConvertThickness(pctx, xnode, jnode, "margin");
                ConvertParamBool(pctx, xnode, jnode, "visible");
                ConvertParamBool(pctx, xnode, jnode, "enabled");

                if (pctx.Parent.ColLabel != null)
                {
                    jnode["gcols"] = new JArray(
                        pctx.Parent.ColLabel.Col1,
                        pctx.Parent.ColLabel.Col2
                        );
                }

                JObject jresult = cvInfo.Handler(pctx, xnode, jnode);

                if (jresult != null)
                {
                    var cctx = pctx.CreateChild();
                    cctx.XParent = xnode;
                    cctx.JParent = jnode;

                    if (string.IsNullOrEmpty(cvInfo.ElementsAllowed))
                    {
                        if (xnode.Elements().Any())
                        {
                            throw new InvalidDataException($"The element {name} does not allow any children elements.");
                        }
                    }
                    else
                    {
                        var      jarr    = new JArray();
                        bool     isJolly = cvInfo.ElementsAllowed == "*";
                        string[] parts   = cvInfo.ElementsAllowed.Split(' ');
                        foreach (XElement xchild in xnode.Elements())
                        {
                            if (isJolly || parts.Contains(xchild.Name.LocalName) || xchild.Name.LocalName.Contains('.'))
                            {
                                JObject jc = ConvertNode(cctx, xchild);
                                if (jc != null)
                                {
                                    jarr.Add(jc);
                                }
                            }
                            else
                            {
                                throw new InvalidDataException($"The element {name} does not allow the {xchild.Name.LocalName} element as child.");
                            }
                        }
                        if (jarr.Count != 0)
                        {
                            jresult["nodes"] = jarr;
                        }
                    }
                }

                return(jresult);
            }
        }
Ejemplo n.º 21
0
 static JObject ConvertGridLayout(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParamString(ctx, xnode, jnode, "bg");
     ConvertGLColLabel(ctx, xnode, jnode);
     return(jnode);
 }
Ejemplo n.º 22
0
 static JObject ConvertRow(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParamString(ctx, xnode, jnode, "bg");
     ConvertParamString(ctx, xnode, jnode, "header");
     return(jnode);
 }
Ejemplo n.º 23
0
 static JObject ConvertHost(ConvContext ctx, XElement xnode, JObject jnode)
 {
     //ConvertParamString(ctx, xnode, jnode, "overflow-y");
     ConvertParamString(ctx, xnode, jnode, "height");
     return(jnode);
 }
Ejemplo n.º 24
0
 static JObject ConvertButton(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertParam(ctx, xnode, jnode, "icon");
     return(jnode);
 }
Ejemplo n.º 25
0
 static JObject ConvertTextArea(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "text");
     return(jnode);
 }
Ejemplo n.º 26
0
 static JObject ConvertGridLayout(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "label");
     return(jnode);
 }
Ejemplo n.º 27
0
 static JObject ConvertPicker(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "value");
     ConvertJSON(ctx, xnode, jnode, "options");
     return(jnode);
 }
Ejemplo n.º 28
0
 static JObject ConvertCheckBox(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertStringOrJSON(ctx, xnode, jnode, "text");
     ConvertStringOrJSON(ctx, xnode, jnode, "checked");
     return(jnode);
 }
Ejemplo n.º 29
0
 static JObject ConvertVStack(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "label");
     ConvertGLColLabel(ctx, xnode, jnode);
     return(jnode);
 }
Ejemplo n.º 30
0
 static JObject ConvertPanel(ConvContext ctx, XElement xnode, JObject jnode)
 {
     ConvertParam(ctx, xnode, jnode, "header");
     return(jnode);
 }