mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
- Added ability to escape real variables and measures as follows: #*RealVar*# [*RealMeasure*]
- NowPlayingPlugin: Addition change to r880 OpenPlayer fix - Removing tolua++ generation package files
This commit is contained in:
parent
d7dedcfc75
commit
e74d6f4619
@ -453,19 +453,28 @@ bool CConfigParser::ReplaceVariables(std::wstring& result)
|
||||
end = result.find(L'#', pos + 1);
|
||||
if (end != std::wstring::npos)
|
||||
{
|
||||
std::wstring strVariable = result.substr(pos + 1, end - (pos + 1));
|
||||
std::wstring strValue;
|
||||
|
||||
if (GetVariable(strVariable, strValue))
|
||||
if (result[pos + 1] == L'*' && result[end - 1] == L'*')
|
||||
{
|
||||
// Variable found, replace it with the value
|
||||
result.replace(pos, end - pos + 1, strValue);
|
||||
start = pos + strValue.length();
|
||||
replaced = true;
|
||||
result.erase(pos + 1, 1);
|
||||
result.erase(end - 2, 1);
|
||||
start = end - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
start = end;
|
||||
std::wstring strVariable = result.substr(pos + 1, end - (pos + 1));
|
||||
std::wstring strValue;
|
||||
|
||||
if (GetVariable(strVariable, strValue))
|
||||
{
|
||||
// Variable found, replace it with the value
|
||||
result.replace(pos, end - pos + 1, strValue);
|
||||
start = pos + strValue.length();
|
||||
replaced = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
start = end;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -510,21 +519,30 @@ bool CConfigParser::ReplaceMeasures(std::wstring& result)
|
||||
pos2 = result.find(L'[', pos + 1);
|
||||
if (pos2 == std::wstring::npos || end < pos2)
|
||||
{
|
||||
std::wstring var = result.substr(pos + 1, end - (pos + 1));
|
||||
|
||||
CMeasure* measure = GetMeasure(var);
|
||||
if (measure)
|
||||
if (result[pos + 1] == L'*' && result[end - 1] == L'*')
|
||||
{
|
||||
std::wstring value = measure->GetStringValue(AUTOSCALE_OFF, 1, -1, false);
|
||||
|
||||
// Measure found, replace it with the value
|
||||
result.replace(pos, end - pos + 1, value);
|
||||
start = pos + value.length();
|
||||
replaced = true;
|
||||
result.erase(pos + 1, 1);
|
||||
result.erase(end - 2, 1);
|
||||
start = end - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
start = end;
|
||||
std::wstring var = result.substr(pos + 1, end - (pos + 1));
|
||||
|
||||
CMeasure* measure = GetMeasure(var);
|
||||
if (measure)
|
||||
{
|
||||
std::wstring value = measure->GetStringValue(AUTOSCALE_OFF, 1, -1, false);
|
||||
|
||||
// Measure found, replace it with the value
|
||||
result.replace(pos, end - pos + 1, value);
|
||||
start = pos + value.length();
|
||||
replaced = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
start = end;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -747,14 +747,6 @@
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../StdAfx.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lua\glue\LuaGroup.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../../StdAfx.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lua\glue\LuaMeasure.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>
|
||||
|
@ -171,9 +171,6 @@
|
||||
<ClCompile Include="lua\LuaScript.cpp">
|
||||
<Filter>Lua</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lua\glue\LuaGroup.cpp">
|
||||
<Filter>Lua\glue</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lua\glue\LuaMeasure.cpp">
|
||||
<Filter>Lua\glue</Filter>
|
||||
</ClCompile>
|
||||
|
@ -197,11 +197,8 @@ void CMeasureScript::ReadConfig(CConfigParser& parser, const WCHAR* section)
|
||||
}
|
||||
}
|
||||
|
||||
// Pop PROPERTIES table
|
||||
lua_pop(L, 1);
|
||||
|
||||
// Pop the table
|
||||
lua_pop(L, 1);
|
||||
// Pop PROPERTIES table and our table
|
||||
lua_pop(L, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3182,22 +3182,31 @@ std::wstring CRainmeter::ParseCommand(const WCHAR* command, CMeterWindow* meterW
|
||||
{
|
||||
if (meterWindow)
|
||||
{
|
||||
const std::list<CMeasure*>& measures = meterWindow->GetMeasures();
|
||||
std::list<CMeasure*>::const_iterator iter = measures.begin();
|
||||
for ( ; iter != measures.end(); ++iter)
|
||||
if (strCommand[start + 1] == L'*' && strCommand[end - 1] == L'*')
|
||||
{
|
||||
if (_wcsicmp((*iter)->GetName(), measureName.c_str()) == 0)
|
||||
{
|
||||
std::wstring value = (*iter)->GetStringValue(AUTOSCALE_OFF, 1, -1, false);
|
||||
strCommand.replace(start, (end - start) + 1, value);
|
||||
start += value.length();
|
||||
break;
|
||||
}
|
||||
strCommand.erase(start + 1, 1);
|
||||
strCommand.erase(end - 2, 1);
|
||||
start = end - 1;
|
||||
}
|
||||
if (iter == measures.end())
|
||||
else
|
||||
{
|
||||
//LogWithArgs(LOG_WARNING, L"No such measure [%s] for execute string: %s", measureName.c_str(), command);
|
||||
start = end + 1;
|
||||
const std::list<CMeasure*>& measures = meterWindow->GetMeasures();
|
||||
std::list<CMeasure*>::const_iterator iter = measures.begin();
|
||||
for ( ; iter != measures.end(); ++iter)
|
||||
{
|
||||
if (_wcsicmp((*iter)->GetName(), measureName.c_str()) == 0)
|
||||
{
|
||||
std::wstring value = (*iter)->GetStringValue(AUTOSCALE_OFF, 1, -1, false);
|
||||
strCommand.replace(start, (end - start) + 1, value);
|
||||
start += value.length();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (iter == measures.end())
|
||||
{
|
||||
//LogWithArgs(LOG_WARNING, L"No such measure [%s] for execute string: %s", measureName.c_str(), command);
|
||||
start = end + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,6 @@ void LuaManager::Init()
|
||||
tolua_beginmodule(c_State, NULL);
|
||||
RegisterGlobal(c_State);
|
||||
RegisterMeasure(c_State);
|
||||
RegisterGroup(c_State);
|
||||
RegisterMeasure(c_State);
|
||||
RegisterMeter(c_State);
|
||||
RegisterMeterWindow(c_State);
|
||||
|
@ -38,7 +38,6 @@ protected:
|
||||
|
||||
private:
|
||||
static void RegisterGlobal(lua_State* L);
|
||||
static void RegisterGroup(lua_State* L);
|
||||
static void RegisterMeasure(lua_State* L);
|
||||
static void RegisterMeter(lua_State* L);
|
||||
static void RegisterMeterWindow(lua_State* L);
|
||||
|
@ -59,7 +59,7 @@ LuaScript::LuaScript(lua_State* state, const char* file) : m_State(state),
|
||||
lua_setfenv(m_State, -2);
|
||||
|
||||
// Execute the Lua script
|
||||
result = lua_pcall(m_State, 0, LUA_MULTRET, 0);
|
||||
result = lua_pcall(m_State, 0, 0, 0);
|
||||
|
||||
if (result)
|
||||
{
|
||||
|
@ -1,23 +0,0 @@
|
||||
#include "../../StdAfx.h"
|
||||
#include "../LuaManager.h"
|
||||
#include "../../Group.h"
|
||||
|
||||
static int Group_BelongsToGroup(lua_State* L)
|
||||
{
|
||||
CGroup* self = (CGroup*)tolua_tousertype(L, 1, 0);
|
||||
const std::wstring group = (const std::wstring)to_wstring(L, 2, 0);
|
||||
bool val = self->BelongsToGroup(group);
|
||||
lua_pushboolean(L, val);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
void LuaManager::RegisterGroup(lua_State* L)
|
||||
{
|
||||
tolua_usertype(L, "CGroup");
|
||||
tolua_cclass(L, "CGroup", "CGroup", "", NULL);
|
||||
|
||||
tolua_beginmodule(L, "CGroup");
|
||||
tolua_function(L, "BelongsToGroup", Group_BelongsToGroup);
|
||||
tolua_endmodule(L);
|
||||
}
|
@ -25,11 +25,7 @@ static int Measure_GetOption(lua_State* L)
|
||||
parser.SetBuiltInVariable(L"CURRENTSECTION", self->GetName()); // Set temporarily
|
||||
parser.ReplaceVariables(strTmp);
|
||||
parser.SetBuiltInVariable(L"CURRENTSECTION", L""); // Reset
|
||||
|
||||
if (self->HasDynamicVariables())
|
||||
{
|
||||
parser.ReplaceMeasures(strTmp);
|
||||
}
|
||||
parser.ReplaceMeasures(strTmp);
|
||||
|
||||
push_wchar(L, strTmp.c_str());
|
||||
return 1;
|
||||
@ -113,7 +109,7 @@ static int Measure_GetStringValue(lua_State* L)
|
||||
void LuaManager::RegisterMeasure(lua_State* L)
|
||||
{
|
||||
tolua_usertype(L, "CMeasure");
|
||||
tolua_cclass(L, "CMeasure", "CMeasure", "CGroup", NULL);
|
||||
tolua_cclass(L, "CMeasure", "CMeasure", "", NULL);
|
||||
|
||||
tolua_beginmodule(L, "CMeasure");
|
||||
tolua_function(L, "GetName", Measure_GetName);
|
||||
|
@ -23,11 +23,7 @@ static int Meter_GetOption(lua_State* L)
|
||||
parser.SetBuiltInVariable(L"CURRENTSECTION", self->GetName()); // Set temporarily
|
||||
parser.ReplaceVariables(strTmp);
|
||||
parser.SetBuiltInVariable(L"CURRENTSECTION", L""); // Reset
|
||||
|
||||
if (self->HasDynamicVariables())
|
||||
{
|
||||
parser.ReplaceMeasures(strTmp);
|
||||
}
|
||||
parser.ReplaceMeasures(strTmp);
|
||||
|
||||
push_wchar(L, strTmp.c_str());
|
||||
return 1;
|
||||
@ -127,7 +123,7 @@ static int Meter_Show(lua_State* L)
|
||||
void LuaManager::RegisterMeter(lua_State* L)
|
||||
{
|
||||
tolua_usertype(L, "CMeter");
|
||||
tolua_cclass(L, "CMeter", "CMeter", "CGroup", NULL);
|
||||
tolua_cclass(L, "CMeter", "CMeter", "", NULL);
|
||||
|
||||
tolua_beginmodule(L, "CMeter");
|
||||
tolua_function(L, "GetName", Meter_GetName);
|
||||
|
@ -4,106 +4,6 @@
|
||||
#include "../../MeterWindow.h"
|
||||
#include "../../MeterString.h"
|
||||
|
||||
static int MeterWindow_MoveMeter(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
int x = (int)tolua_tonumber(L, 2, 0);
|
||||
int y = (int)tolua_tonumber(L, 3, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 4, 0));
|
||||
self->MoveMeter(x, y, name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_HideMeter(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->HideMeter(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_ShowMeter(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->ShowMeter(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_ToggleMeter(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->ToggleMeter(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_UpdateMeter(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->UpdateMeter(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_DisableMeasure(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->DisableMeasure(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_EnableMeasure(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->EnableMeasure(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_ToggleMeasure(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
self->ToggleMeasure(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_UpdateMeasure(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
const WCHAR* name = ((const WCHAR*)to_wchar(L, 2, 0));
|
||||
bool group = ((bool)tolua_toboolean(L, 3, false));
|
||||
|
||||
self->UpdateMeasure(name, group);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_Redraw(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
self->Redraw();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int MeterWindow_MoveWindow(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
@ -179,24 +79,6 @@ static int MeterWindow_GetY(lua_State* L)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int MeterWindow_GetXScreen(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
int val = (int)self->GetXScreen();
|
||||
lua_pushnumber(L, (lua_Number)val);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int MeterWindow_GetYScreen(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
int val = (int)self->GetYScreen();
|
||||
lua_pushnumber(L, (lua_Number)val);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int MeterWindow_MakePathAbsolute(lua_State* L)
|
||||
{
|
||||
CMeterWindow* self = (CMeterWindow*)tolua_tousertype(L, 1, 0);
|
||||
@ -294,19 +176,9 @@ static int MeterWindow_Bang(lua_State* L)
|
||||
void LuaManager::RegisterMeterWindow(lua_State* L)
|
||||
{
|
||||
tolua_usertype(L, "CMeterWindow");
|
||||
tolua_cclass(L, "CMeterWindow", "CMeterWindow", "CGroup", NULL);
|
||||
tolua_cclass(L, "CMeterWindow", "CMeterWindow", "", NULL);
|
||||
|
||||
tolua_beginmodule(L, "CMeterWindow");
|
||||
tolua_function(L, "MoveMeter", MeterWindow_MoveMeter);
|
||||
tolua_function(L, "HideMeter", MeterWindow_HideMeter);
|
||||
tolua_function(L, "ShowMeter", MeterWindow_ShowMeter);
|
||||
tolua_function(L, "ToggleMeter", MeterWindow_ToggleMeter);
|
||||
tolua_function(L, "UpdateMeter", MeterWindow_UpdateMeter);
|
||||
tolua_function(L, "DisableMeasure", MeterWindow_DisableMeasure);
|
||||
tolua_function(L, "EnableMeasure", MeterWindow_EnableMeasure);
|
||||
tolua_function(L, "ToggleMeasure", MeterWindow_ToggleMeasure);
|
||||
tolua_function(L, "UpdateMeasure", MeterWindow_UpdateMeasure);
|
||||
tolua_function(L, "Redraw", MeterWindow_Redraw);
|
||||
tolua_function(L, "MoveWindow", MeterWindow_MoveWindow);
|
||||
tolua_function(L, "FadeWindow", MeterWindow_FadeWindow);
|
||||
tolua_function(L, "GetSkinName", MeterWindow_GetSkinName);
|
||||
@ -315,8 +187,6 @@ void LuaManager::RegisterMeterWindow(lua_State* L)
|
||||
tolua_function(L, "GetH", MeterWindow_GetH);
|
||||
tolua_function(L, "GetX", MeterWindow_GetX);
|
||||
tolua_function(L, "GetY", MeterWindow_GetY);
|
||||
tolua_function(L, "GetXScreen", MeterWindow_GetXScreen);
|
||||
tolua_function(L, "GetYScreen", MeterWindow_GetYScreen);
|
||||
tolua_function(L, "MakePathAbsolute", MeterWindow_MakePathAbsolute);
|
||||
tolua_function(L, "GetMeter", MeterWindow_GetMeter);
|
||||
tolua_function(L, "GetMeasure", MeterWindow_GetMeasure);
|
||||
|
@ -447,7 +447,14 @@ void ExecuteBang(LPCTSTR bang, UINT id)
|
||||
ParentMeasure* parent = child->parent;
|
||||
CPlayer* player = parent->player;
|
||||
|
||||
if (_wcsicmp(bang, L"Pause") == 0)
|
||||
if (!player->IsInitialized())
|
||||
{
|
||||
if (_wcsicmp(bang, L"OpenPlayer") == 0 || _wcsicmp(bang, L"TogglePlayer") == 0)
|
||||
{
|
||||
player->OpenPlayer(parent->playerPath);
|
||||
}
|
||||
}
|
||||
else if (_wcsicmp(bang, L"Pause") == 0)
|
||||
{
|
||||
player->Pause();
|
||||
}
|
||||
@ -471,14 +478,10 @@ void ExecuteBang(LPCTSTR bang, UINT id)
|
||||
{
|
||||
player->OpenPlayer(parent->playerPath);
|
||||
}
|
||||
else if (_wcsicmp(bang, L"ClosePlayer") == 0)
|
||||
else if (_wcsicmp(bang, L"ClosePlayer") == 0 || _wcsicmp(bang, L"TogglePlayer") == 0)
|
||||
{
|
||||
player->ClosePlayer();
|
||||
}
|
||||
else if (_wcsicmp(bang, L"TogglePlayer") == 0)
|
||||
{
|
||||
player->IsInitialized() ? player->ClosePlayer() : player->OpenPlayer(parent->playerPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
LPCTSTR arg = wcschr(bang, L' ');
|
||||
|
Loading…
Reference in New Issue
Block a user