///////////////////////////////////////////////////////////////////////////////// // // 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RifSummaryCaseRestartSelector.h" #include "RiaApplication.h" #include "RiaPreferences.h" #include "RicSummaryCaseRestartDialog.h" #include #include #include #include #include #include //-------------------------------------------------------------------------------------------------- /// Internal function //-------------------------------------------------------------------------------------------------- template bool vectorContains(const std::vector& vector, T item) { for (const auto& i : vector) { if (i == item) return true; } return false; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RifSummaryCaseRestartSelector::RifSummaryCaseRestartSelector() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RifSummaryCaseRestartSelector::~RifSummaryCaseRestartSelector() { } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RifSummaryCaseRestartSelector::getFilesToImport(const QStringList& selectedFiles) { RiaApplication* app = RiaApplication::instance(); RiaPreferences* prefs = app->preferences(); std::vector 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 RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialFiles, bool enableApplyToAllField) { std::vector 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 (!vectorContains(filesToImport, fi)) { filesToImport.push_back(fi); } } lastResult = result; } } return std::vector(filesToImport.begin(), filesToImport.end()); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const QStringList& initialFiles, RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode) { std::set 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 restartFileInfos = reader.getRestartFiles(file); for (const auto& fi : restartFileInfos) filesToImport.insert(RifSummaryCaseFileInfo(fi.fileName, false)); } } return std::vector(filesToImport.begin(), filesToImport.end()); }