Minor tweaks.

This commit is contained in:
Birunthan Mohanathas 2011-11-19 11:32:23 +00:00
parent efc8275ed1
commit 42ce3d9666
2 changed files with 129 additions and 137 deletions

View File

@ -137,15 +137,12 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
if (_sData == NULL) _sData = L"";
std::wstring sCommand = _sCommand;
std::transform(sCommand.begin(), sCommand.end(), sCommand.begin(), ::towlower);
// Command GetConfig
// Data unquoted full path and filename given to the plugin on initialize
// (note: this is CaSe-SeNsItIvE!)
// Execution none
// Result the config name if found or a blank string if not
if (sCommand == L"getconfig")
if (_wcsicmp(_sCommand, L"GetConfig") == 0)
{
// returns the config name, lookup by INI file
@ -165,7 +162,7 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
// Data [the config name]
// Execution none
// Result the HWND to the specified config window if found, 'error' otherwise
if (sCommand == L"getwindow")
if (_wcsicmp(_sCommand, L"GetWindow") == 0)
{
std::vector<std::wstring> subStrings = CRainmeter::ParseString(_sData);
@ -189,7 +186,7 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
// Data [the config name]
// Execution none
// Result the value of the variable
if (sCommand == L"getvariable")
if (_wcsicmp(_sCommand, L"GetVariable") == 0)
{
std::vector<std::wstring> subStrings = CRainmeter::ParseString(_sData);
@ -201,11 +198,8 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
if (meterWindow)
{
const std::wstring& variable = subStrings[1];
std::wstring result_from_parser;
if (meterWindow->GetParser().GetVariable(variable, result_from_parser))
if (meterWindow->GetParser().GetVariable(variable, result))
{
result = result_from_parser;
return result.c_str();
}
}
@ -218,7 +212,7 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
// Data [the config name] [variable data]
// Execution the indicated variable is updated
// Result 'success' if the config was found, 'error' otherwise
if (sCommand == L"setvariable")
if (_wcsicmp(_sCommand, L"SetVariable") == 0)
{
std::vector<std::wstring> subStrings = CRainmeter::ParseString(_sData);
@ -241,15 +235,6 @@ LPCTSTR PluginBridge(LPCTSTR _sCommand, LPCTSTR _sData)
}
}
/*
result = L"er1/";
result += subStrings[0];
result += L"/";
TCHAR x[100];
_snwprintf_s(x, _TRUNCATE, L"%d", subStrings.size());
result += x;
return result.c_str();
*/
return L"error";
}
@ -615,61 +600,63 @@ void CRainmeter::RainmeterWriteKeyValue(const WCHAR* arg)
if (subStrings.size() > 3)
{
const std::wstring& iniFile = subStrings[3];
const std::wstring& strIniFile = subStrings[3];
const WCHAR* iniFile = strIniFile.c_str();
if (iniFile.find(L"..\\") != std::wstring::npos || iniFile.find(L"../") != std::wstring::npos)
if (strIniFile.find(L"..\\") != std::wstring::npos || strIniFile.find(L"../") != std::wstring::npos)
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Illegal path: %s", iniFile.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Illegal path: %s", iniFile);
return;
}
const std::wstring& skinPath = GetSkinPath();
const std::wstring settingsPath = GetSettingsPath();
if (_wcsnicmp(iniFile.c_str(), skinPath.c_str(), skinPath.size()) != 0 &&
_wcsnicmp(iniFile.c_str(), settingsPath.c_str(), settingsPath.size()) != 0)
if (_wcsnicmp(iniFile, skinPath.c_str(), skinPath.size()) != 0 &&
_wcsnicmp(iniFile, settingsPath.c_str(), settingsPath.size()) != 0)
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Illegal path: %s", iniFile.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Illegal path: %s", iniFile);
return;
}
// Verify whether the file exists
if (_waccess(iniFile.c_str(), 0) == -1)
if (_waccess(iniFile, 0) == -1)
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: File not found: %s", iniFile.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: File not found: %s", iniFile);
return;
}
// Verify whether the file is read-only
DWORD attr = GetFileAttributes(iniFile.c_str());
DWORD attr = GetFileAttributes(iniFile);
if (attr == -1 || (attr & FILE_ATTRIBUTE_READONLY))
{
LogWithArgs(LOG_WARNING, L"!WriteKeyValue: File is read-only: %s", iniFile.c_str());
LogWithArgs(LOG_WARNING, L"!WriteKeyValue: File is read-only: %s", iniFile);
return;
}
// Avoid "IniFileMapping"
CSystem::UpdateIniFileMappingList();
std::wstring iniWrite = CSystem::GetTemporaryFile(iniFile);
if (iniWrite.size() == 1 && iniWrite[0] == L'?') // error occurred
std::wstring strIniWrite = CSystem::GetTemporaryFile(strIniFile);
if (strIniWrite.size() == 1 && strIniWrite[0] == L'?') // error occurred
{
return;
}
bool temporary = !iniWrite.empty();
bool temporary = !strIniWrite.empty();
if (temporary)
{
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile.c_str(), iniWrite.c_str());
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s (Temp: %s)", iniFile, strIniWrite.c_str());
}
else
{
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s", iniFile.c_str());
iniWrite = iniFile;
if (GetDebug()) LogWithArgs(LOG_DEBUG, L"!WriteKeyValue: Writing to: %s", iniFile);
strIniWrite = strIniFile;
}
const std::wstring& strSection = subStrings[0];
const std::wstring& strKey = subStrings[1];
const WCHAR* iniWrite = strIniWrite.c_str();
const WCHAR* section = subStrings[0].c_str();
const WCHAR* key = subStrings[1].c_str();
const std::wstring& strValue = subStrings[2];
bool formula = false;
@ -690,33 +677,31 @@ void CRainmeter::RainmeterWriteKeyValue(const WCHAR* arg)
int len = _snwprintf_s(buffer, _TRUNCATE, L"%.5f", value);
CMeasure::RemoveTrailingZero(buffer, len);
const std::wstring& resultString = buffer;
write = WritePrivateProfileString(strSection.c_str(), strKey.c_str(), resultString.c_str(), iniWrite.c_str());
write = WritePrivateProfileString(section, key, buffer, iniWrite);
}
}
}
if (!formula)
{
write = WritePrivateProfileString(strSection.c_str(), strKey.c_str(), strValue.c_str(), iniWrite.c_str());
write = WritePrivateProfileString(section, key, strValue.c_str(), iniWrite);
}
if (temporary)
{
if (write != 0)
{
WritePrivateProfileString(NULL, NULL, NULL, iniWrite.c_str()); // FLUSH
WritePrivateProfileString(NULL, NULL, NULL, iniWrite); // FLUSH
// Copy the file back
if (!CSystem::CopyFiles(iniWrite, iniFile))
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to copy temporary file to original filepath: %s (Temp: %s)", iniFile.c_str(), iniWrite.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to copy temporary file to original filepath: %s (Temp: %s)", iniFile, iniWrite);
}
}
else // failed
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to write to: %s (Temp: %s)", iniFile.c_str(), iniWrite.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to write to: %s (Temp: %s)", iniFile, iniWrite);
}
// Remove a temporary file
@ -726,7 +711,7 @@ void CRainmeter::RainmeterWriteKeyValue(const WCHAR* arg)
{
if (write == 0) // failed
{
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to write to: %s", iniFile.c_str());
LogWithArgs(LOG_ERROR, L"!WriteKeyValue: Failed to write to: %s", iniFile);
}
}
}
@ -1662,13 +1647,15 @@ void CRainmeter::ScanForThemes(const std::wstring& path)
BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg, CMeterWindow* meterWindow)
{
const WCHAR* name = bang.c_str();
const WCHAR* args = arg.c_str();
// Skip "!Rainmeter" or "!"
LPCWSTR name = bang.c_str();
name += (_wcsnicmp(name, L"!Rainmeter", 10) == 0) ? 10 : 1;
if (_wcsicmp(name, L"Refresh") == 0)
{
BangWithArgs(BANG_REFRESH, arg.c_str(), 0);
BangWithArgs(BANG_REFRESH, args, 0);
}
else if (_wcsicmp(name, L"RefreshApp") == 0)
{
@ -1677,267 +1664,267 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
}
else if (_wcsicmp(name, L"Redraw") == 0)
{
BangWithArgs(BANG_REDRAW, arg.c_str(), 0);
BangWithArgs(BANG_REDRAW, args, 0);
}
else if (_wcsicmp(name, L"Update") == 0)
{
BangWithArgs(BANG_UPDATE, arg.c_str(), 0);
BangWithArgs(BANG_UPDATE, args, 0);
}
else if (_wcsicmp(name, L"Hide") == 0)
{
BangWithArgs(BANG_HIDE, arg.c_str(), 0);
BangWithArgs(BANG_HIDE, args, 0);
}
else if (_wcsicmp(name, L"Show") == 0)
{
BangWithArgs(BANG_SHOW, arg.c_str(), 0);
BangWithArgs(BANG_SHOW, args, 0);
}
else if (_wcsicmp(name, L"Toggle") == 0)
{
BangWithArgs(BANG_TOGGLE, arg.c_str(), 0);
BangWithArgs(BANG_TOGGLE, args, 0);
}
else if (_wcsicmp(name, L"HideFade") == 0)
{
BangWithArgs(BANG_HIDEFADE, arg.c_str(), 0);
BangWithArgs(BANG_HIDEFADE, args, 0);
}
else if (_wcsicmp(name, L"ShowFade") == 0)
{
BangWithArgs(BANG_SHOWFADE, arg.c_str(), 0);
BangWithArgs(BANG_SHOWFADE, args, 0);
}
else if (_wcsicmp(name, L"ToggleFade") == 0)
{
BangWithArgs(BANG_TOGGLEFADE, arg.c_str(), 0);
BangWithArgs(BANG_TOGGLEFADE, args, 0);
}
else if (_wcsicmp(name, L"HideMeter") == 0)
{
BangWithArgs(BANG_HIDEMETER, arg.c_str(), 1);
BangWithArgs(BANG_HIDEMETER, args, 1);
}
else if (_wcsicmp(name, L"ShowMeter") == 0)
{
BangWithArgs(BANG_SHOWMETER, arg.c_str(), 1);
BangWithArgs(BANG_SHOWMETER, args, 1);
}
else if (_wcsicmp(name, L"ToggleMeter") == 0)
{
BangWithArgs(BANG_TOGGLEMETER, arg.c_str(), 1);
BangWithArgs(BANG_TOGGLEMETER, args, 1);
}
else if (_wcsicmp(name, L"MoveMeter") == 0)
{
BangWithArgs(BANG_MOVEMETER, arg.c_str(), 3);
BangWithArgs(BANG_MOVEMETER, args, 3);
}
else if (_wcsicmp(name, L"UpdateMeter") == 0)
{
BangWithArgs(BANG_UPDATEMETER, arg.c_str(), 1);
BangWithArgs(BANG_UPDATEMETER, args, 1);
}
else if (_wcsicmp(name, L"DisableMeasure") == 0)
{
BangWithArgs(BANG_DISABLEMEASURE, arg.c_str(), 1);
BangWithArgs(BANG_DISABLEMEASURE, args, 1);
}
else if (_wcsicmp(name, L"EnableMeasure") == 0)
{
BangWithArgs(BANG_ENABLEMEASURE, arg.c_str(), 1);
BangWithArgs(BANG_ENABLEMEASURE, args, 1);
}
else if (_wcsicmp(name, L"ToggleMeasure") == 0)
{
BangWithArgs(BANG_TOGGLEMEASURE, arg.c_str(), 1);
BangWithArgs(BANG_TOGGLEMEASURE, args, 1);
}
else if (_wcsicmp(name, L"UpdateMeasure") == 0)
{
BangWithArgs(BANG_UPDATEMEASURE, arg.c_str(), 1);
BangWithArgs(BANG_UPDATEMEASURE, args, 1);
}
else if (_wcsicmp(name, L"CommandMeasure") == 0)
{
BangWithArgs(BANG_COMMANDMEASURE, arg.c_str(), 2);
BangWithArgs(BANG_COMMANDMEASURE, args, 2);
}
else if (_wcsicmp(name, L"ShowBlur") == 0)
{
BangWithArgs(BANG_SHOWBLUR, arg.c_str(), 0);
BangWithArgs(BANG_SHOWBLUR, args, 0);
}
else if (_wcsicmp(name, L"HideBlur") == 0)
{
BangWithArgs(BANG_HIDEBLUR, arg.c_str(), 0);
BangWithArgs(BANG_HIDEBLUR, args, 0);
}
else if (_wcsicmp(name, L"ToggleBlur") == 0)
{
BangWithArgs(BANG_TOGGLEBLUR, arg.c_str(), 0);
BangWithArgs(BANG_TOGGLEBLUR, args, 0);
}
else if (_wcsicmp(name, L"AddBlur") == 0)
{
BangWithArgs(BANG_ADDBLUR, arg.c_str(), 1);
BangWithArgs(BANG_ADDBLUR, args, 1);
}
else if (_wcsicmp(name, L"RemoveBlur") == 0)
{
BangWithArgs(BANG_REMOVEBLUR, arg.c_str(), 1);
BangWithArgs(BANG_REMOVEBLUR, args, 1);
}
else if (_wcsicmp(name, L"ActivateConfig") == 0)
{
RainmeterActivateConfig(arg.c_str());
RainmeterActivateConfig(args);
}
else if (_wcsicmp(name, L"DeactivateConfig") == 0)
{
RainmeterDeactivateConfig(arg.c_str());
RainmeterDeactivateConfig(args);
}
else if (_wcsicmp(name, L"ToggleConfig") == 0)
{
RainmeterToggleConfig(arg.c_str());
RainmeterToggleConfig(args);
}
else if (_wcsicmp(name, L"Move") == 0)
{
BangWithArgs(BANG_MOVE, arg.c_str(), 2);
BangWithArgs(BANG_MOVE, args, 2);
}
else if (_wcsicmp(name, L"ZPos") == 0 || _wcsicmp(name, L"ChangeZPos") == 0) // For backwards compatibility
{
BangWithArgs(BANG_ZPOS, arg.c_str(), 1);
BangWithArgs(BANG_ZPOS, args, 1);
}
else if (_wcsicmp(name, L"ClickThrough") == 0)
{
BangWithArgs(BANG_CLICKTHROUGH, arg.c_str(), 1);
BangWithArgs(BANG_CLICKTHROUGH, args, 1);
}
else if (_wcsicmp(name, L"Draggable") == 0)
{
BangWithArgs(BANG_DRAGGABLE, arg.c_str(), 1);
BangWithArgs(BANG_DRAGGABLE, args, 1);
}
else if (_wcsicmp(name, L"SnapEdges") == 0)
{
BangWithArgs(BANG_SNAPEDGES, arg.c_str(), 1);
BangWithArgs(BANG_SNAPEDGES, args, 1);
}
else if (_wcsicmp(name, L"KeepOnScreen") == 0)
{
BangWithArgs(BANG_KEEPONSCREEN, arg.c_str(), 1);
BangWithArgs(BANG_KEEPONSCREEN, args, 1);
}
else if (_wcsicmp(name, L"SetTransparency") == 0)
{
BangWithArgs(BANG_SETTRANSPARENCY, arg.c_str(), 1);
BangWithArgs(BANG_SETTRANSPARENCY, args, 1);
}
else if (_wcsicmp(name, L"SetVariable") == 0)
{
BangWithArgs(BANG_SETVARIABLE, arg.c_str(), 2);
BangWithArgs(BANG_SETVARIABLE, args, 2);
}
else if (_wcsicmp(name, L"SetOption") == 0)
{
BangWithArgs(BANG_SETOPTION, arg.c_str(), 3);
BangWithArgs(BANG_SETOPTION, args, 3);
}
else if (_wcsicmp(name, L"RefreshGroup") == 0)
{
BangGroupWithArgs(BANG_REFRESH, arg.c_str(), 0);
BangGroupWithArgs(BANG_REFRESH, args, 0);
}
else if (_wcsicmp(name, L"UpdateGroup") == 0)
{
BangGroupWithArgs(BANG_UPDATE, arg.c_str(), 0);
BangGroupWithArgs(BANG_UPDATE, args, 0);
}
else if (_wcsicmp(name, L"RedrawGroup") == 0)
{
BangGroupWithArgs(BANG_REDRAW, arg.c_str(), 0);
BangGroupWithArgs(BANG_REDRAW, args, 0);
}
else if (_wcsicmp(name, L"HideGroup") == 0)
{
BangGroupWithArgs(BANG_HIDE, arg.c_str(), 0);
BangGroupWithArgs(BANG_HIDE, args, 0);
}
else if (_wcsicmp(name, L"ShowGroup") == 0)
{
BangGroupWithArgs(BANG_SHOW, arg.c_str(), 0);
BangGroupWithArgs(BANG_SHOW, args, 0);
}
else if (_wcsicmp(name, L"ToggleGroup") == 0)
{
BangGroupWithArgs(BANG_TOGGLE, arg.c_str(), 0);
BangGroupWithArgs(BANG_TOGGLE, args, 0);
}
else if (_wcsicmp(name, L"HideFadeGroup") == 0)
{
BangGroupWithArgs(BANG_HIDEFADE, arg.c_str(), 0);
BangGroupWithArgs(BANG_HIDEFADE, args, 0);
}
else if (_wcsicmp(name, L"ShowFadeGroup") == 0)
{
BangGroupWithArgs(BANG_SHOWFADE, arg.c_str(), 0);
BangGroupWithArgs(BANG_SHOWFADE, args, 0);
}
else if (_wcsicmp(name, L"ToggleFadeGroup") == 0)
{
BangGroupWithArgs(BANG_TOGGLEFADE, arg.c_str(), 0);
BangGroupWithArgs(BANG_TOGGLEFADE, args, 0);
}
else if (_wcsicmp(name, L"HideMeterGroup") == 0)
{
BangWithArgs(BANG_HIDEMETERGROUP, arg.c_str(), 1);
BangWithArgs(BANG_HIDEMETERGROUP, args, 1);
}
else if (_wcsicmp(name, L"ShowMeterGroup") == 0)
{
BangWithArgs(BANG_SHOWMETERGROUP, arg.c_str(), 1);
BangWithArgs(BANG_SHOWMETERGROUP, args, 1);
}
else if (_wcsicmp(name, L"ToggleMeterGroup") == 0)
{
BangWithArgs(BANG_TOGGLEMETERGROUP, arg.c_str(), 1);
BangWithArgs(BANG_TOGGLEMETERGROUP, args, 1);
}
else if (_wcsicmp(name, L"UpdateMeterGroup") == 0)
{
BangWithArgs(BANG_UPDATEMETERGROUP, arg.c_str(), 1);
BangWithArgs(BANG_UPDATEMETERGROUP, args, 1);
}
else if (_wcsicmp(name, L"DisableMeasureGroup") == 0)
{
BangWithArgs(BANG_DISABLEMEASUREGROUP, arg.c_str(), 1);
BangWithArgs(BANG_DISABLEMEASUREGROUP, args, 1);
}
else if (_wcsicmp(name, L"EnableMeasureGroup") == 0)
{
BangWithArgs(BANG_ENABLEMEASUREGROUP, arg.c_str(), 1);
BangWithArgs(BANG_ENABLEMEASUREGROUP, args, 1);
}
else if (_wcsicmp(name, L"ToggleMeasureGroup") == 0)
{
BangWithArgs(BANG_TOGGLEMEASUREGROUP, arg.c_str(), 1);
BangWithArgs(BANG_TOGGLEMEASUREGROUP, args, 1);
}
else if (_wcsicmp(name, L"UpdateMeasureGroup") == 0)
{
BangWithArgs(BANG_UPDATEMEASUREGROUP, arg.c_str(), 1);
BangWithArgs(BANG_UPDATEMEASUREGROUP, args, 1);
}
else if (_wcsicmp(name, L"DeactivateConfigGroup") == 0)
{
RainmeterDeactivateConfigGroup(arg.c_str());
RainmeterDeactivateConfigGroup(args);
}
else if (_wcsicmp(name, L"ZPosGroup") == 0)
{
BangGroupWithArgs(BANG_ZPOS, arg.c_str(), 1);
BangGroupWithArgs(BANG_ZPOS, args, 1);
}
else if (_wcsicmp(name, L"ClickThroughGroup") == 0)
{
BangGroupWithArgs(BANG_CLICKTHROUGH, arg.c_str(), 1);
BangGroupWithArgs(BANG_CLICKTHROUGH, args, 1);
}
else if (_wcsicmp(name, L"DraggableGroup") == 0)
{
BangGroupWithArgs(BANG_DRAGGABLE, arg.c_str(), 1);
BangGroupWithArgs(BANG_DRAGGABLE, args, 1);
}
else if (_wcsicmp(name, L"SnapEdgesGroup") == 0)
{
BangGroupWithArgs(BANG_SNAPEDGES, arg.c_str(), 1);
BangGroupWithArgs(BANG_SNAPEDGES, args, 1);
}
else if (_wcsicmp(name, L"KeepOnScreenGroup") == 0)
{
BangGroupWithArgs(BANG_KEEPONSCREEN, arg.c_str(), 1);
BangGroupWithArgs(BANG_KEEPONSCREEN, args, 1);
}
else if (_wcsicmp(name, L"SetTransparencyGroup") == 0)
{
BangGroupWithArgs(BANG_SETTRANSPARENCY, arg.c_str(), 1);
BangGroupWithArgs(BANG_SETTRANSPARENCY, args, 1);
}
else if (_wcsicmp(name, L"SetVariableGroup") == 0)
{
BangGroupWithArgs(BANG_SETVARIABLE, arg.c_str(), 2);
BangGroupWithArgs(BANG_SETVARIABLE, args, 2);
}
else if (_wcsicmp(name, L"SetOptionGroup") == 0)
{
BangWithArgs(BANG_SETOPTIONGROUP, arg.c_str(), 3);
BangWithArgs(BANG_SETOPTIONGROUP, args, 3);
}
else if (_wcsicmp(name, L"WriteKeyValue") == 0)
{
RainmeterWriteKeyValue(arg.c_str());
RainmeterWriteKeyValue(args);
}
else if (_wcsicmp(name, L"PluginBang") == 0)
{
BangWithArgs(BANG_PLUGIN, arg.c_str(), 1);
BangWithArgs(BANG_PLUGIN, args, 1);
}
else if (_wcsicmp(name, L"About") == 0)
{
CDialogAbout::Open(arg.c_str());
CDialogAbout::Open(args);
}
else if (_wcsicmp(name, L"Manage") == 0)
{
CDialogManage::Open(arg.c_str());
CDialogManage::Open(args);
}
else if (_wcsicmp(name, L"SkinMenu") == 0)
{
RainmeterSkinMenu(arg.c_str());
RainmeterSkinMenu(args);
}
else if (_wcsicmp(name, L"TrayMenu") == 0)
{
@ -1960,7 +1947,7 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
int count = 0;
for (size_t i = 0, isize = arg.size(); i < isize; ++i)
{
if (arg[i] == L'[')
if (args[i] == L'[')
{
if (count == 0)
{
@ -1968,7 +1955,7 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
}
++count;
}
else if (arg[i] == L']')
else if (args[i] == L']')
{
--count;
@ -1977,21 +1964,22 @@ BOOL CRainmeter::ExecuteBang(const std::wstring& bang, const std::wstring& arg,
end = i;
std::wstring command = arg.substr(start + 1, end - (start + 1));
// trim leading whitespace
// Skip leading whitespace
std::wstring::size_type notwhite = command.find_first_not_of(L" \t\r\n");
command.erase(0, notwhite);
ExecuteCommand(command.c_str(), meterWindow);
ExecuteCommand(command.c_str() + notwhite, meterWindow);
}
}
else if (isize > (i + 2) &&
arg[i] == L'"' && arg[i + 1] == L'"' && arg[i + 2] == L'"')
else if (args[i] == L'"' && args[i + 1] == L'"' && args[i + 2] == L'"')
{
i += 3;
std::wstring::size_type pos = arg.find(L"\"\"\"", i);
if (pos != std::wstring::npos)
if (isize > i)
{
i = pos + 2; // Skip "", loop will skip last "
std::wstring::size_type pos = arg.find(L"\"\"\"", i);
if (pos != std::wstring::npos)
{
i = pos + 2; // Skip "", loop will skip last "
}
}
}
}
@ -2278,24 +2266,24 @@ void CRainmeter::RefreshAll()
{
// Verify whether the cached information is valid
int found = 0;
const std::wstring& skinConfig = mw->GetSkinName();
const WCHAR* skinConfig = mw->GetSkinName().c_str();
for (int i = 0, isize = (int)m_ConfigStrings.size(); i < isize; ++i)
{
CONFIG& configS = m_ConfigStrings[i];
if (_wcsicmp(skinConfig.c_str(), configS.config.c_str()) == 0)
if (_wcsicmp(skinConfig, configS.config.c_str()) == 0)
{
found = 1;
const std::wstring& skinIniFile = mw->GetSkinIniFile();
const WCHAR* skinIniFile = mw->GetSkinIniFile().c_str();
for (int j = 0, jsize = (int)configS.iniFiles.size(); j < jsize; ++j)
{
if (_wcsicmp(skinIniFile.c_str(), configS.iniFiles[j].c_str()) == 0)
if (_wcsicmp(skinIniFile, configS.iniFiles[j].c_str()) == 0)
{
found = 2;
if (configS.active != j + 1)
{
// Switch to new ini-file order
configS.active = j + 1;
WriteActive(skinConfig, j);
WriteActive(mw->GetSkinName(), j);
}
break;
}
@ -2305,7 +2293,7 @@ void CRainmeter::RefreshAll()
{
DeactivateConfig(mw, i);
std::wstring error = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, skinConfig.c_str(), skinIniFile.c_str());
std::wstring error = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, skinConfig, skinIniFile);
MessageBox(NULL, error.c_str(), APPNAME, MB_OK | MB_TOPMOST | MB_ICONEXCLAMATION);
}
break;
@ -2318,7 +2306,7 @@ void CRainmeter::RefreshAll()
{
DeactivateConfig(mw, -2); // -2 = Deactivate the config forcibly
std::wstring error = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, skinConfig.c_str(), L"");
std::wstring error = GetFormattedString(ID_STR_UNABLETOREFRESHSKIN, skinConfig, L"");
MessageBox(NULL, error.c_str(), APPNAME, MB_OK | MB_TOPMOST | MB_ICONEXCLAMATION);
}
continue;
@ -2576,7 +2564,7 @@ void CRainmeter::WriteStats(bool bForce)
void CRainmeter::ResetStats()
{
// Set the stats-date string
struct tm *newtime;
struct tm* newtime;
time_t long_time;
time(&long_time);
newtime = localtime(&long_time);
@ -3004,7 +2992,7 @@ void CRainmeter::CreateMonitorMenu(HMENU monitorMenu, CMeterWindow* meterWindow)
size_t len = wcslen(monitors[i].monitorName);
if (len > 32)
{
item += std::wstring(monitors[i].monitorName, 32);
item.append(monitors[i].monitorName, 32);
item += L"...";
}
else

View File

@ -159,7 +159,8 @@ void CSystem::Finalize()
}
}
/* MyInfoEnumProc
/*
** MyInfoEnumProc
**
** Retrieves the multi-monitor information.
**
@ -234,7 +235,8 @@ BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonit
return TRUE;
}
/* GetMonitorCount
/*
** GetMonitorCount
**
** Returns the number of monitors.
**
@ -248,7 +250,8 @@ size_t CSystem::GetMonitorCount()
return c_Monitors.monitors.size();
}
/* SetMultiMonitorInfo
/*
** SetMultiMonitorInfo
**
** Sets the multi-monitor information.
**
@ -509,7 +512,8 @@ void CSystem::SetMultiMonitorInfo()
}
}
/* UpdateWorkareaInfo
/*
** UpdateWorkareaInfo
**
** Updates the workarea information.
**