mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Support for copying GeoMech case settings using new input (#6471)
* Support copy and replace geomech case, to support importing another data file, but keep the view setup * Make sure surfaces and intersections get updated with the correct separate result, too * Simplify/refactor code * Better naming
This commit is contained in:
@@ -97,17 +97,25 @@ bool RimIntersectionResultDefinition::isActive() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimIntersectionResultDefinition::autoName() const
|
||||
void RimIntersectionResultDefinition::assignCaseIfMissing() const
|
||||
{
|
||||
QString timestepName;
|
||||
QString caseName = "Default undefined source";
|
||||
|
||||
if ( !m_case )
|
||||
{
|
||||
RimCase* ownerCase = nullptr;
|
||||
this->firstAncestorOrThisOfType( ownerCase );
|
||||
const_cast<RimIntersectionResultDefinition*>( this )->setActiveCase( ownerCase );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimIntersectionResultDefinition::autoName() const
|
||||
{
|
||||
QString timestepName;
|
||||
QString caseName = "Default undefined source";
|
||||
|
||||
assignCaseIfMissing();
|
||||
|
||||
if ( m_case )
|
||||
{
|
||||
@@ -129,6 +137,7 @@ QString RimIntersectionResultDefinition::autoName() const
|
||||
}
|
||||
else if ( geomCase )
|
||||
{
|
||||
m_geomResultDefinition->setGeoMechCase( geomCase );
|
||||
resultVarUiName = m_geomResultDefinition->resultFieldUiName() + ":" +
|
||||
m_geomResultDefinition->resultComponentUiName();
|
||||
}
|
||||
@@ -150,11 +159,7 @@ RimCase* RimIntersectionResultDefinition::activeCase() const
|
||||
void RimIntersectionResultDefinition::setActiveCase( RimCase* activeCase )
|
||||
{
|
||||
m_case = activeCase;
|
||||
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>( m_case.value() );
|
||||
m_geomResultDefinition->setGeoMechCase( geomCase );
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>( m_case.value() );
|
||||
m_eclipseResultDefinition->setEclipseCase( eclipseCase );
|
||||
updateCaseInResultDefinitions();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -234,6 +239,8 @@ void RimIntersectionResultDefinition::updateLegendRangesTextAndVisibility( const
|
||||
RiuViewer* nativeOrOverrideViewer,
|
||||
bool isUsingOverrideViewer )
|
||||
{
|
||||
assignCaseIfMissing();
|
||||
|
||||
if ( !this->isInAction() ) return;
|
||||
|
||||
if ( ( this->isEclipseResultDefinition() && m_eclipseResultDefinition()->hasCategoryResult() ) ||
|
||||
@@ -316,12 +323,18 @@ void RimIntersectionResultDefinition::fieldChangedByUi( const caf::PdmFieldHandl
|
||||
const QVariant& oldValue,
|
||||
const QVariant& newValue )
|
||||
{
|
||||
bool reDraw = false;
|
||||
|
||||
assignCaseIfMissing();
|
||||
|
||||
if ( changedField == &m_case )
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>( m_case.value() );
|
||||
m_geomResultDefinition->setGeoMechCase( geomCase );
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>( m_case.value() );
|
||||
m_eclipseResultDefinition->setEclipseCase( eclipseCase );
|
||||
|
||||
reDraw = true;
|
||||
}
|
||||
|
||||
this->updateConnectedEditors();
|
||||
@@ -339,6 +352,11 @@ void RimIntersectionResultDefinition::fieldChangedByUi( const caf::PdmFieldHandl
|
||||
obj->updateConnectedEditors();
|
||||
}
|
||||
|
||||
reDraw = true;
|
||||
}
|
||||
|
||||
if ( reDraw )
|
||||
{
|
||||
RimGridView* gridView = nullptr;
|
||||
this->firstAncestorOrThisOfType( gridView );
|
||||
if ( gridView ) gridView->scheduleCreateDisplayModelAndRedraw();
|
||||
@@ -355,6 +373,7 @@ void RimIntersectionResultDefinition::fieldChangedByUi( const caf::PdmFieldHandl
|
||||
void RimIntersectionResultDefinition::update2dIntersectionViews()
|
||||
{
|
||||
// Update 2D Intersection views
|
||||
updateCaseInResultDefinitions();
|
||||
|
||||
std::vector<RimExtrudedCurveIntersection*> intersections;
|
||||
this->objectsWithReferringPtrFieldsOfType( intersections );
|
||||
@@ -443,21 +462,28 @@ void RimIntersectionResultDefinition::defineUiTreeOrdering( caf::PdmUiTreeOrderi
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimIntersectionResultDefinition::initAfterRead()
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>( m_case.value() );
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>( m_case.value() );
|
||||
|
||||
if ( eclipseCase )
|
||||
{
|
||||
m_eclipseResultDefinition->setEclipseCase( eclipseCase );
|
||||
}
|
||||
else if ( geomCase )
|
||||
{
|
||||
m_geomResultDefinition->setGeoMechCase( geomCase );
|
||||
}
|
||||
updateCaseInResultDefinitions();
|
||||
|
||||
this->updateUiIconFromToggleField();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimIntersectionResultDefinition::updateCaseInResultDefinitions()
|
||||
{
|
||||
if ( m_geomResultDefinition->geoMechCase() == nullptr )
|
||||
{
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>( m_case.value() );
|
||||
m_geomResultDefinition->setGeoMechCase( geomCase );
|
||||
}
|
||||
if ( m_eclipseResultDefinition->eclipseCase() == nullptr )
|
||||
{
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>( m_case.value() );
|
||||
m_eclipseResultDefinition->setEclipseCase( eclipseCase );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user