diff --git a/ApplicationCode/Application/RiaEclipseFileNameTools.cpp b/ApplicationCode/Application/RiaEclipseFileNameTools.cpp index 044480aa7a..4a6078d83a 100644 --- a/ApplicationCode/Application/RiaEclipseFileNameTools.cpp +++ b/ApplicationCode/Application/RiaEclipseFileNameTools.cpp @@ -27,7 +27,7 @@ void caf::AppEnum::setUp() { addItem(RiaEclipseFileNameTools::ECLIPSE_DATA, "DATA", "Data Deck"); addItem(RiaEclipseFileNameTools::ECLIPSE_GRID, "GRID", "Grid"); - addItem(RiaEclipseFileNameTools::ECLIPSE_EGRID, "EGRIRD", "Grid"); + addItem(RiaEclipseFileNameTools::ECLIPSE_EGRID, "EGRID", "Grid"); addItem(RiaEclipseFileNameTools::ECLIPSE_UNRST, "UNRST", "Unified Restart"); addItem(RiaEclipseFileNameTools::ECLIPSE_SMSPEC, "SMSPEC", "Summary Specification"); addItem(RiaEclipseFileNameTools::ECLIPSE_UNSMRY, "UNSMR", "Summary Vectors"); @@ -140,7 +140,7 @@ bool RiaEclipseFileNameTools::hasMatchingSuffix(const QString& fileName, Eclipse QString suffix = fi.completeSuffix(); - if (suffix.compare(caf::AppEnum::text(fileType), Qt::CaseInsensitive)) + if (suffix.compare(caf::AppEnum::text(fileType), Qt::CaseInsensitive) == 0) { return true; } diff --git a/ApplicationCode/Application/Tools/RiaArgumentParser.cpp b/ApplicationCode/Application/Tools/RiaArgumentParser.cpp index a3d18e1b13..9aef21aea5 100644 --- a/ApplicationCode/Application/Tools/RiaArgumentParser.cpp +++ b/ApplicationCode/Application/Tools/RiaArgumentParser.cpp @@ -20,6 +20,7 @@ #include "RiaApplication.h" #include "RiaBaseDefs.h" +#include "RiaEclipseFileNameTools.h" #include "RiaImportEclipseCaseTools.h" #include "RiaPreferences.h" #include "RiaProjectModifier.h" @@ -36,6 +37,7 @@ #include "ExportCommands/RicSnapshotAllPlotsToFileFeature.h" #include "ExportCommands/RicSnapshotAllViewsToFileFeature.h" #include "ExportCommands/RicSnapshotViewToFileFeature.h" +#include "RicImportSummaryCasesFeature.h" #include "cvfProgramOptions.h" #include "cvfqtUtils.h" @@ -292,29 +294,9 @@ bool RiaArgumentParser::parseArguments() if (cvf::Option o = progOpt.option("case")) { QStringList caseNames = cvfqt::Utils::toQStringList(o.values()); - foreach (QString caseName, caseNames) + for (const QString& caseName : caseNames) { - QString fileExtension = caf::Utils::fileExtension(caseName); - if (caf::Utils::fileExists(caseName) && (fileExtension == "EGRID" || fileExtension == "GRID")) - { - RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({caseName}), nullptr, true); - } - else - { - QString caseFileNameWithExt = caseName + ".EGRID"; - if (caf::Utils::fileExists(caseFileNameWithExt)) - { - RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({caseFileNameWithExt}), nullptr, true); - } - else - { - caseFileNameWithExt = caseName + ".GRID"; - if (caf::Utils::fileExists(caseFileNameWithExt)) - { - RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({caseFileNameWithExt}), nullptr, true); - } - } - } + openCaseFromCommandLineParameter(caseName); } } @@ -483,3 +465,64 @@ void RiaArgumentParser::executeCommandFile(const QString& commandFile) QTextStream in(&file); RicfCommandFileExecutor::instance()->executeCommands(in); } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RiaArgumentParser::openCaseFromCommandLineParameter(const QString& parameter) +{ + if (RiaEclipseFileNameTools::isProjectFile(parameter)) + { + return RiaApplication::instance()->loadProject(parameter); + } + + QStringList gridFileNames; + QStringList summarySpecFileNames; + + if (RiaEclipseFileNameTools::isGridFile(parameter)) + { + QFileInfo fi(parameter); + + gridFileNames.push_back(fi.absoluteFilePath()); + } + else if (RiaEclipseFileNameTools::isSummarySpecFile(parameter)) + { + QFileInfo fi(parameter); + + summarySpecFileNames.push_back(fi.absoluteFilePath()); + } + else + { + RiaEclipseFileNameTools fileNameTools(parameter); + + { + QString gridFileName = fileNameTools.findRelatedGridFile(); + if (!gridFileName.isEmpty()) + { + gridFileNames.push_back(gridFileName); + } + } + + QString summarySpecFileName = fileNameTools.findRelatedSummarySpecFile(); + if (!summarySpecFileName.isEmpty()) + { + summarySpecFileNames.push_back(summarySpecFileName); + } + } + + bool openCaseResult = true; + + // Open summary cases first. Then, the open of grid file will not open an already open summary case file + if (!summarySpecFileNames.empty()) + { + openCaseResult &= RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(summarySpecFileNames); + RiaApplication::instance()->getOrCreateAndShowMainPlotWindow(); + } + + for (const auto& f : gridFileNames) + { + openCaseResult &= RiaImportEclipseCaseTools::openEclipseCasesFromFile(QStringList({f}), nullptr, true); + } + + return openCaseResult; +} diff --git a/ApplicationCode/Application/Tools/RiaArgumentParser.h b/ApplicationCode/Application/Tools/RiaArgumentParser.h index 75ab33072d..6a0d6dc212 100644 --- a/ApplicationCode/Application/Tools/RiaArgumentParser.h +++ b/ApplicationCode/Application/Tools/RiaArgumentParser.h @@ -32,5 +32,6 @@ public: private: static void executeCommandFile(const QString& commandFile); + static bool openCaseFromCommandLineParameter(const QString& parameter); };