diff --git a/ApplicationLibCode/Commands/EclipseCommands/RicNewFaultDistanceResultFeature.cpp b/ApplicationLibCode/Commands/EclipseCommands/RicNewFaultDistanceResultFeature.cpp index 70112f1563..6d374909a6 100644 --- a/ApplicationLibCode/Commands/EclipseCommands/RicNewFaultDistanceResultFeature.cpp +++ b/ApplicationLibCode/Commands/EclipseCommands/RicNewFaultDistanceResultFeature.cpp @@ -18,6 +18,7 @@ #include "RicNewFaultDistanceResultFeature.h" +#include "RimEclipseView.h" #include "RimFaultDistanceResult.h" #include "RimFaultDistanceResultCollection.h" #include "RimFaultInView.h" @@ -33,28 +34,19 @@ CAF_CMD_SOURCE_INIT( RicNewFaultDistanceResultFeature, "RicNewFaultDistanceResul namespace { -RimFaultInViewCollection* findHostCollection() +RimEclipseView* findHostView() { const auto faultCollections = caf::SelectionManager::instance()->objectsByType(); - if ( !faultCollections.empty() ) return faultCollections.front(); + if ( !faultCollections.empty() ) return faultCollections.front()->firstAncestorOrThisOfType(); const auto distanceCollections = caf::SelectionManager::instance()->objectsByType(); - if ( !distanceCollections.empty() ) - { - return distanceCollections.front()->firstAncestorOrThisOfType(); - } + if ( !distanceCollections.empty() ) return distanceCollections.front()->firstAncestorOrThisOfType(); const auto distanceResults = caf::SelectionManager::instance()->objectsByType(); - if ( !distanceResults.empty() ) - { - return distanceResults.front()->firstAncestorOrThisOfType(); - } + if ( !distanceResults.empty() ) return distanceResults.front()->firstAncestorOrThisOfType(); const auto faults = caf::SelectionManager::instance()->objectsByType(); - if ( !faults.empty() ) - { - return faults.front()->firstAncestorOrThisOfType(); - } + if ( !faults.empty() ) return faults.front()->firstAncestorOrThisOfType(); return nullptr; } @@ -65,7 +57,7 @@ RimFaultInViewCollection* findHostCollection() //-------------------------------------------------------------------------------------------------- bool RicNewFaultDistanceResultFeature::isCommandEnabled() const { - return findHostCollection() != nullptr; + return findHostView() != nullptr; } //-------------------------------------------------------------------------------------------------- @@ -73,10 +65,10 @@ bool RicNewFaultDistanceResultFeature::isCommandEnabled() const //-------------------------------------------------------------------------------------------------- void RicNewFaultDistanceResultFeature::onActionTriggered( bool isChecked ) { - RimFaultInViewCollection* hostCollection = findHostCollection(); - if ( !hostCollection ) return; + RimEclipseView* eclipseView = findHostView(); + if ( !eclipseView ) return; - RimFaultDistanceResultCollection* distanceCollection = hostCollection->faultDistanceResults(); + RimFaultDistanceResultCollection* distanceCollection = eclipseView->faultDistanceResults(); if ( !distanceCollection ) return; const auto selectedFaultPointers = caf::SelectionManager::instance()->objectsByType(); @@ -89,13 +81,12 @@ void RicNewFaultDistanceResultFeature::onActionTriggered( bool isChecked ) { newResult->setSelectedFaults( selectedFaults ); } - else + else if ( eclipseView->faultCollection() ) { - newResult->setSelectedFaults( hostCollection->faults() ); + newResult->setSelectedFaults( eclipseView->faultCollection()->faults() ); } - hostCollection->updateConnectedEditors(); - distanceCollection->updateConnectedEditors(); + eclipseView->updateConnectedEditors(); Riu3DMainWindowTools::selectAsCurrentItem( newResult ); } diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistanceResult.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistanceResult.cpp index 257e066fc7..2c3d979e70 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistanceResult.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistanceResult.cpp @@ -143,7 +143,8 @@ QList RimFaultDistanceResult::calculateValueOptions( con if ( fieldNeedingOptions == &m_faults ) { - auto faultCollection = firstAncestorOrThisOfType(); + auto eclipseView = firstAncestorOrThisOfType(); + auto faultCollection = eclipseView ? eclipseView->faultCollection() : nullptr; if ( faultCollection ) { for ( RimFaultInView* fault : faultCollection->faults() ) diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.cpp b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.cpp index 636e9f0724..0ca2471d9c 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.cpp @@ -27,7 +27,6 @@ #include "RimEclipseFaultColors.h" #include "RimEclipseView.h" -#include "RimFaultDistanceResultCollection.h" #include "RimFaultInView.h" #include "RimIntersectionCollection.h" #include "RimProject.h" @@ -106,9 +105,6 @@ RimFaultInViewCollection::RimFaultInViewCollection() CAF_PDM_InitScriptableFieldNoDefault( &m_faults, "Faults", "Faults" ); - CAF_PDM_InitScriptableFieldNoDefault( &m_distanceResults, "FaultDistanceResults", "" ); - m_distanceResults = new RimFaultDistanceResultCollection; - CAF_PDM_InitField( &m_showFaultsOutsideFilters_obsolete, "ShowFaultsOutsideFilters", true, "Show Faults Outside Filters" ); m_showFaultsOutsideFilters_obsolete.xmlCapability()->setIOWritable( false ); m_showFaultsOutsideFilters_obsolete.uiCapability()->setUiHidden( true ); @@ -402,11 +398,6 @@ void RimFaultInViewCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiT uiTreeOrdering.appendChild( uiTree ); } - if ( m_distanceResults() && !m_distanceResults()->isEmpty() ) - { - uiTreeOrdering.add( m_distanceResults() ); - } - for ( const auto& fault : m_faults ) { uiTreeOrdering.add( fault ); @@ -423,14 +414,6 @@ RimEclipseView* RimFaultInViewCollection::parentView() const return firstAncestorOrThisOfTypeAsserted(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimFaultDistanceResultCollection* RimFaultInViewCollection::faultDistanceResults() const -{ - return m_distanceResults(); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.h b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.h index 1c61f2d875..17aa32ebee 100644 --- a/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.h @@ -33,7 +33,6 @@ #include class RimEclipseView; -class RimFaultDistanceResultCollection; class RimFaultInView; //================================================================================================== @@ -59,7 +58,6 @@ public: void setActive( bool bActive ); std::vector faults() const; - RimFaultDistanceResultCollection* faultDistanceResults() const; cvf::Color3f faultLabelColor() const; caf::AppEnum faultResult() const; bool showFaultFaces() const; @@ -108,8 +106,7 @@ private: caf::PdmField> m_faultResult; - caf::PdmChildArrayField m_faults; - caf::PdmChildField m_distanceResults; + caf::PdmChildArrayField m_faults; caf::PdmField m_showFaultsOutsideFilters_obsolete; }; diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp index 370bf71663..08e71136f1 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp @@ -66,6 +66,7 @@ #include "RimEclipseResultDefinition.h" #include "RimElementVectorResult.h" #include "RimExtrudedCurveIntersection.h" +#include "RimFaultDistanceResultCollection.h" #include "RimFaultInViewCollection.h" #include "RimFaultReactivationModelCollection.h" #include "RimFilterInViewCollection.h" @@ -201,6 +202,9 @@ RimEclipseView::RimEclipseView() CAF_PDM_InitScriptableFieldNoDefault( &m_faultCollection, "FaultCollection", "Faults" ); m_faultCollection = new RimFaultInViewCollection; + CAF_PDM_InitFieldNoDefault( &m_faultDistanceResultCollection, "FaultDistanceResultCollection", "Fault Distance Results" ); + m_faultDistanceResultCollection = new RimFaultDistanceResultCollection; + CAF_PDM_InitFieldNoDefault( &m_faultReactivationModelCollection, "FaultReactivationModelCollection", "Fault Reactivation Models" ); m_faultReactivationModelCollection = new RimFaultReactivationModelCollection; @@ -353,6 +357,14 @@ RimFaultInViewCollection* RimEclipseView::faultCollection() const return m_faultCollection; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimFaultDistanceResultCollection* RimEclipseView::faultDistanceResults() const +{ + return m_faultDistanceResultCollection; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -2119,6 +2131,8 @@ void RimEclipseView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin uiTreeOrdering.add( faultCollection() ); + if ( faultDistanceResults() && !faultDistanceResults()->isEmpty() ) uiTreeOrdering.add( faultDistanceResults() ); + if ( faultReactivationModelCollection()->shouldBeVisibleInTree() ) uiTreeOrdering.add( faultReactivationModelCollection() ); uiTreeOrdering.add( intersectionCollection() ); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseView.h b/ApplicationLibCode/ProjectDataModel/RimEclipseView.h index eb4f1d3eba..2f5295ce39 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseView.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseView.h @@ -53,6 +53,7 @@ class RimEclipseCellColors; class RimEclipseFaultColors; class RimEclipsePropertyFilter; class RimEclipsePropertyFilterCollection; +class RimFaultDistanceResultCollection; class RimFaultInViewCollection; class RimFilterInViewCollection; class RimReservoirCellResultsStorage; @@ -114,6 +115,7 @@ public: RimStimPlanColors* fractureColors() const; RimSimWellInViewCollection* wellCollection() const; RimFaultInViewCollection* faultCollection() const; + RimFaultDistanceResultCollection* faultDistanceResults() const; RimVirtualPerforationResults* virtualPerforationResult() const; RimStreamlineInViewCollection* streamlineCollection() const; RimFaultReactivationModelCollection* faultReactivationModelCollection() const; @@ -270,6 +272,7 @@ private: caf::PdmChildField m_wellCollection; caf::PdmChildField m_faultCollection; + caf::PdmChildField m_faultDistanceResultCollection; caf::PdmChildField m_faultReactivationModelCollection; caf::PdmChildField m_streamlineCollection; diff --git a/ApplicationLibCode/ProjectDataModelCommands/CMakeLists_files.cmake b/ApplicationLibCode/ProjectDataModelCommands/CMakeLists_files.cmake index 86060f573c..92eb0b1a26 100644 --- a/ApplicationLibCode/ProjectDataModelCommands/CMakeLists_files.cmake +++ b/ApplicationLibCode/ProjectDataModelCommands/CMakeLists_files.cmake @@ -31,7 +31,7 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RimcGridView.cpp ${CMAKE_CURRENT_LIST_DIR}/RimcIdenticalGridCaseGroup.cpp ${CMAKE_CURRENT_LIST_DIR}/RimcPressureTable.cpp - ${CMAKE_CURRENT_LIST_DIR}/RimcFaultInViewCollection.cpp + ${CMAKE_CURRENT_LIST_DIR}/RimcEclipseView.cpp ${CMAKE_CURRENT_LIST_DIR}/RimcFishbonesCollection.cpp ${CMAKE_CURRENT_LIST_DIR}/RimcPolygonCollection.cpp ${CMAKE_CURRENT_LIST_DIR}/RimcDataFilterCollection.cpp diff --git a/ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.cpp b/ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.cpp similarity index 74% rename from ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.cpp rename to ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.cpp index f643064a90..225acc7d69 100644 --- a/ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.cpp +++ b/ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.cpp @@ -16,8 +16,9 @@ // ///////////////////////////////////////////////////////////////////////////////// -#include "RimcFaultInViewCollection.h" +#include "RimcEclipseView.h" +#include "RimEclipseView.h" #include "RimFaultDistanceResult.h" #include "RimFaultDistanceResultCollection.h" #include "RimFaultInView.h" @@ -26,12 +27,12 @@ #include "cafPdmAbstractFieldScriptingCapability.h" #include "cafPdmFieldScriptingCapability.h" -CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimFaultInViewCollection, RimcFaultInViewCollection_addFaultDistanceResult, "add_fault_distance_result" ); +CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimEclipseView, RimcEclipseView_addFaultDistanceResult, "add_fault_distance_result" ); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RimcFaultInViewCollection_addFaultDistanceResult::RimcFaultInViewCollection_addFaultDistanceResult( caf::PdmObjectHandle* self ) +RimcEclipseView_addFaultDistanceResult::RimcEclipseView_addFaultDistanceResult( caf::PdmObjectHandle* self ) : caf::PdmObjectCreationMethod( self ) { CAF_PDM_InitObject( "Add Fault Distance Result", "", "", "Create a FAULTDIST cell result for a chosen subset of faults" ); @@ -43,12 +44,12 @@ RimcFaultInViewCollection_addFaultDistanceResult::RimcFaultInViewCollection_addF //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::expected RimcFaultInViewCollection_addFaultDistanceResult::execute() +std::expected RimcEclipseView_addFaultDistanceResult::execute() { - auto* hostCollection = self(); - if ( !hostCollection ) return std::unexpected( QString( "No fault collection" ) ); + auto* eclipseView = self(); + if ( !eclipseView ) return std::unexpected( QString( "No view" ) ); - auto* distanceCollection = hostCollection->faultDistanceResults(); + auto* distanceCollection = eclipseView->faultDistanceResults(); if ( !distanceCollection ) return std::unexpected( QString( "No fault distance results collection" ) ); auto* newResult = distanceCollection->addResult(); @@ -57,12 +58,11 @@ std::expected RimcFaultInViewCollection_addFault if ( !m_resultName().isEmpty() ) newResult->setResultName( m_resultName() ); std::vector selected = m_faults.ptrReferencedObjectsByType(); - if ( selected.empty() ) selected = hostCollection->faults(); + if ( selected.empty() && eclipseView->faultCollection() ) selected = eclipseView->faultCollection()->faults(); newResult->setSelectedFaults( selected ); - hostCollection->updateConnectedEditors(); - distanceCollection->updateConnectedEditors(); + eclipseView->updateConnectedEditors(); return newResult; } @@ -70,7 +70,7 @@ std::expected RimcFaultInViewCollection_addFault //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString RimcFaultInViewCollection_addFaultDistanceResult::classKeywordReturnedType() const +QString RimcEclipseView_addFaultDistanceResult::classKeywordReturnedType() const { return RimFaultDistanceResult::classKeywordStatic(); } diff --git a/ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.h b/ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.h similarity index 89% rename from ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.h rename to ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.h index 5599d70bb9..c81a0f815e 100644 --- a/ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.h +++ b/ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.h @@ -30,12 +30,12 @@ class RimFaultInView; //================================================================================================== /// //================================================================================================== -class RimcFaultInViewCollection_addFaultDistanceResult : public caf::PdmObjectCreationMethod +class RimcEclipseView_addFaultDistanceResult : public caf::PdmObjectCreationMethod { CAF_PDM_HEADER_INIT; public: - RimcFaultInViewCollection_addFaultDistanceResult( caf::PdmObjectHandle* self ); + RimcEclipseView_addFaultDistanceResult( caf::PdmObjectHandle* self ); std::expected execute() override; QString classKeywordReturnedType() const override; diff --git a/GrpcInterface/Python/rips/tests/test_fault_distance_result.py b/GrpcInterface/Python/rips/tests/test_fault_distance_result.py index 9a291bb0fe..186e687798 100644 --- a/GrpcInterface/Python/rips/tests/test_fault_distance_result.py +++ b/GrpcInterface/Python/rips/tests/test_fault_distance_result.py @@ -25,7 +25,7 @@ def test_add_fault_distance_result_subset(rips_instance, initialize_test): faults = fault_collection.faults() assert len(faults) > 0 - result = fault_collection.add_fault_distance_result("PY_FAULTDIST", faults[:1]) + result = view.add_fault_distance_result("PY_FAULTDIST", faults[:1]) assert result is not None assert result.result_name == "PY_FAULTDIST" @@ -43,7 +43,7 @@ def test_add_fault_distance_result_all_matches_static(rips_instance, initialize_ rips.PropertyType.STATIC_NATIVE, "FAULTDIST", 0 ) - fault_collection.add_fault_distance_result("PY_FAULTDIST_ALL", all_faults) + view.add_fault_distance_result("PY_FAULTDIST_ALL", all_faults) generated_values = case.active_cell_property( rips.PropertyType.GENERATED, "PY_FAULTDIST_ALL", 0