Exemple #1
0
        public override object exec(s.Node <object> args)
        {
            String msg = args.First() as String;

            MessageBox.Show(msg);
            return(null);
        }
Exemple #2
0
        public override object exec(s.Node <object> args)
        {
            String type = args.First() as String;

            if (type == "button")
            {
                return(new Button());
            }
            else if (type == "div")
            {
                return(new Panel());
            }
            else if (type == "flow")
            {
                return(new FlowLayoutPanel());
            }
            else if (type == "input")
            {
                TextBox t = new TextBox();
                t.ImeMode = ImeMode.HangulFull;
                return(t);
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
        public WinFormMVE(MainForm form)
        {
            Encoding encoding   = new UTF8Encoding(false);
            char     line_split = '\n';

            s.S slib = new s.S(line_split, encoding);
            slib.addDef("read", new s.library.Read(line_split, encoding));
            slib.addDef("write", new s.library.Write());
            slib.addDef("cache", new s.library.Cache());
            //slib.addDef("build-element", new BuildElement());
            slib.loadLib(s.LibPath.instance().calculate("mve/index.lisp"), "mve", s.Node <Object> .extend(DOM.build(), null));
            s.Function      fun = slib.run("./s/index/index.lisp") as s.Function;
            s.Node <Object> o   = fun.exec(null) as s.Node <Object>;

            s.Function getElement = s.Node <Object> .kvs_find1st(o, "getElement") as s.Function;

            s.Function init = s.Node <Object> .kvs_find1st(o, "init") as s.Function;

            s.Function destroy = s.Node <Object> .kvs_find1st(o, "destroy") as s.Function;

            Control els = getElement.exec(null) as Control;

            form.Controls.Add(els);
            els.Dock = DockStyle.Fill;
            init.exec(null);
            form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(form_FormClosing);
            this.destroy      = destroy;
        }
Exemple #4
0
        public override object exec(s.Node <object> args)
        {
            Control el = args.First() as Control;

            args = args.Rest();
            Control child = args.First() as Control;

            el.Controls.Remove(child);
            return(null);
        }
Exemple #5
0
        private Object loadValue(String relative_path, bool delay, s.Node <Object> delay_args)
        {
            Object value = s.library.Load.run_e(s.Util.exe_path(relative_path), scope, lineSplit, encoding);

            if (delay)
            {
                value = (value as Function).exec(delay_args);
            }
            return(value);
        }
Exemple #6
0
        public override object exec(s.Node <object> args)
        {
            Control old_e = args.First() as Control;

            args = args.Rest();
            Control new_e   = args.First() as Control;
            int     old_idx = old_e.Parent.Controls.IndexOf(old_e);

            old_e.Parent.Controls.Add(new_e);
            old_e.Parent.Controls.SetChildIndex(new_e, old_idx);
            old_e.Parent.Controls.Remove(old_e);
            return(null);
        }
Exemple #7
0
 /*将值作为kvs挂载*/
 private S loadLibKVS(Object kvs)
 {
     s.Node <Object> tmp = kvs as s.Node <Object>;
     while (tmp != null)
     {
         String key = tmp.First() as String;
         tmp = tmp.Rest();
         Object value = tmp.First();
         tmp   = tmp.Rest();
         scope = s.Node <Object> .kvs_extend(key, value, scope);
     }
     return(this);
 }
Exemple #8
0
        public override object exec(s.Node <object> args)
        {
            String       msg = args.First() as String;
            DialogResult dr  = MessageBox.Show(msg, "", MessageBoxButtons.OKCancel);

            if (dr == DialogResult.OK)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #9
0
        public override object exec(s.Node <object> args)
        {
            Control c = args.First() as Control;

            args = args.Rest();
            String key = args.First() as String;

            args = args.Rest();
            s.Function act = args.First() as s.Function;
            if (key == "click")
            {
                c.Click += new EventHandler(new SEventHandle(act).run);
            }
            return(null);
        }
Exemple #10
0
        public override object exec(s.Node <object> args)
        {
            Control c = args.First() as Control;

            args = args.Rest();
            if (args == null)
            {
                if (c is TextBox)
                {
                    return((c as TextBox).Text);
                }
            }
            else
            {
                String value = args.First() as String;
                if (c is TextBox)
                {
                    (c as TextBox).Text = value;
                }
            }
            return(null);
        }
Exemple #11
0
        public override object exec(s.Node <object> args)
        {
            Control c = args.First() as Control;

            args = args.Rest();
            if (args == null)
            {
                if (c is Button)
                {
                    return((c as Button).Text);
                }
            }
            else
            {
                String text = args.First() as String;
                if (c is Button)
                {
                    (c as Button).Text = text;
                }
            }
            return(null);
        }
Exemple #12
0
        public static s.Node <Object> build()
        {
            s.Node <Object> dom = null;
            dom = s.Node <Object> .kvs_extend("createElement", new DOMCreateElement(), dom);

            dom = s.Node <Object> .kvs_extend("attr", new DOMAttr(), dom);

            dom = s.Node <Object> .kvs_extend("action", new DOMAction(), dom);

            dom = s.Node <Object> .kvs_extend("appendChild", new DOMAppendChild(), dom);

            dom = s.Node <Object> .kvs_extend("replaceWith", new DOMReplaceWith(), dom);

            dom = s.Node <Object> .kvs_extend("removeChild", new DOMRemoveChild(), dom);

            dom = s.Node <Object> .kvs_extend("text", new DOMText(), dom);

            dom = s.Node <Object> .kvs_extend("value", new DOMValue(), dom);

            dom = s.Node <Object> .kvs_extend("alert", new DOMAlert(), dom);

            dom = s.Node <Object> .kvs_extend("confirm", new DOMConfirm(), dom);

            /*以下未定义*/
            dom = s.Node <Object> .kvs_extend("locsize", new DOMUnDefined(), dom);

            dom = s.Node <Object> .kvs_extend("createTextNode", new DOMUnDefined(), dom);

            dom = s.Node <Object> .kvs_extend("style", new DOMUnDefined(), dom);

            dom = s.Node <Object> .kvs_extend("prop", new DOMUnDefined(), dom);

            dom = s.Node <Object> .kvs_extend("html", new DOMUnDefined(), dom);

            return(dom);
        }
Exemple #13
0
 public override object exec(s.Node <object> args)
 {
     return(null);
 }
Exemple #14
0
        public override object exec(s.Node <object> args)
        {
            Control c = args.First() as Control;

            args = args.Rest();
            String key = args.First() as String;

            args = args.Rest();
            if (args == null)
            {
                if (key == "dock")
                {
                    return(c.Dock.ToString());
                }
                else if (key == "width")
                {
                    return(c.Width);
                }
                else if (key == "height")
                {
                    return(c.Height);
                }
                else if (key == "back-color")
                {
                    return(System.Drawing.ColorTranslator.ToHtml(c.BackColor));
                }
            }
            else
            {
                Object value = args.First();
                if (key == "dock")
                {
                    /*
                     * Dock是反常的,是从最后一个组件排,通常第一个组件是Fill,填充剩下的位置。
                     * 而常用的方式比如顺序向下,最后一个Fill,则恰巧相反
                     * 因此第一个Fill在最上,下面的都是Bottom,这样符合预期
                     */
                    String v = value as String;
                    if (v == "Bottom")
                    {
                        c.Dock = DockStyle.Bottom;
                    }
                    else if (v == "Top")
                    {
                        c.Dock = DockStyle.Top;
                    }
                    else if (v == "Left")
                    {
                        c.Dock = DockStyle.Left;
                    }
                    else if (v == "Right")
                    {
                        c.Dock = DockStyle.Right;
                    }
                    else if (v == "Fill")
                    {
                        c.Dock = DockStyle.Fill;
                    }
                    else if (v == "None")
                    {
                        c.Dock = DockStyle.None;
                    }
                }
                else if (key == "width")
                {
                    c.Width = (int)value;
                }
                else if (key == "height")
                {
                    c.Height = (int)value;
                }
                else if (key == "back-color")
                {
                    String color = value as String;
                    if (color.StartsWith("#"))
                    {
                        c.BackColor = System.Drawing.ColorTranslator.FromHtml(color);
                    }
                    else
                    if (color.StartsWith("rgba"))
                    {
                        int start = color.IndexOf("(") + 1;
                        int end   = color.IndexOf(")");
                        color = color.Substring(start, end - start);
                        String[] cs = color.Split(',');
                        if (cs.Length == 4)
                        {
                            c.BackColor = Color.FromArgb((int)(double.Parse(cs[3]) * 255 / 100), int.Parse(cs[0]), int.Parse(cs[1]), int.Parse(cs[2]));
                        }
                        else if (cs.Length == 3)
                        {
                            c.BackColor = Color.FromArgb(int.Parse(cs[0]), int.Parse(cs[1]), int.Parse(cs[2]));
                        }
                    }
                }
            }
            return(null);
        }
Exemple #15
0
 public S loadLib(String relative_path, s.Node <Object> delay_args)
 {
     return(loadLibKVS(loadValue(relative_path, true, delay_args)));
 }