EnsembleFileSet: Move case creation to createDerivedObjects() lifecycle hook

This commit is contained in:
Magne Sjaastad
2026-03-19 15:10:26 +01:00
parent 04ca172893
commit ca2a4dcc2c
4 changed files with 23 additions and 27 deletions
@@ -689,6 +689,14 @@ void RimReservoirGridEnsemble::fieldChangedByUi( const caf::PdmFieldHandle* chan
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimReservoirGridEnsemble::createDerivedObjects()
{
createCaseObjectsFromEnsembleFileSet();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -702,28 +710,6 @@ void RimReservoirGridEnsemble::initAfterRead()
{
if ( m_ensembleFileSet ) setName( m_ensembleFileSet->name() );
} );
// Create case objects WITHOUT loading grid data (deferred loading)
if ( m_caseCollection && m_caseCollection->reservoirs().empty() )
{
createCaseObjectsFromEnsembleFileSet();
}
// NB! This code must be run AFTER the grid case objects are created.
for ( auto view : m_viewCollection->views() )
{
if ( view )
{
// Resolve the grid case reference for the view after grids are loaded
view->resolveReferencesRecursively();
// Propagate the eclipse case to child objects to ensure all references are updated. setEclipseCase() calls
// propagateEclipseCaseToChildObjects() internally, but we need to call it here to ensure propagation after loading and
// reference resolution.
auto eclipseCase = view->eclipseCase();
view->setEclipseCase( eclipseCase );
}
}
}
// Set the case provider for views in the view collection
@@ -123,6 +123,7 @@ protected:
void appendMenuItems( caf::CmdFeatureMenuBuilder& menuBuilder ) const override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
void createDerivedObjects() override;
void initAfterRead() override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
@@ -184,6 +184,18 @@ void RimSummaryFileSetEnsemble::createSummaryCasesFromEnsembleFileSet( bool noti
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryFileSetEnsemble::createDerivedObjects()
{
if ( m_cases.empty() )
{
bool notifyChange = false;
createSummaryCasesFromEnsembleFileSet( notifyChange );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -247,11 +259,7 @@ void RimSummaryFileSetEnsemble::fieldChangedByUi( const caf::PdmFieldHandle* cha
//--------------------------------------------------------------------------------------------------
void RimSummaryFileSetEnsemble::onLoadDataAndUpdate()
{
if ( m_cases.empty() )
{
bool notifyChange = false;
createSummaryCasesFromEnsembleFileSet( notifyChange );
}
createDerivedObjects();
RimSummaryEnsemble::onLoadDataAndUpdate();
}
@@ -48,6 +48,7 @@ private:
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
void createDerivedObjects() override;
void initAfterRead() override;
void onLoadDataAndUpdate() override;