Plugin API: Add RmReplaceVariables function

This commit is contained in:
Birunthan Mohanathas 2013-07-12 22:55:44 +03:00
parent 0d1089608c
commit dca5795929
6 changed files with 24 additions and 0 deletions

View File

@ -46,6 +46,17 @@ double __stdcall RmReadFormula(void* rm, LPCWSTR option, double defValue)
return parser.ReadFloat(measure->GetName(), option, defValue); return parser.ReadFloat(measure->GetName(), option, defValue);
} }
LPCWSTR __stdcall RmReplaceVariables(void* rm, LPCWSTR str)
{
NULLCHECK(str);
MeasurePlugin* measure = (MeasurePlugin*)rm;
ConfigParser& parser = measure->GetMeterWindow()->GetParser();
g_Buffer = str;
parser.ReplaceVariables(g_Buffer);
return g_Buffer.c_str();
}
LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath) LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath)
{ {
NULLCHECK(relativePath); NULLCHECK(relativePath);

View File

@ -2,8 +2,10 @@ LIBRARY
EXPORTS EXPORTS
; Note: If new functions are added, the Rainmeter.lib files in Plugins\API\x32 and Plugins\API\x64 ; Note: If new functions are added, the Rainmeter.lib files in Plugins\API\x32 and Plugins\API\x64
; must be replaced by the corresponding file in Library\x32\Release and Library\x64\Release. ; must be replaced by the corresponding file in Library\x32\Release and Library\x64\Release.
; Set '<ExcludeTests>true</ExcludeTests>' in Rainmeter.props first to minimize the .lib size.
RmReadString RmReadString
RmReadFormula RmReadFormula
RmReplaceVariables
RmPathToAbsolute RmPathToAbsolute
RmExecute RmExecute
RmGet RmGet

View File

@ -44,6 +44,9 @@ namespace Rainmeter
[DllImport("Rainmeter.dll", CharSet = CharSet.Auto)] [DllImport("Rainmeter.dll", CharSet = CharSet.Auto)]
private extern static unsafe double RmReadFormula(void* rm, char* option, double defValue); private extern static unsafe double RmReadFormula(void* rm, char* option, double defValue);
[DllImport("Rainmeter.dll", CharSet = CharSet.Auto)]
private extern static unsafe char* RmReplaceVariables(void* rm, char* str);
[DllImport("Rainmeter.dll", CharSet = CharSet.Auto)] [DllImport("Rainmeter.dll", CharSet = CharSet.Auto)]
private extern static unsafe char* RmPathToAbsolute(void* rm, char* relativePath); private extern static unsafe char* RmPathToAbsolute(void* rm, char* relativePath);
@ -87,6 +90,12 @@ namespace Rainmeter
return (int)RmReadFormula((void*)m_Rm, ToUnsafe(option), defValue); return (int)RmReadFormula((void*)m_Rm, ToUnsafe(option), defValue);
} }
public unsafe string ReplaceVariables(string str)
{
char* value = RmReplaceVariables((void*)m_Rm, ToUnsafe(str));
return new string(value);
}
public unsafe string GetMeasureName() public unsafe string GetMeasureName()
{ {
char* value = (char*)RmGet((void*)m_Rm, 0); char* value = (char*)RmGet((void*)m_Rm, 0);

View File

@ -39,6 +39,8 @@ LIBRARY_EXPORT LPCWSTR __stdcall RmReadString(void* rm, LPCWSTR option, LPCWSTR
LIBRARY_EXPORT double __stdcall RmReadFormula(void* rm, LPCWSTR option, double defValue); LIBRARY_EXPORT double __stdcall RmReadFormula(void* rm, LPCWSTR option, double defValue);
LIBRARY_EXPORT LPCWSTR __stdcall RmReplaceVariables(void* rm, LPCWSTR str);
LIBRARY_EXPORT LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath); LIBRARY_EXPORT LPCWSTR __stdcall RmPathToAbsolute(void* rm, LPCWSTR relativePath);
LIBRARY_EXPORT void __stdcall RmExecute(void* skin, LPCWSTR command); LIBRARY_EXPORT void __stdcall RmExecute(void* skin, LPCWSTR command);

Binary file not shown.

Binary file not shown.