#3277 Implement stepping for Common Data Source and rename Plot Source Stepping for summary plots.

* The name for the UI groups is now "Data Source" for both types of data source stepping.
This commit is contained in:
Gaute Lindkvist
2018-09-05 11:04:42 +02:00
parent ac8a11c813
commit d81b85c54c
12 changed files with 284 additions and 95 deletions

View File

@@ -0,0 +1,46 @@
#include "RimDataSourceSteppingTools.h"
#include "cvfAssert.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDataSourceSteppingTools::modifyCurrentIndex(caf::PdmValueField* valueField, const QList<caf::PdmOptionItemInfo>& options, int indexOffset)
{
if (valueField && !options.isEmpty())
{
QVariant currentValue = valueField->toQVariant();
caf::PdmPointer<caf::PdmObjectHandle> currentHandle = currentValue.value<caf::PdmPointer<caf::PdmObjectHandle>>();
int currentIndex = -1;
for (int i = 0; i < options.size(); i++)
{
QVariant optionValue = options[i].value();
// First try pointer variety. They are not supported by QVariant::operator==
caf::PdmPointer<caf::PdmObjectHandle> optionHandle = optionValue.value<caf::PdmPointer<caf::PdmObjectHandle>>();
if (optionHandle)
{
if (currentHandle == optionHandle)
{
currentIndex = i;
}
}
else if (currentValue == optionValue)
{
currentIndex = i;
}
}
if (currentIndex == -1)
{
currentIndex = 0;
}
int nextIndex = currentIndex + indexOffset;
if (nextIndex < options.size() && nextIndex > -1)
{
QVariant newValue = options[nextIndex].value();
valueField->setFromQVariant(newValue);
valueField->uiCapability()->notifyFieldChanged(currentValue, newValue);
}
}
}