Release adjustments

* Use appendMenuItems instead of ContextCommandBuilder
* Specify RimEclipseCaseCollection menu features once
* Add function to enable up/down arrows for combo box
* Guard crash when closing project
* Improve UI for grid case ensemble
- Create a view for the first case in the ensemble
- Show case name in view title
- Enable up/down buttons to Eclipse case
* Make sure 3D views in grid ensemble are created on project load
This commit is contained in:
Magne Sjaastad
2024-09-16 09:49:22 +02:00
committed by GitHub
parent 1f80503f01
commit 9d66e6195e
22 changed files with 189 additions and 70 deletions

View File

@@ -22,13 +22,16 @@
#include "RiaImportEclipseCaseTools.h"
#include "RicCreateGridCaseGroupFromFilesFeature.h"
#include "RicNewViewFeature.h"
#include "RicRecursiveFileSearchDialog.h"
#include "Rim3dView.h"
#include "RimEclipseCaseCollection.h"
#include "RimEclipseCaseEnsemble.h"
#include "RimEclipseResultCase.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimViewNameConfig.h"
#include "cafProgressInfo.h"
#include "cafSelectionManager.h"
@@ -46,18 +49,35 @@ void RicCreateGridCaseEnsemblesFromFilesFeature::onActionTriggered( bool isCheck
QString pathCacheName = "INPUT_FILES";
auto [fileNames, groupByEnsemble] = runRecursiveFileSearchDialog( "Import Grid Ensembles", pathCacheName );
std::vector<RimEclipseCaseEnsemble*> gridEnsembles;
if ( groupByEnsemble == RiaEnsembleNameTools::EnsembleGroupingMode::NONE )
{
importSingleGridCaseEnsemble( fileNames );
gridEnsembles.push_back( importSingleGridCaseEnsemble( fileNames ) );
}
else
{
std::vector<QStringList> groupedByEnsemble = RiaEnsembleNameTools::groupFilesByEnsemble( fileNames, groupByEnsemble );
for ( const QStringList& groupedFileNames : groupedByEnsemble )
{
importSingleGridCaseEnsemble( groupedFileNames );
gridEnsembles.push_back( importSingleGridCaseEnsemble( groupedFileNames ) );
}
}
if ( gridEnsembles.empty() ) return;
auto firstEnsemble = gridEnsembles.front();
if ( firstEnsemble->cases().empty() ) return;
auto firstCase = firstEnsemble->cases().front();
if ( !firstCase ) return;
auto view = RicNewViewFeature::addReservoirView( firstCase, nullptr, firstEnsemble->viewCollection() );
if ( view )
{
// Show the case name in the view title, as this is useful information for a grid case ensemble
view->nameConfig()->setAddCaseName( true );
}
}
//--------------------------------------------------------------------------------------------------
@@ -66,14 +86,20 @@ void RicCreateGridCaseEnsemblesFromFilesFeature::onActionTriggered( bool isCheck
void RicCreateGridCaseEnsemblesFromFilesFeature::setupActionLook( QAction* actionToSetup )
{
actionToSetup->setIcon( QIcon( ":/CreateGridCaseGroup16x16.png" ) );
actionToSetup->setText( "&Create Grid Case Ensembles" );
actionToSetup->setText( "&Create Grid Case Ensemble" );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicCreateGridCaseEnsemblesFromFilesFeature::importSingleGridCaseEnsemble( const QStringList& fileNames )
RimEclipseCaseEnsemble* RicCreateGridCaseEnsemblesFromFilesFeature::importSingleGridCaseEnsemble( const QStringList& fileNames )
{
RimProject* project = RimProject::current();
CVF_ASSERT( project );
RimOilField* oilfield = project->activeOilField();
if ( !oilfield ) return nullptr;
auto eclipseCaseEnsemble = new RimEclipseCaseEnsemble;
QString ensembleNameSuggestion =
RiaEnsembleNameTools::findSuitableEnsembleName( fileNames, RiaEnsembleNameTools::EnsembleGroupingMode::FMU_FOLDER_STRUCTURE );
@@ -81,12 +107,6 @@ void RicCreateGridCaseEnsemblesFromFilesFeature::importSingleGridCaseEnsemble( c
caf::ProgressInfo progInfo( fileNames.size() + 1, "Creating Grid Ensembles" );
RimProject* project = RimProject::current();
CVF_ASSERT( project );
RimOilField* oilfield = project->activeOilField();
if ( !oilfield ) return;
for ( auto caseFileName : fileNames )
{
auto task = progInfo.task( "Loading files", 1 );
@@ -102,6 +122,8 @@ void RicCreateGridCaseEnsemblesFromFilesFeature::importSingleGridCaseEnsemble( c
oilfield->analysisModels()->caseEnsembles.push_back( eclipseCaseEnsemble );
oilfield->analysisModels()->updateConnectedEditors();
return eclipseCaseEnsemble;
}
//--------------------------------------------------------------------------------------------------