Propagate variable changed signal to RicUserDefinedCalculatorUi

- ensure that the UI is updated
- if the grid size is different, set destination case equal to the input variable case
This commit is contained in:
Magne Sjaastad
2023-11-10 08:15:43 +01:00
parent 917fd9b3b5
commit fb890300c5
5 changed files with 50 additions and 14 deletions

View File

@@ -295,16 +295,20 @@ void RimGridCalculation::initAfterRead()
//--------------------------------------------------------------------------------------------------
void RimGridCalculation::onVariableUpdated( const SignalEmitter* emitter )
{
if ( m_destinationCase == nullptr )
if ( auto variable = dynamic_cast<const RimGridCalculationVariable*>( emitter ) )
{
auto variable = dynamic_cast<const RimGridCalculationVariable*>( emitter );
if ( variable && variable->eclipseCase() )
if ( auto variableCase = variable->eclipseCase() )
{
m_destinationCase = variable->eclipseCase();
updateConnectedEditors();
if ( !m_destinationCase || !m_destinationCase->isGridSizeEqualTo( variableCase ) )
{
m_destinationCase = variableCase;
}
}
}
updateConnectedEditors();
variableUpdated.send();
}
//--------------------------------------------------------------------------------------------------

View File

@@ -42,6 +42,7 @@ CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimUserDefinedCalculation, "RimUserDefinedCalc
///
//--------------------------------------------------------------------------------------------------
RimUserDefinedCalculation::RimUserDefinedCalculation()
: variableUpdated( this )
{
CAF_PDM_InitObject( "RimUserDefinedCalculation", ":/octave.png", "Calculation", "" );

View File

@@ -36,6 +36,9 @@ class RimUserDefinedCalculation : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
caf::Signal<> variableUpdated;
public:
RimUserDefinedCalculation();