From e1110157f8c2989a58aa12ddeef91669525d188f Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Mon, 4 Apr 2016 08:39:22 +0000 Subject: MirLua: m_toptoolbar moved to separate project git-svn-id: http://svn.miranda-ng.org/main/trunk@16583 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../Modules/m_toptoolbar/m_toptoolbar.vcxproj | 28 ++++++ plugins/MirLua/Modules/m_toptoolbar/src/main.cpp | 103 +++++++++++++++++++++ plugins/MirLua/Modules/m_toptoolbar/src/stdafx.cxx | 1 + plugins/MirLua/Modules/m_toptoolbar/src/stdafx.h | 16 ++++ 4 files changed, 148 insertions(+) create mode 100644 plugins/MirLua/Modules/m_toptoolbar/m_toptoolbar.vcxproj create mode 100644 plugins/MirLua/Modules/m_toptoolbar/src/main.cpp create mode 100644 plugins/MirLua/Modules/m_toptoolbar/src/stdafx.cxx create mode 100644 plugins/MirLua/Modules/m_toptoolbar/src/stdafx.h (limited to 'plugins/MirLua/Modules/m_toptoolbar') diff --git a/plugins/MirLua/Modules/m_toptoolbar/m_toptoolbar.vcxproj b/plugins/MirLua/Modules/m_toptoolbar/m_toptoolbar.vcxproj new file mode 100644 index 0000000000..e05f3c25a9 --- /dev/null +++ b/plugins/MirLua/Modules/m_toptoolbar/m_toptoolbar.vcxproj @@ -0,0 +1,28 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + m_toptoolbar + {277E433F-7D71-4247-8AAA-CC5FB1AA7A67} + + + + + diff --git a/plugins/MirLua/Modules/m_toptoolbar/src/main.cpp b/plugins/MirLua/Modules/m_toptoolbar/src/main.cpp new file mode 100644 index 0000000000..6e488ca8c7 --- /dev/null +++ b/plugins/MirLua/Modules/m_toptoolbar/src/main.cpp @@ -0,0 +1,103 @@ +#include "stdafx.h" + +int hLangpack; + +static TTBButton* MakeTBButton(lua_State *L) +{ + TTBButton *tbb = (TTBButton*)mir_calloc(sizeof(TTBButton)); + tbb->dwFlags = TTBBF_ISLBUTTON; + + lua_getfield(L, -1, "Name"); + tbb->name = mir_utf8decodeA(luaL_checkstring(L, -1)); + lua_pop(L, 1); + + lua_getfield(L, -1, "Service"); + tbb->pszService = (char*)lua_tostring(L, -1); + lua_pop(L, 1); + + lua_getfield(L, -1, "Flags"); + tbb->dwFlags = lua_tointeger(L, -1); + lua_pop(L, 1); + + // up state + lua_getfield(L, -1, "IconUp"); + tbb->hIconHandleUp = (HANDLE)lua_touserdata(L, -1); + lua_pop(L, 1); + + lua_getfield(L, -1, "TooltipUp"); + tbb->pszTooltipUp = mir_utf8decodeA(lua_tostring(L, -1)); + lua_pop(L, 1); + + lua_getfield(L, -1, "wParamUp"); + tbb->wParamUp = luaM_towparam(L, -1); + lua_pop(L, 1); + + lua_getfield(L, -1, "lParamUp"); + tbb->lParamUp = luaM_tolparam(L, -1); + lua_pop(L, 1); + + // dn state + lua_getfield(L, -1, "IconDown"); + tbb->hIconHandleDn = (HANDLE)lua_touserdata(L, -1); + lua_pop(L, 1); + + lua_getfield(L, -1, "TooltipDown"); + tbb->pszTooltipDn = mir_utf8decodeA(lua_tostring(L, -1)); + lua_pop(L, 1); + + lua_getfield(L, -1, "wParamDown"); + tbb->wParamDown = luaM_towparam(L, -1); + lua_pop(L, 1); + + lua_getfield(L, -1, "lParamDown"); + tbb->lParamDown = luaM_tolparam(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; + } + + TTBButton* tbb = MakeTBButton(L); + + HANDLE res = ::TopToolbar_AddButton(tbb); + lua_pushlightuserdata(L, res); + + mir_free(tbb->name); + mir_free(tbb->pszTooltipUp); + mir_free(tbb->pszTooltipDn); + mir_free(tbb); + + 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 luaL_Reg toptoolbarApi[] = +{ + { "AddButton", lua_AddButton }, + { "RemoveButton", lua_RemoveButton }, + + { NULL, NULL } +}; + +LUAMOD_API int luaopen_m_toptoolbar(lua_State *L) +{ + luaL_newlib(L, toptoolbarApi); + + return 1; +} diff --git a/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.cxx b/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.cxx new file mode 100644 index 0000000000..fd4f341c7b --- /dev/null +++ b/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.cxx @@ -0,0 +1 @@ +#include "stdafx.h" diff --git a/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.h b/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.h new file mode 100644 index 0000000000..b45173f207 --- /dev/null +++ b/plugins/MirLua/Modules/m_toptoolbar/src/stdafx.h @@ -0,0 +1,16 @@ +#ifndef _COMMON_H_ +#define _COMMON_H_ + +#include + +#include +#include +#include +#include + +#define MLUA_TOPTOOLBAR "m_toptoolbar" +LUAMOD_API int (luaopen_m_toptoolbar)(lua_State *L); + +void KillModuleTTBButton(); + +#endif //_COMMON_H_ \ No newline at end of file -- cgit v1.2.3