Fixed issue that Counter in Measure=Calc is case-sensitive. Added MeasureName2 as an alternative to SecondaryMeasureName in Meter=Histogram.

This commit is contained in:
Birunthan Mohanathas 2010-08-10 15:37:35 +00:00
parent bfa3bdc508
commit 237043352d
3 changed files with 17 additions and 7 deletions

View File

@ -76,7 +76,7 @@ bool CMeasureCalc::Update()
m_Parser->Parameters = c_VarMap; m_Parser->Parameters = c_VarMap;
if(m_UpdateRandom > 0) if(m_UpdateRandom > 0)
{ {
RandomFormulaReplace(); FormulaReplace();
} }
char* errMsg = MathParser_Parse(m_Parser, ConvertToAscii(m_Formula.c_str()).c_str(), &m_Value); char* errMsg = MathParser_Parse(m_Parser, ConvertToAscii(m_Formula.c_str()).c_str(), &m_Value);
@ -134,23 +134,24 @@ void CMeasureCalc::ReadConfig(CConfigParser& parser, const WCHAR* section)
m_HighBound = parser.ReadInt(section, L"HighBound", 100); m_HighBound = parser.ReadInt(section, L"HighBound", 100);
m_UpdateRandom = parser.ReadInt(section, L"UpdateRandom", 0); m_UpdateRandom = parser.ReadInt(section, L"UpdateRandom", 0);
RandomFormulaReplace(); FormulaReplace();
} }
/* /*
** RandomFormulaReplace ** FormulaReplace
** **
** This replaces the word Random in m_Formula with a random number ** This replaces the word Random in m_Formula with a random number
** and all cases of counter with Counter
** **
*/ */
void CMeasureCalc::RandomFormulaReplace() void CMeasureCalc::FormulaReplace()
{ {
//To implement random numbers the word "Random" in the string //To implement random numbers the word "Random" in the string
//formula is being replaced by the random number value //formula is being replaced by the random number value
m_Formula = m_FormulaHolder; m_Formula = m_FormulaHolder;
std::wstring::size_type loc = 0; std::wstring::size_type loc = 0;
while ((loc = m_Formula.find_first_of(L"Rr", loc)) != std::wstring::npos) while ((loc = m_Formula.find_first_of(L"RrCc", loc)) != std::wstring::npos)
{ {
if (wcsnicmp(L"Random", m_Formula.c_str() + loc, 6) == 0) if (wcsnicmp(L"Random", m_Formula.c_str() + loc, 6) == 0)
{ {
@ -164,6 +165,11 @@ void CMeasureCalc::RandomFormulaReplace()
m_Formula.replace(loc, 6, buffer); m_Formula.replace(loc, 6, buffer);
loc += wcslen(buffer); loc += wcslen(buffer);
} }
else if (wcsnicmp(L"Counter", m_Formula.c_str() + loc, 7) == 0)
{
m_Formula.replace(loc, 7, L"Counter");
loc += 7;
}
else else
{ {
++loc; ++loc;

View File

@ -34,7 +34,7 @@ public:
static void UpdateVariableMap(CMeterWindow& meterWindow); static void UpdateVariableMap(CMeterWindow& meterWindow);
private: private:
void RandomFormulaReplace(); void FormulaReplace();
std::wstring m_Formula; std::wstring m_Formula;
std::wstring m_FormulaHolder; std::wstring m_FormulaHolder;
hqMathParser* m_Parser; hqMathParser* m_Parser;

View File

@ -258,7 +258,11 @@ void CMeterHistogram::ReadConfig(const WCHAR* section)
m_SecondaryColor = parser.ReadColor(section, L"SecondaryColor", Color::Red); m_SecondaryColor = parser.ReadColor(section, L"SecondaryColor", Color::Red);
m_BothColor = parser.ReadColor(section, L"BothColor", Color::Yellow); m_BothColor = parser.ReadColor(section, L"BothColor", Color::Yellow);
m_SecondaryMeasureName = parser.ReadString(section, L"SecondaryMeasureName", L""); m_SecondaryMeasureName = parser.ReadString(section, L"MeasureName2", L"");
if (m_SecondaryMeasureName == L"")
{
m_SecondaryMeasureName = parser.ReadString(section, L"SecondaryMeasureName", L"");
}
m_PrimaryImageName = parser.ReadString(section, L"PrimaryImage", L""); m_PrimaryImageName = parser.ReadString(section, L"PrimaryImage", L"");
m_PrimaryImageName = m_MeterWindow->MakePathAbsolute(m_PrimaryImageName); m_PrimaryImageName = m_MeterWindow->MakePathAbsolute(m_PrimaryImageName);