#2687 #2750 Add import ensamble command. Add import summary cases commands to plot tree nodes

This commit is contained in:
Bjørn Erik Jensen
2018-04-18 13:56:01 +02:00
parent 916fb59bee
commit 3ce2bfd67c
14 changed files with 309 additions and 40 deletions

View File

@@ -43,6 +43,13 @@
CAF_CMD_SOURCE_INIT(RicImportSummaryCasesFeature, "RicImportSummaryCasesFeature");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RicImportSummaryCasesFeature::m_pathFilter = "*";
QString RicImportSummaryCasesFeature::m_fileNameFilter = "*";
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -56,32 +63,15 @@ bool RicImportSummaryCasesFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
{
RiaApplication* app = RiaApplication::instance();
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
RiaApplication* app = RiaApplication::instance();
std::vector<RimSummaryCase*> cases = importSummaryCases("Import Summary Cases");
for (const auto& rimCase : cases) RiaApplication::instance()->addToRecentFiles(rimCase->summaryHeaderFilename());
RicFileHierarchyDialogResult result = RicFileHierarchyDialog::getOpenFileNames(nullptr, "Import Summary Cases", defaultDir, m_pathFilter, m_fileNameFilter, QStringList(".SMSPEC"));
std::vector<RimCase*> allCases;
app->project()->allCases(allCases);
// Remember filters
m_pathFilter = result.pathFilter;
m_fileNameFilter = result.fileNameFilter;
if (!result.ok) return;
// Remember the path to next time
app->setLastUsedDialogDirectory("INPUT_FILES", QFileInfo(result.rootDir).absoluteFilePath());
QStringList fileNames = result.files;
if (fileNames.isEmpty()) return;
if (createAndAddSummaryCasesFromFiles(fileNames))
{
for (const auto& fileName : fileNames) RiaApplication::instance()->addToRecentFiles(fileName);
}
std::vector<RimCase*> cases;
app->project()->allCases(cases);
if (cases.size() == 0)
if (allCases.size() == 0)
{
RiuMainWindow::instance()->close();
}
@@ -99,11 +89,13 @@ void RicImportSummaryCasesFeature::setupActionLook(QAction* actionToSetup)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(const QStringList& fileNames)
bool RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(const QStringList& fileNames, std::vector<RimSummaryCase*>* newCases)
{
RiaApplication* app = RiaApplication::instance();
RimProject* proj = app->project();
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
if (newCases) newCases->clear();
if (!sumCaseColl) return false;
RifSummaryCaseRestartSelector fileSelector;
@@ -119,5 +111,34 @@ bool RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(const QStri
mainPlotWindow->updateSummaryPlotToolBar();
}
if (newCases) newCases->insert(newCases->end(), sumCases.begin(), sumCases.end());
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RicImportSummaryCasesFeature::importSummaryCases(const QString& dialogTitle)
{
RiaApplication* app = RiaApplication::instance();
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
RicFileHierarchyDialogResult result = RicFileHierarchyDialog::getOpenFileNames(nullptr, dialogTitle, defaultDir, m_pathFilter, m_fileNameFilter, QStringList(".SMSPEC"));
// Remember filters
m_pathFilter = result.pathFilter;
m_fileNameFilter = result.fileNameFilter;
if (!result.ok) return std::vector<RimSummaryCase*>();
// Remember the path to next time
app->setLastUsedDialogDirectory("INPUT_FILES", QFileInfo(result.rootDir).absoluteFilePath());
QStringList fileNames = result.files;
if (fileNames.isEmpty()) return std::vector<RimSummaryCase*>();
std::vector<RimSummaryCase*> newCases;
createAndAddSummaryCasesFromFiles(fileNames, &newCases);
return newCases;
}