- 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:
Birunthan Mohanathas 2011-07-29 17:18:21 +00:00
parent d7dedcfc75
commit e74d6f4619
13 changed files with 77 additions and 224 deletions

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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
{

View File

@ -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;
}
}
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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)
{

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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' ');