mirror of
https://github.com/chibicitiberiu/rainmeter-studio.git
synced 2024-02-24 04:33:31 +00:00
- Added !CommandMeasure bang. Instead of '!PluginBang "MeasureName Arguments' use '!CommandMeasure "MeasureName" "Arguments"'.
- Script: The !CommandMeasure argument must now be Lua code. For example: !CommandMeasure "MeasureLuaScript" "someVar = 'hello'" !CommandMeasure "MeasureLuaScript" "SomeFunc()"
This commit is contained in:
parent
c2e3b6292d
commit
f0fbc0f145
@ -242,18 +242,8 @@ void CMeasureScript::ReadConfig(CConfigParser& parser, const WCHAR* section)
|
|||||||
*/
|
*/
|
||||||
void CMeasureScript::ExecuteBang(const WCHAR* args)
|
void CMeasureScript::ExecuteBang(const WCHAR* args)
|
||||||
{
|
{
|
||||||
std::string function = ConvertToAscii(args);
|
std::string str = ConvertToAscii(args);
|
||||||
|
m_LuaScript->RunString(str.c_str());
|
||||||
if (m_LuaScript->IsFunction(function.c_str()))
|
|
||||||
{
|
|
||||||
m_LuaScript->RunFunction(function.c_str());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::wstring error = L"Script: Function \"";
|
|
||||||
error += args;
|
|
||||||
error += L"\" does not exist.";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stackDump(lua_State *L)
|
static void stackDump(lua_State *L)
|
||||||
|
@ -824,7 +824,7 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BANG_MOVE:
|
case BANG_MOVE:
|
||||||
pos = wcschr(arg, ' ');
|
pos = wcschr(arg, L' ');
|
||||||
if (pos != NULL)
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
MoveWindow(_wtoi(arg), _wtoi(pos));
|
MoveWindow(_wtoi(arg), _wtoi(pos));
|
||||||
@ -879,7 +879,7 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
|
|||||||
|
|
||||||
case BANG_LSHOOK:
|
case BANG_LSHOOK:
|
||||||
{
|
{
|
||||||
pos = wcsrchr(arg, ' ');
|
pos = wcsrchr(arg, L' ');
|
||||||
if (pos != NULL)
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
#ifdef _WIN64
|
#ifdef _WIN64
|
||||||
@ -905,10 +905,10 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BANG_MOVEMETER:
|
case BANG_MOVEMETER:
|
||||||
pos = wcschr(arg, ' ');
|
pos = wcschr(arg, L' ');
|
||||||
if (pos != NULL)
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
pos2 = wcschr(pos + 1, ' ');
|
pos2 = wcschr(pos + 1, L' ');
|
||||||
if (pos2 != NULL)
|
if (pos2 != NULL)
|
||||||
{
|
{
|
||||||
MoveMeter(_wtoi(arg), _wtoi(pos), pos2 + 1);
|
MoveMeter(_wtoi(arg), _wtoi(pos), pos2 + 1);
|
||||||
@ -924,6 +924,34 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BANG_COMMANDMEASURE:
|
||||||
|
{
|
||||||
|
std::wstring args = arg;
|
||||||
|
std::wstring measure;
|
||||||
|
std::wstring::size_type pos3;
|
||||||
|
|
||||||
|
pos3 = args.find(L' ');
|
||||||
|
if (pos3 != std::wstring::npos)
|
||||||
|
{
|
||||||
|
measure = args.substr(0, pos3);
|
||||||
|
args.erase(0, ++pos3);
|
||||||
|
|
||||||
|
CMeasure* m = GetMeasure(measure);
|
||||||
|
if (m)
|
||||||
|
{
|
||||||
|
m->ExecuteBang(args.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogWithArgs(LOG_WARNING, L"Unable to find [%s] for !CommandMeasure", measure.c_str());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log(LOG_ERROR, L"Unable to parse parameters for !CommandMeasure");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case BANG_PLUGIN:
|
case BANG_PLUGIN:
|
||||||
{
|
{
|
||||||
std::wstring args = arg;
|
std::wstring args = arg;
|
||||||
@ -970,7 +998,7 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BANG_SETVARIABLE:
|
case BANG_SETVARIABLE:
|
||||||
pos = wcschr(arg, ' ');
|
pos = wcschr(arg, L' ');
|
||||||
if (pos != NULL)
|
if (pos != NULL)
|
||||||
{
|
{
|
||||||
std::wstring strVariable(arg, pos - arg);
|
std::wstring strVariable(arg, pos - arg);
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#ifndef __METERWINDOW_H__
|
#ifndef __METERWINDOW_H__
|
||||||
#define __METERWINDOW_H__
|
#define __METERWINDOW_H__
|
||||||
|
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <gdiplus.h>
|
#include <gdiplus.h>
|
||||||
#include <dwmapi.h>
|
#include <dwmapi.h>
|
||||||
@ -120,6 +119,7 @@ enum BANGCOMMAND
|
|||||||
BANG_ENABLEMEASURE,
|
BANG_ENABLEMEASURE,
|
||||||
BANG_DISABLEMEASURE,
|
BANG_DISABLEMEASURE,
|
||||||
BANG_UPDATEMEASURE,
|
BANG_UPDATEMEASURE,
|
||||||
|
BANG_COMMANDMEASURE,
|
||||||
BANG_SHOWBLUR,
|
BANG_SHOWBLUR,
|
||||||
BANG_HIDEBLUR,
|
BANG_HIDEBLUR,
|
||||||
BANG_TOGGLEBLUR,
|
BANG_TOGGLEBLUR,
|
||||||
|
@ -680,6 +680,17 @@ void RainmeterUpdateMeasure(HWND, const char* arg)
|
|||||||
BangWithArgs(BANG_UPDATEMEASURE, ConvertToWide(arg).c_str(), 1);
|
BangWithArgs(BANG_UPDATEMEASURE, ConvertToWide(arg).c_str(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** RainmeterCommandMeasure
|
||||||
|
**
|
||||||
|
** Callback for the !RainmeterCommandMeasure bang
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
void RainmeterCommandMeasure(HWND, const char* arg)
|
||||||
|
{
|
||||||
|
BangWithArgs(BANG_COMMANDMEASURE, ConvertToWide(arg).c_str(), 2);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** RainmeterRefresh
|
** RainmeterRefresh
|
||||||
**
|
**
|
||||||
@ -2871,6 +2882,10 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
|
|||||||
{
|
{
|
||||||
BangWithArgs(BANG_UPDATEMEASURE, arg.c_str(), 1);
|
BangWithArgs(BANG_UPDATEMEASURE, arg.c_str(), 1);
|
||||||
}
|
}
|
||||||
|
else if (_wcsicmp(name, L"CommandMeasure") == 0)
|
||||||
|
{
|
||||||
|
BangWithArgs(BANG_COMMANDMEASURE, arg.c_str(), 2);
|
||||||
|
}
|
||||||
else if (_wcsicmp(name, L"ShowBlur") == 0)
|
else if (_wcsicmp(name, L"ShowBlur") == 0)
|
||||||
{
|
{
|
||||||
BangWithArgs(BANG_SHOWBLUR, arg.c_str(), 0);
|
BangWithArgs(BANG_SHOWBLUR, arg.c_str(), 0);
|
||||||
|
@ -61,6 +61,7 @@ void RainmeterEnableMeasure(HWND, const char* arg);
|
|||||||
void RainmeterDisableMeasure(HWND, const char* arg);
|
void RainmeterDisableMeasure(HWND, const char* arg);
|
||||||
void RainmeterToggleMeasure(HWND, const char* arg);
|
void RainmeterToggleMeasure(HWND, const char* arg);
|
||||||
void RainmeterUpdateMeasure(HWND, const char* arg);
|
void RainmeterUpdateMeasure(HWND, const char* arg);
|
||||||
|
void RainmeterCommandMeasure(HWND, const char* arg);
|
||||||
void RainmeterActivateConfig(HWND, const char* arg);
|
void RainmeterActivateConfig(HWND, const char* arg);
|
||||||
void RainmeterDeactivateConfig(HWND, const char* arg);
|
void RainmeterDeactivateConfig(HWND, const char* arg);
|
||||||
void RainmeterToggleConfig(HWND, const char* arg);
|
void RainmeterToggleConfig(HWND, const char* arg);
|
||||||
|
@ -189,6 +189,35 @@ bool LuaScript::RunFunctionWithReturn(const char* funcName, double& numValue, st
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** RunString
|
||||||
|
**
|
||||||
|
** Runs given string in the context of the script file.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
void LuaScript::RunString(const char* str)
|
||||||
|
{
|
||||||
|
if (m_Initialized)
|
||||||
|
{
|
||||||
|
// Load the string as a Lua chunk
|
||||||
|
if (luaL_loadstring(m_State, str))
|
||||||
|
{
|
||||||
|
LuaManager::ReportErrors(m_State);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Push our table onto the stack
|
||||||
|
PushTable();
|
||||||
|
|
||||||
|
// Pop table and set the environment of the loaded chunk to it
|
||||||
|
lua_setfenv(m_State, -2);
|
||||||
|
|
||||||
|
if (lua_pcall(m_State, 0, 0, 0))
|
||||||
|
{
|
||||||
|
LuaManager::ReportErrors(m_State);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//void LuaScript::BindVariable(const char* p_strName, void* p_pValue, const char* p_strTypeName)
|
//void LuaScript::BindVariable(const char* p_strName, void* p_pValue, const char* p_strTypeName)
|
||||||
//{
|
//{
|
||||||
// PushTable();
|
// PushTable();
|
||||||
|
@ -33,8 +33,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);
|
bool RunFunctionWithReturn(const char* funcName, double& numValue, std::wstring& strValue);
|
||||||
|
void RunString(const char* str);
|
||||||
static void ReportErrors(lua_State* L);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
lua_State* m_State;
|
lua_State* m_State;
|
||||||
|
Loading…
Reference in New Issue
Block a user