From c5f21b75fa7dbebadae8b3bc20593969a28909b6 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Fri, 29 Nov 2019 16:24:46 +0100 Subject: [PATCH] #5133 Reassign summary curves to the file summary case copy when closing a grid case --- .../Summary/RimSummaryCaseMainCollection.cpp | 42 +++++++++++++++++-- .../Summary/RimSummaryCaseMainCollection.h | 5 ++- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp index 7f9b4ff28f..bbfa85ecb3 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp @@ -29,6 +29,7 @@ #include "RimProject.h" #include "RimSummaryCase.h" #include "RimSummaryCaseCollection.h" +#include "RimSummaryCurve.h" #include "cafProgressInfo.h" #include @@ -166,9 +167,6 @@ void RimSummaryCaseMainCollection::convertGridSummaryCasesToFileSummaryCases( Ri RimSummaryCaseCollection* collection; gridSummaryCase->firstAncestorOrThisOfType( collection ); - removeCase( gridSummaryCase ); - delete gridSummaryCase; - if ( collection ) { collection->addCase( fileSummaryCase ); @@ -179,7 +177,12 @@ void RimSummaryCaseMainCollection::convertGridSummaryCasesToFileSummaryCases( Ri this->addCase( fileSummaryCase ); this->updateConnectedEditors(); } + loadSummaryCaseData( {fileSummaryCase} ); + reassignSummaryCurves( gridSummaryCase, fileSummaryCase ); + + removeCase( gridSummaryCase ); + delete gridSummaryCase; } //-------------------------------------------------------------------------------------------------- @@ -426,6 +429,39 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector referringFields; + gridSummaryCase->referringPtrFields( referringFields ); + for ( caf::PdmFieldHandle* field : referringFields ) + { + RimSummaryCurve* summaryCurve = dynamic_cast( field->ownerObject() ); + if ( summaryCurve ) + { + bool updated = false; + if ( summaryCurve->summaryCaseX() == gridSummaryCase ) + { + summaryCurve->setSummaryCaseX( fileSummaryCase ); + updated = true; + } + if ( summaryCurve->summaryCaseY() == gridSummaryCase ) + { + summaryCurve->setSummaryCaseY( fileSummaryCase ); + updated = true; + } + if ( updated ) + { + summaryCurve->loadDataAndUpdate( false ); + summaryCurve->updateConnectedEditors(); + } + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h index 0b8b2efc22..f51be0d645 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.h @@ -73,8 +73,9 @@ public: void updateFilePathsFromProjectPath( const QString& newProjectPath, const QString& oldProjectPath ); private: - static void loadSummaryCaseData( std::vector summaryCases ); - static void loadFileSummaryCaseData( std::vector fileSummaryCases ); + static void loadSummaryCaseData( std::vector summaryCases ); + static void loadFileSummaryCaseData( std::vector fileSummaryCases ); + static void reassignSummaryCurves( const RimGridSummaryCase* fromGridCase, RimFileSummaryCase* toFileCase ); static RimSummaryCaseCollection* defaultAllocator(); private: