From dc22e5647a7a650b1eccb376d886cfbaa36e26ca Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Fri, 10 Jul 2015 18:20:29 +0000 Subject: MirLua: added PopupData support in m_popup git-svn-id: http://svn.miranda-ng.org/main/trunk@14526 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MirLua/docs/examples/popup.lua | 13 +++++++++- plugins/MirLua/src/m_popup.cpp | 47 +++++++++++++++++++++++++++++++--- plugins/MirLua/src/stdafx.h | 2 ++ plugins/MirLua/src/version.h | 2 +- 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/plugins/MirLua/docs/examples/popup.lua b/plugins/MirLua/docs/examples/popup.lua index 7195962d47..172b98ea59 100644 --- a/plugins/MirLua/docs/examples/popup.lua +++ b/plugins/MirLua/docs/examples/popup.lua @@ -4,6 +4,16 @@ local popup = require('m_popup') local clist = require('m_clist') m.CreateServiceFunction('MirLua/ShowPopup', function() + local popupData = + { + ContactName = 'Contact', + Text = 'Popup content', + hContact = 0 + } + popup.AddPopup(popupData) +end) + +m.CreateServiceFunction('MirLua/ShowPopup2', function() local popupData = { Title = 'Title', @@ -11,7 +21,8 @@ m.CreateServiceFunction('MirLua/ShowPopup', function() hContact = 0, Flags = 1 } - popup.AddPopup(popupData) + popup.AddPopup2(popupData) end) clist.AddMainMenuItem({ Name = "Show lua popup", Service = 'MirLua/ShowPopup' }) +clist.AddMainMenuItem({ Name = "Show lua popup2", Service = 'MirLua/ShowPopup2' }) diff --git a/plugins/MirLua/src/m_popup.cpp b/plugins/MirLua/src/m_popup.cpp index c064d34ef3..3458ec3a73 100644 --- a/plugins/MirLua/src/m_popup.cpp +++ b/plugins/MirLua/src/m_popup.cpp @@ -1,6 +1,44 @@ #include "stdafx.h" -static POPUPDATA2* MakePopupData(lua_State *L) +static POPUPDATAT* MakePopupData(lua_State *L) +{ + POPUPDATAT *ppd = (POPUPDATAT*)mir_calloc(sizeof(POPUPDATAT)); + + lua_pushstring(L, "ContactName"); + lua_gettable(L, -2); + mir_tstrcpy(ppd->lptzContactName, mir_utf8decodeT(lua_tostring(L, -1))); + lua_pop(L, 1); + + lua_pushstring(L, "Text"); + lua_gettable(L, -2); + mir_tstrcpy(ppd->lptzText, mir_utf8decodeT(luaL_checkstring(L, -1))); + lua_pop(L, 1); + + lua_pushstring(L, "hContact"); + lua_gettable(L, -2); + ppd->lchContact = lua_tointeger(L, -1); + lua_pop(L, 1); + + return ppd; +} + +static int lua_AddPopup(lua_State *L) +{ + if (lua_type(L, 1) != LUA_TTABLE) + { + lua_pushlightuserdata(L, 0); + return 1; + } + + mir_ptr ppd(MakePopupData(L)); + + INT_PTR res = ::CallService(MS_POPUP_ADDPOPUPT, (WPARAM)ppd, 0); + lua_pushinteger(L, res); + + return 1; +} + +static POPUPDATA2* MakePopupData2(lua_State *L) { POPUPDATA2 *ppd = (POPUPDATA2*)mir_calloc(sizeof(POPUPDATA2)); ppd->cbSize = sizeof(POPUPDATA2); @@ -46,7 +84,7 @@ static POPUPDATA2* MakePopupData(lua_State *L) return ppd; } -static int lua_AddPoput(lua_State *L) +static int lua_AddPopup2(lua_State *L) { if (lua_type(L, 1) != LUA_TTABLE) { @@ -54,7 +92,7 @@ static int lua_AddPoput(lua_State *L) return 1; } - mir_ptr ppd(MakePopupData(L)); + mir_ptr ppd(MakePopupData2(L)); INT_PTR res = ::CallService(MS_POPUP_ADDPOPUP2, (WPARAM)ppd, 0); lua_pushinteger(L, res); @@ -67,7 +105,8 @@ static int lua_AddPoput(lua_State *L) static luaL_Reg popupApi[] = { - { "AddPopup", lua_AddPoput }, + { "AddPopup", lua_AddPopup }, + { "AddPopup2", lua_AddPopup2 }, { NULL, NULL } }; diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index d871d739ea..9e9c1cb55f 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -35,6 +35,8 @@ extern "C" #include "resource.h" #include "mlua.h" +#include "mlua_module.h" +#include "mlua_m_clist.h" #include "mlua_module_loader.h" #include "mlua_script_loader.h" #include "mlua_options.h" diff --git a/plugins/MirLua/src/version.h b/plugins/MirLua/src/version.h index 5f118b7f7c..3a3afa1b3c 100644 --- a/plugins/MirLua/src/version.h +++ b/plugins/MirLua/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 #define __RELEASE_NUM 3 -#define __BUILD_NUM 1 +#define __BUILD_NUM 2 #include -- cgit v1.2.3