mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 07:00:17 -05:00
#13890 Faults: Move fault distance results collection to the view
Reparent RimFaultDistanceResultCollection so it is owned directly by RimEclipseView instead of RimFaultInViewCollection, and show it as a top-level node next to the Faults node in the project tree. RimFaultDistanceResult::calculateValueOptions now reaches the fault list through the view (the fault collection is a sibling rather than an ancestor after the move). RicNewFaultDistanceResultFeature resolves the view from the selection and takes both the distance collection and the all-faults fallback from it. The scriptable API moves with the collection: add_fault_distance_result is now exposed on RimEclipseView (view.add_fault_distance_result(...)) via the new RimcEclipseView, replacing RimcFaultInViewCollection.
This commit is contained in:
1 parent
b78ef0d0a1
commit
31c1271034
10 files changed
+49
-60
No files matched your search
@@ -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<RimFaultInViewCollection>();
|
||||
if ( !faultCollections.empty() ) return faultCollections.front();
|
||||
if ( !faultCollections.empty() ) return faultCollections.front()->firstAncestorOrThisOfType<RimEclipseView>();
|
||||
|
||||
const auto distanceCollections = caf::SelectionManager::instance()->objectsByType<RimFaultDistanceResultCollection>();
|
||||
if ( !distanceCollections.empty() )
|
||||
{
|
||||
return distanceCollections.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
|
||||
}
|
||||
if ( !distanceCollections.empty() ) return distanceCollections.front()->firstAncestorOrThisOfType<RimEclipseView>();
|
||||
|
||||
const auto distanceResults = caf::SelectionManager::instance()->objectsByType<RimFaultDistanceResult>();
|
||||
if ( !distanceResults.empty() )
|
||||
{
|
||||
return distanceResults.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
|
||||
}
|
||||
if ( !distanceResults.empty() ) return distanceResults.front()->firstAncestorOrThisOfType<RimEclipseView>();
|
||||
|
||||
const auto faults = caf::SelectionManager::instance()->objectsByType<RimFaultInView>();
|
||||
if ( !faults.empty() )
|
||||
{
|
||||
return faults.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
|
||||
}
|
||||
if ( !faults.empty() ) return faults.front()->firstAncestorOrThisOfType<RimEclipseView>();
|
||||
|
||||
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<RimFaultInView>();
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,8 @@ QList<caf::PdmOptionItemInfo> RimFaultDistanceResult::calculateValueOptions( con
|
||||
|
||||
if ( fieldNeedingOptions == &m_faults )
|
||||
{
|
||||
auto faultCollection = firstAncestorOrThisOfType<RimFaultInViewCollection>();
|
||||
auto eclipseView = firstAncestorOrThisOfType<RimEclipseView>();
|
||||
auto faultCollection = eclipseView ? eclipseView->faultCollection() : nullptr;
|
||||
if ( faultCollection )
|
||||
{
|
||||
for ( RimFaultInView* fault : faultCollection->faults() )
|
||||
|
||||
@@ -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<RimEclipseView>();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimFaultDistanceResultCollection* RimFaultInViewCollection::faultDistanceResults() const
|
||||
{
|
||||
return m_distanceResults();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#include <vector>
|
||||
|
||||
class RimEclipseView;
|
||||
class RimFaultDistanceResultCollection;
|
||||
class RimFaultInView;
|
||||
|
||||
//==================================================================================================
|
||||
@@ -59,7 +58,6 @@ public:
|
||||
void setActive( bool bActive );
|
||||
|
||||
std::vector<RimFaultInView*> faults() const;
|
||||
RimFaultDistanceResultCollection* faultDistanceResults() const;
|
||||
cvf::Color3f faultLabelColor() const;
|
||||
caf::AppEnum<FaultFaceCullingMode> faultResult() const;
|
||||
bool showFaultFaces() const;
|
||||
@@ -108,8 +106,7 @@ private:
|
||||
|
||||
caf::PdmField<caf::AppEnum<FaultFaceCullingMode>> m_faultResult;
|
||||
|
||||
caf::PdmChildArrayField<RimFaultInView*> m_faults;
|
||||
caf::PdmChildField<RimFaultDistanceResultCollection*> m_distanceResults;
|
||||
caf::PdmChildArrayField<RimFaultInView*> m_faults;
|
||||
|
||||
caf::PdmField<bool> m_showFaultsOutsideFilters_obsolete;
|
||||
};
|
||||
@@ -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() );
|
||||
|
||||
@@ -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<RimSimWellInViewCollection*> m_wellCollection;
|
||||
caf::PdmChildField<RimFaultInViewCollection*> m_faultCollection;
|
||||
caf::PdmChildField<RimFaultDistanceResultCollection*> m_faultDistanceResultCollection;
|
||||
caf::PdmChildField<RimFaultReactivationModelCollection*> m_faultReactivationModelCollection;
|
||||
caf::PdmChildField<RimStreamlineInViewCollection*> m_streamlineCollection;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+11
-11
@@ -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<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFaultDistanceResult::execute()
|
||||
std::expected<caf::PdmObjectHandle*, QString> RimcEclipseView_addFaultDistanceResult::execute()
|
||||
{
|
||||
auto* hostCollection = self<RimFaultInViewCollection>();
|
||||
if ( !hostCollection ) return std::unexpected( QString( "No fault collection" ) );
|
||||
auto* eclipseView = self<RimEclipseView>();
|
||||
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<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFault
|
||||
if ( !m_resultName().isEmpty() ) newResult->setResultName( m_resultName() );
|
||||
|
||||
std::vector<RimFaultInView*> 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<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFault
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimcFaultInViewCollection_addFaultDistanceResult::classKeywordReturnedType() const
|
||||
QString RimcEclipseView_addFaultDistanceResult::classKeywordReturnedType() const
|
||||
{
|
||||
return RimFaultDistanceResult::classKeywordStatic();
|
||||
}
|
||||
+2
-2
@@ -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<caf::PdmObjectHandle*, QString> execute() override;
|
||||
QString classKeywordReturnedType() const override;
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user