summaryrefslogtreecommitdiff
path: root/plugins/MirLua/src/m_toptoolbar.cpp
diff options
context:
space:
mode:
authorAlexander Lantsev <aunsane@gmail.com>2015-06-12 10:42:43 +0000
committerAlexander Lantsev <aunsane@gmail.com>2015-06-12 10:42:43 +0000
commit297a4ecf64fd16ac6b6616e6938ca86554f46c42 (patch)
treecb5a12e4901ff6aba2077a05862ff61c51ff4fe8 /plugins/MirLua/src/m_toptoolbar.cpp
parent6d73d5c2980507e6823bb629aa2ce8d410989b8a (diff)
MirLua: added toptoolbar module
git-svn-id: http://svn.miranda-ng.org/main/trunk@14132 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MirLua/src/m_toptoolbar.cpp')
-rw-r--r--plugins/MirLua/src/m_toptoolbar.cpp125
1 files changed, 125 insertions, 0 deletions
diff --git a/plugins/MirLua/src/m_toptoolbar.cpp b/plugins/MirLua/src/m_toptoolbar.cpp
new file mode 100644
index 0000000000..7b0efcbc7c
--- /dev/null
+++ b/plugins/MirLua/src/m_toptoolbar.cpp
@@ -0,0 +1,125 @@
+#include "stdafx.h"
+
+static TTBButton* MakeTBButton(lua_State *L)
+{
+ TTBButton *tbb = (TTBButton*)mir_calloc(sizeof(TTBButton));
+ tbb->cbSize = sizeof(TTBButton);
+
+ lua_pushstring(L, "Name");
+ lua_gettable(L, -2);
+ tbb->name = mir_utf8decode((char*)luaL_checkstring(L, -1), NULL);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "Service");
+ lua_gettable(L, -2);
+ tbb->pszService = (char*)lua_tostring(L, -1);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "Flags");
+ lua_gettable(L, -2);
+ tbb->dwFlags = lua_tointeger(L, -1);
+ lua_pop(L, 1);
+
+ // up state
+ lua_pushstring(L, "IconUp");
+ lua_gettable(L, -2);
+ tbb->hIconHandleUp = (HANDLE)lua_touserdata(L, -1);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "TooltipUp");
+ lua_gettable(L, -2);
+ tbb->pszTooltipUp = mir_utf8decode((char*)lua_tostring(L, -1), NULL);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "wParamUp");
+ lua_gettable(L, -2);
+ tbb->wParamUp = CMLua::GetWParam(L, -1);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "lParamUp");
+ lua_gettable(L, -2);
+ tbb->lParamUp = CMLua::GetLParam(L, -1);
+ lua_pop(L, 1);
+
+ // dn state
+ lua_pushstring(L, "IconDown");
+ lua_gettable(L, -2);
+ tbb->hIconHandleDn = (HANDLE)lua_touserdata(L, -1);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "TooltipDown");
+ lua_gettable(L, -2);
+ tbb->pszTooltipDn = mir_utf8decode((char*)lua_tostring(L, -1), NULL);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "wParamDown");
+ lua_gettable(L, -2);
+ tbb->wParamDown = CMLua::GetWParam(L, -1);
+ lua_pop(L, 1);
+
+ lua_pushstring(L, "lParamDown");
+ lua_gettable(L, -2);
+ tbb->lParamDown = CMLua::GetLParam(L, -1);
+ lua_pop(L, 1);
+
+ return tbb;
+}
+
+static int lua_AddButton(lua_State *L)
+{
+ if (lua_type(L, 1) != LUA_TTABLE)
+ {
+ lua_pushlightuserdata(L, 0);
+ return 1;
+ }
+
+ mir_ptr<TTBButton> tbb(MakeTBButton(L));
+
+ HANDLE res = ::TopToolbar_AddButton(tbb);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static int lua_RemoveButton(lua_State *L)
+{
+ HANDLE hTTButton = (HANDLE)lua_touserdata(L, 1);
+
+ INT_PTR res = ::CallService(MS_TTB_REMOVEBUTTON, (WPARAM)hTTButton, 0);
+ lua_pushinteger(L, res);
+
+ return 1;
+}
+
+static int lua_OnTopToolBarLoaded(lua_State *L)
+{
+ if (!lua_isfunction(L, 1))
+ {
+ lua_pushlightuserdata(L, NULL);
+ return 1;
+ }
+
+ lua_pushvalue(L, 1);
+ int ref = luaL_ref(L, LUA_REGISTRYINDEX);
+
+ HANDLE res = ::HookEventObjParam(ME_TTB_MODULELOADED, CMLua::HookEventObjParam, L, ref);
+ lua_pushlightuserdata(L, res);
+
+ return 1;
+}
+
+static luaL_Reg toptoolbarApi[] =
+{
+ { "AddButton", lua_AddButton },
+ { "RemoveButton", lua_RemoveButton },
+ { "OnTopToolBarLoaded", lua_OnTopToolBarLoaded },
+
+ { NULL, NULL }
+};
+
+LUAMOD_API int luaopen_m_toptoolbar(lua_State *L)
+{
+ luaL_newlib(L, toptoolbarApi);
+
+ return 1;
+}