diff options
Diffstat (limited to 'plugins/MirLua/src')
-rw-r--r-- | plugins/MirLua/src/mlua.cpp | 3 | ||||
-rw-r--r-- | plugins/MirLua/src/mlua_clist.cpp | 37 | ||||
-rw-r--r-- | plugins/MirLua/src/mlua_icons.cpp | 75 | ||||
-rw-r--r-- | plugins/MirLua/src/mlua_menus.cpp | 64 | ||||
-rw-r--r-- | plugins/MirLua/src/resource.h | 4 | ||||
-rw-r--r-- | plugins/MirLua/src/stdafx.h | 10 |
6 files changed, 152 insertions, 41 deletions
diff --git a/plugins/MirLua/src/mlua.cpp b/plugins/MirLua/src/mlua.cpp index 382591e919..fc73ee3496 100644 --- a/plugins/MirLua/src/mlua.cpp +++ b/plugins/MirLua/src/mlua.cpp @@ -7,7 +7,8 @@ CMLua::CMLua() luaopen_m(L);
- Preload(LUA_CLISTLIBNAME, luaopen_m_clist);
+ Preload(M_ICONSLIBNAME, luaopen_m_icons);
+ Preload(M_MENUSLIBNAME, luaopen_m_menus);
}
CMLua::~CMLua()
diff --git a/plugins/MirLua/src/mlua_clist.cpp b/plugins/MirLua/src/mlua_clist.cpp deleted file mode 100644 index 82a36f8241..0000000000 --- a/plugins/MirLua/src/mlua_clist.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "stdafx.h"
-
-static int lua_AddContactMenuItem(lua_State *L)
-{
- CLISTMENUITEM mi = { sizeof(CLISTMENUITEM) };
- 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 luaL_Reg clistLib[] =
-{
- { "AddContactMenuItem", lua_AddContactMenuItem },
-
- { NULL, NULL }
-};
-
-int luaopen_m_clist(lua_State *L)
-{
- //luaL_newlib(L, CMLua::clistLib);
-
- lua_getglobal(L, "M");
- luaL_checktype(L, -1, LUA_TTABLE);
-
- lua_newtable(L);
- luaL_setfuncs(L, clistLib, 0);
- lua_setfield(L, -2, "CList");
-
- return 1;
-}
diff --git a/plugins/MirLua/src/mlua_icons.cpp b/plugins/MirLua/src/mlua_icons.cpp new file mode 100644 index 0000000000..71219e4b96 --- /dev/null +++ b/plugins/MirLua/src/mlua_icons.cpp @@ -0,0 +1,75 @@ +#include "stdafx.h"
+
+static int lua_AddIcon(lua_State *L)
+{
+ TCHAR filePath[MAX_PATH];
+ GetModuleFileName(g_hInstance, filePath, SIZEOF(filePath));
+
+ char iconName[MAX_PATH];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, luaL_checkstring(L, 1));
+
+ SKINICONDESC si = { 0 };
+ si.flags = SIDF_PATH_TCHAR;
+ si.pszName = iconName;
+ si.description.a = (char*)lua_tostring(L, 2);
+ si.section.a = lua_isnone(L, 3) ? "MirLua" : (char*)lua_tostring(L, 3);
+ si.defaultFile.t = filePath;
+ si.iDefaultIndex = -IDI_ICON;
+
+ HANDLE res = ::Skin_AddIcon(&si);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static int lua_GetIcon(lua_State *L)
+{
+ char iconName[MAX_PATH];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, luaL_checkstring(L, 1));
+
+ HANDLE res = ::Skin_GetIconHandle(iconName);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static int lua_RemoveIcon(lua_State *L)
+{
+ INT_PTR res = 0;
+
+ if (lua_isuserdata(L, 1))
+ res = ::CallService(MS_SKIN2_REMOVEICON, (WPARAM)lua_touserdata(L, 1), 0);
+ else if (lua_isstring(L, 1))
+ {
+ char iconName[MAX_PATH];
+ mir_snprintf(iconName, SIZEOF(iconName), "%s_%s", MODULE, lua_tostring(L, 1));
+ res = ::CallService(MS_SKIN2_REMOVEICON, 0, (LPARAM)iconName);
+ }
+ else
+ res = 1;
+
+ lua_pushinteger(L, res);
+
+ return 1;
+}
+
+static luaL_Reg iconsLib[] =
+{
+ { "AddIcon", lua_AddIcon },
+ { "GetIcon", lua_GetIcon },
+ { "RemoveIcon", lua_RemoveIcon },
+
+ { NULL, NULL }
+};
+
+int luaopen_m_icons(lua_State *L)
+{
+ lua_getglobal(L, "M");
+ luaL_checktype(L, -1, LUA_TTABLE);
+
+ lua_newtable(L);
+ luaL_setfuncs(L, iconsLib, 0);
+ lua_setfield(L, -2, "Icons");
+
+ return 1;
+}
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;
+}
diff --git a/plugins/MirLua/src/resource.h b/plugins/MirLua/src/resource.h index 069755a7c8..6a43423102 100644 --- a/plugins/MirLua/src/resource.h +++ b/plugins/MirLua/src/resource.h @@ -2,11 +2,13 @@ // Microsoft Visual C++ generated include file.
// Used by E:\Projects\C++\MirandaNG\plugins\MirLua\res\resource.rc
//
+#define IDI_ICON 100
+
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 104
+#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1011
#define _APS_NEXT_SYMED_VALUE 101
diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index c596d6c029..ef742b73ad 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -9,6 +9,9 @@ #include <m_langpack.h>
#include <m_folders.h>
#include <m_clist.h>
+#include <m_genmenu.h>
+#include <m_icolib.h>
+#include <m_skin.h>
extern "C"
{
@@ -36,7 +39,10 @@ extern HINSTANCE g_hInstance; #define CUSTOM_SCRIPTS_PATHT MIRANDA_USERDATA "\\Scripts"
#endif
-#define LUA_CLISTLIBNAME "m_clist"
-int luaopen_m_clist(lua_State *L);
+#define M_ICONSLIBNAME "m_icons"
+int luaopen_m_icons(lua_State *L);
+
+#define M_MENUSLIBNAME "m_menus"
+int luaopen_m_menus(lua_State *L);
#endif //_COMMON_H_
|