mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactor connection between cases and views.
Eclipse grid views and contour maps are not longer a child of the case. The views are not separate collections (one for grid and one for contour maps) on root level.
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
#include "RimEclipseResultAddressCollection.h"
|
||||
#include "RimEclipseStatisticsCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimEclipseViewCollection.h"
|
||||
#include "RimFaultInViewCollection.h"
|
||||
#include "RimFormationNames.h"
|
||||
#include "RimGridCollection.h"
|
||||
@@ -91,7 +92,7 @@ RimEclipseCase::RimEclipseCase()
|
||||
{
|
||||
CAF_PDM_InitScriptableObjectWithNameAndComment( "EclipseCase", ":/Case48x48.png", "", "", "Reservoir", "Abstract base class for Eclipse Cases" );
|
||||
|
||||
CAF_PDM_InitScriptableFieldWithScriptKeywordNoDefault( &reservoirViews, "ReservoirViews", "Views", "", "", "", "All Eclipse Views in the case" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_reservoirViews_OBSOLETE, "ReservoirViews", "Views", "", "", "", "All Eclipse Views in the case" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_matrixModelResults, "MatrixModelResults", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_fractureModelResults, "FractureModelResults", "" );
|
||||
@@ -105,8 +106,8 @@ RimEclipseCase::RimEclipseCase()
|
||||
// https://github.com/OPM/ResInsight/issues/7308
|
||||
m_filesContainingFaults.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_contourMapCollection, "ContourMaps", "2d Contour Maps" );
|
||||
m_contourMapCollection = new RimEclipseContourMapViewCollection;
|
||||
CAF_PDM_InitFieldNoDefault( &m_contourMapCollection_OBSOLETE, "ContourMaps", "2d Contour Maps" );
|
||||
m_contourMapCollection_OBSOLETE = new RimEclipseContourMapViewCollection;
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_inputPropertyCollection, "InputPropertyCollection", "" );
|
||||
m_inputPropertyCollection = new RimEclipseInputPropertyCollection;
|
||||
@@ -132,8 +133,6 @@ RimEclipseCase::RimEclipseCase()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseCase::~RimEclipseCase()
|
||||
{
|
||||
reservoirViews.deleteChildren();
|
||||
|
||||
delete m_matrixModelResults();
|
||||
delete m_fractureModelResults();
|
||||
delete m_inputPropertyCollection;
|
||||
@@ -276,17 +275,32 @@ void RimEclipseCase::initAfterRead()
|
||||
{
|
||||
RimCase::initAfterRead();
|
||||
|
||||
size_t j;
|
||||
for ( j = 0; j < reservoirViews().size(); j++ )
|
||||
if ( RimProject::current()->isProjectFileVersionEqualOrOlderThan( "2024.03.0" ) )
|
||||
{
|
||||
RimEclipseView* riv = reservoirViews()[j];
|
||||
CVF_ASSERT( riv );
|
||||
// Move views to view collection.
|
||||
RimEclipseViewCollection* viewColl = viewCollection();
|
||||
for ( size_t j = 0; j < m_reservoirViews_OBSOLETE.size(); j++ )
|
||||
{
|
||||
RimEclipseView* riv = m_reservoirViews_OBSOLETE()[j];
|
||||
CVF_ASSERT( riv );
|
||||
|
||||
riv->setEclipseCase( this );
|
||||
}
|
||||
for ( RimEclipseContourMapView* contourMap : m_contourMapCollection->views() )
|
||||
{
|
||||
contourMap->setEclipseCase( this );
|
||||
riv->setEclipseCase( this );
|
||||
m_reservoirViews_OBSOLETE.removeChild( riv );
|
||||
viewColl->addView( riv );
|
||||
}
|
||||
|
||||
m_reservoirViews_OBSOLETE.clearWithoutDelete();
|
||||
|
||||
// Move contour maps
|
||||
auto mapViewColl = contourMapCollection();
|
||||
for ( RimEclipseContourMapView* contourMap : m_contourMapCollection_OBSOLETE->views() )
|
||||
{
|
||||
contourMap->setEclipseCase( this );
|
||||
m_contourMapCollection_OBSOLETE->removeChild( contourMap );
|
||||
mapViewColl->push_back( contourMap );
|
||||
}
|
||||
|
||||
m_contourMapCollection_OBSOLETE->clearWithoutDelete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,29 +309,10 @@ void RimEclipseCase::initAfterRead()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseView* RimEclipseCase::createAndAddReservoirView()
|
||||
{
|
||||
RimEclipseView* rimEclipseView = new RimEclipseView();
|
||||
RimEclipseViewCollection* viewColl = viewCollection();
|
||||
if ( !viewColl ) return nullptr;
|
||||
|
||||
rimEclipseView->setEclipseCase( this );
|
||||
|
||||
// Set default values
|
||||
if ( rimEclipseView->currentGridCellResults() )
|
||||
{
|
||||
auto defaultResult = rimEclipseView->currentGridCellResults()->defaultResult();
|
||||
rimEclipseView->cellResult()->setFromEclipseResultAddress( defaultResult );
|
||||
}
|
||||
|
||||
auto prefs = RiaPreferences::current();
|
||||
rimEclipseView->faultCollection()->setActive( prefs->enableFaultsByDefault() );
|
||||
|
||||
rimEclipseView->cellEdgeResult()->setResultVariable( "MULT" );
|
||||
rimEclipseView->cellEdgeResult()->setActive( false );
|
||||
rimEclipseView->fractureColors()->setDefaultResultName();
|
||||
|
||||
caf::PdmDocument::updateUiIconStateRecursively( rimEclipseView );
|
||||
|
||||
reservoirViews().push_back( rimEclipseView );
|
||||
|
||||
return rimEclipseView;
|
||||
return viewColl->addView( this );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -334,7 +329,10 @@ RimEclipseView* RimEclipseCase::createCopyAndAddView( const RimEclipseView* sour
|
||||
|
||||
caf::PdmDocument::updateUiIconStateRecursively( rimEclipseView );
|
||||
|
||||
reservoirViews().push_back( rimEclipseView );
|
||||
RimEclipseViewCollection* viewColl = viewCollection();
|
||||
if ( !viewColl ) return nullptr;
|
||||
|
||||
viewColl->addView( rimEclipseView );
|
||||
|
||||
// Resolve references after reservoir view has been inserted into Rim structures
|
||||
rimEclipseView->resolveReferencesRecursively();
|
||||
@@ -468,10 +466,8 @@ void RimEclipseCase::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
|
||||
|
||||
computeCachedData();
|
||||
|
||||
for ( size_t i = 0; i < reservoirViews().size(); i++ )
|
||||
for ( RimEclipseView* reservoirView : reservoirViews() )
|
||||
{
|
||||
RimEclipseView* reservoirView = reservoirViews()[i];
|
||||
|
||||
reservoirView->scheduleReservoirGridGeometryRegen();
|
||||
reservoirView->scheduleSimWellGeometryRegen();
|
||||
reservoirView->createDisplayModelAndRedraw();
|
||||
@@ -554,20 +550,10 @@ void RimEclipseCase::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
|
||||
{
|
||||
if ( uiConfigName == "MainWindow.ProjectTree" )
|
||||
{
|
||||
std::vector<PdmObjectHandle*> children = reservoirViews.children();
|
||||
|
||||
for ( auto child : children )
|
||||
uiTreeOrdering.add( child );
|
||||
|
||||
if ( !m_2dIntersectionViewCollection->views().empty() )
|
||||
{
|
||||
uiTreeOrdering.add( &m_2dIntersectionViewCollection );
|
||||
}
|
||||
|
||||
if ( !m_contourMapCollection->views().empty() )
|
||||
{
|
||||
uiTreeOrdering.add( &m_contourMapCollection );
|
||||
}
|
||||
}
|
||||
else if ( uiConfigName == "MainWindow.DataSources" )
|
||||
{
|
||||
@@ -668,9 +654,15 @@ RimCaseCollection* RimEclipseCase::parentCaseCollection()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseContourMapViewCollection* RimEclipseCase::contourMapCollection()
|
||||
RimEclipseContourMapViewCollection* RimEclipseCase::contourMapCollection() const
|
||||
{
|
||||
return m_contourMapCollection;
|
||||
RimProject* project = RimProject::current();
|
||||
if ( !project ) return nullptr;
|
||||
|
||||
RimOilField* oilField = project->activeOilField();
|
||||
if ( !oilField ) return nullptr;
|
||||
|
||||
return oilField->eclipseContourMapCollection();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1080,12 +1072,12 @@ bool RimEclipseCase::openReserviorCase()
|
||||
std::vector<Rim3dView*> RimEclipseCase::allSpecialViews() const
|
||||
{
|
||||
std::vector<Rim3dView*> views;
|
||||
for ( RimEclipseView* view : reservoirViews )
|
||||
for ( RimEclipseView* view : reservoirViews() )
|
||||
{
|
||||
views.push_back( view );
|
||||
}
|
||||
|
||||
for ( RimEclipseContourMapView* view : m_contourMapCollection->views() )
|
||||
for ( RimEclipseContourMapView* view : contourMapViews() )
|
||||
{
|
||||
views.push_back( view );
|
||||
}
|
||||
@@ -1198,3 +1190,57 @@ void RimEclipseCase::updateResultAddressCollection()
|
||||
m_resultAddressCollections.deleteChildren();
|
||||
updateConnectedEditors();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseViewCollection* RimEclipseCase::viewCollection() const
|
||||
{
|
||||
RimProject* project = RimProject::current();
|
||||
if ( !project ) return nullptr;
|
||||
|
||||
RimOilField* oilField = project->activeOilField();
|
||||
if ( !oilField ) return nullptr;
|
||||
|
||||
return oilField->eclipseViewCollection();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimEclipseView*> RimEclipseCase::reservoirViews() const
|
||||
{
|
||||
std::vector<RimEclipseView*> views;
|
||||
if ( RimEclipseViewCollection* viewColl = viewCollection() )
|
||||
{
|
||||
for ( auto view : viewColl->views() )
|
||||
{
|
||||
if ( view && view->eclipseCase() && view->eclipseCase() == this )
|
||||
{
|
||||
views.push_back( view );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return views;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimEclipseContourMapView*> RimEclipseCase::contourMapViews() const
|
||||
{
|
||||
std::vector<RimEclipseContourMapView*> views;
|
||||
if ( RimEclipseContourMapViewCollection* viewColl = contourMapCollection() )
|
||||
{
|
||||
for ( auto view : viewColl->views() )
|
||||
{
|
||||
if ( view && view->eclipseCase() && view->eclipseCase() == this )
|
||||
{
|
||||
views.push_back( view );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return views;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user