Example #1
0
        public string lt2ArrayList_parms(LuaEx lua, string keyword)
        {
            string ret = keyword;

            try
            {
                LuaInterface.LuaTable lt = (LuaInterface.LuaTable)(lua.DoString("return debug.getinfo(" + keyword + ")")[0]);
                if (lt["what"].ToString() == "Lua")
                {
                    ret += "(";
                    ret += lt["strparms"].ToString();
                    if (lt["has3dot"].ToString() == "1")
                    {
                        ret += ",...";
                    }
                    ret += ")";
                }
            }
            catch
            {
                ret = "";
            }
            return(ret);
        }
Example #2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            m_lua2.DoString(@"
function fun_in_mlua2(name, sex, age, no) 
    print('xx');
end
function test2() 
    print('xx');
end
");

            m_lua["CodeForm"] = this;
            m_lua["p_lua"]    = m_lua2;
            m_lua.RegisterFunction("lt2ArrayList", this, typeof(Form1).GetMethod("lt2ArrayList"));
            m_lua.RegisterFunction("lt2ArrayList_parms", this, typeof(Form1).GetMethod("lt2ArrayList_parms"));
            m_list.Add("a string");

            string strInit = @"
Type = luanet.System.Type
GetType = luanet.System.Type.GetType
Forms = luanet.System.Windows.Forms
tracebox = Forms.MessageBox.Show

luanet.load_assembly('luaEditor.dll')
luaEditor = luanet.luaEditor
leParm = luaEditor.leParm
leEvent = luaEditor.leEvent
leParmsCache = luaEditor.leParmsCache
leTableItem = luaEditor.leTableItem
regEvent = leParmsCache.regEvent

--反查事件
local function handle_queryEvents(sender, e)
    regEvent(e,
           'ongettreevalue',
           '用于自定义树结点的显示内容 调用时机:每次树结点显示出来时,会调用此函数,当此函数返回非空值时,会把这个值作为树结点的显示',
           leParm('prop', GetType('System.String'), 'ongettreevalue'),
           leParm('e', GetType('System.Int32'), 'ongettreevalue')
           )
    
end

--反查对象
local function handle_queryObjects(sender, e)
    local _lt = lt2ArrayList(p_lua, e.keyword)
    local ind
    local v,k
    for ind = 0, _lt.Count - 1 do
        k = _lt[ind][0]
        v = _lt[ind][1]
        if v == 'table' or v == 'function' then
		e.leTable:Add(k, leTableItem(k, v, v, v))   
        end         
    end
end

--反查参数
local function handle_queryParms(sender, e)
	local ret = lt2ArrayList_parms(p_lua, e.keyword)
    if ret ~= nil and ret ~= '' then
        e.parms_list:Add(ret);   
    end     
end

--注册全局变量
local function regGlobalObjects(obj)
    obj:regObject('Conn', GetType('System.String'), nil, '');
    obj:regObject('RootDir', GetType('System.String'), nil, '');
    obj:regObject('StartUpDir', GetType('System.String'), nil, '');
    obj:regObject('Pages', GetType('testluaEditor.Form1.m_list'), nil, '');
    obj:regObject('tclass', GetType('testluaEditor.clsC'), nil, '');
end

ctl_ce = luanet.luaEditor.luaEditorControl()
CodeForm.Controls:Add(ctl_ce)
ctl_ce.queryEvents:Add(handle_queryEvents)
ctl_ce.queryObjects:Add(handle_queryObjects)
ctl_ce.queryParms:Add(handle_queryParms)
regGlobalObjects(ctl_ce)
";

            m_lua.DoString(strInit);
        }
Example #3
0
File: Form1.cs Project: viticm/pap2
 public string lt2ArrayList_parms(LuaEx lua, string keyword)
 {   
     string ret = keyword;
     try
     {
         LuaInterface.LuaTable lt = (LuaInterface.LuaTable)(lua.DoString("return debug.getinfo(" + keyword + ")")[0]);
         if (lt["what"].ToString() == "Lua")
         {
             ret += "(";
             ret += lt["strparms"].ToString();
             if (lt["has3dot"].ToString() == "1")
                 ret += ",...";
             ret += ")";
         }
     }
     catch
     {
         ret = "";
     }
     return (ret);
 }