WIA: Add better support for list parameters (#8266)

* Add better support for list parameters
This commit is contained in:
jonjenssen
2021-11-09 18:17:47 +01:00
committed by GitHub
parent c8df7b4fdf
commit 08af2e7c17
6 changed files with 391 additions and 85 deletions

View File

@@ -25,6 +25,8 @@
#include "RimDoubleParameter.h"
#include "RimGenericParameter.h"
#include "RimIntegerParameter.h"
#include "RimListParameter.h"
#include "RimParameterList.h"
#include "RimStringParameter.h"
#include <cmath>
@@ -67,6 +69,11 @@ RimParameterGroup::RimParameterGroup()
m_labelProxy.uiCapability()->setUiReadOnly( true );
m_labelProxy.uiCapability()->setUiHidden( true );
m_labelProxy.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault( &m_lists, "ParameterLists", "Parameter Lists", "", "", "" );
m_lists.uiCapability()->setUiHidden( true );
m_lists.uiCapability()->setUiTreeHidden( true );
m_lists.uiCapability()->setUiTreeChildrenHidden( true );
}
//--------------------------------------------------------------------------------------------------
@@ -140,6 +147,14 @@ void RimParameterGroup::addParameter( QString name, double value )
addParameter( p );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimParameterGroup::addList( RimParameterList* paramList )
{
m_lists.push_back( paramList );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -246,12 +261,37 @@ QString RimParameterGroup::label() const
return labelOrName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimParameterGroup::isListParameter( QString paramName ) const
{
for ( auto& list : m_lists )
{
if ( list->containsParameter( paramName ) ) return true;
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimGenericParameter*> RimParameterGroup::parameters() const
{
return m_parameters.childObjects();
std::vector<RimGenericParameter*> retParams;
for ( const auto& p : m_parameters.childObjects() )
{
if ( isListParameter( p->name() ) ) continue;
retParams.push_back( p );
}
for ( const auto& list : m_lists )
{
retParams.push_back( list->getAsListParameter( m_parameters.childObjects() ) );
}
return retParams;
}
//--------------------------------------------------------------------------------------------------