Skip to content

Commit 81de2fc

Browse files
committed
#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.
1 parent c0aa89e commit 81de2fc

10 files changed

Lines changed: 47 additions & 58 deletions

File tree

ApplicationLibCode/Commands/EclipseCommands/RicNewFaultDistanceResultFeature.cpp

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include "RicNewFaultDistanceResultFeature.h"
2020

21+
#include "RimEclipseView.h"
2122
#include "RimFaultDistanceResult.h"
2223
#include "RimFaultDistanceResultCollection.h"
2324
#include "RimFaultInView.h"
@@ -33,28 +34,19 @@ CAF_CMD_SOURCE_INIT( RicNewFaultDistanceResultFeature, "RicNewFaultDistanceResul
3334

3435
namespace
3536
{
36-
RimFaultInViewCollection* findHostCollection()
37+
RimEclipseView* findHostView()
3738
{
3839
const auto faultCollections = caf::SelectionManager::instance()->objectsByType<RimFaultInViewCollection>();
39-
if ( !faultCollections.empty() ) return faultCollections.front();
40+
if ( !faultCollections.empty() ) return faultCollections.front()->firstAncestorOrThisOfType<RimEclipseView>();
4041

4142
const auto distanceCollections = caf::SelectionManager::instance()->objectsByType<RimFaultDistanceResultCollection>();
42-
if ( !distanceCollections.empty() )
43-
{
44-
return distanceCollections.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
45-
}
43+
if ( !distanceCollections.empty() ) return distanceCollections.front()->firstAncestorOrThisOfType<RimEclipseView>();
4644

4745
const auto distanceResults = caf::SelectionManager::instance()->objectsByType<RimFaultDistanceResult>();
48-
if ( !distanceResults.empty() )
49-
{
50-
return distanceResults.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
51-
}
46+
if ( !distanceResults.empty() ) return distanceResults.front()->firstAncestorOrThisOfType<RimEclipseView>();
5247

5348
const auto faults = caf::SelectionManager::instance()->objectsByType<RimFaultInView>();
54-
if ( !faults.empty() )
55-
{
56-
return faults.front()->firstAncestorOrThisOfType<RimFaultInViewCollection>();
57-
}
49+
if ( !faults.empty() ) return faults.front()->firstAncestorOrThisOfType<RimEclipseView>();
5850

5951
return nullptr;
6052
}
@@ -65,18 +57,18 @@ RimFaultInViewCollection* findHostCollection()
6557
//--------------------------------------------------------------------------------------------------
6658
bool RicNewFaultDistanceResultFeature::isCommandEnabled() const
6759
{
68-
return findHostCollection() != nullptr;
60+
return findHostView() != nullptr;
6961
}
7062

7163
//--------------------------------------------------------------------------------------------------
7264
///
7365
//--------------------------------------------------------------------------------------------------
7466
void RicNewFaultDistanceResultFeature::onActionTriggered( bool isChecked )
7567
{
76-
RimFaultInViewCollection* hostCollection = findHostCollection();
77-
if ( !hostCollection ) return;
68+
RimEclipseView* eclipseView = findHostView();
69+
if ( !eclipseView ) return;
7870

79-
RimFaultDistanceResultCollection* distanceCollection = hostCollection->faultDistanceResults();
71+
RimFaultDistanceResultCollection* distanceCollection = eclipseView->faultDistanceResults();
8072
if ( !distanceCollection ) return;
8173

8274
const auto selectedFaultPointers = caf::SelectionManager::instance()->objectsByType<RimFaultInView>();
@@ -89,12 +81,11 @@ void RicNewFaultDistanceResultFeature::onActionTriggered( bool isChecked )
8981
{
9082
newResult->setSelectedFaults( selectedFaults );
9183
}
92-
else
84+
else if ( eclipseView->faultCollection() )
9385
{
94-
newResult->setSelectedFaults( hostCollection->faults() );
86+
newResult->setSelectedFaults( eclipseView->faultCollection()->faults() );
9587
}
9688

97-
hostCollection->updateConnectedEditors();
9889
distanceCollection->updateConnectedEditors();
9990
Riu3DMainWindowTools::selectAsCurrentItem( newResult );
10091
}

ApplicationLibCode/ProjectDataModel/Faults/RimFaultDistanceResult.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ QList<caf::PdmOptionItemInfo> RimFaultDistanceResult::calculateValueOptions( con
143143

144144
if ( fieldNeedingOptions == &m_faults )
145145
{
146-
auto faultCollection = firstAncestorOrThisOfType<RimFaultInViewCollection>();
146+
auto eclipseView = firstAncestorOrThisOfType<RimEclipseView>();
147+
auto faultCollection = eclipseView ? eclipseView->faultCollection() : nullptr;
147148
if ( faultCollection )
148149
{
149150
for ( RimFaultInView* fault : faultCollection->faults() )

ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727

2828
#include "RimEclipseFaultColors.h"
2929
#include "RimEclipseView.h"
30-
#include "RimFaultDistanceResultCollection.h"
3130
#include "RimFaultInView.h"
3231
#include "RimIntersectionCollection.h"
3332
#include "RimProject.h"
@@ -106,9 +105,6 @@ RimFaultInViewCollection::RimFaultInViewCollection()
106105

107106
CAF_PDM_InitScriptableFieldNoDefault( &m_faults, "Faults", "Faults" );
108107

109-
CAF_PDM_InitScriptableFieldNoDefault( &m_distanceResults, "FaultDistanceResults", "" );
110-
m_distanceResults = new RimFaultDistanceResultCollection;
111-
112108
CAF_PDM_InitField( &m_showFaultsOutsideFilters_obsolete, "ShowFaultsOutsideFilters", true, "Show Faults Outside Filters" );
113109
m_showFaultsOutsideFilters_obsolete.xmlCapability()->setIOWritable( false );
114110
m_showFaultsOutsideFilters_obsolete.uiCapability()->setUiHidden( true );
@@ -402,11 +398,6 @@ void RimFaultInViewCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiT
402398
uiTreeOrdering.appendChild( uiTree );
403399
}
404400

405-
if ( m_distanceResults() && !m_distanceResults()->isEmpty() )
406-
{
407-
uiTreeOrdering.add( m_distanceResults() );
408-
}
409-
410401
for ( const auto& fault : m_faults )
411402
{
412403
uiTreeOrdering.add( fault );
@@ -423,14 +414,6 @@ RimEclipseView* RimFaultInViewCollection::parentView() const
423414
return firstAncestorOrThisOfTypeAsserted<RimEclipseView>();
424415
}
425416

426-
//--------------------------------------------------------------------------------------------------
427-
///
428-
//--------------------------------------------------------------------------------------------------
429-
RimFaultDistanceResultCollection* RimFaultInViewCollection::faultDistanceResults() const
430-
{
431-
return m_distanceResults();
432-
}
433-
434417
//--------------------------------------------------------------------------------------------------
435418
///
436419
//--------------------------------------------------------------------------------------------------

ApplicationLibCode/ProjectDataModel/Faults/RimFaultInViewCollection.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
#include <vector>
3434

3535
class RimEclipseView;
36-
class RimFaultDistanceResultCollection;
3736
class RimFaultInView;
3837

3938
//==================================================================================================
@@ -59,7 +58,6 @@ class RimFaultInViewCollection : public caf::PdmObject
5958
void setActive( bool bActive );
6059

6160
std::vector<RimFaultInView*> faults() const;
62-
RimFaultDistanceResultCollection* faultDistanceResults() const;
6361
cvf::Color3f faultLabelColor() const;
6462
caf::AppEnum<FaultFaceCullingMode> faultResult() const;
6563
bool showFaultFaces() const;
@@ -108,8 +106,7 @@ class RimFaultInViewCollection : public caf::PdmObject
108106

109107
caf::PdmField<caf::AppEnum<FaultFaceCullingMode>> m_faultResult;
110108

111-
caf::PdmChildArrayField<RimFaultInView*> m_faults;
112-
caf::PdmChildField<RimFaultDistanceResultCollection*> m_distanceResults;
109+
caf::PdmChildArrayField<RimFaultInView*> m_faults;
113110

114111
caf::PdmField<bool> m_showFaultsOutsideFilters_obsolete;
115112
};

ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
#include "RimEclipseResultDefinition.h"
6767
#include "RimElementVectorResult.h"
6868
#include "RimExtrudedCurveIntersection.h"
69+
#include "RimFaultDistanceResultCollection.h"
6970
#include "RimFaultInViewCollection.h"
7071
#include "RimFaultReactivationModelCollection.h"
7172
#include "RimFilterInViewCollection.h"
@@ -201,6 +202,9 @@ RimEclipseView::RimEclipseView()
201202
CAF_PDM_InitScriptableFieldNoDefault( &m_faultCollection, "FaultCollection", "Faults" );
202203
m_faultCollection = new RimFaultInViewCollection;
203204

205+
CAF_PDM_InitFieldNoDefault( &m_faultDistanceResultCollection, "FaultDistanceResultCollection", "Fault Distance Results" );
206+
m_faultDistanceResultCollection = new RimFaultDistanceResultCollection;
207+
204208
CAF_PDM_InitFieldNoDefault( &m_faultReactivationModelCollection, "FaultReactivationModelCollection", "Fault Reactivation Models" );
205209
m_faultReactivationModelCollection = new RimFaultReactivationModelCollection;
206210

@@ -353,6 +357,14 @@ RimFaultInViewCollection* RimEclipseView::faultCollection() const
353357
return m_faultCollection;
354358
}
355359

360+
//--------------------------------------------------------------------------------------------------
361+
///
362+
//--------------------------------------------------------------------------------------------------
363+
RimFaultDistanceResultCollection* RimEclipseView::faultDistanceResults() const
364+
{
365+
return m_faultDistanceResultCollection;
366+
}
367+
356368
//--------------------------------------------------------------------------------------------------
357369
///
358370
//--------------------------------------------------------------------------------------------------
@@ -2116,6 +2128,8 @@ void RimEclipseView::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrderin
21162128

21172129
uiTreeOrdering.add( faultCollection() );
21182130

2131+
if ( faultDistanceResults() && !faultDistanceResults()->isEmpty() ) uiTreeOrdering.add( faultDistanceResults() );
2132+
21192133
if ( faultReactivationModelCollection()->shouldBeVisibleInTree() ) uiTreeOrdering.add( faultReactivationModelCollection() );
21202134

21212135
uiTreeOrdering.add( intersectionCollection() );

ApplicationLibCode/ProjectDataModel/RimEclipseView.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class RimEclipseCellColors;
5353
class RimEclipseFaultColors;
5454
class RimEclipsePropertyFilter;
5555
class RimEclipsePropertyFilterCollection;
56+
class RimFaultDistanceResultCollection;
5657
class RimFaultInViewCollection;
5758
class RimFilterInViewCollection;
5859
class RimReservoirCellResultsStorage;
@@ -114,6 +115,7 @@ class RimEclipseView : public RimGridView, public RimFieldQuickAccessInterface
114115
RimStimPlanColors* fractureColors() const;
115116
RimSimWellInViewCollection* wellCollection() const;
116117
RimFaultInViewCollection* faultCollection() const;
118+
RimFaultDistanceResultCollection* faultDistanceResults() const;
117119
RimVirtualPerforationResults* virtualPerforationResult() const;
118120
RimStreamlineInViewCollection* streamlineCollection() const;
119121
RimFaultReactivationModelCollection* faultReactivationModelCollection() const;
@@ -270,6 +272,7 @@ class RimEclipseView : public RimGridView, public RimFieldQuickAccessInterface
270272

271273
caf::PdmChildField<RimSimWellInViewCollection*> m_wellCollection;
272274
caf::PdmChildField<RimFaultInViewCollection*> m_faultCollection;
275+
caf::PdmChildField<RimFaultDistanceResultCollection*> m_faultDistanceResultCollection;
273276
caf::PdmChildField<RimFaultReactivationModelCollection*> m_faultReactivationModelCollection;
274277
caf::PdmChildField<RimStreamlineInViewCollection*> m_streamlineCollection;
275278

ApplicationLibCode/ProjectDataModelCommands/CMakeLists_files.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ set(SOURCE_GROUP_SOURCE_FILES
3131
${CMAKE_CURRENT_LIST_DIR}/RimcGridView.cpp
3232
${CMAKE_CURRENT_LIST_DIR}/RimcIdenticalGridCaseGroup.cpp
3333
${CMAKE_CURRENT_LIST_DIR}/RimcPressureTable.cpp
34-
${CMAKE_CURRENT_LIST_DIR}/RimcFaultInViewCollection.cpp
34+
${CMAKE_CURRENT_LIST_DIR}/RimcEclipseView.cpp
3535
${CMAKE_CURRENT_LIST_DIR}/RimcFishbonesCollection.cpp
3636
${CMAKE_CURRENT_LIST_DIR}/RimcPolygonCollection.cpp
3737
${CMAKE_CURRENT_LIST_DIR}/RimcDataFilterCollection.cpp

ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.cpp renamed to ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
//
1717
/////////////////////////////////////////////////////////////////////////////////
1818

19-
#include "RimcFaultInViewCollection.h"
19+
#include "RimcEclipseView.h"
2020

21+
#include "RimEclipseView.h"
2122
#include "RimFaultDistanceResult.h"
2223
#include "RimFaultDistanceResultCollection.h"
2324
#include "RimFaultInView.h"
@@ -26,12 +27,12 @@
2627
#include "cafPdmAbstractFieldScriptingCapability.h"
2728
#include "cafPdmFieldScriptingCapability.h"
2829

29-
CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimFaultInViewCollection, RimcFaultInViewCollection_addFaultDistanceResult, "add_fault_distance_result" );
30+
CAF_PDM_OBJECT_METHOD_SOURCE_INIT( RimEclipseView, RimcEclipseView_addFaultDistanceResult, "add_fault_distance_result" );
3031

3132
//--------------------------------------------------------------------------------------------------
3233
///
3334
//--------------------------------------------------------------------------------------------------
34-
RimcFaultInViewCollection_addFaultDistanceResult::RimcFaultInViewCollection_addFaultDistanceResult( caf::PdmObjectHandle* self )
35+
RimcEclipseView_addFaultDistanceResult::RimcEclipseView_addFaultDistanceResult( caf::PdmObjectHandle* self )
3536
: caf::PdmObjectCreationMethod( self )
3637
{
3738
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
4344
//--------------------------------------------------------------------------------------------------
4445
///
4546
//--------------------------------------------------------------------------------------------------
46-
std::expected<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFaultDistanceResult::execute()
47+
std::expected<caf::PdmObjectHandle*, QString> RimcEclipseView_addFaultDistanceResult::execute()
4748
{
48-
auto* hostCollection = self<RimFaultInViewCollection>();
49-
if ( !hostCollection ) return std::unexpected( QString( "No fault collection" ) );
49+
auto* eclipseView = self<RimEclipseView>();
50+
if ( !eclipseView ) return std::unexpected( QString( "No view" ) );
5051

51-
auto* distanceCollection = hostCollection->faultDistanceResults();
52+
auto* distanceCollection = eclipseView->faultDistanceResults();
5253
if ( !distanceCollection ) return std::unexpected( QString( "No fault distance results collection" ) );
5354

5455
auto* newResult = distanceCollection->addResult();
@@ -57,11 +58,10 @@ std::expected<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFault
5758
if ( !m_resultName().isEmpty() ) newResult->setResultName( m_resultName() );
5859

5960
std::vector<RimFaultInView*> selected = m_faults.ptrReferencedObjectsByType();
60-
if ( selected.empty() ) selected = hostCollection->faults();
61+
if ( selected.empty() && eclipseView->faultCollection() ) selected = eclipseView->faultCollection()->faults();
6162

6263
newResult->setSelectedFaults( selected );
6364

64-
hostCollection->updateConnectedEditors();
6565
distanceCollection->updateConnectedEditors();
6666

6767
return newResult;
@@ -70,7 +70,7 @@ std::expected<caf::PdmObjectHandle*, QString> RimcFaultInViewCollection_addFault
7070
//--------------------------------------------------------------------------------------------------
7171
///
7272
//--------------------------------------------------------------------------------------------------
73-
QString RimcFaultInViewCollection_addFaultDistanceResult::classKeywordReturnedType() const
73+
QString RimcEclipseView_addFaultDistanceResult::classKeywordReturnedType() const
7474
{
7575
return RimFaultDistanceResult::classKeywordStatic();
7676
}

ApplicationLibCode/ProjectDataModelCommands/RimcFaultInViewCollection.h renamed to ApplicationLibCode/ProjectDataModelCommands/RimcEclipseView.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ class RimFaultInView;
3030
//==================================================================================================
3131
///
3232
//==================================================================================================
33-
class RimcFaultInViewCollection_addFaultDistanceResult : public caf::PdmObjectCreationMethod
33+
class RimcEclipseView_addFaultDistanceResult : public caf::PdmObjectCreationMethod
3434
{
3535
CAF_PDM_HEADER_INIT;
3636

3737
public:
38-
RimcFaultInViewCollection_addFaultDistanceResult( caf::PdmObjectHandle* self );
38+
RimcEclipseView_addFaultDistanceResult( caf::PdmObjectHandle* self );
3939

4040
std::expected<caf::PdmObjectHandle*, QString> execute() override;
4141
QString classKeywordReturnedType() const override;

GrpcInterface/Python/rips/tests/test_fault_distance_result.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_add_fault_distance_result_subset(rips_instance, initialize_test):
2525
faults = fault_collection.faults()
2626
assert len(faults) > 0
2727

28-
result = fault_collection.add_fault_distance_result("PY_FAULTDIST", faults[:1])
28+
result = view.add_fault_distance_result("PY_FAULTDIST", faults[:1])
2929
assert result is not None
3030
assert result.result_name == "PY_FAULTDIST"
3131

@@ -43,7 +43,7 @@ def test_add_fault_distance_result_all_matches_static(rips_instance, initialize_
4343
rips.PropertyType.STATIC_NATIVE, "FAULTDIST", 0
4444
)
4545

46-
fault_collection.add_fault_distance_result("PY_FAULTDIST_ALL", all_faults)
46+
view.add_fault_distance_result("PY_FAULTDIST_ALL", all_faults)
4747

4848
generated_values = case.active_cell_property(
4949
rips.PropertyType.GENERATED, "PY_FAULTDIST_ALL", 0

0 commit comments

Comments
 (0)