diff options
Diffstat (limited to 'plugins/MirLua/src/mlua_menus.cpp')
-rw-r--r-- | plugins/MirLua/src/mlua_menus.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/plugins/MirLua/src/mlua_menus.cpp b/plugins/MirLua/src/mlua_menus.cpp new file mode 100644 index 0000000000..d3078fc5b3 --- /dev/null +++ b/plugins/MirLua/src/mlua_menus.cpp @@ -0,0 +1,64 @@ +#include "stdafx.h"
+
+static int lua_AddMainMenuItem(lua_State *L)
+{
+ CLISTMENUITEM mi = { sizeof(mi) };
+ mi.pszName = LPGEN((char*)luaL_checkstring(L, 1));
+ mi.flags = lua_tointeger(L, 2);
+ mi.position = lua_tointeger(L, 3);
+ mi.icolibItem = (HANDLE)lua_touserdata(L, 4);
+ mi.pszService = (char*)lua_tostring(L, 5);
+
+ HGENMENU res = ::Menu_AddMainMenuItem(&mi);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static int lua_AddContactMenuItem(lua_State *L)
+{
+ CLISTMENUITEM mi = { sizeof(mi) };
+ mi.pszName = LPGEN((char*)luaL_checkstring(L, 1));
+ mi.flags = lua_tointeger(L, 2);
+ mi.position = lua_tointeger(L, 3);
+ mi.icolibItem = (HANDLE)lua_touserdata(L, 4);
+ mi.pszService = (char*)lua_tostring(L, 5);
+
+ HGENMENU res = ::Menu_AddContactMenuItem(&mi);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static int lua_RemoveMenuItem(lua_State *L)
+{
+ HGENMENU hMenuItem = (HGENMENU)lua_touserdata(L, 1);
+
+ INT_PTR res = ::CallService(MO_REMOVEMENUITEM, (WPARAM)hMenuItem, 0);
+ lua_pushinteger(L, res);
+
+ return 1;
+}
+
+static luaL_Reg menusLib[] =
+{
+ { "AddMainMenuItem", lua_AddMainMenuItem },
+ { "AddContactMenuItem", lua_AddContactMenuItem },
+ { "RemoveMenuItem", lua_RemoveMenuItem },
+
+ { NULL, NULL }
+};
+
+int luaopen_m_menus(lua_State *L)
+{
+ //luaL_newlib(L, CMLua::clistLib);
+
+ lua_getglobal(L, "M");
+ luaL_checktype(L, -1, LUA_TTABLE);
+
+ lua_newtable(L);
+ luaL_setfuncs(L, menusLib, 0);
+ lua_setfield(L, -2, "Menus");
+
+ return 1;
+}
|