mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2555 Refactored summary restart file import
This commit is contained in:
@@ -1872,7 +1872,7 @@ bool RiaApplication::openFile(const QString& fileName)
|
||||
}
|
||||
else if (fileName.contains(".smspec", Qt::CaseInsensitive))
|
||||
{
|
||||
loadingSucceded = RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileWithDialog(fileName);
|
||||
loadingSucceded = RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(QStringList({ fileName }));
|
||||
if (loadingSucceded)
|
||||
{
|
||||
getOrCreateAndShowMainPlotWindow();
|
||||
|
||||
@@ -64,17 +64,10 @@ void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked)
|
||||
|
||||
if (fileNames.isEmpty()) return;
|
||||
|
||||
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||
if (RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(fileNames))
|
||||
{
|
||||
fileInfos = RicImportSummaryCasesFeature::getFilesToImportWithDialog(fileNames, true);
|
||||
for(const auto& fileName : fileNames) RiaApplication::instance()->addToRecentFiles(fileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
fileInfos = RicImportSummaryCasesFeature::getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||
}
|
||||
|
||||
RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||
|
||||
std::vector<RimCase*> cases;
|
||||
app->project()->allCases(cases);
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RicFileHierarchyDialog.h"
|
||||
#include "RicSummaryCaseRestartDialog.h"
|
||||
|
||||
#include "RimGridSummaryCase.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
@@ -56,7 +55,6 @@ bool RicImportSummaryCasesFeature::isCommandEnabled()
|
||||
void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RiaPreferences* prefs = app->preferences();
|
||||
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
|
||||
|
||||
RicFileHierarchyDialogResult result = RicFileHierarchyDialog::getOpenFileNames(nullptr, "Import Summary Cases", defaultDir, m_pathFilter, m_fileNameFilter, QStringList(".SMSPEC"));
|
||||
@@ -73,19 +71,10 @@ void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
|
||||
QStringList fileNames = result.files;
|
||||
if (fileNames.isEmpty()) return;
|
||||
|
||||
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||
if (createAndAddSummaryCasesFromFiles(fileNames))
|
||||
{
|
||||
fileInfos = getFilesToImportWithDialog(fileNames, true);
|
||||
for (const auto& fileName : fileNames) RiaApplication::instance()->addToRecentFiles(fileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
fileInfos = getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||
}
|
||||
|
||||
createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||
|
||||
if (fileInfos.size() > 0) RiaApplication::instance()->addToRecentFiles(fileInfos.front().fileName);
|
||||
|
||||
std::vector<RimCase*> cases;
|
||||
app->project()->allCases(cases);
|
||||
@@ -108,128 +97,22 @@ void RicImportSummaryCasesFeature::setupActionLook(QAction* actionToSetup)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RicSummaryCaseFileInfo> RicImportSummaryCasesFeature::getFilesToImportWithDialog(const QStringList& initialFiles,
|
||||
bool enableApplyToAllField)
|
||||
{
|
||||
std::set<RicSummaryCaseFileInfo> filesToImport;
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
for (const QString& file : initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult result;
|
||||
if (lastResult.applyToAll) result = lastResult;
|
||||
else result = RicSummaryCaseRestartDialog::openDialog(file, enableApplyToAllField);
|
||||
|
||||
if (result.ok)
|
||||
{
|
||||
for (const QString& file : result.files)
|
||||
{
|
||||
RicSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL);
|
||||
if (filesToImport.count(fi) == 0)
|
||||
{
|
||||
filesToImport.insert(fi);
|
||||
}
|
||||
}
|
||||
}
|
||||
lastResult = result;
|
||||
}
|
||||
return std::vector<RicSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RicSummaryCaseFileInfo> RicImportSummaryCasesFeature::getFilesToImportFromPrefs(const QStringList& initialFiles,
|
||||
RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode)
|
||||
{
|
||||
std::set<RicSummaryCaseFileInfo> filesToImport;
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
for (const QString& file : initialFiles)
|
||||
{
|
||||
if (summaryRestartMode == RiaPreferences::IMPORT)
|
||||
{
|
||||
filesToImport.insert(RicSummaryCaseFileInfo(file, true));
|
||||
}
|
||||
else if (summaryRestartMode == RiaPreferences::NOT_IMPORT)
|
||||
{
|
||||
filesToImport.insert(RicSummaryCaseFileInfo(file, false));
|
||||
}
|
||||
else if (summaryRestartMode == RiaPreferences::SEPARATE_CASES)
|
||||
{
|
||||
filesToImport.insert(RicSummaryCaseFileInfo(file, false));
|
||||
|
||||
RifReaderEclipseSummary reader;
|
||||
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file);
|
||||
for (const auto& fi : restartFileInfos)
|
||||
filesToImport.insert(RicSummaryCaseFileInfo(fi.fileName, false));
|
||||
}
|
||||
}
|
||||
return std::vector<RicSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileInfo(const std::vector<RicSummaryCaseFileInfo>& fileInfos)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RimProject* proj = app->project();
|
||||
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
if (!sumCaseColl) return false;
|
||||
|
||||
for (const auto& fi : fileInfos)
|
||||
{
|
||||
createAndAddSummaryCaseFromFile(fi.fileName, fi.includeRestartFiles);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileWithDialog(const QString& fileName)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RiaPreferences* prefs = app->preferences();
|
||||
|
||||
QStringList fileNames({ fileName });
|
||||
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||
{
|
||||
fileInfos = getFilesToImportWithDialog(fileNames, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
fileInfos = getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||
}
|
||||
|
||||
|
||||
bool res = createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||
RiaApplication::instance()->addToRecentFiles(fileName);
|
||||
return res;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFile(const QString& fileName, bool includeRestartFiles)
|
||||
bool RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(const QStringList& fileNames)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RimProject* proj = app->project();
|
||||
RimSummaryCaseMainCollection* sumCaseColl = proj->activeOilField() ? proj->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
if (!sumCaseColl) return false;
|
||||
|
||||
RimSummaryCase* sumCase = sumCaseColl->createAndAddSummaryCaseFromFileName(fileName, includeRestartFiles);
|
||||
std::vector<RimSummaryCase*> sumCases = sumCaseColl->createAndAddSummaryCasesFromFiles(fileNames);
|
||||
sumCaseColl->updateAllRequiredEditors();
|
||||
|
||||
RiuMainPlotWindow* mainPlotWindow = app->getOrCreateAndShowMainPlotWindow();
|
||||
if (mainPlotWindow)
|
||||
if (mainPlotWindow && !sumCases.empty())
|
||||
{
|
||||
mainPlotWindow->selectAsCurrentItem(sumCase);
|
||||
mainPlotWindow->selectAsCurrentItem(sumCases.back());
|
||||
|
||||
mainPlotWindow->updateSummaryPlotToolBar();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,22 +27,6 @@
|
||||
class RicSummaryCaseRestartDialogResult;
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RicSummaryCaseFileInfo
|
||||
{
|
||||
public:
|
||||
RicSummaryCaseFileInfo(const QString _fileName, bool _includeRestartFiles) :
|
||||
fileName(_fileName), includeRestartFiles(_includeRestartFiles) {}
|
||||
|
||||
QString fileName;
|
||||
bool includeRestartFiles;
|
||||
|
||||
bool operator<(const RicSummaryCaseFileInfo& other) const { return fileName < other.fileName; }
|
||||
bool operator==(const RicSummaryCaseFileInfo& other) const { return fileName == other.fileName; }
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
@@ -53,17 +37,7 @@ class RicImportSummaryCasesFeature : public caf::CmdFeature
|
||||
public:
|
||||
RicImportSummaryCasesFeature() : m_pathFilter("*"), m_fileNameFilter("*") { }
|
||||
|
||||
static std::vector<RicSummaryCaseFileInfo> getFilesToImportWithDialog(const QStringList& initialFiles,
|
||||
bool enableApplyToAllField);
|
||||
|
||||
static std::vector<RicSummaryCaseFileInfo> getFilesToImportFromPrefs(const QStringList& initialFiles,
|
||||
RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode);
|
||||
|
||||
static bool createAndAddSummaryCaseFromFileInfo(const std::vector<RicSummaryCaseFileInfo>& fileInfos);
|
||||
static bool createAndAddSummaryCaseFromFileWithDialog(const QString& fileName);
|
||||
|
||||
private:
|
||||
static bool createAndAddSummaryCaseFromFile(const QString& fileName, bool includeRestartFiles);
|
||||
static bool createAndAddSummaryCasesFromFiles(const QStringList& fileName);
|
||||
|
||||
protected:
|
||||
// Overrides
|
||||
|
||||
@@ -127,6 +127,7 @@ RicSummaryCaseRestartDialog::~RicSummaryCaseRestartDialog()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const QString& summaryHeaderFile,
|
||||
bool showApplyToAllWidget,
|
||||
RicSummaryCaseRestartDialogResult *lastResult,
|
||||
QWidget *parent)
|
||||
{
|
||||
RicSummaryCaseRestartDialog dialog(parent);
|
||||
@@ -143,28 +144,41 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
return RicSummaryCaseRestartDialogResult(true, READ_SINGLE, QStringList({ summaryHeaderFile }), false);
|
||||
}
|
||||
|
||||
dialog.setWindowTitle("Summary Case Restart Files");
|
||||
dialog.m_readAllRadioButton->setChecked(true);
|
||||
dialog.m_currentFile->setText(summaryHeaderFile);
|
||||
dialog.m_applyToAllCheckBox->setVisible(showApplyToAllWidget);
|
||||
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
|
||||
dialog.exec();
|
||||
RicSummaryCaseRestartDialogResult dialogResult;
|
||||
if (lastResult && lastResult->applyToAll)
|
||||
{
|
||||
dialogResult = *lastResult;
|
||||
dialogResult.files.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
dialog.setWindowTitle("Summary Case Restart Files");
|
||||
dialog.m_readAllRadioButton->setChecked(true);
|
||||
dialog.m_currentFile->setText(summaryHeaderFile);
|
||||
dialog.m_applyToAllCheckBox->setVisible(showApplyToAllWidget);
|
||||
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
|
||||
dialog.exec();
|
||||
|
||||
dialogResult = RicSummaryCaseRestartDialogResult(dialog.result() == QDialog::Accepted,
|
||||
dialog.selectedOption(),
|
||||
{},
|
||||
dialog.applyToAllSelected());
|
||||
}
|
||||
|
||||
if (dialog.result() != QDialog::Accepted)
|
||||
if (!dialogResult.ok)
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(false, READ_SINGLE, QStringList(), false);
|
||||
}
|
||||
|
||||
QStringList files({ RiaFilePathTools::toInternalSeparator(summaryHeaderFile) });
|
||||
if (dialog.selectedOption() == SEPARATE_CASES)
|
||||
dialogResult.files.push_back(RiaFilePathTools::toInternalSeparator(summaryHeaderFile));
|
||||
if (dialogResult.option == SEPARATE_CASES)
|
||||
{
|
||||
for (const auto& fileInfo : fileInfos)
|
||||
{
|
||||
files.push_back(RiaFilePathTools::toInternalSeparator(fileInfo.fileName));
|
||||
dialogResult.files.push_back(RiaFilePathTools::toInternalSeparator(fileInfo.fileName));
|
||||
}
|
||||
}
|
||||
return RicSummaryCaseRestartDialogResult(true, dialog.selectedOption(), files, dialog.applyToAllSelected());
|
||||
return dialogResult;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -53,6 +53,7 @@ public:
|
||||
|
||||
static RicSummaryCaseRestartDialogResult openDialog(const QString& summaryHeaderFile,
|
||||
bool showApplyToAllWidget,
|
||||
RicSummaryCaseRestartDialogResult *lastResult = nullptr,
|
||||
QWidget *parent = nullptr);
|
||||
|
||||
ReadOptions selectedOption() const;
|
||||
|
||||
@@ -38,6 +38,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RifWellPathFormationsImporter.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyTableReader.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyReader.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifStimPlanXmlReader.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifSummaryCaseRestartSelector.h
|
||||
|
||||
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
||||
#${CMAKE_CURRENT_LIST_DIR}/RifHdf5Reader.h
|
||||
@@ -80,6 +81,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RifWellPathFormationsImporter.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyTableReader.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifElementPropertyReader.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifStimPlanXmlReader.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RifSummaryCaseRestartSelector.cpp
|
||||
|
||||
# HDF5 file reader is directly included in ResInsight main CmakeList.txt
|
||||
#${CMAKE_CURRENT_LIST_DIR}/RifHdf5Reader.cpp
|
||||
|
||||
131
ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp
Normal file
131
ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp
Normal file
@@ -0,0 +1,131 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RifSummaryCaseRestartSelector.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RicSummaryCaseRestartDialog.h"
|
||||
|
||||
#include <string>
|
||||
#include <assert.h>
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QDir>
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifSummaryCaseRestartSelector::RifSummaryCaseRestartSelector()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifSummaryCaseRestartSelector::~RifSummaryCaseRestartSelector()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImport(const QStringList& selectedFiles)
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
RiaPreferences* prefs = app->preferences();
|
||||
|
||||
std::vector<RifSummaryCaseFileInfo> fileInfos;
|
||||
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||
{
|
||||
bool enableApplyToAllField = selectedFiles.size() > 1;
|
||||
fileInfos = getFilesToImportByAskingUser(selectedFiles, enableApplyToAllField);
|
||||
}
|
||||
else
|
||||
{
|
||||
fileInfos = getFilesToImportUsingPrefs(selectedFiles, prefs->summaryRestartFilesImportMode);
|
||||
}
|
||||
|
||||
return fileInfos;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialFiles,
|
||||
bool enableApplyToAllField)
|
||||
{
|
||||
std::set<RifSummaryCaseFileInfo> filesToImport;
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
for (const QString& file : initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(file, enableApplyToAllField, &lastResult);
|
||||
if (result.ok)
|
||||
{
|
||||
for (const QString& file : result.files)
|
||||
{
|
||||
RifSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL);
|
||||
if (filesToImport.count(fi) == 0)
|
||||
{
|
||||
filesToImport.insert(fi);
|
||||
}
|
||||
}
|
||||
}
|
||||
lastResult = result;
|
||||
}
|
||||
return std::vector<RifSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const QStringList& initialFiles,
|
||||
RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode)
|
||||
{
|
||||
std::set<RifSummaryCaseFileInfo> filesToImport;
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
for (const QString& file : initialFiles)
|
||||
{
|
||||
if (summaryRestartMode == RiaPreferences::IMPORT)
|
||||
{
|
||||
filesToImport.insert(RifSummaryCaseFileInfo(file, true));
|
||||
}
|
||||
else if (summaryRestartMode == RiaPreferences::NOT_IMPORT)
|
||||
{
|
||||
filesToImport.insert(RifSummaryCaseFileInfo(file, false));
|
||||
}
|
||||
else if (summaryRestartMode == RiaPreferences::SEPARATE_CASES)
|
||||
{
|
||||
filesToImport.insert(RifSummaryCaseFileInfo(file, false));
|
||||
|
||||
RifReaderEclipseSummary reader;
|
||||
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file);
|
||||
for (const auto& fi : restartFileInfos)
|
||||
filesToImport.insert(RifSummaryCaseFileInfo(fi.fileName, false));
|
||||
}
|
||||
}
|
||||
return std::vector<RifSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RiaPreferences.h"
|
||||
#include <QString>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
class QStringList;
|
||||
class RifSummaryCaseFileInfo;
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//
|
||||
//==================================================================================================
|
||||
class RifSummaryCaseRestartSelector
|
||||
{
|
||||
public:
|
||||
RifSummaryCaseRestartSelector();
|
||||
~RifSummaryCaseRestartSelector();
|
||||
|
||||
std::vector<RifSummaryCaseFileInfo> getFilesToImport(const QStringList& selectedFiles);
|
||||
|
||||
private:
|
||||
std::vector<RifSummaryCaseFileInfo> getFilesToImportByAskingUser(const QStringList& initialFiles,
|
||||
bool enableApplyToAllField);
|
||||
std::vector<RifSummaryCaseFileInfo> getFilesToImportUsingPrefs(const QStringList& initialFiles,
|
||||
RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode);
|
||||
|
||||
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RifSummaryCaseFileInfo
|
||||
{
|
||||
public:
|
||||
RifSummaryCaseFileInfo(const QString _fileName, bool _includeRestartFiles) :
|
||||
fileName(_fileName), includeRestartFiles(_includeRestartFiles) {}
|
||||
|
||||
QString fileName;
|
||||
bool includeRestartFiles;
|
||||
|
||||
bool operator<(const RifSummaryCaseFileInfo& other) const { return fileName < other.fileName; }
|
||||
bool operator==(const RifSummaryCaseFileInfo& other) const { return fileName == other.fileName; }
|
||||
};
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
#include "RifSummaryCaseRestartSelector.h"
|
||||
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimFileSummaryCase.h"
|
||||
@@ -267,8 +268,18 @@ void RimSummaryCaseMainCollection::loadAllSummaryCaseData()
|
||||
RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase)
|
||||
{
|
||||
QString gridFileName = eclResCase->gridFileName();
|
||||
if(RifEclipseSummaryTools::hasSummaryFiles(QDir::toNativeSeparators(gridFileName)))
|
||||
QString summaryHeaderFile;
|
||||
bool formatted;
|
||||
|
||||
RifEclipseSummaryTools::findSummaryHeaderFile(QDir::toNativeSeparators(gridFileName), &summaryHeaderFile, &formatted);
|
||||
|
||||
if(!summaryHeaderFile.isEmpty())
|
||||
{
|
||||
// Activate when after discussing how grid case and summary case(s) are going to be related
|
||||
//
|
||||
//RifSummaryCaseRestartSelector fileSelector;
|
||||
//std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(QStringList({ summaryHeaderFile }));
|
||||
|
||||
RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
|
||||
this->m_cases.push_back(newSumCase);
|
||||
newSumCase->setAssociatedEclipseCase(eclResCase);
|
||||
@@ -282,17 +293,26 @@ RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromEclipse
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromFileName(const QString& fileName, bool includeRestartFiles)
|
||||
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames)
|
||||
{
|
||||
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
|
||||
std::vector<RimSummaryCase*> sumCases;
|
||||
RifSummaryCaseRestartSelector fileSelector;
|
||||
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(inputFileNames);
|
||||
|
||||
this->m_cases.push_back(newSumCase);
|
||||
newSumCase->setIncludeRestartFiles(includeRestartFiles);
|
||||
newSumCase->setSummaryHeaderFileName(fileName);
|
||||
newSumCase->createSummaryReaderInterface();
|
||||
newSumCase->updateOptionSensitivity();
|
||||
for (const RifSummaryCaseFileInfo& fileInfo : importFileInfos)
|
||||
{
|
||||
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
|
||||
|
||||
return newSumCase;
|
||||
this->m_cases.push_back(newSumCase);
|
||||
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
|
||||
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
|
||||
newSumCase->createSummaryReaderInterface();
|
||||
newSumCase->updateOptionSensitivity();
|
||||
|
||||
sumCases.push_back(newSumCase);
|
||||
}
|
||||
|
||||
return sumCases;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -45,7 +45,7 @@ public:
|
||||
|
||||
void createSummaryCasesFromRelevantEclipseResultCases();
|
||||
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
|
||||
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName, bool includeRestartFiles);
|
||||
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames);
|
||||
|
||||
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
|
||||
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;
|
||||
|
||||
Reference in New Issue
Block a user