diff --git a/ApplicationLibCode/Application/RiaApplication.cpp b/ApplicationLibCode/Application/RiaApplication.cpp index aefcfc1859..98b8a58a18 100644 --- a/ApplicationLibCode/Application/RiaApplication.cpp +++ b/ApplicationLibCode/Application/RiaApplication.cpp @@ -233,7 +233,9 @@ void RiaApplication::createMockModelCustomized() //-------------------------------------------------------------------------------------------------- void RiaApplication::createInputMockModel() { - RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ) ); + bool createView = true; + RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( QStringList( RiaDefines::mockModelBasicInputCase() ), + createView ); } //-------------------------------------------------------------------------------------------------- @@ -336,7 +338,10 @@ bool RiaApplication::openFile( const QString& fileName ) } else if ( int( fileType ) & int( RiaDefines::ImportFileType::ANY_ECLIPSE_FILE ) ) { - loadingSucceded = RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList{ fileName }, true ); + bool createView = true; + bool createPlot = true; + loadingSucceded = + RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList{ fileName }, createPlot, createView ); lastUsedDialogTag = RiaDefines::defaultDirectoryLabel( fileType ); } diff --git a/ApplicationLibCode/Application/RiaConsoleApplication.cpp b/ApplicationLibCode/Application/RiaConsoleApplication.cpp index 5ed24889e8..4f4fe89698 100644 --- a/ApplicationLibCode/Application/RiaConsoleApplication.cpp +++ b/ApplicationLibCode/Application/RiaConsoleApplication.cpp @@ -285,7 +285,9 @@ RiaApplication::ApplicationStatus RiaConsoleApplication::handleArguments( gsl::n QStringList fileNames = RicImportGeneralDataFeature::fileNamesFromCaseNames( cvfqt::Utils::toQStringList( o.values() ) ); - RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, true ); + bool createView = true; + bool createPlot = true; + RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, createPlot, createView ); } if ( cvf::Option o = progOpt->option( "commandFile" ) ) diff --git a/ApplicationLibCode/Application/RiaGuiApplication.cpp b/ApplicationLibCode/Application/RiaGuiApplication.cpp index 2df91a9845..194c9525ca 100644 --- a/ApplicationLibCode/Application/RiaGuiApplication.cpp +++ b/ApplicationLibCode/Application/RiaGuiApplication.cpp @@ -674,8 +674,11 @@ RiaApplication::ApplicationStatus RiaGuiApplication::handleArguments( gsl::not_n QStringList fileNames = RicImportGeneralDataFeature::fileNamesFromCaseNames( cvfqt::Utils::toQStringList( o.values() ) ); + bool createView = true; + bool createPlot = true; + RicImportGeneralDataFeature::OpenCaseResults results = - RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, true ); + RicImportGeneralDataFeature::openEclipseFilesFromFileNames( fileNames, createPlot, createView ); if ( results && !results.eclipseSummaryFiles.empty() ) { getOrCreateAndShowMainPlotWindow(); diff --git a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp index 15f83dd258..43dc729f35 100644 --- a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp +++ b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp @@ -247,8 +247,7 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilter( const QString //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringList& fileNames, - QString* fileContainingGrid /*=nullptr*/ ) +int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView ) { RimEclipseInputCase* rimInputReservoir = new RimEclipseInputCase(); @@ -270,24 +269,26 @@ int RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( const QStringL analysisModels->cases.push_back( rimInputReservoir ); - RimEclipseView* riv = rimInputReservoir->createAndAddReservoirView(); - - riv->cellResult()->setResultType( RiaDefines::ResultCatType::INPUT_PROPERTY ); - - riv->loadDataAndUpdate(); - - if ( !riv->cellResult()->hasResult() ) + RimEclipseView* eclipseView = nullptr; + if ( createDefaultView ) { - riv->cellResult()->setResultVariable( RiaResultNames::undefinedResultName() ); + eclipseView = rimInputReservoir->createAndAddReservoirView(); + + eclipseView->cellResult()->setResultType( RiaDefines::ResultCatType::INPUT_PROPERTY ); + + eclipseView->loadDataAndUpdate(); + + if ( !eclipseView->cellResult()->hasResult() ) + { + eclipseView->cellResult()->setResultVariable( RiaResultNames::undefinedResultName() ); + } } analysisModels->updateConnectedEditors(); - Riu3DMainWindowTools::selectAsCurrentItem( riv->cellResult() ); - - if ( fileContainingGrid ) + if ( eclipseView ) { - *fileContainingGrid = rimInputReservoir->gridFileName(); + Riu3DMainWindowTools::selectAsCurrentItem( eclipseView->cellResult() ); } return rimInputReservoir->caseId(); diff --git a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.h b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.h index c2a8c266e4..78d0f433cf 100644 --- a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.h +++ b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.h @@ -40,7 +40,7 @@ public: static bool openEclipseCaseShowTimeStepFilter( const QString& fileName ); - static int openEclipseInputCaseFromFileNames( const QStringList& fileNames, QString* fileContainingGrid = nullptr ); + static int openEclipseInputCaseFromFileNames( const QStringList& fileNames, bool createDefaultView ); static bool openMockModel( const QString& name ); static bool addEclipseCases( const QStringList& fileNames, RimIdenticalGridCaseGroup** resultingCaseGroup = nullptr ); diff --git a/ApplicationLibCode/Commands/EclipseCommands/RicImportEclipseCaseFeature.cpp b/ApplicationLibCode/Commands/EclipseCommands/RicImportEclipseCaseFeature.cpp index 9f95b5124c..dfc695bd47 100644 --- a/ApplicationLibCode/Commands/EclipseCommands/RicImportEclipseCaseFeature.cpp +++ b/ApplicationLibCode/Commands/EclipseCommands/RicImportEclipseCaseFeature.cpp @@ -59,7 +59,9 @@ void RicImportEclipseCaseFeature::onActionTriggered( bool isChecked ) defaultDir = QFileInfo( fileNames.last() ).absolutePath(); app->setLastUsedDialogDirectory( "BINARY_GRID", defaultDir ); - openEclipseCaseFromFileNames( fileNames ); + bool createDefaultView = false; + std::vector caseIds; + openEclipseCaseFromFileNames( fileNames, createDefaultView, caseIds ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Commands/GeoMechCommands/RicNewFaultReactAssessmentFeature.cpp b/ApplicationLibCode/Commands/GeoMechCommands/RicNewFaultReactAssessmentFeature.cpp index 71b5b917a5..6242c13b4e 100644 --- a/ApplicationLibCode/Commands/GeoMechCommands/RicNewFaultReactAssessmentFeature.cpp +++ b/ApplicationLibCode/Commands/GeoMechCommands/RicNewFaultReactAssessmentFeature.cpp @@ -103,7 +103,8 @@ void RicNewFaultReactAssessmentFeature::onActionTriggered( bool isChecked ) gridList << frapSettings.outputEclipseFilename(); // load the new grid - int caseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( gridList ); + bool createView = true; + int caseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( gridList, createView ); if ( caseId < 0 ) { QMessageBox::critical( nullptr, "Fault Reactivation Assessment", "Unable to load generated Eclipse grid." ); diff --git a/ApplicationLibCode/Commands/RicCreateEnsembleWellLogFeature.cpp b/ApplicationLibCode/Commands/RicCreateEnsembleWellLogFeature.cpp index 3d374a9ea4..2cb6d3f48d 100644 --- a/ApplicationLibCode/Commands/RicCreateEnsembleWellLogFeature.cpp +++ b/ApplicationLibCode/Commands/RicCreateEnsembleWellLogFeature.cpp @@ -27,6 +27,7 @@ #include "RicCloseCaseFeature.h" #include "RicCreateEnsembleWellLogUi.h" #include "RicImportEnsembleWellLogsFeature.h" +#include "RicImportGeneralDataFeature.h" #include "RicRecursiveFileSearchDialog.h" #include "WellPathCommands/RicImportWellPaths.h" @@ -75,7 +76,7 @@ void RicCreateEnsembleWellLogFeature::openDialogAndExecuteCommand() defaultDir, pathFilter, fileNameFilter, - QStringList( ".EGRID" ) ); + { ".GRDECL", ".EGRID" } ); if ( !result.ok || result.files.isEmpty() ) { @@ -84,12 +85,13 @@ void RicCreateEnsembleWellLogFeature::openDialogAndExecuteCommand() // Use case data from first case RimEclipseCase* eclipseCase = loadEclipseCase( result.files[0] ); + if ( !eclipseCase ) return; RicCreateEnsembleWellLogUi* ui = RimProject::current()->dialogData()->createEnsembleWellLogUi(); ui->setCaseData( eclipseCase->eclipseCaseData() ); // Automatically selected the well path the dialog was triggered on (if any) - RimWellPath* wellPath = caf::SelectionManager::instance()->selectedItemOfType(); + auto* wellPath = caf::SelectionManager::instance()->selectedItemOfType(); if ( wellPath ) { ui->setWellPathSource( RicCreateEnsembleWellLogUi::WellPathSource::PROJECT_WELLS ); @@ -244,7 +246,7 @@ void RicCreateEnsembleWellLogFeature::executeCommand( const RicCreateEnsembleWel QString title = QString( "Track %1" ).arg( wellLogPlot->plotCount() ); RimWellLogTrack* wellLogTrack = RimcWellLogPlot_newWellLogTrack::createWellLogTrack( wellLogPlot, eclipseCase, wellPath, title ); - RimEnsembleWellLogCurveSet* ensembleWellLogCurveSet = new RimEnsembleWellLogCurveSet(); + auto* ensembleWellLogCurveSet = new RimEnsembleWellLogCurveSet(); ensembleWellLogCurveSet->setEnsembleWellLogs( ensembleWellLog ); ensembleWellLogCurveSet->setColor( color ); ensembleWellLogCurveSet->setWellLogChannelName( property.first ); @@ -273,17 +275,18 @@ RimEclipseCase* RicCreateEnsembleWellLogFeature::loadEclipseCase( const QString& QDir startDir( RiaApplication::instance()->startDir() ); absolutePath = startDir.absoluteFilePath( fileName ); } + bool createView = false; + bool createPlot = false; + auto openResult = RicImportGeneralDataFeature::openEclipseFilesFromFileNames( QStringList( { absolutePath } ), + createPlot, + createView ); - RiaImportEclipseCaseTools::FileCaseIdMap fileCaseIdMap; - bool createView = false; - bool doNotShowDialog = true; - bool ok = RiaImportEclipseCaseTools::openEclipseCasesFromFile( QStringList( { absolutePath } ), - createView, - &fileCaseIdMap, - doNotShowDialog ); - if ( !ok || fileCaseIdMap.empty() ) return nullptr; + if ( !openResult.createdCaseIds.empty() ) + { + return RimProject::current()->eclipseCaseFromCaseId( openResult.createdCaseIds.front() ); + } - return RimProject::current()->eclipseCaseFromCaseId( fileCaseIdMap.begin()->second ); + return nullptr; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Commands/RicImportGeneralDataFeature.cpp b/ApplicationLibCode/Commands/RicImportGeneralDataFeature.cpp index c19158ca35..5deb9ee50b 100644 --- a/ApplicationLibCode/Commands/RicImportGeneralDataFeature.cpp +++ b/ApplicationLibCode/Commands/RicImportGeneralDataFeature.cpp @@ -43,7 +43,9 @@ CAF_CMD_SOURCE_INIT( RicImportGeneralDataFeature, "RicImportGeneralDataFeature" /// //-------------------------------------------------------------------------------------------------- RicImportGeneralDataFeature::OpenCaseResults - RicImportGeneralDataFeature::openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot ) + RicImportGeneralDataFeature::openEclipseFilesFromFileNames( const QStringList& fileNames, + bool doCreateDefaultPlot, + bool createDefaultView ) { CVF_ASSERT( !fileNames.empty() ); @@ -73,7 +75,7 @@ RicImportGeneralDataFeature::OpenCaseResults OpenCaseResults results; if ( !eclipseCaseFiles.empty() ) { - if ( !openEclipseCaseFromFileNames( eclipseCaseFiles ) ) + if ( !openEclipseCaseFromFileNames( eclipseCaseFiles, createDefaultView, results.createdCaseIds ) ) { return OpenCaseResults(); } @@ -83,7 +85,7 @@ RicImportGeneralDataFeature::OpenCaseResults } if ( !eclipseInputFiles.empty() ) { - if ( !openInputEclipseCaseFromFileNames( eclipseInputFiles ) ) + if ( !openInputEclipseCaseFromFileNames( eclipseInputFiles, createDefaultView, results.createdCaseIds ) ) { return OpenCaseResults(); } @@ -219,7 +221,7 @@ void RicImportGeneralDataFeature::openFileDialog( ImportFileType fileTypes ) fileNames.front() ); } - if ( !openEclipseFilesFromFileNames( fileNames, true ) ) + if ( !openEclipseFilesFromFileNames( fileNames, true, true ) ) { RiaLogging::error( QString( "Failed to open file names: %1" ).arg( fileNames.join( ", " ) ) ); } @@ -228,16 +230,18 @@ void RicImportGeneralDataFeature::openFileDialog( ImportFileType fileTypes ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringList& fileNames ) +bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringList& fileNames, + bool createDefaultView, + std::vector& createdCaseIds ) { - bool createView = true; - bool noDialog = false; + bool noDialog = false; RiaImportEclipseCaseTools::FileCaseIdMap newCaseFiles; - if ( RiaImportEclipseCaseTools::openEclipseCasesFromFile( fileNames, createView, &newCaseFiles, noDialog ) ) + if ( RiaImportEclipseCaseTools::openEclipseCasesFromFile( fileNames, createDefaultView, &newCaseFiles, noDialog ) ) { for ( const auto& newCaseFileAndId : newCaseFiles ) { RiaApplication::instance()->addToRecentFiles( newCaseFileAndId.first ); + createdCaseIds.push_back( newCaseFileAndId.second ); } return true; } @@ -247,12 +251,16 @@ bool RicImportGeneralDataFeature::openEclipseCaseFromFileNames( const QStringLis //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -bool RicImportGeneralDataFeature::openInputEclipseCaseFromFileNames( const QStringList& fileNames ) +bool RicImportGeneralDataFeature::openInputEclipseCaseFromFileNames( const QStringList& fileNames, + bool createDefaultView, + std::vector& createdCaseIds ) { QString fileContainingGrid; - if ( RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( fileNames, &fileContainingGrid ) >= 0 ) + auto generatedCaseId = RiaImportEclipseCaseTools::openEclipseInputCaseFromFileNames( fileNames, &fileContainingGrid ); + if ( generatedCaseId >= 0 ) { RiaApplication::instance()->addToRecentFiles( fileContainingGrid ); + createdCaseIds.push_back( generatedCaseId ); return true; } return false; diff --git a/ApplicationLibCode/Commands/RicImportGeneralDataFeature.h b/ApplicationLibCode/Commands/RicImportGeneralDataFeature.h index b0b1f0947a..21559ff4b8 100644 --- a/ApplicationLibCode/Commands/RicImportGeneralDataFeature.h +++ b/ApplicationLibCode/Commands/RicImportGeneralDataFeature.h @@ -40,15 +40,18 @@ public: QStringList eclipseInputFiles; QStringList eclipseSummaryFiles; + std::vector createdCaseIds; + operator bool() const { return !( eclipseCaseFiles.empty() && eclipseInputFiles.empty() && eclipseSummaryFiles.empty() ); } }; - static OpenCaseResults openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot ); - static QStringList fileNamesFromCaseNames( const QStringList& caseNames ); - static QStringList getEclipseFileNamesWithDialog( RiaDefines::ImportFileType fileTypes ); + static OpenCaseResults + openEclipseFilesFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot, bool createDefaultView ); + static QStringList fileNamesFromCaseNames( const QStringList& caseNames ); + static QStringList getEclipseFileNamesWithDialog( RiaDefines::ImportFileType fileTypes ); protected: // Overrides @@ -58,7 +61,11 @@ protected: static void openFileDialog( RiaDefines::ImportFileType fileTypes ); - static bool openEclipseCaseFromFileNames( const QStringList& fileNames ); - static bool openInputEclipseCaseFromFileNames( const QStringList& fileNames ); + static bool openEclipseCaseFromFileNames( const QStringList& fileNames, + bool createDefaultView, + std::vector& createdCaseIds ); + static bool openInputEclipseCaseFromFileNames( const QStringList& fileNames, + bool createDefaultView, + std::vector& createdCaseIds ); static bool openSummaryCaseFromFileNames( const QStringList& fileNames, bool doCreateDefaultPlot = true ); };