From fb518117c0cc7503d32ff8db3c61124f2934542b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Jensen?= Date: Mon, 7 May 2018 12:00:34 +0200 Subject: [PATCH] #2856 Menus. Import case directly into group --- .../Commands/RicImportEnsembleFeature.cpp | 8 ++++ .../Commands/RicImportSummaryCaseFeature.cpp | 9 +++++ .../Commands/RicImportSummaryCasesFeature.cpp | 37 +++++++++++++++++-- .../Commands/RicImportSummaryCasesFeature.h | 1 + 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/ApplicationCode/Commands/RicImportEnsembleFeature.cpp b/ApplicationCode/Commands/RicImportEnsembleFeature.cpp index 3440acf67a..cf976816d6 100644 --- a/ApplicationCode/Commands/RicImportEnsembleFeature.cpp +++ b/ApplicationCode/Commands/RicImportEnsembleFeature.cpp @@ -76,6 +76,14 @@ void RicImportEnsembleFeature::onActionTriggered(bool isChecked) RicImportSummaryCasesFeature::addSummaryCases(cases); RicCreateSummaryCaseCollectionFeature::groupSummaryCases(cases, ensembleName); + RiuPlotMainWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow(); + if (mainPlotWindow && !cases.empty()) + { + mainPlotWindow->selectAsCurrentItem(cases.back()); + + mainPlotWindow->updateSummaryPlotToolBar(); + } + std::vector allCases; app->project()->allCases(allCases); diff --git a/ApplicationCode/Commands/RicImportSummaryCaseFeature.cpp b/ApplicationCode/Commands/RicImportSummaryCaseFeature.cpp index 0e1d7029fa..036c24f745 100644 --- a/ApplicationCode/Commands/RicImportSummaryCaseFeature.cpp +++ b/ApplicationCode/Commands/RicImportSummaryCaseFeature.cpp @@ -76,10 +76,19 @@ void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked) std::vector newCases; if (RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(fileNames, &newCases)) { + RicImportSummaryCasesFeature::addCasesToGroupIfRelevant(newCases); for (const RimSummaryCase* newCase : newCases) { RiaApplication::instance()->addToRecentFiles(newCase->summaryHeaderFilename()); } + + RiuPlotMainWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow(); + if (mainPlotWindow && !newCases.empty()) + { + mainPlotWindow->selectAsCurrentItem(newCases.back()); + + mainPlotWindow->updateSummaryPlotToolBar(); + } } std::vector cases; diff --git a/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp b/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp index 8f6f60ffac..0dc7224729 100644 --- a/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp +++ b/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp @@ -31,6 +31,7 @@ #include "RimOilField.h" #include "RimProject.h" #include "RimSummaryCase.h" +#include "RimSummaryCaseCollection.h" #include "RimSummaryCaseMainCollection.h" #include "RimSummaryPlotCollection.h" @@ -40,6 +41,7 @@ #include "SummaryPlotCommands/RicNewSummaryPlotFeature.h" #include "cafProgressInfo.h" +#include "cafSelectionManagerTools.h" #include #include @@ -75,8 +77,18 @@ void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked) addSummaryCases(cases); + addCasesToGroupIfRelevant(cases); + for (const auto& rimCase : cases) RiaApplication::instance()->addToRecentFiles(rimCase->summaryHeaderFilename()); + RiuPlotMainWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow(); + if (mainPlotWindow && !cases.empty()) + { + mainPlotWindow->selectAsCurrentItem(cases.back()); + + mainPlotWindow->updateSummaryPlotToolBar(); + } + std::vector allCases; app->project()->allCases(allCases); @@ -154,13 +166,30 @@ void RicImportSummaryCasesFeature::addSummaryCases(const std::vectoractiveOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr; sumCaseColl->addCases(cases); sumCaseColl->updateAllRequiredEditors(); +} - RiuPlotMainWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow(); - if (mainPlotWindow && !cases.empty()) +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicImportSummaryCasesFeature::addCasesToGroupIfRelevant(const std::vector cases) +{ + std::vector selectedColl = caf::selectedObjectsByTypeStrict(); + + if (selectedColl.size() == 1) { - mainPlotWindow->selectAsCurrentItem(cases.back()); + RimSummaryCaseCollection* coll = selectedColl.front(); + RimSummaryCaseMainCollection* mainColl; + coll->firstAncestorOrThisOfType(mainColl); - mainPlotWindow->updateSummaryPlotToolBar(); + if (mainColl) + { + for (const auto sumCase : cases) + { + mainColl->removeCase(sumCase); + selectedColl.front()->addCase(sumCase); + } + mainColl->updateConnectedEditors(); + } } } diff --git a/ApplicationCode/Commands/RicImportSummaryCasesFeature.h b/ApplicationCode/Commands/RicImportSummaryCasesFeature.h index 68d9ca017d..15c6f18a00 100644 --- a/ApplicationCode/Commands/RicImportSummaryCasesFeature.h +++ b/ApplicationCode/Commands/RicImportSummaryCasesFeature.h @@ -41,6 +41,7 @@ public: static bool createAndAddSummaryCasesFromFiles(const QStringList& fileName, std::vector* newCases = nullptr); static bool createSummaryCasesFromFiles(const QStringList& fileName, std::vector* newCases); static void addSummaryCases(const std::vector cases); + static void addCasesToGroupIfRelevant(const std::vector cases); static QStringList runRecursiveSummaryCaseFileSearchDialog(const QString& dialogTitle);