mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Support global and local views.
This commit is contained in:
@@ -23,8 +23,10 @@
|
||||
|
||||
#include "Rim3dView.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseCaseTools.h"
|
||||
#include "RimEclipseContourMapView.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimEclipseViewCollection.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RimGeoMechView.h"
|
||||
|
||||
@@ -39,9 +41,9 @@ CAF_CMD_SOURCE_INIT( RicNewViewFeature, "RicNewViewFeature" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicNewViewFeature::addReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase )
|
||||
void RicNewViewFeature::addReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase, bool useGlobalViewCollection )
|
||||
{
|
||||
Rim3dView* newView = createReservoirView( eclipseCase, geomCase );
|
||||
Rim3dView* newView = createReservoirView( eclipseCase, geomCase, useGlobalViewCollection );
|
||||
|
||||
if ( newView )
|
||||
{
|
||||
@@ -58,7 +60,7 @@ void RicNewViewFeature::addReservoirView( RimEclipseCase* eclipseCase, RimGeoMec
|
||||
bool RicNewViewFeature::isCommandEnabled() const
|
||||
{
|
||||
return selectedEclipseCase() != nullptr || selectedEclipseView() != nullptr || selectedGeoMechCase() != nullptr ||
|
||||
selectedGeoMechView() != nullptr;
|
||||
selectedGeoMechView() != nullptr || selectedEclipseViewCollection() != nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -76,7 +78,21 @@ void RicNewViewFeature::onActionTriggered( bool isChecked )
|
||||
if ( geoMechView ) geomCase = geoMechView->geoMechCase();
|
||||
if ( reservoirView ) eclipseCase = reservoirView->eclipseCase();
|
||||
|
||||
addReservoirView( eclipseCase, geomCase );
|
||||
bool useGlobalViewCollection = false;
|
||||
if ( selectedEclipseViewCollection() )
|
||||
{
|
||||
// Use global view collection if view collection is not descendant of Eclipse case.
|
||||
useGlobalViewCollection = selectedEclipseViewCollection()->firstAncestorOrThisOfType<RimEclipseCase>() == nullptr;
|
||||
if ( !eclipseCase )
|
||||
{
|
||||
auto eclipseCases = RimEclipseCaseTools::allEclipseGridCases();
|
||||
if ( !eclipseCases.empty() )
|
||||
{
|
||||
eclipseCase = eclipseCases[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
addReservoirView( eclipseCase, geomCase, useGlobalViewCollection );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -91,13 +107,13 @@ void RicNewViewFeature::setupActionLook( QAction* actionToSetup )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
Rim3dView* RicNewViewFeature::createReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase )
|
||||
Rim3dView* RicNewViewFeature::createReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase, bool useGlobalViewCollection )
|
||||
{
|
||||
RimGridView* insertedView = nullptr;
|
||||
|
||||
if ( eclipseCase )
|
||||
{
|
||||
insertedView = eclipseCase->createAndAddReservoirView();
|
||||
insertedView = eclipseCase->createAndAddReservoirView( useGlobalViewCollection );
|
||||
}
|
||||
else if ( geomCase )
|
||||
{
|
||||
@@ -171,6 +187,17 @@ RimEclipseView* RicNewViewFeature::selectedEclipseView()
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseViewCollection* RicNewViewFeature::selectedEclipseViewCollection()
|
||||
{
|
||||
std::vector<RimEclipseViewCollection*> selection;
|
||||
caf::SelectionManager::instance()->objectsByType( &selection );
|
||||
if ( !selection.empty() ) return selection[0];
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -26,6 +26,7 @@ class RimEclipseView;
|
||||
class RimGeoMechCase;
|
||||
class RimGeoMechView;
|
||||
class Rim3dView;
|
||||
class RimEclipseViewCollection;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@@ -35,7 +36,7 @@ class RicNewViewFeature : public caf::CmdFeature
|
||||
CAF_CMD_HEADER_INIT;
|
||||
|
||||
public:
|
||||
static void addReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase );
|
||||
static void addReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase, bool useGlobalViewCollection = false );
|
||||
|
||||
protected:
|
||||
bool isCommandEnabled() const override;
|
||||
@@ -43,10 +44,11 @@ protected:
|
||||
void setupActionLook( QAction* actionToSetup ) override;
|
||||
|
||||
private:
|
||||
static Rim3dView* createReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase );
|
||||
static Rim3dView* createReservoirView( RimEclipseCase* eclipseCase, RimGeoMechCase* geomCase, bool useGlobalViewCollectin );
|
||||
|
||||
static RimEclipseCase* selectedEclipseCase();
|
||||
static RimGeoMechCase* selectedGeoMechCase();
|
||||
static RimEclipseView* selectedEclipseView();
|
||||
static RimGeoMechView* selectedGeoMechView();
|
||||
static RimEclipseViewCollection* selectedEclipseViewCollection();
|
||||
};
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimEclipseStatisticsCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimEclipseViewCollection.h"
|
||||
#include "RimElasticProperties.h"
|
||||
#include "RimEllipseFractureTemplate.h"
|
||||
#include "RimEnsembleCurveFilterCollection.h"
|
||||
@@ -282,6 +283,10 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
|
||||
menuBuilder << "RicComputeStatisticsFeature";
|
||||
menuBuilder << "Separator";
|
||||
}
|
||||
else if ( dynamic_cast<RimEclipseViewCollection*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder << "RicNewViewFeature";
|
||||
}
|
||||
else if ( dynamic_cast<RimEclipseCase*>( firstUiItem ) )
|
||||
{
|
||||
menuBuilder << "RicRenameCaseFeature";
|
||||
|
||||
@@ -117,6 +117,9 @@ RimEclipseCase::RimEclipseCase()
|
||||
m_resultAddressCollections.uiCapability()->setUiHidden( true );
|
||||
m_resultAddressCollections.xmlCapability()->disableIO();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_viewCollection, "ViewCollection", "Views" );
|
||||
m_viewCollection = new RimEclipseViewCollection;
|
||||
|
||||
// Init
|
||||
|
||||
m_matrixModelResults = new RimReservoirCellResultsStorage;
|
||||
@@ -136,6 +139,7 @@ RimEclipseCase::~RimEclipseCase()
|
||||
delete m_matrixModelResults();
|
||||
delete m_fractureModelResults();
|
||||
delete m_inputPropertyCollection;
|
||||
delete m_viewCollection;
|
||||
|
||||
RimProject* project = RimProject::current();
|
||||
if ( project )
|
||||
@@ -307,9 +311,9 @@ void RimEclipseCase::initAfterRead()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseView* RimEclipseCase::createAndAddReservoirView()
|
||||
RimEclipseView* RimEclipseCase::createAndAddReservoirView( bool useGlobalViewCollection )
|
||||
{
|
||||
RimEclipseViewCollection* viewColl = viewCollection();
|
||||
RimEclipseViewCollection* viewColl = useGlobalViewCollection ? globalViewCollection() : viewCollection();
|
||||
if ( !viewColl ) return nullptr;
|
||||
|
||||
return viewColl->addView( this );
|
||||
@@ -550,6 +554,11 @@ void RimEclipseCase::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
|
||||
{
|
||||
if ( uiConfigName == "MainWindow.ProjectTree" )
|
||||
{
|
||||
for ( auto view : m_viewCollection->views() )
|
||||
{
|
||||
uiTreeOrdering.add( view );
|
||||
}
|
||||
|
||||
if ( !m_2dIntersectionViewCollection->views().empty() )
|
||||
{
|
||||
uiTreeOrdering.add( &m_2dIntersectionViewCollection );
|
||||
@@ -1195,6 +1204,14 @@ void RimEclipseCase::updateResultAddressCollection()
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseViewCollection* RimEclipseCase::viewCollection() const
|
||||
{
|
||||
return m_viewCollection;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseViewCollection* RimEclipseCase::globalViewCollection() const
|
||||
{
|
||||
RimProject* project = RimProject::current();
|
||||
if ( !project ) return nullptr;
|
||||
@@ -1211,7 +1228,18 @@ RimEclipseViewCollection* RimEclipseCase::viewCollection() const
|
||||
std::vector<RimEclipseView*> RimEclipseCase::reservoirViews() const
|
||||
{
|
||||
std::vector<RimEclipseView*> views;
|
||||
if ( RimEclipseViewCollection* viewColl = viewCollection() )
|
||||
|
||||
addViewsFromViewCollection( views, viewCollection() );
|
||||
addViewsFromViewCollection( views, globalViewCollection() );
|
||||
return views;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseCase::addViewsFromViewCollection( std::vector<RimEclipseView*>& views, const RimEclipseViewCollection* viewColl ) const
|
||||
{
|
||||
if ( viewColl )
|
||||
{
|
||||
for ( auto view : viewColl->views() )
|
||||
{
|
||||
@@ -1221,8 +1249,6 @@ std::vector<RimEclipseView*> RimEclipseCase::reservoirViews() const
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return views;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -91,7 +91,7 @@ public:
|
||||
RimReservoirCellResultsStorage* resultsStorage( RiaDefines::PorosityModelType porosityModel );
|
||||
const RimReservoirCellResultsStorage* resultsStorage( RiaDefines::PorosityModelType porosityModel ) const;
|
||||
|
||||
RimEclipseView* createAndAddReservoirView();
|
||||
RimEclipseView* createAndAddReservoirView( bool useGlobalViewCollection = false );
|
||||
RimEclipseView* createCopyAndAddView( const RimEclipseView* sourceView );
|
||||
|
||||
const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities();
|
||||
@@ -141,7 +141,9 @@ protected:
|
||||
void setReservoirData( RigEclipseCaseData* eclipseCase );
|
||||
std::vector<QString> additionalFiles() const;
|
||||
RimEclipseViewCollection* viewCollection() const;
|
||||
RimEclipseViewCollection* globalViewCollection() const;
|
||||
RimEclipseContourMapViewCollection* contourMapViewCollection() const;
|
||||
void addViewsFromViewCollection( std::vector<RimEclipseView*>& views, const RimEclipseViewCollection* viewColl ) const;
|
||||
|
||||
private:
|
||||
void createTimeStepFormatString();
|
||||
@@ -168,6 +170,7 @@ private:
|
||||
|
||||
caf::PdmChildField<RimReservoirCellResultsStorage*> m_matrixModelResults;
|
||||
caf::PdmChildField<RimReservoirCellResultsStorage*> m_fractureModelResults;
|
||||
caf::PdmChildField<RimEclipseViewCollection*> m_viewCollection;
|
||||
|
||||
caf::PdmField<std::vector<caf::FilePath>> m_filesContainingFaults;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
|
||||
#include "RimGridCollection.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGridView.h"
|
||||
|
||||
#include "RigMainGrid.h"
|
||||
@@ -479,7 +480,10 @@ void RimGridCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrde
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RigMainGrid* RimGridCollection::mainEclipseGrid() const
|
||||
{
|
||||
auto eclipseCase = firstAncestorOrThisOfType<RimEclipseCase>();
|
||||
RimEclipseView* gridView = firstAncestorOrThisOfType<RimEclipseView>();
|
||||
if ( !gridView ) return nullptr;
|
||||
|
||||
auto eclipseCase = gridView->eclipseCase();
|
||||
return eclipseCase ? eclipseCase->mainGrid() : nullptr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user