diff --git a/ApplicationCode/ProjectDataModel/RimGridView.cpp b/ApplicationCode/ProjectDataModel/RimGridView.cpp index abe316dd9e..1f3e0b9fd6 100644 --- a/ApplicationCode/ProjectDataModel/RimGridView.cpp +++ b/ApplicationCode/ProjectDataModel/RimGridView.cpp @@ -95,6 +95,8 @@ RimGridView::RimGridView() "" ); m_surfaceResultDefCollection.uiCapability()->setUiTreeHidden( true ); m_surfaceResultDefCollection = new RimIntersectionResultsDefinitionCollection; + m_surfaceResultDefCollection->uiCapability()->setUiName( "Separate Surface Results" ); + m_surfaceResultDefCollection->uiCapability()->setUiIcon( caf::QIconProvider( ":/ReservoirSurface16x16.png" ) ); CAF_PDM_InitFieldNoDefault( &m_gridCollection, "GridCollection", "GridCollection", "", "", "" ); m_gridCollection.uiCapability()->setUiHidden( true ); diff --git a/ApplicationCode/ProjectDataModel/RimIntersection.cpp b/ApplicationCode/ProjectDataModel/RimIntersection.cpp index e050f7eba1..86bc55fc42 100644 --- a/ApplicationCode/ProjectDataModel/RimIntersection.cpp +++ b/ApplicationCode/ProjectDataModel/RimIntersection.cpp @@ -87,10 +87,9 @@ RimIntersectionResultDefinition* RimIntersection::activeSeparateResultDefinition if ( !m_separateDataSource->isActive() ) return nullptr; - RimGridView* view; - this->firstAncestorOrThisOfTypeAsserted( view ); + if ( !findSeparateResultsCollection() ) return nullptr; - if ( !view->separateIntersectionResultsCollection()->isActive() ) return nullptr; + if ( !findSeparateResultsCollection()->isActive() ) return nullptr; return m_separateDataSource; } @@ -105,11 +104,8 @@ QList RimIntersection::calculateValueOptions( const caf: if ( fieldNeedingOptions == &m_separateDataSource ) { - RimGridView* view; - this->firstAncestorOrThisOfTypeAsserted( view ); - std::vector iResDefs = - view->separateIntersectionResultsCollection()->intersectionResultsDefinitions(); + findSeparateResultsCollection()->intersectionResultsDefinitions(); for ( auto iresdef : iResDefs ) { @@ -120,6 +116,16 @@ QList RimIntersection::calculateValueOptions( const caf: return options; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimIntersectionResultsDefinitionCollection* RimIntersection::findSeparateResultsCollection() +{ + RimGridView* view; + this->firstAncestorOrThisOfTypeAsserted( view ); + return view->separateIntersectionResultsCollection(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -163,18 +169,12 @@ void RimIntersection::updateDefaultSeparateDataSource() { if ( m_separateDataSource() == nullptr ) { - RimGridView* view; - this->firstAncestorOrThisOfType( view ); + std::vector iResDefs = + findSeparateResultsCollection()->intersectionResultsDefinitions(); - if ( view ) + if ( iResDefs.size() ) { - std::vector iResDefs = - view->separateIntersectionResultsCollection()->intersectionResultsDefinitions(); - - if ( iResDefs.size() ) - { - m_separateDataSource = iResDefs[0]; - } + m_separateDataSource = iResDefs[0]; } } } diff --git a/ApplicationCode/ProjectDataModel/RimIntersection.h b/ApplicationCode/ProjectDataModel/RimIntersection.h index d461c2214c..98b77939a6 100644 --- a/ApplicationCode/ProjectDataModel/RimIntersection.h +++ b/ApplicationCode/ProjectDataModel/RimIntersection.h @@ -26,6 +26,7 @@ class RimIntersectionResultDefinition; class RivIntersectionHexGridInterface; +class RimIntersectionResultsDefinitionCollection; class RimIntersection : public caf::PdmObject { @@ -45,6 +46,8 @@ public: cvf::ref createHexGridInterface(); protected: + virtual RimIntersectionResultsDefinitionCollection* findSeparateResultsCollection(); + caf::PdmFieldHandle* objectToggleField() override final; QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly ) override; diff --git a/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.cpp b/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.cpp index 7219a72810..4819a12761 100644 --- a/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.cpp +++ b/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.cpp @@ -36,11 +36,9 @@ RimSurfaceInView::RimSurfaceInView() { CAF_PDM_InitObject( "Surface", ":/ReservoirSurface16x16.png", "", "" ); - CAF_PDM_InitField( &m_isActive, "IsActive", true, "Visible", "", "", "" ); - m_isActive.uiCapability()->setUiHidden( true ); - CAF_PDM_InitFieldNoDefault( &m_name, "Name", "Name", "", "", "" ); m_name.registerGetMethod( this, &RimSurfaceInView::name ); + m_name.uiCapability()->setUiReadOnly( true ); CAF_PDM_InitFieldNoDefault( &m_surface, "SurfaceRef", "Surface", "", "", "" ); m_surface.uiCapability()->setUiHidden( true ); @@ -77,14 +75,6 @@ void RimSurfaceInView::setSurface( RimSurface* surf ) m_surface = surf; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -bool RimSurfaceInView::isActive() -{ - return m_isActive(); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -118,6 +108,30 @@ void RimSurfaceInView::fieldChangedByUi( const caf::PdmFieldHandle* changedField } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSurfaceInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) +{ + uiOrdering.add( &m_name ); + + uiOrdering.add( &m_showInactiveCells ); + + this->defineSeparateDataSourceUi( uiConfigName, uiOrdering ); +} + +//-------------------------------------------------------------------------------------------------- + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimIntersectionResultsDefinitionCollection* RimSurfaceInView::findSeparateResultsCollection() +{ + RimGridView* view; + this->firstAncestorOrThisOfTypeAsserted( view ); + return view->separateSurfaceResultsCollection(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -125,61 +139,3 @@ caf::PdmFieldHandle* RimSurfaceInView::userDescriptionField() { return &m_name; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -caf::PdmFieldHandle* RimSurfaceInView::objectToggleField() -{ - return &m_isActive; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -cvf::ref RimSurfaceInView::createHexGridInterface() -{ - // RimIntersectionResultDefinition* resDef = activeSeparateResultDefinition(); - // if ( resDef && resDef->activeCase() ) - //{ - // // Eclipse case - // - // RimEclipseCase* eclipseCase = dynamic_cast( resDef->activeCase() ); - // if ( eclipseCase && eclipseCase->eclipseCaseData() ) - // { - // return new RivEclipseIntersectionGrid( eclipseCase->eclipseCaseData()->mainGrid(), - // eclipseCase->eclipseCaseData()->activeCellInfo( - // resDef->eclipseResultDefinition()->porosityModel() ), - // this->isInactiveCellsVisible() ); - // } - // - // // Geomech case - // - // RimGeoMechCase* geomCase = dynamic_cast( resDef->activeCase() ); - // - // if ( geomCase && geomCase->geoMechData() && geomCase->geoMechData()->femParts() ) - // { - // RigFemPart* femPart = geomCase->geoMechData()->femParts()->part( 0 ); - // return new RivFemIntersectionGrid( femPart ); - // } - //} - - RimEclipseView* eclipseView; - this->firstAncestorOrThisOfType( eclipseView ); - if ( eclipseView ) - { - RigMainGrid* grid = eclipseView->mainGrid(); - return new RivEclipseIntersectionGrid( grid, eclipseView->currentActiveCellInfo(), true ); - } - - RimGeoMechView* geoView; - this->firstAncestorOrThisOfType( geoView ); - if ( geoView && geoView->femParts() && geoView->femParts()->partCount() ) - { - RigFemPart* femPart = geoView->femParts()->part( 0 ); - - return new RivFemIntersectionGrid( femPart ); - } - - return nullptr; -} diff --git a/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.h b/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.h index e8f7ff1fe2..790dad213a 100644 --- a/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.h +++ b/ApplicationCode/ProjectDataModel/Surfaces/RimSurfaceInView.h @@ -24,11 +24,14 @@ #include "cvfObject.h" +#include "RimIntersection.h" + class RimSurface; + class RivSurfacePartMgr; class RivIntersectionHexGridInterface; -class RimSurfaceInView : public caf::PdmObject +class RimSurfaceInView : public RimIntersection { CAF_PDM_HEADER_INIT; @@ -36,25 +39,23 @@ public: RimSurfaceInView(); ~RimSurfaceInView() override; - QString name() const; + QString name() const override; RimSurface* surface() const; void setSurface( RimSurface* surf ); - bool isActive(); void clearGeometry(); RivSurfacePartMgr* surfacePartMgr(); - cvf::ref createHexGridInterface(); - private: + virtual RimIntersectionResultsDefinitionCollection* findSeparateResultsCollection() override; + caf::PdmFieldHandle* userDescriptionField() override; - caf::PdmFieldHandle* objectToggleField() override; - void fieldChangedByUi(const caf::PdmFieldHandle* changedField, + void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; + virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; caf::PdmProxyValueField m_name; - caf::PdmField m_isActive; caf::PdmPtrField m_surface; cvf::ref m_surfacePartMgr;