Changed MeasureName(N) to work dynamically

This commit is contained in:
Birunthan Mohanathas 2012-07-18 17:55:32 +03:00
parent a0a0c61e79
commit ea124f5ccd
3 changed files with 24 additions and 20 deletions

View File

@ -125,18 +125,7 @@ void CMeasure::ReadOptions(CConfigParser& parser, const WCHAR* section)
m_Invert = 0!=parser.ReadInt(section, L"InvertMeasure", 0);
if (!m_Initialized)
{
m_Disabled = 0!=parser.ReadInt(section, L"Disabled", 0);
}
else
{
const std::wstring& result = parser.ReadString(section, L"Disabled", L"0");
if (parser.GetLastReplaced())
{
m_Disabled = 0!=parser.ParseInt(result.c_str(), 0);
}
}
m_Disabled = 0!=parser.ReadInt(section, L"Disabled", 0);
int updateDivider = parser.ReadInt(section, L"UpdateDivider", 1);
if (updateDivider != m_UpdateDivider)
@ -183,6 +172,22 @@ void CMeasure::ReadOptions(CConfigParser& parser, const WCHAR* section)
InitializeGroup(group);
}
void CMeasure::Disable()
{
m_Disabled = true;
// Change the option as well to avoid reset in ReadOptions().
m_MeterWindow->GetParser().SetValue(m_Name, L"Disabled", L"1");
}
void CMeasure::Enable()
{
m_Disabled = false;
// Change the option as well to avoid reset in ReadOptions().
m_MeterWindow->GetParser().SetValue(m_Name, L"Disabled", L"0");
}
/*
** Substitues text using a straight find and replace method
*/

View File

@ -57,8 +57,8 @@ public:
const WCHAR* GetName() { return m_Name.c_str(); }
const std::wstring& GetOriginalName() { return m_Name; }
void Disable() { m_Disabled = true; }
void Enable() { m_Disabled = false; }
void Disable();
void Enable();
bool IsDisabled() { return m_Disabled; }
bool HasDynamicVariables() { return m_DynamicVariables; }

View File

@ -233,10 +233,7 @@ void CMeter::ReadOptions(CConfigParser& parser, const WCHAR* section)
parser.SetStyleTemplate(style);
}
if (!m_Initialized)
{
BindMeasures(parser, section);
}
BindMeasures(parser, section);
int oldX = m_X;
std::wstring& x = (std::wstring&)parser.ReadString(section, L"X", L"0");
@ -437,14 +434,16 @@ bool CMeter::Update()
}
/*
** Reads and binds the primary MeasureName.
** Reads and binds the primary MeasureName. This must always be called in overridden
** BindMeasures() implementations.
**
*/
bool CMeter::BindPrimaryMeasure(CConfigParser& parser, const WCHAR* section, bool optional)
{
m_Measures.clear();
const std::wstring& measureName = parser.ReadString(section, L"MeasureName", L"");
// The meter is not bound to anything
CMeasure* measure = parser.GetMeasure(measureName);
if (measure)
{