diff options
| author | Alexander Lantsev <aunsane@gmail.com> | 2015-07-16 21:18:54 +0000 | 
|---|---|---|
| committer | Alexander Lantsev <aunsane@gmail.com> | 2015-07-16 21:18:54 +0000 | 
| commit | c598987f83e50e0b678e89cd507a5a284a18b62a (patch) | |
| tree | 18cc9e86afb6df9026aa1034cdd14eb9ec42186f | |
| parent | cacafe063ff2742077cdc42c2946c6a4ad9ad132 (diff) | |
MirLua:
- lua_pushliteral for literals
- added m_protocol module
- version bump
git-svn-id: http://svn.miranda-ng.org/main/trunk@14580 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
| -rw-r--r-- | plugins/MirLua/src/m_database.cpp | 24 | ||||
| -rw-r--r-- | plugins/MirLua/src/m_genmenu.cpp | 12 | ||||
| -rw-r--r-- | plugins/MirLua/src/m_msg_buttonsbar.cpp | 26 | ||||
| -rw-r--r-- | plugins/MirLua/src/m_popup.cpp | 30 | ||||
| -rw-r--r-- | plugins/MirLua/src/m_protocols.cpp | 142 | ||||
| -rw-r--r-- | plugins/MirLua/src/m_toptoolbar.cpp | 22 | ||||
| -rw-r--r-- | plugins/MirLua/src/main.cpp | 4 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua.cpp | 4 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua_module_loader.cpp | 1 | ||||
| -rw-r--r-- | plugins/MirLua/src/mlua_script_loader.cpp | 17 | ||||
| -rw-r--r-- | plugins/MirLua/src/stdafx.h | 4 | ||||
| -rw-r--r-- | plugins/MirLua/src/version.h | 2 | 
12 files changed, 225 insertions, 63 deletions
| diff --git a/plugins/MirLua/src/m_database.cpp b/plugins/MirLua/src/m_database.cpp index 8d05a605f3..a1cf6f1dc6 100644 --- a/plugins/MirLua/src/m_database.cpp +++ b/plugins/MirLua/src/m_database.cpp @@ -89,22 +89,22 @@ static int lua_GetEvent(lua_State *L)  	}
  	lua_newtable(L);
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_pushstring(L, ptrA(mir_utf8encode(dbei.szModule)));
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Timestamp");
 +	lua_pushliteral(L, "Timestamp");
  	lua_pushnumber(L, dbei.timestamp);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Type");
 +	lua_pushliteral(L, "Type");
  	lua_pushinteger(L, dbei.eventType);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_pushinteger(L, dbei.flags);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Length");
 +	lua_pushliteral(L, "Length");
  	lua_pushnumber(L, dbei.cbBlob);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Blob");
 +	lua_pushliteral(L, "Blob");
  	lua_newtable(L);
  	for (DWORD i = 0; i < dbei.cbBlob; i++)
  	{
 @@ -292,13 +292,13 @@ static int SettingsChangedHookEventObjParam(void *obj, WPARAM wParam, LPARAM lPa  	DBCONTACTWRITESETTING *dbcws = (DBCONTACTWRITESETTING*)lParam;
  	lua_newtable(L);
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_pushstring(L, dbcws->szModule);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Setting");
 +	lua_pushliteral(L, "Setting");
  	lua_pushstring(L, dbcws->szSetting);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Value");
 +	lua_pushliteral(L, "Value");
  	switch (dbcws->value.type)
  	{
  	case DBVT_BYTE:
 @@ -358,13 +358,13 @@ static int lua_DecodeDBCONTACTWRITESETTING(lua_State *L)  	DBCONTACTWRITESETTING *pDBCWS = (DBCONTACTWRITESETTING*)lua_tointeger(L, 1);
  	lua_newtable(L);
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_pushstring(L, pDBCWS->szModule);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Setting");
 +	lua_pushliteral(L, "Setting");
  	lua_pushstring(L, pDBCWS->szSetting);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Value");
 +	lua_pushliteral(L, "Value");
  	switch (pDBCWS->value.type)
  	{
  		case DBVT_BYTE:
 diff --git a/plugins/MirLua/src/m_genmenu.cpp b/plugins/MirLua/src/m_genmenu.cpp index 57c6938f60..75be453dd4 100644 --- a/plugins/MirLua/src/m_genmenu.cpp +++ b/plugins/MirLua/src/m_genmenu.cpp @@ -4,7 +4,7 @@ void MakeMenuItem(lua_State *L, CMenuItem &mi)  {
  	mi.hLangpack = hScriptsLangpack;
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_gettable(L, -2);
  	mi.flags = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 @@ -12,27 +12,27 @@ void MakeMenuItem(lua_State *L, CMenuItem &mi)  	if (!(mi.flags & CMIF_TCHAR))
  		mi.flags |= CMIF_TCHAR;
 -	lua_pushstring(L, "Name");
 +	lua_pushliteral(L, "Name");
  	lua_gettable(L, -2);
  	mi.name.t = mir_utf8decodeT((char*)luaL_checkstring(L, -1));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Position");
 +	lua_pushliteral(L, "Position");
  	lua_gettable(L, -2);
  	mi.position = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Icon");
 +	lua_pushliteral(L, "Icon");
  	lua_gettable(L, -2);
  	mi.hIcolibItem = (HANDLE)lua_touserdata(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Service");
 +	lua_pushliteral(L, "Service");
  	lua_gettable(L, -2);
  	mi.pszService = (char*)lua_tostring(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Parent");
 +	lua_pushliteral(L, "Parent");
  	lua_gettable(L, -2);
  	mi.root = (HGENMENU)lua_touserdata(L, -1);
  	lua_pop(L, 1);
 diff --git a/plugins/MirLua/src/m_msg_buttonsbar.cpp b/plugins/MirLua/src/m_msg_buttonsbar.cpp index 9b3fc3b8e7..40cf42ae95 100644 --- a/plugins/MirLua/src/m_msg_buttonsbar.cpp +++ b/plugins/MirLua/src/m_msg_buttonsbar.cpp @@ -6,17 +6,17 @@ static BBButton* MakeBBButton(lua_State *L)  	tbb->cbSize = sizeof(BBButton);
  	tbb->dwDefPos = 100;
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_gettable(L, -2);
  	tbb->pszModuleName = mir_utf8decode((char*)luaL_checkstring(L, -1), NULL);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "ButtonID");
 +	lua_pushliteral(L, "ButtonID");
  	lua_gettable(L, -2);
  	tbb->dwButtonID = luaL_checkinteger(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_gettable(L, -2);
  	tbb->bbbFlags = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 @@ -24,12 +24,12 @@ static BBButton* MakeBBButton(lua_State *L)  	if ((tbb->bbbFlags & BBBF_ANSITOOLTIP))
  		tbb->bbbFlags &= ~BBBF_ANSITOOLTIP;
 -	lua_pushstring(L, "Tooltip");
 +	lua_pushliteral(L, "Tooltip");
  	lua_gettable(L, -2);
  	tbb->ptszTooltip = mir_utf8decodeT((char*)lua_tostring(L, -1));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Icon");
 +	lua_pushliteral(L, "Icon");
  	lua_gettable(L, -2);
  	tbb->hIcon = (HANDLE)lua_touserdata(L, -1);
  	lua_pop(L, 1);
 @@ -96,16 +96,16 @@ int ButtonPressedHookEventObjParam(void *obj, WPARAM wParam, LPARAM lParam, LPAR  	CustomButtonClickData *bcd = (CustomButtonClickData*)lParam;
  	lua_newtable(L);
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_pushstring(L, ptrA(mir_utf8encode(bcd->pszModule)));
  	lua_settable(L, -3);
 -	lua_pushstring(L, "ButtonID");
 +	lua_pushliteral(L, "ButtonID");
  	lua_pushinteger(L, bcd->dwButtonId);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "hContact");
 +	lua_pushliteral(L, "hContact");
  	lua_pushinteger(L, bcd->hContact);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_pushinteger(L, bcd->flags);
  	lua_settable(L, -3);
 @@ -142,16 +142,16 @@ static int lua_DecodeCustomButtonClickData(lua_State *L)  	CustomButtonClickData *bcd = (CustomButtonClickData*)lua_tointeger(L, 1);
  	lua_newtable(L);
 -	lua_pushstring(L, "Module");
 +	lua_pushliteral(L, "Module");
  	lua_pushstring(L, ptrA(mir_utf8encode(bcd->pszModule)));
  	lua_settable(L, -3);
 -	lua_pushstring(L, "ButtonID");
 +	lua_pushliteral(L, "ButtonID");
  	lua_pushinteger(L, bcd->dwButtonId);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "hContact");
 +	lua_pushliteral(L, "hContact");
  	lua_pushinteger(L, bcd->hContact);
  	lua_settable(L, -3);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_pushinteger(L, bcd->flags);
  	lua_settable(L, -3);
 diff --git a/plugins/MirLua/src/m_popup.cpp b/plugins/MirLua/src/m_popup.cpp index 961d34492d..2127f70f5f 100644 --- a/plugins/MirLua/src/m_popup.cpp +++ b/plugins/MirLua/src/m_popup.cpp @@ -4,32 +4,32 @@ static POPUPDATAT* MakePopupData(lua_State *L)  {
  	POPUPDATAT *ppd = (POPUPDATAT*)mir_calloc(sizeof(POPUPDATAT));
 -	lua_pushstring(L, "ContactName");
 +	lua_pushliteral(L, "ContactName");
  	lua_gettable(L, -2);
  	mir_tstrcpy(ppd->lptzContactName, ptrT(mir_utf8decodeT(lua_tostring(L, -1))));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Text");
 +	lua_pushliteral(L, "Text");
  	lua_gettable(L, -2);
  	mir_tstrcpy(ppd->lptzText, ptrT(mir_utf8decodeT(luaL_checkstring(L, -1))));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "hContact");
 +	lua_pushliteral(L, "hContact");
  	lua_gettable(L, -2);
  	ppd->lchContact = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "ColorBack");
 +	lua_pushliteral(L, "ColorBack");
  	lua_gettable(L, -2);
  	ppd->colorBack = lua_tonumber(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "ColorText");
 +	lua_pushliteral(L, "ColorText");
  	lua_gettable(L, -2);
  	ppd->colorText = lua_tonumber(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Seconds");
 +	lua_pushliteral(L, "Seconds");
  	lua_gettable(L, -2);
  	ppd->iSeconds = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 @@ -58,7 +58,7 @@ static POPUPDATA2* MakePopupData2(lua_State *L)  	POPUPDATA2 *ppd = (POPUPDATA2*)mir_calloc(sizeof(POPUPDATA2));
  	ppd->cbSize = sizeof(POPUPDATA2);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_gettable(L, -2);
  	ppd->flags = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 @@ -66,42 +66,42 @@ static POPUPDATA2* MakePopupData2(lua_State *L)  	if (!(ppd->flags & PU2_TCHAR))
  		ppd->flags |= PU2_TCHAR;
 -	lua_pushstring(L, "Title");
 +	lua_pushliteral(L, "Title");
  	lua_gettable(L, -2);
  	ppd->lptzTitle = mir_utf8decodeT(lua_tostring(L, -1));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Text");
 +	lua_pushliteral(L, "Text");
  	lua_gettable(L, -2);
  	ppd->lptzText = mir_utf8decodeT(luaL_checkstring(L, -1));
  	lua_pop(L, 1);
 -	lua_pushstring(L, "hContact");
 +	lua_pushliteral(L, "hContact");
  	lua_gettable(L, -2);
  	ppd->lchContact = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "ColorBack");
 +	lua_pushliteral(L, "ColorBack");
  	lua_gettable(L, -2);
  	ppd->colorBack = lua_tonumber(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "ColorText");
 +	lua_pushliteral(L, "ColorText");
  	lua_gettable(L, -2);
  	ppd->colorText = lua_tonumber(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "hEvent");
 +	lua_pushliteral(L, "hEvent");
  	lua_gettable(L, -2);
  	ppd->lchEvent = lua_touserdata(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Timestamp");
 +	lua_pushliteral(L, "Timestamp");
  	lua_gettable(L, -2);
  	ppd->dwTimestamp = lua_tonumber(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Timeout");
 +	lua_pushliteral(L, "Timeout");
  	lua_gettable(L, -2);
  	ppd->iSeconds = lua_tointeger(L, -1);
  	lua_pop(L, 1);
 diff --git a/plugins/MirLua/src/m_protocols.cpp b/plugins/MirLua/src/m_protocols.cpp new file mode 100644 index 0000000000..9e121b8a66 --- /dev/null +++ b/plugins/MirLua/src/m_protocols.cpp @@ -0,0 +1,142 @@ +#include "stdafx.h"
 +
 +static void MapToTable(lua_State *L, const PROTOCOLDESCRIPTOR* pd)
 +{
 +	lua_newtable(L);
 +	lua_pushliteral(L, "Name");
 +	lua_pushstring(L, ptrA(mir_utf8encode(pd->szName)));
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "Type");
 +	lua_pushinteger(L, pd->type);
 +	lua_settable(L, -3);
 +}
 +
 +static int lua_GetProto(lua_State *L)
 +{
 +	ptrA name(mir_utf8decodeA(luaL_checkstring(L, 1)));
 +
 +	PROTOCOLDESCRIPTOR* pd = ::Proto_IsProtocolLoaded(name);
 +
 +	if (pd)
 +		MapToTable(L, pd);
 +	else
 +		lua_pushnil(L);
 +
 +	return 1;
 +}
 +
 +static int lua_EnumProtos(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);
 +
 +	int count;
 +	PROTOCOLDESCRIPTOR** protos;
 +	Proto_EnumProtocols(&count, &protos);
 +
 +	for (int i = 0; i < count; i++)
 +	{
 +		lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
 +		MapToTable(L, protos[i]);
 +		if (lua_pcall(L, 1, 0, 0))
 +			CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1));
 +	}
 +
 +	luaL_unref(L, LUA_REGISTRYINDEX, ref);
 +	lua_pushinteger(L, count);
 +
 +	return 1;
 +}
 +
 +static void MapToTable(lua_State *L, const PROTOACCOUNT* pa)
 +{
 +	lua_newtable(L);
 +	lua_pushliteral(L, "InternalName");
 +	lua_pushstring(L, ptrA(mir_utf8encode(pa->szModuleName)));
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "AccountName");
 +	lua_pushstring(L, ptrA(mir_utf8encodeT(pa->tszAccountName)));
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "ProtoName");
 +	lua_pushstring(L, ptrA(mir_utf8encode(pa->szProtoName)));
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "IsEnabled");
 +	lua_pushboolean(L, pa->bIsEnabled);
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "IsVisible");
 +	lua_pushboolean(L, pa->bIsVisible);
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "IsVirtual");
 +	lua_pushboolean(L, pa->bIsVirtual);
 +	lua_settable(L, -3);
 +	lua_pushliteral(L, "OldProto");
 +	lua_pushboolean(L, pa->bOldProto);
 +	lua_settable(L, -3);
 +}
 +
 +static int lua_GetAccount(lua_State *L)
 +{
 +	ptrA moduleName(mir_utf8decodeA(luaL_checkstring(L, 1)));
 +
 +	PROTOACCOUNT* pa = ::Proto_GetAccount(moduleName);
 +
 +	if (pa)
 +		MapToTable(L, pa);
 +	else
 +		lua_pushnil(L);
 +
 +	return 1;
 +}
 +
 +static int lua_EnumAccounts(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);
 +
 +	int count;
 +	PROTOACCOUNT** accounts;
 +	Proto_EnumAccounts(&count, &accounts);
 +
 +	for (int i = 0; i < count; i++)
 +	{
 +		lua_rawgeti(L, LUA_REGISTRYINDEX, ref);
 +		MapToTable(L, accounts[i]);
 +		if (lua_pcall(L, 1, 0, 0))
 +			CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1));
 +	}
 +
 +	luaL_unref(L, LUA_REGISTRYINDEX, ref);
 +	lua_pushinteger(L, count);
 +
 +	return 1;
 +}
 +
 +static luaL_Reg protocolsApi[] =
 +{
 +	{ "GetProto", lua_GetProto },
 +	{ "EnumProtos", lua_EnumProtos },
 +
 +	{ "GetAccount", lua_GetAccount },
 +	{ "EnumAccounts", lua_EnumAccounts },
 +
 +	{ NULL, NULL }
 +};
 +
 +LUAMOD_API int luaopen_m_protocols(lua_State *L)
 +{
 +	luaL_newlib(L, protocolsApi);
 +
 +	return 1;
 +}
 diff --git a/plugins/MirLua/src/m_toptoolbar.cpp b/plugins/MirLua/src/m_toptoolbar.cpp index 71ecbb2b0b..0a17afa9cd 100644 --- a/plugins/MirLua/src/m_toptoolbar.cpp +++ b/plugins/MirLua/src/m_toptoolbar.cpp @@ -4,59 +4,59 @@ static TTBButton* MakeTBButton(lua_State *L)  {
  	TTBButton *tbb = (TTBButton*)mir_calloc(sizeof(TTBButton));
 -	lua_pushstring(L, "Name");
 +	lua_pushliteral(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_pushliteral(L, "Service");
  	lua_gettable(L, -2);
  	tbb->pszService = (char*)lua_tostring(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "Flags");
 +	lua_pushliteral(L, "Flags");
  	lua_gettable(L, -2);
  	tbb->dwFlags = lua_tointeger(L, -1);
  	lua_pop(L, 1);
  	// up state
 -	lua_pushstring(L, "IconUp");
 +	lua_pushliteral(L, "IconUp");
  	lua_gettable(L, -2);
  	tbb->hIconHandleUp = (HANDLE)lua_touserdata(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "TooltipUp");
 +	lua_pushliteral(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_pushliteral(L, "wParamUp");
  	lua_gettable(L, -2);
  	tbb->wParamUp = luaM_towparam(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "lParamUp");
 +	lua_pushliteral(L, "lParamUp");
  	lua_gettable(L, -2);
  	tbb->lParamUp = luaM_tolparam(L, -1);
  	lua_pop(L, 1);
  	// dn state
 -	lua_pushstring(L, "IconDown");
 +	lua_pushliteral(L, "IconDown");
  	lua_gettable(L, -2);
  	tbb->hIconHandleDn = (HANDLE)lua_touserdata(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "TooltipDown");
 +	lua_pushliteral(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_pushliteral(L, "wParamDown");
  	lua_gettable(L, -2);
  	tbb->wParamDown = luaM_towparam(L, -1);
  	lua_pop(L, 1);
 -	lua_pushstring(L, "lParamDown");
 +	lua_pushliteral(L, "lParamDown");
  	lua_gettable(L, -2);
  	tbb->lParamDown = luaM_tolparam(L, -1);
  	lua_pop(L, 1);
 diff --git a/plugins/MirLua/src/main.cpp b/plugins/MirLua/src/main.cpp index 9ac95a6579..b90eeb97b2 100644 --- a/plugins/MirLua/src/main.cpp +++ b/plugins/MirLua/src/main.cpp @@ -42,8 +42,8 @@ extern "C" __declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD)  int OnModulesLoaded(WPARAM, LPARAM)
  {
 -	g_hCommonFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Common scripts folder"), COMMON_SCRIPTS_PATHT);
 -	g_hCustomFolderPath = FoldersRegisterCustomPathT("MirLua", Translate("Custom scripts folder"), CUSTOM_SCRIPTS_PATHT);
 +	g_hCommonFolderPath = FoldersRegisterCustomPathT(MODULE, Translate("Common scripts folder"), COMMON_SCRIPTS_PATHT);
 +	g_hCustomFolderPath = FoldersRegisterCustomPathT(MODULE, Translate("Custom scripts folder"), CUSTOM_SCRIPTS_PATHT);
  	g_mLua = new CMLua();
 diff --git a/plugins/MirLua/src/mlua.cpp b/plugins/MirLua/src/mlua.cpp index 61405de928..c1dd847be4 100644 --- a/plugins/MirLua/src/mlua.cpp +++ b/plugins/MirLua/src/mlua.cpp @@ -27,9 +27,9 @@ void CMLua::Load()  	luaL_openlibs(L);
  	lua_getglobal(L, "package");
 -	lua_pushstring(L, "");
 +	lua_pushliteral(L, "");
  	lua_setfield(L, -2, "path");
 -	lua_pushstring(L, "");
 +	lua_pushliteral(L, "");
  	lua_setfield(L, -2, "cpath");
  	lua_pop(L, 1);
 diff --git a/plugins/MirLua/src/mlua_module_loader.cpp b/plugins/MirLua/src/mlua_module_loader.cpp index 391daadfa6..b27424d5ff 100644 --- a/plugins/MirLua/src/mlua_module_loader.cpp +++ b/plugins/MirLua/src/mlua_module_loader.cpp @@ -24,6 +24,7 @@ void CLuaModuleLoader::LoadModules()  	PreloadModule(MLUA_MESSAGE, luaopen_m_message);
  	PreloadModule(MLUA_MSGBUTTONSBAR, luaopen_m_msg_buttonsbar);
  	PreloadModule(MLUA_POPUP, luaopen_m_popup);
 +	PreloadModule(MLUA_PROTOCOLS, luaopen_m_protocols);
  	PreloadModule(MLUA_TOPTOOLBAR, luaopen_m_toptoolbar);
  	PreloadModule(MLUA_VARIABLES, luaopen_m_variables);
  	PreloadModule(MLUA_WINDOWS, luaopen_m_windows);
 diff --git a/plugins/MirLua/src/mlua_script_loader.cpp b/plugins/MirLua/src/mlua_script_loader.cpp index 7150ebdc48..3a25345c93 100644 --- a/plugins/MirLua/src/mlua_script_loader.cpp +++ b/plugins/MirLua/src/mlua_script_loader.cpp @@ -21,7 +21,13 @@ void CLuaScriptLoader::RegisterScriptsFolder(const char *path)  void CLuaScriptLoader::LoadScript(const TCHAR *path)
  {
 -	if (luaL_dofile(L, T2Utf(path)))
 +	if (luaL_loadfile(L, T2Utf(path)))
 +	{
 +		CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1));
 +		return;
 +	}
 +
 +	if (lua_pcall(L, 0, 1, 0))
  	{
  		CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1));
  		return;
 @@ -30,6 +36,14 @@ void CLuaScriptLoader::LoadScript(const TCHAR *path)  	TCHAR buf[4096];
  	mir_sntprintf(buf, _T("%s:OK"), path);
  	CallService(MS_NETLIB_LOGW, (WPARAM)hNetlib, (LPARAM)buf);
 +
 +	if (lua_istable(L, -1))
 +	{
 +		lua_pushliteral(L, "Load");
 +		lua_gettable(L, -2);
 +		if (lua_isfunction(L, -1) && lua_pcall(L, 0, 0, 0))
 +			CallService(MS_NETLIB_LOG, (WPARAM)hNetlib, (LPARAM)lua_tostring(L, -1));
 +	}
  }
  void CLuaScriptLoader::LoadScripts(const TCHAR *scriptDir)
 @@ -77,6 +91,7 @@ void CLuaScriptLoader::UnloadScript(const TCHAR *path)  	lua_pushnil(L);
  	lua_setfield(L, -2, moduleName);
  	lua_pop(L, 1);
 +
  	lua_pushnil(L);
  	lua_setglobal(L, moduleName);
  }
 diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index 867d07f7e8..d43437e64c 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -17,6 +17,7 @@  #include <m_clist.h>
  #include <m_icolib.h>
  #include <m_message.h>
 +#include <m_protocols.h>
  #include <m_folders.h>
  #include <m_msg_buttonsbar.h>
 @@ -83,6 +84,9 @@ LUAMOD_API int (luaopen_m_msg_buttonsbar)(lua_State *L);  #define MLUA_POPUP	"m_popup"
  LUAMOD_API int (luaopen_m_popup)(lua_State *L);
 +#define MLUA_PROTOCOLS	"m_protocols"
 +LUAMOD_API int (luaopen_m_protocols)(lua_State *L);
 +
  #define MLUA_TOPTOOLBAR	"m_toptoolbar"
  LUAMOD_API int (luaopen_m_toptoolbar)(lua_State *L);
 diff --git a/plugins/MirLua/src/version.h b/plugins/MirLua/src/version.h index 7be6f65f4a..6dd15f8c9f 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                5
 +#define __BUILD_NUM                6
  #include <stdver.h>
 | 
