diff --git a/ApplicationLibCode/Application/RiaGuiApplication.cpp b/ApplicationLibCode/Application/RiaGuiApplication.cpp index 235f79856b..c45b80339c 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.cpp +++ b/ApplicationLibCode/Application/RiaGuiApplication.cpp @@ -1332,7 +1332,10 @@ void RiaGuiApplication::onProjectBeingSaved() setLastUsedDialogDirectory( "BINARY_GRID", QFileInfo( m_project->fileName() ).absolutePath() ); storeTreeViewState(); - RiaSummaryTools::summaryCaseMainCollection()->onProjectBeingSaved(); + if ( auto sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection() ) + { + sumCaseMainColl->onProjectBeingSaved(); + } } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryTools.cpp b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryTools.cpp index 0bec319dff..060dbaed65 100644 --- a/ApplicationLibCode/Application/Tools/Summary/RiaSummaryTools.cpp +++ b/ApplicationLibCode/Application/Tools/Summary/RiaSummaryTools.cpp @@ -73,10 +73,8 @@ std::vector RiaSummaryTools::singleTopLevelSummaryCases() //-------------------------------------------------------------------------------------------------- RimSummaryCaseMainCollection* RiaSummaryTools::summaryCaseMainCollection() { - RimProject* project = RimProject::current(); - RimSummaryCaseMainCollection* summaryCaseMainCollection = project->activeOilField()->summaryCaseMainCollection(); - CVF_ASSERT( summaryCaseMainCollection ); - return summaryCaseMainCollection; + RimProject* project = RimProject::current(); + return project->activeOilField()->summaryCaseMainCollection(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Commands/SummaryPlotCommands/RicNewDerivedEnsembleFeature.cpp b/ApplicationLibCode/Commands/SummaryPlotCommands/RicNewDerivedEnsembleFeature.cpp index bc79ef48e7..a54e2f48f1 100644 --- a/ApplicationLibCode/Commands/SummaryPlotCommands/RicNewDerivedEnsembleFeature.cpp +++ b/ApplicationLibCode/Commands/SummaryPlotCommands/RicNewDerivedEnsembleFeature.cpp @@ -18,6 +18,8 @@ #include "RicNewDerivedEnsembleFeature.h" +#include "Summary/RiaSummaryTools.h" + #include "RimDeltaSummaryEnsemble.h" #include "RimProject.h" #include "RimSummaryCaseMainCollection.h" @@ -73,34 +75,32 @@ bool RicNewDerivedEnsembleFeature::isCommandEnabled() const //-------------------------------------------------------------------------------------------------- void RicNewDerivedEnsembleFeature::onActionTriggered( bool isChecked ) { + auto sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection(); + if ( !sumCaseMainColl ) return; + if ( isCommandEnabled() ) { - auto project = RimProject::current(); - auto mainColl = project->firstSummaryCaseMainCollection(); - - auto newColl = mainColl->addEnsemble( {}, "", true, []() { return new RimDeltaSummaryEnsemble(); } ); + auto newColl = sumCaseMainColl->addEnsemble( {}, "", true, []() { return new RimDeltaSummaryEnsemble(); } ); auto newEnsemble = dynamic_cast( newColl ); + std::vector ensembles = caf::selectedObjectsByType(); + + if ( !ensembles.empty() ) newEnsemble->setEnsemble1( ensembles[0] ); + if ( ensembles.size() == 2 ) { - std::vector ensembles = caf::selectedObjectsByType(); + newEnsemble->setEnsemble2( ensembles[1] ); + newEnsemble->createDerivedEnsembleCases(); - if ( !ensembles.empty() ) newEnsemble->setEnsemble1( ensembles[0] ); - if ( ensembles.size() == 2 ) + if ( newEnsemble->allSummaryCases().empty() ) { - newEnsemble->setEnsemble2( ensembles[1] ); - newEnsemble->createDerivedEnsembleCases(); - - if ( newEnsemble->allSummaryCases().empty() ) + if ( !showWarningDialogWithQuestion() ) { - if ( !showWarningDialogWithQuestion() ) - { - mainColl->removeEnsemble( newEnsemble ); - } + sumCaseMainColl->removeEnsemble( newEnsemble ); } } } - mainColl->updateConnectedEditors(); + sumCaseMainColl->updateConnectedEditors(); RiuPlotMainWindowTools::selectAsCurrentItem( newEnsemble ); } } diff --git a/ApplicationLibCode/Commands/SummaryPlotCommands/RicOpenSummaryPlotEditorFeature.cpp b/ApplicationLibCode/Commands/SummaryPlotCommands/RicOpenSummaryPlotEditorFeature.cpp index 1dd7205164..1a0bda0f1a 100644 --- a/ApplicationLibCode/Commands/SummaryPlotCommands/RicOpenSummaryPlotEditorFeature.cpp +++ b/ApplicationLibCode/Commands/SummaryPlotCommands/RicOpenSummaryPlotEditorFeature.cpp @@ -93,7 +93,6 @@ bool RicOpenSummaryPlotEditorFeature::isCommandEnabled() const void RicOpenSummaryPlotEditorFeature::onActionTriggered( bool isChecked ) { RimProject* project = RimProject::current(); - CVF_ASSERT( project ); std::vector selectedCases = caf::selectedObjectsByType(); std::vector selectedGroups = caf::selectedObjectsByType(); @@ -102,16 +101,20 @@ void RicOpenSummaryPlotEditorFeature::onActionTriggered( bool isChecked ) if ( sourcesToSelect.empty() && selectedGroups.empty() ) { - const auto allSingleCases = project->firstSummaryCaseMainCollection()->topLevelSummaryCases(); - const auto ensembles = project->summaryEnsembles(); + const auto ensembles = project->summaryEnsembles(); std::vector allEnsembles; for ( const auto ensemble : ensembles ) if ( ensemble->isEnsemble() ) allEnsembles.push_back( ensemble ); - if ( !allSingleCases.empty() ) + if ( auto sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection() ) { - sourcesToSelect.push_back( allSingleCases.front() ); + const auto allSingleCases = sumCaseMainColl->topLevelSummaryCases(); + if ( !allSingleCases.empty() ) + { + sourcesToSelect.push_back( allSingleCases.front() ); + } } + else if ( !allEnsembles.empty() ) { sourcesToSelect.push_back( allEnsembles.front() ); diff --git a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp index c5a99e6f81..387dcb9a1c 100644 --- a/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Cloud/RimCloudDataSourceCollection.cpp @@ -83,19 +83,22 @@ std::vector RimCloudDataSourceCollection::sumoDataSou //-------------------------------------------------------------------------------------------------- void RimCloudDataSourceCollection::createEnsemblesFromSelectedDataSources( const std::vector& dataSources ) { + auto sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection(); + if ( !sumCaseMainColl ) return; + for ( auto dataSource : dataSources ) { RimSummaryEnsembleSumo* ensemble = new RimSummaryEnsembleSumo(); ensemble->setUsePathKey1( true ); ensemble->setSumoDataSource( dataSource ); - RiaSummaryTools::summaryCaseMainCollection()->addEnsemble( ensemble ); + sumCaseMainColl->addEnsemble( ensemble ); ensemble->loadDataAndUpdate(); RiaSummaryPlotTools::createAndAppendDefaultSummaryMultiPlot( {}, { ensemble } ); } RiaSummaryTools::updateSummaryEnsembleNames(); - RiaSummaryTools::summaryCaseMainCollection()->updateAllRequiredEditors(); + sumCaseMainColl->updateAllRequiredEditors(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSetTools.cpp b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSetTools.cpp index 504c87e006..184b0547a8 100644 --- a/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSetTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/EnsembleFileSet/RimEnsembleFileSetTools.cpp @@ -36,18 +36,21 @@ namespace RimEnsembleFileSetTools //-------------------------------------------------------------------------------------------------- std::vector createSummaryEnsemblesFromFileSets( const std::vector fileSets ) { + auto sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection(); + if ( !sumCaseMainColl ) return {}; + std::vector ensembles; for ( auto fileSet : fileSets ) { auto ensemble = new RimSummaryFileSetEnsemble(); ensemble->setEnsembleFileSet( fileSet ); - RiaSummaryTools::summaryCaseMainCollection()->addEnsemble( ensemble ); - RiaSummaryTools::summaryCaseMainCollection()->updateEnsembleNames(); + sumCaseMainColl->addEnsemble( ensemble ); + sumCaseMainColl->updateEnsembleNames(); ensemble->loadDataAndUpdate(); ensembles.push_back( ensemble ); } - RiaSummaryTools::summaryCaseMainCollection()->updateAllRequiredEditors(); + sumCaseMainColl->updateAllRequiredEditors(); return ensembles; } diff --git a/ApplicationLibCode/ProjectDataModel/RimProject.cpp b/ApplicationLibCode/ProjectDataModel/RimProject.cpp index 1bef518123..043bcfe601 100644 --- a/ApplicationLibCode/ProjectDataModel/RimProject.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimProject.cpp @@ -810,15 +810,6 @@ std::vector RimProject::summaryEnsembles() const return ensembles; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -RimSummaryCaseMainCollection* RimProject::firstSummaryCaseMainCollection() const -{ - if ( oilFields.empty() ) return nullptr; - return oilFields[0]->summaryCaseMainCollection; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimProject.h b/ApplicationLibCode/ProjectDataModel/RimProject.h index 3b3cd3b96f..176fcb4517 100644 --- a/ApplicationLibCode/ProjectDataModel/RimProject.h +++ b/ApplicationLibCode/ProjectDataModel/RimProject.h @@ -134,7 +134,6 @@ public: std::vector allSummaryCases() const; std::vector summaryEnsembles() const; - RimSummaryCaseMainCollection* firstSummaryCaseMainCollection() const; [[nodiscard]] std::vector allViews() const; [[nodiscard]] std::vector allVisibleViews() const; diff --git a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp index 6f0cf6187c..26b151939d 100644 --- a/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimReloadCaseTools.cpp @@ -187,9 +187,10 @@ RimEclipseCase* RimReloadCaseTools::gridModelFromSummaryCase( const RimSummaryCa //-------------------------------------------------------------------------------------------------- RimSummaryCase* RimReloadCaseTools::findSummaryCaseFromEclipseResultCase( const RimEclipseResultCase* eclipseResultCase ) { - RiaEclipseFileNameTools helper( eclipseResultCase->gridFileName() ); - RimSummaryCaseMainCollection* sumCaseColl = RiaSummaryTools::summaryCaseMainCollection(); + if ( !sumCaseColl ) return nullptr; + + RiaEclipseFileNameTools helper( eclipseResultCase->gridFileName() ); auto summaryFileNames = helper.findSummaryFileCandidates(); for ( const auto& fileName : summaryFileNames ) diff --git a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationCollection.cpp b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationCollection.cpp index 7da7964af6..62e1f92a81 100644 --- a/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimSummaryCalculationCollection.cpp @@ -54,19 +54,21 @@ void RimSummaryCalculationCollection::updateDataDependingOnCalculations() // Refresh data sources tree // Refresh meta data for all summary cases and rebuild AddressNodes in the summary tree - RimSummaryCaseMainCollection* summaryCaseCollection = RiaSummaryTools::summaryCaseMainCollection(); - auto summaryCases = summaryCaseCollection->allSummaryCases(); - for ( RimSummaryCase* summaryCase : summaryCases ) + if ( auto summaryCaseCollection = RiaSummaryTools::summaryCaseMainCollection() ) { - if ( !summaryCase ) continue; - - if ( summaryCase->showVectorItemsInProjectTree() ) + auto summaryCases = summaryCaseCollection->allSummaryCases(); + for ( RimSummaryCase* summaryCase : summaryCases ) { - if ( auto reader = summaryCase->summaryReader() ) + if ( !summaryCase ) continue; + + if ( summaryCase->showVectorItemsInProjectTree() ) { - reader->createAndSetAddresses(); + if ( auto reader = summaryCase->summaryReader() ) + { + reader->createAndSetAddresses(); + } + summaryCase->onCalculationUpdated(); } - summaryCase->onCalculationUpdated(); } } @@ -83,9 +85,12 @@ void RimSummaryCalculationCollection::updateDataDependingOnCalculations() } } - for ( auto ensemble : summaryCaseCollection->summaryEnsembles() ) + if ( auto summaryCaseCollection = RiaSummaryTools::summaryCaseMainCollection() ) { - ensemble->onCalculationUpdated(); + for ( auto ensemble : summaryCaseCollection->summaryEnsembles() ) + { + ensemble->onCalculationUpdated(); + } } } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTable.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTable.cpp index a0420e9492..952efafbdb 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTable.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryTable.cpp @@ -696,6 +696,7 @@ std::vector RimSummaryTable::getToplevelSummaryCases() const { RimSummaryCaseMainCollection* summaryCaseMainCollection = RiaSummaryTools::summaryCaseMainCollection(); if ( !summaryCaseMainCollection ) return {}; + return summaryCaseMainCollection->topLevelSummaryCases(); } diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp index d8e623a557..4b059c6f24 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp @@ -181,19 +181,18 @@ void RiuPlotMainWindow::initializeGuiNewProjectLoaded() auto sumPlotManager = dynamic_cast( m_summaryPlotManager.get() ); if ( sumPlotManager ) { - auto* obj = RiaSummaryTools::summaryCaseMainCollection(); - obj->dataSourceHasChanged.connect( sumPlotManager, &RimSummaryPlotManager::onSummaryDataSourceHasChanged ); + if ( auto* sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection() ) + { + sumCaseMainColl->dataSourceHasChanged.connect( sumPlotManager, &RimSummaryPlotManager::onSummaryDataSourceHasChanged ); + } sumPlotManager->resetDataSourceSelection(); sumPlotManager->updateConnectedEditors(); } + if ( auto* sumCaseMainColl = RiaSummaryTools::summaryCaseMainCollection() ) { - auto* obj = RiaSummaryTools::summaryCaseMainCollection(); - if ( obj ) - { - setExpanded( obj ); - } + setExpanded( sumCaseMainColl ); } {