mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
Script: Fixed that returning "" in Update() displayed 0 due to r885.
This commit is contained in:
parent
6dfb307636
commit
cb4aa0ade3
@ -830,7 +830,7 @@ CMeasure* CMeasure::Create(const WCHAR* measure, CMeterWindow* meterWindow, cons
|
|||||||
{
|
{
|
||||||
return new CMeasureCalc(meterWindow, name);
|
return new CMeasureCalc(meterWindow, name);
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"script", measure) == 0)
|
else if (_wcsicmp(L"Script", measure) == 0)
|
||||||
{
|
{
|
||||||
return new CMeasureScript(meterWindow, name);
|
return new CMeasureScript(meterWindow, name);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,8 @@ CMeasureScript::CMeasureScript(CMeterWindow* meterWindow, const WCHAR* name) : C
|
|||||||
m_LuaScript(),
|
m_LuaScript(),
|
||||||
m_HasInitializeFunction(false),
|
m_HasInitializeFunction(false),
|
||||||
m_HasUpdateFunction(false),
|
m_HasUpdateFunction(false),
|
||||||
m_HasGetStringFunction(false)
|
m_HasGetStringFunction(false),
|
||||||
|
m_ValueType(LUA_TNIL)
|
||||||
{
|
{
|
||||||
LuaManager::Init();
|
LuaManager::Init();
|
||||||
}
|
}
|
||||||
@ -95,11 +96,19 @@ bool CMeasureScript::Update()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(m_HasUpdateFunction && m_LuaScript->RunFunctionWithReturn(g_UpdateFunctionName, m_Value, m_StringValue)) &&
|
if (m_HasUpdateFunction)
|
||||||
!(m_HasGetStringFunction && m_LuaScript->RunFunctionWithReturn(g_GetStringFunctionName, m_Value, m_StringValue)))
|
|
||||||
{
|
{
|
||||||
m_Value = 0;
|
m_ValueType = m_LuaScript->RunFunctionWithReturn(g_UpdateFunctionName, m_Value, m_StringValue);
|
||||||
m_StringValue.clear();
|
|
||||||
|
if (m_ValueType == LUA_TSTRING)
|
||||||
|
{
|
||||||
|
m_Value = 0;
|
||||||
|
}
|
||||||
|
else if (m_ValueType == LUA_TNIL && m_HasGetStringFunction)
|
||||||
|
{
|
||||||
|
// For backwards compatbility
|
||||||
|
m_ValueType = m_LuaScript->RunFunctionWithReturn(g_GetStringFunctionName, m_Value, m_StringValue);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return PostUpdate();
|
return PostUpdate();
|
||||||
@ -113,7 +122,7 @@ bool CMeasureScript::Update()
|
|||||||
*/
|
*/
|
||||||
const WCHAR* CMeasureScript::GetStringValue(AUTOSCALE autoScale, double scale, int decimals, bool percentual)
|
const WCHAR* CMeasureScript::GetStringValue(AUTOSCALE autoScale, double scale, int decimals, bool percentual)
|
||||||
{
|
{
|
||||||
if (!m_StringValue.empty())
|
if (m_ValueType == LUA_TSTRING)
|
||||||
{
|
{
|
||||||
return CheckSubstitute(m_StringValue.c_str());
|
return CheckSubstitute(m_StringValue.c_str());
|
||||||
}
|
}
|
||||||
|
@ -37,11 +37,13 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
LuaScript* m_LuaScript;
|
LuaScript* m_LuaScript;
|
||||||
|
|
||||||
bool m_HasInitializeFunction;
|
bool m_HasInitializeFunction;
|
||||||
bool m_HasUpdateFunction;
|
bool m_HasUpdateFunction;
|
||||||
bool m_HasGetStringFunction;
|
bool m_HasGetStringFunction;
|
||||||
|
|
||||||
|
int m_ValueType;
|
||||||
|
|
||||||
std::wstring m_StringValue;
|
std::wstring m_StringValue;
|
||||||
|
|
||||||
std::string m_ScriptFile;
|
std::string m_ScriptFile;
|
||||||
|
@ -147,12 +147,12 @@ void LuaScript::RunFunction(const char* funcName)
|
|||||||
** RunFunctionWithReturn
|
** RunFunctionWithReturn
|
||||||
**
|
**
|
||||||
** Runs given function in script file and stores the retruned number or string.
|
** Runs given function in script file and stores the retruned number or string.
|
||||||
** Returns true if the executed function returns a valid value.
|
** Returns LUA_TNIL when no return.
|
||||||
**
|
**
|
||||||
*/
|
*/
|
||||||
bool LuaScript::RunFunctionWithReturn(const char* funcName, double& numValue, std::wstring& strValue)
|
int LuaScript::RunFunctionWithReturn(const char* funcName, double& numValue, std::wstring& strValue)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
int ret = LUA_TNIL;
|
||||||
|
|
||||||
if (m_Initialized)
|
if (m_Initialized)
|
||||||
{
|
{
|
||||||
@ -172,17 +172,13 @@ bool LuaScript::RunFunctionWithReturn(const char* funcName, double& numValue, st
|
|||||||
if (lua_isnumber(m_State, -1))
|
if (lua_isnumber(m_State, -1))
|
||||||
{
|
{
|
||||||
numValue = lua_tonumber(m_State, -1);
|
numValue = lua_tonumber(m_State, -1);
|
||||||
|
ret = LUA_TNUMBER;
|
||||||
strValue.clear();
|
|
||||||
ret = true;
|
|
||||||
}
|
}
|
||||||
else if (lua_isstring(m_State, -1))
|
else if (lua_isstring(m_State, -1))
|
||||||
{
|
{
|
||||||
const char* str = lua_tostring(m_State, -1);
|
const char* str = lua_tostring(m_State, -1);
|
||||||
strValue = ConvertToWide(str);
|
strValue = ConvertToWide(str);
|
||||||
|
ret = LUA_TSTRING;
|
||||||
numValue = 0;
|
|
||||||
ret = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
lua_pop(m_State, 2);
|
lua_pop(m_State, 2);
|
||||||
|
@ -32,7 +32,7 @@ public:
|
|||||||
|
|
||||||
bool IsFunction(const char* funcName);
|
bool IsFunction(const char* funcName);
|
||||||
void RunFunction(const char* funcName);
|
void RunFunction(const char* funcName);
|
||||||
bool RunFunctionWithReturn(const char* funcName, double& numValue, std::wstring& strValue);
|
int RunFunctionWithReturn(const char* funcName, double& numValue, std::wstring& strValue);
|
||||||
void RunString(const char* str);
|
void RunString(const char* str);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
Reference in New Issue
Block a user