Add !PauseMeasure, !UnpauseMeasure, and !TogglePauseMeasure bangs. This is similar to a disabled measure, only it retains its value instead of changing to 0.

Also, group bangs !PauseMeasureGroup, !UnpauseMeasureGroup, and !TogglePauseMeasureGroup bangs have been added.
This commit is contained in:
Brian Ferguson
2013-07-11 14:29:23 -06:00
parent 2507b4fe2c
commit a883e9d47d
6 changed files with 118 additions and 0 deletions

View File

@ -790,6 +790,18 @@ void MeterWindow::DoBang(Bang bang, const std::vector<std::wstring>& args)
DisableMeasure(args[0]);
break;
case Bang::PauseMeasure:
PauseMeasure(args[0]);
break;
case Bang::UnpauseMeasure:
UnpauseMeasure(args[0]);
break;
case Bang::TogglePauseMeasure:
TogglePauseMeasure(args[0]);
break;
case Bang::UpdateMeasure:
UpdateMeasure(args[0]);
DialogAbout::UpdateMeasures(this);
@ -807,6 +819,18 @@ void MeterWindow::DoBang(Bang bang, const std::vector<std::wstring>& args)
EnableMeasure(args[0], true);
break;
case Bang::PauseMeasureGroup:
PauseMeasure(args[0], true);
break;
case Bang::UnpauseMeasureGroup:
UnpauseMeasure(args[0], true);
break;
case Bang::TogglePauseMeasureGroup:
TogglePauseMeasure(args[0], true);
break;
case Bang::UpdateMeasureGroup:
UpdateMeasure(args[0], true);
DialogAbout::UpdateMeasures(this);
@ -1320,6 +1344,76 @@ void MeterWindow::ToggleMeasure(const std::wstring& name, bool group)
if (!group) LogErrorF(this, L"!ToggleMeasure: [%s] not found", measure);
}
/*
** Pauses the given measure
**
*/
void MeterWindow::PauseMeasure(const std::wstring& name, bool group)
{
const WCHAR* measure = name.c_str();
std::vector<Measure*>::const_iterator i = m_Measures.begin();
for ( ; i != m_Measures.end(); ++i)
{
if (CompareName((*i), measure, group))
{
(*i)->Pause();
if (!group) return;
}
}
if (!group) LogErrorF(this, L"!PauseMeasure: [%s] not found", measure);
}
/*
** Unpauses the given measure
**
*/
void MeterWindow::UnpauseMeasure(const std::wstring& name, bool group)
{
const WCHAR* measure = name.c_str();
std::vector<Measure*>::const_iterator i = m_Measures.begin();
for ( ; i != m_Measures.end(); ++i)
{
if (CompareName((*i), measure, group))
{
(*i)->Unpause();
if (!group) return;
}
}
if (!group) LogErrorF(this, L"!UnpauseMeasure: [%s] not found", measure);
}
/*
** Toggles the pause state of the given measure
**
*/
void MeterWindow::TogglePauseMeasure(const std::wstring& name, bool group)
{
const WCHAR* measure = name.c_str();
std::vector<Measure*>::const_iterator i = m_Measures.begin();
for ( ; i != m_Measures.end(); ++i)
{
if (CompareName((*i), measure, group))
{
if ((*i)->IsPaused())
{
(*i)->Unpause();
}
else
{
(*i)->Pause();
}
if (!group) return;
}
}
if (!group) LogErrorF(this, L"!TogglePauseMeasure: [%s] not found", measure);
}
/*
** Updates the given measure
**