Cosmetic changes.

This commit is contained in:
spx 2011-07-07 23:25:45 +00:00
parent b99b275f44
commit 8867c94482
5 changed files with 43 additions and 66 deletions

View File

@ -765,25 +765,24 @@ double CConfigParser::ReadFormula(LPCTSTR section, LPCTSTR key, double defValue)
return (m_LastDefaultUsed) ? defValue : ParseDouble(result, defValue); return (m_LastDefaultUsed) ? defValue : ParseDouble(result, defValue);
} }
// Returns 1 if the formula was read successfully, -1 for failure. // Returns true if the formula was read successfully, false for failure.
// Pass a pointer to a double. // Pass a pointer to a double.
int CConfigParser::ReadFormula(const std::wstring& result, double* resultValue) bool CConfigParser::ReadFormula(const std::wstring& result, double* resultValue)
{ {
// Formulas must be surrounded by parenthesis // Formulas must be surrounded by parenthesis
if (result.size() > 0 && result[0] == L'(' && result[result.size() - 1] == L')') if (result.size() > 0 && result[0] == L'(' && result[result.size() - 1] == L')')
{ {
char* errMsg = MathParser_Parse(m_Parser, ConvertToAscii(result.substr(1, result.size() - 2).c_str()).c_str(), resultValue); char* errMsg = MathParser_Parse(m_Parser, ConvertToAscii(result.substr(1, result.size() - 2).c_str()).c_str(), resultValue);
if (errMsg != NULL) if (errMsg != NULL)
{ {
Log(LOG_ERROR, ConvertToWide(errMsg).c_str()); Log(LOG_ERROR, ConvertToWide(errMsg).c_str());
return -1; return false;
} }
return 1; return true;
} }
return -1; return false;
} }
Color CConfigParser::ReadColor(LPCTSTR section, LPCTSTR key, const Color& defValue) Color CConfigParser::ReadColor(LPCTSTR section, LPCTSTR key, const Color& defValue)
@ -885,76 +884,58 @@ double CConfigParser::ParseDouble(const std::wstring& string, double defValue, b
*/ */
Color CConfigParser::ParseColor(LPCTSTR string) Color CConfigParser::ParseColor(LPCTSTR string)
{ {
int R, G, B, A; int R = 255, G = 255, B = 255, A = 255;
if (wcschr(string, L',') != NULL) if (wcschr(string, L','))
{ {
WCHAR* parseSz = _wcsdup(string); WCHAR* parseSz = _wcsdup(string);
WCHAR* token; WCHAR* token;
token = wcstok(parseSz, L","); token = wcstok(parseSz, L",");
if (token != NULL) if (token)
{ {
R = _wtoi(token); R = _wtoi(token);
R = max(R, 0); R = max(R, 0);
R = min(R, 255); R = min(R, 255);
} }
else token = wcstok(NULL, L",");
{ if (token)
R = 255;
}
token = wcstok( NULL, L",");
if (token != NULL)
{ {
G = _wtoi(token); G = _wtoi(token);
G = max(G, 0); G = max(G, 0);
G = min(G, 255); G = min(G, 255);
} }
else token = wcstok(NULL, L",");
{ if (token)
G = 255;
}
token = wcstok( NULL, L",");
if (token != NULL)
{ {
B = _wtoi(token); B = _wtoi(token);
B = max(B, 0); B = max(B, 0);
B = min(B, 255); B = min(B, 255);
} }
else token = wcstok(NULL, L",");
{ if (token)
B = 255;
}
token = wcstok( NULL, L",");
if (token != NULL)
{ {
A = _wtoi(token); A = _wtoi(token);
A = max(A, 0); A = max(A, 0);
A = min(A, 255); A = min(A, 255);
} }
else
{
A = 255;
}
free(parseSz); free(parseSz);
} }
else else
{ {
const WCHAR* start = string;
if (wcsncmp(string, L"0x", 2) == 0) if (wcsncmp(string, L"0x", 2) == 0)
{ {
start = string + 2; string += 2; // skip prefix
} }
if (wcslen(string) > 6 && !iswspace(string[6])) size_t len = wcslen(string);
if (len >= 8 && !iswspace(string[6]))
{ {
swscanf(string, L"%02x%02x%02x%02x", &R, &G, &B, &A); swscanf(string, L"%02x%02x%02x%02x", &R, &G, &B, &A);
} }
else else if (len >= 6)
{ {
swscanf(string, L"%02x%02x%02x", &R, &G, &B); swscanf(string, L"%02x%02x%02x", &R, &G, &B);
A = 255; // Opaque
} }
} }
@ -1188,7 +1169,12 @@ void CConfigParser::ReadIniFile(const std::vector<std::wstring>& iniFileMappings
} }
else else
{ {
SetValue((*iter), key, value, isVariables); SetValue((*iter), key, value);
if (isVariables)
{
m_ListVariables.push_back(lowerKey);
}
} }
} }
} }
@ -1212,21 +1198,14 @@ void CConfigParser::ReadIniFile(const std::vector<std::wstring>& iniFileMappings
** \param strKey The name of the key. ** \param strKey The name of the key.
** \param strValue The value for the key. ** \param strValue The value for the key.
*/ */
void CConfigParser::SetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strValue, bool isVariables) void CConfigParser::SetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strValue)
{ {
// LogWithArgs(LOG_DEBUG, L"[%s] %s=%s (size: %i)", strSection.c_str(), strKey.c_str(), strValue.c_str(), (int)m_Values.size()); // LogWithArgs(LOG_DEBUG, L"[%s] %s=%s (size: %i)", strSection.c_str(), strKey.c_str(), strValue.c_str(), (int)m_Values.size());
std::wstring strTmpSection = StrToLower(strSection); std::wstring strTmp = strSection + L"::";
std::wstring strTmpKey = StrToLower(strKey); strTmp += strKey;
if (isVariables) m_Values[StrToLower(strTmp)] = strValue;
{
m_ListVariables.push_back(strTmpKey);
}
strTmpSection += L"::";
strTmpSection += strTmpKey;
m_Values[strTmpSection] = strValue;
} }
//============================================================================== //==============================================================================

View File

@ -67,12 +67,11 @@ public:
RECT ReadRECT(LPCTSTR section, LPCTSTR key, const RECT& defValue); RECT ReadRECT(LPCTSTR section, LPCTSTR key, const RECT& defValue);
std::vector<Gdiplus::REAL> ReadFloats(LPCTSTR section, LPCTSTR key); std::vector<Gdiplus::REAL> ReadFloats(LPCTSTR section, LPCTSTR key);
bool ReadFormula(const std::wstring& result, double* resultValue);
const std::wstring& GetFilename() { return m_Filename; } const std::wstring& GetFilename() { return m_Filename; }
const std::vector<std::wstring>& GetSections() { return m_Sections; } const std::vector<std::wstring>& GetSections() { return m_Sections; }
// Returns an int if the formula was read successfully, -1 for failure.
int ReadFormula(const std::wstring& result, double* number);
bool ReplaceVariables(std::wstring& result); bool ReplaceVariables(std::wstring& result);
bool ReplaceMeasures(std::wstring& result); bool ReplaceMeasures(std::wstring& result);
@ -93,7 +92,7 @@ private:
CMeasure* GetMeasure(const std::wstring& name); CMeasure* GetMeasure(const std::wstring& name);
void ReadIniFile(const std::vector<std::wstring>& iniFileMappings, const std::wstring& strFileName, LPCTSTR config = NULL, int depth = 0); void ReadIniFile(const std::vector<std::wstring>& iniFileMappings, const std::wstring& strFileName, LPCTSTR config = NULL, int depth = 0);
void SetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strValue, bool isVariables); void SetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strValue);
const std::wstring& GetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strDefault); const std::wstring& GetValue(const std::wstring& strSection, const std::wstring& strKey, const std::wstring& strDefault);
void SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow); void SetAutoSelectedMonitorVariables(CMeterWindow* meterWindow);

View File

@ -302,7 +302,7 @@ void CMeter::ReadConfig(CConfigParser& parser, const WCHAR* section)
} }
double val; double val;
if (len >= 2 && coord[0] == L'(' && coord[len - 1] == L')' && -1 != parser.ReadFormula(coord, &val)) if (len >= 2 && coord[0] == L'(' && coord[len - 1] == L')' && parser.ReadFormula(coord, &val))
{ {
m_X = (int)val; m_X = (int)val;
} }
@ -341,7 +341,7 @@ void CMeter::ReadConfig(CConfigParser& parser, const WCHAR* section)
} }
double val; double val;
if (len >= 2 && coord[0] == L'(' && coord[len - 1] == L')' && -1 != parser.ReadFormula(coord, &val)) if (len >= 2 && coord[0] == L'(' && coord[len - 1] == L')' && parser.ReadFormula(coord, &val))
{ {
m_Y = (int)val; m_Y = (int)val;
} }

View File

@ -976,10 +976,9 @@ void CMeterWindow::RunBang(BANGCOMMAND bang, const WCHAR* arg)
std::wstring strVariable(arg, pos - arg); std::wstring strVariable(arg, pos - arg);
std::wstring strValue(pos + 1); std::wstring strValue(pos + 1);
double value; double value;
int result = m_Parser.ReadFormula(strValue, &value);
// Formula read fine // Formula read fine
if (result != -1) if (m_Parser.ReadFormula(strValue, &value))
{ {
WCHAR buffer[256]; WCHAR buffer[256];
int len = _snwprintf_s(buffer, _TRUNCATE, L"%.5f", value); int len = _snwprintf_s(buffer, _TRUNCATE, L"%.5f", value);
@ -1083,35 +1082,35 @@ void CMeterWindow::ResizeBlur(const WCHAR* arg, int mode)
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
type = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); type = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
} }
token = wcstok(NULL, L","); token = wcstok(NULL, L",");
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
x = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); x = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
} }
token = wcstok(NULL, L","); token = wcstok(NULL, L",");
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
y = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); y = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
} }
token = wcstok(NULL, L","); token = wcstok(NULL, L",");
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
w = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); w = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
} }
token = wcstok(NULL, L","); token = wcstok(NULL, L",");
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
h = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); h = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
} }
if (w && h) if (w && h)
@ -1129,7 +1128,7 @@ void CMeterWindow::ResizeBlur(const WCHAR* arg, int mode)
if (token) if (token)
{ {
while (token[0] == L' ') ++token; while (token[0] == L' ') ++token;
int r = (m_Parser.ReadFormula(token, &val) == 1) ? (int)val : _wtoi(token); int r = (m_Parser.ReadFormula(token, &val)) ? (int)val : _wtoi(token);
tempRegion = CreateRoundRectRgn(x, y, w, h, r, r); tempRegion = CreateRoundRectRgn(x, y, w, h, r, r);
} }
break; break;

View File

@ -1508,7 +1508,7 @@ void RainmeterWriteKeyValueWide(const WCHAR* arg)
const std::wstring& strKey = subStrings[1]; const std::wstring& strKey = subStrings[1];
const std::wstring& strValue = subStrings[2]; const std::wstring& strValue = subStrings[2];
int formula = -1; bool formula = false;
BOOL write = 0; BOOL write = 0;
if (subStrings.size() > 4) if (subStrings.size() > 4)
@ -1520,7 +1520,7 @@ void RainmeterWriteKeyValueWide(const WCHAR* arg)
formula = mw->GetParser().ReadFormula(strValue, &value); formula = mw->GetParser().ReadFormula(strValue, &value);
// Formula read fine // Formula read fine
if (formula != -1) if (formula)
{ {
WCHAR buffer[256]; WCHAR buffer[256];
int len = _snwprintf_s(buffer, _TRUNCATE, L"%.5f", value); int len = _snwprintf_s(buffer, _TRUNCATE, L"%.5f", value);
@ -1533,7 +1533,7 @@ void RainmeterWriteKeyValueWide(const WCHAR* arg)
} }
} }
if (formula == -1) if (!formula)
{ {
write = WritePrivateProfileString(strSection.c_str(), strKey.c_str(), strValue.c_str(), iniWrite.c_str()); write = WritePrivateProfileString(strSection.c_str(), strKey.c_str(), strValue.c_str(), iniWrite.c_str());
} }