mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2555 Add preferences for summary restart file import
This commit is contained in:
parent
2a84cb6ddf
commit
2f11395525
@ -27,6 +27,18 @@
|
|||||||
#include "cafPdmUiFieldHandle.h"
|
#include "cafPdmUiFieldHandle.h"
|
||||||
#include "cafPdmUiFilePathEditor.h"
|
#include "cafPdmUiFilePathEditor.h"
|
||||||
|
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void RiaPreferences::SummaryRestartFilesImportModeType::setUp()
|
||||||
|
{
|
||||||
|
addItem(RiaPreferences::ASK_USER, "ASK_USER", "Ask user");
|
||||||
|
addItem(RiaPreferences::IMPORT, "IMPORT", "Always import");
|
||||||
|
addItem(RiaPreferences::NOT_IMPORT, "NOT_IMPORT", "Never import");
|
||||||
|
addItem(RiaPreferences::SEPARATE_CASES, "SEPARATE_CASES", "Import as separate summary cases");
|
||||||
|
setDefault(RiaPreferences::ASK_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RiaPreferences, "RiaPreferences");
|
CAF_PDM_SOURCE_INIT(RiaPreferences, "RiaPreferences");
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -88,6 +100,9 @@ RiaPreferences::RiaPreferences(void)
|
|||||||
CAF_PDM_InitField(&loadAndShowSoil, "loadAndShowSoil", true, "Load and Show SOIL", "", "", "");
|
CAF_PDM_InitField(&loadAndShowSoil, "loadAndShowSoil", true, "Load and Show SOIL", "", "", "");
|
||||||
loadAndShowSoil.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
loadAndShowSoil.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault(&summaryRestartFilesImportMode, "summaryRestartFilesImportMode", "Import summary restart files", "", "", "");
|
||||||
|
//loadAndShowSoil.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_readerSettings, "readerSettings", "Reader Settings", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_readerSettings, "readerSettings", "Reader Settings", "", "", "");
|
||||||
m_readerSettings = new RifReaderSettings;
|
m_readerSettings = new RifReaderSettings;
|
||||||
|
|
||||||
@ -175,6 +190,9 @@ void RiaPreferences::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering&
|
|||||||
newCaseBehaviourGroup->add(&loadAndShowSoil);
|
newCaseBehaviourGroup->add(&loadAndShowSoil);
|
||||||
|
|
||||||
m_readerSettings->defineUiOrdering(uiConfigName, *newCaseBehaviourGroup);
|
m_readerSettings->defineUiOrdering(uiConfigName, *newCaseBehaviourGroup);
|
||||||
|
|
||||||
|
caf::PdmUiGroup* restartBehaviourGroup = uiOrdering.addNewGroup("Summary Restart Files");
|
||||||
|
restartBehaviourGroup->add(&summaryRestartFilesImportMode);
|
||||||
}
|
}
|
||||||
else if (uiConfigName == m_tabNames[2])
|
else if (uiConfigName == m_tabNames[2])
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,9 @@ class RiaPreferences : public caf::PdmObject
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum SummaryRestartFilesImportMode { ASK_USER, IMPORT, NOT_IMPORT, SEPARATE_CASES };
|
||||||
|
typedef caf::AppEnum<SummaryRestartFilesImportMode> SummaryRestartFilesImportModeType;
|
||||||
|
|
||||||
RiaPreferences(void);
|
RiaPreferences(void);
|
||||||
virtual ~RiaPreferences(void);
|
virtual ~RiaPreferences(void);
|
||||||
|
|
||||||
@ -77,6 +80,8 @@ public: // Pdm Fields
|
|||||||
caf::PdmField<bool> autocomputeDepthRelatedProperties;
|
caf::PdmField<bool> autocomputeDepthRelatedProperties;
|
||||||
caf::PdmField<bool> loadAndShowSoil;
|
caf::PdmField<bool> loadAndShowSoil;
|
||||||
|
|
||||||
|
caf::PdmField<SummaryRestartFilesImportModeType> summaryRestartFilesImportMode;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
|
||||||
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
|
||||||
|
@ -23,6 +23,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaTextStringTools.h
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaRegressionTestRunner.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaRegressionTestRunner.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaExtractionTools.h
|
${CMAKE_CURRENT_LIST_DIR}/RiaExtractionTools.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaFilePathTools.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set (SOURCE_GROUP_SOURCE_FILES
|
set (SOURCE_GROUP_SOURCE_FILES
|
||||||
@ -49,6 +50,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaTextStringTools.cpp
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaTextFileCompare.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaRegressionTestRunner.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaRegressionTestRunner.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RiaExtractionTools.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RiaExtractionTools.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RiaFilePathTools.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND CODE_HEADER_FILES
|
list(APPEND CODE_HEADER_FILES
|
||||||
|
88
ApplicationCode/Application/Tools/RiaFilePathTools.cpp
Normal file
88
ApplicationCode/Application/Tools/RiaFilePathTools.cpp
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2011- Statoil ASA
|
||||||
|
// Copyright (C) 2013- Ceetron Solutions AS
|
||||||
|
// Copyright (C) 2011-2012 Ceetron AS
|
||||||
|
//
|
||||||
|
// 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 "RiaFilePathTools.h"
|
||||||
|
#include <QDir>
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
/// Internal variables
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
static QString SEPARATOR = "/";
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaFilePathTools::toInternalSeparator(const QString& path)
|
||||||
|
{
|
||||||
|
QString currNativeSep = QDir::separator();
|
||||||
|
|
||||||
|
if (currNativeSep == "/")
|
||||||
|
{
|
||||||
|
// On Linux like system -> Do not convert separators
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// On other systems (i.e. Windows) -> Convert to internal separator (/)
|
||||||
|
QString output = path;
|
||||||
|
return output.replace(QString("\\"), SEPARATOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString& RiaFilePathTools::appendSeparatorIfNo(QString& path)
|
||||||
|
{
|
||||||
|
if (!path.endsWith(SEPARATOR))
|
||||||
|
{
|
||||||
|
path.append(SEPARATOR);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString RiaFilePathTools::relativePath(const QString& rootDir, const QString& dir)
|
||||||
|
{
|
||||||
|
if (dir.startsWith(rootDir))
|
||||||
|
{
|
||||||
|
QString relPath = dir;
|
||||||
|
relPath.remove(0, rootDir.size());
|
||||||
|
|
||||||
|
if (relPath.startsWith(SEPARATOR)) relPath.remove(0, 1);
|
||||||
|
return appendSeparatorIfNo(relPath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
bool RiaFilePathTools::equalPaths(const QString& path1, const QString& path2)
|
||||||
|
{
|
||||||
|
QString p1 = path1;
|
||||||
|
QString p2 = path2;
|
||||||
|
appendSeparatorIfNo(p1);
|
||||||
|
appendSeparatorIfNo(p2);
|
||||||
|
return p1 == p2;
|
||||||
|
}
|
39
ApplicationCode/Application/Tools/RiaFilePathTools.h
Normal file
39
ApplicationCode/Application/Tools/RiaFilePathTools.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2011- Statoil ASA
|
||||||
|
// Copyright (C) 2013- Ceetron Solutions AS
|
||||||
|
// Copyright (C) 2011-2012 Ceetron AS
|
||||||
|
//
|
||||||
|
// 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 <QString>
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
//==================================================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//==================================================================================================
|
||||||
|
class RiaFilePathTools
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static QString toInternalSeparator(const QString& path);
|
||||||
|
static QString& appendSeparatorIfNo(QString& path);
|
||||||
|
static QString relativePath(const QString& rootDir, const QString& dir);
|
||||||
|
static bool equalPaths(const QString& path1, const QString& path2);
|
||||||
|
};
|
@ -22,6 +22,7 @@
|
|||||||
#include "ExportCommands/RicSnapshotFilenameGenerator.h"
|
#include "ExportCommands/RicSnapshotFilenameGenerator.h"
|
||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
#include "RiaFilePathTools.h"
|
||||||
|
|
||||||
#include "RimEclipseView.h"
|
#include "RimEclipseView.h"
|
||||||
#include "Rim3dOverlayInfoConfig.h"
|
#include "Rim3dOverlayInfoConfig.h"
|
||||||
@ -66,11 +67,7 @@ static QString SEPARATOR = "/";
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/// Internal functions
|
/// Internal functions
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
static QString toInternalSeparator(const QString& path);
|
|
||||||
static QString& appendSeparatorIfNo(QString& path);
|
|
||||||
static QStringList prefixStrings(const QStringList& strings, const QString& prefix);
|
static QStringList prefixStrings(const QStringList& strings, const QString& prefix);
|
||||||
static QString relativePath(const QString& rootDir, const QString& dir);
|
|
||||||
static bool equalPaths(const QString& path1, const QString& path2);
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -203,8 +200,8 @@ QStringList RicFileHierarchyDialog::files() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
QString RicFileHierarchyDialog::rootDir() const
|
QString RicFileHierarchyDialog::rootDir() const
|
||||||
{
|
{
|
||||||
QString rootDir = toInternalSeparator(m_rootDir->text());
|
QString rootDir = RiaFilePathTools::toInternalSeparator(m_rootDir->text());
|
||||||
return appendSeparatorIfNo(rootDir);
|
return RiaFilePathTools::appendSeparatorIfNo(rootDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -212,7 +209,7 @@ QString RicFileHierarchyDialog::rootDir() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
QString RicFileHierarchyDialog::pathFilter() const
|
QString RicFileHierarchyDialog::pathFilter() const
|
||||||
{
|
{
|
||||||
return toInternalSeparator(m_pathFilter->text());
|
return RiaFilePathTools::toInternalSeparator(m_pathFilter->text());
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -349,7 +346,7 @@ QStringList RicFileHierarchyDialog::buildDirectoryListRecursive(const QString& c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString currRelPath = relativePath(rootDir(), currentDir);
|
QString currRelPath = RiaFilePathTools::relativePath(rootDir(), currentDir);
|
||||||
if (pathFilterMatch(currPathFilter, currRelPath))
|
if (pathFilterMatch(currPathFilter, currRelPath))
|
||||||
{
|
{
|
||||||
allDirs.push_back(currentDir);
|
allDirs.push_back(currentDir);
|
||||||
@ -437,7 +434,7 @@ void RicFileHierarchyDialog::updateEffectiveFilter()
|
|||||||
.arg(m_fileFilter->text())
|
.arg(m_fileFilter->text())
|
||||||
.arg(m_fileExtension->text());
|
.arg(m_fileExtension->text());
|
||||||
|
|
||||||
QString internalFilter(toInternalSeparator(effFilter));
|
QString internalFilter(RiaFilePathTools::toInternalSeparator(effFilter));
|
||||||
|
|
||||||
// Remove duplicate separators
|
// Remove duplicate separators
|
||||||
int len;
|
int len;
|
||||||
@ -619,36 +616,6 @@ void RicFileHierarchyDialog::slotBrowseButtonClicked()
|
|||||||
/// Internal functions
|
/// Internal functions
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString toInternalSeparator(const QString& path)
|
|
||||||
{
|
|
||||||
QString currNativeSep = QDir::separator();
|
|
||||||
|
|
||||||
if (currNativeSep == "/")
|
|
||||||
{
|
|
||||||
// On Linux like system -> Do not convert separators
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
// On other systems (i.e. Windows) -> Convert to internal separator (/)
|
|
||||||
QString output = path;
|
|
||||||
return output.replace(QString("\\"), SEPARATOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString& appendSeparatorIfNo(QString& path)
|
|
||||||
{
|
|
||||||
if (!path.endsWith(SEPARATOR))
|
|
||||||
{
|
|
||||||
path.append(SEPARATOR);
|
|
||||||
}
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -668,34 +635,3 @@ QStringList prefixStrings(const QStringList& strings, const QString& prefix)
|
|||||||
}
|
}
|
||||||
return prefixedStrings;
|
return prefixedStrings;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString relativePath(const QString& rootDir, const QString& dir)
|
|
||||||
{
|
|
||||||
if (dir.startsWith(rootDir))
|
|
||||||
{
|
|
||||||
QString relPath = dir;
|
|
||||||
relPath.remove(0, rootDir.size());
|
|
||||||
|
|
||||||
if (relPath.startsWith(SEPARATOR)) relPath.remove(0, 1);
|
|
||||||
return appendSeparatorIfNo(relPath);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return dir;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
bool equalPaths(const QString& path1, const QString& path2)
|
|
||||||
{
|
|
||||||
QString p1 = path1;
|
|
||||||
QString p2 = path2;
|
|
||||||
appendSeparatorIfNo(p1);
|
|
||||||
appendSeparatorIfNo(p2);
|
|
||||||
return p1 == p2;
|
|
||||||
}
|
|
||||||
|
@ -53,6 +53,7 @@ bool RicImportSummaryCaseFeature::isCommandEnabled()
|
|||||||
void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked)
|
void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked)
|
||||||
{
|
{
|
||||||
RiaApplication* app = RiaApplication::instance();
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
RiaPreferences* prefs = app->preferences();
|
||||||
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
|
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
|
||||||
QStringList fileNames = QFileDialog::getOpenFileNames(nullptr, "Import Summary Case", defaultDir, "Eclipse Summary File (*.SMSPEC);;All Files (*.*)");
|
QStringList fileNames = QFileDialog::getOpenFileNames(nullptr, "Import Summary Case", defaultDir, "Eclipse Summary File (*.SMSPEC);;All Files (*.*)");
|
||||||
|
|
||||||
@ -63,7 +64,15 @@ void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked)
|
|||||||
|
|
||||||
if (fileNames.isEmpty()) return;
|
if (fileNames.isEmpty()) return;
|
||||||
|
|
||||||
std::vector<RicSummaryCaseFileInfo> fileInfos = RicImportSummaryCasesFeature::getFilesToImportWithDialog(fileNames, true);
|
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||||
|
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||||
|
{
|
||||||
|
fileInfos = RicImportSummaryCasesFeature::getFilesToImportWithDialog(fileNames, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileInfos = RicImportSummaryCasesFeature::getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||||
|
}
|
||||||
|
|
||||||
RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileInfo(fileInfos);
|
RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ bool RicImportSummaryCasesFeature::isCommandEnabled()
|
|||||||
void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
|
void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
|
||||||
{
|
{
|
||||||
RiaApplication* app = RiaApplication::instance();
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
RiaPreferences* prefs = app->preferences();
|
||||||
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
|
QString defaultDir = app->lastUsedDialogDirectory("INPUT_FILES");
|
||||||
|
|
||||||
RicFileHierarchyDialogResult result = RicFileHierarchyDialog::getOpenFileNames(nullptr, "Import Summary Cases", defaultDir, m_pathFilter, m_fileNameFilter, QStringList(".SMSPEC"));
|
RicFileHierarchyDialogResult result = RicFileHierarchyDialog::getOpenFileNames(nullptr, "Import Summary Cases", defaultDir, m_pathFilter, m_fileNameFilter, QStringList(".SMSPEC"));
|
||||||
@ -72,10 +73,20 @@ void RicImportSummaryCasesFeature::onActionTriggered(bool isChecked)
|
|||||||
QStringList fileNames = result.files;
|
QStringList fileNames = result.files;
|
||||||
if (fileNames.isEmpty()) return;
|
if (fileNames.isEmpty()) return;
|
||||||
|
|
||||||
std::vector<RicSummaryCaseFileInfo> fileInfos = getFilesToImportWithDialog(fileNames, true);
|
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||||
|
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||||
|
{
|
||||||
|
fileInfos = getFilesToImportWithDialog(fileNames, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileInfos = getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||||
|
}
|
||||||
|
|
||||||
createAndAddSummaryCaseFromFileInfo(fileInfos);
|
createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||||
|
|
||||||
|
if (fileInfos.size() > 0) RiaApplication::instance()->addToRecentFiles(fileInfos.front().fileName);
|
||||||
|
|
||||||
std::vector<RimCase*> cases;
|
std::vector<RimCase*> cases;
|
||||||
app->project()->allCases(cases);
|
app->project()->allCases(cases);
|
||||||
|
|
||||||
@ -111,8 +122,6 @@ std::vector<RicSummaryCaseFileInfo> RicImportSummaryCasesFeature::getFilesToImpo
|
|||||||
|
|
||||||
if (result.ok)
|
if (result.ok)
|
||||||
{
|
{
|
||||||
if(result.files.size() > 0) RiaApplication::instance()->addToRecentFiles(result.files.front());
|
|
||||||
|
|
||||||
for (const QString& file : result.files)
|
for (const QString& file : result.files)
|
||||||
{
|
{
|
||||||
RicSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL);
|
RicSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL);
|
||||||
@ -127,6 +136,38 @@ std::vector<RicSummaryCaseFileInfo> RicImportSummaryCasesFeature::getFilesToImpo
|
|||||||
return std::vector<RicSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -149,8 +190,21 @@ bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileInfo(const std
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileWithDialog(const QString& fileName)
|
bool RicImportSummaryCasesFeature::createAndAddSummaryCaseFromFileWithDialog(const QString& fileName)
|
||||||
{
|
{
|
||||||
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
RiaPreferences* prefs = app->preferences();
|
||||||
|
|
||||||
QStringList fileNames({ fileName });
|
QStringList fileNames({ fileName });
|
||||||
std::vector<RicSummaryCaseFileInfo> fileInfos = getFilesToImportWithDialog(fileNames, false);
|
std::vector<RicSummaryCaseFileInfo> fileInfos;
|
||||||
|
if (prefs->summaryRestartFilesImportMode == RiaPreferences::ASK_USER)
|
||||||
|
{
|
||||||
|
fileInfos = getFilesToImportWithDialog(fileNames, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fileInfos = getFilesToImportFromPrefs(fileNames, prefs->summaryRestartFilesImportMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool res = createAndAddSummaryCaseFromFileInfo(fileInfos);
|
bool res = createAndAddSummaryCaseFromFileInfo(fileInfos);
|
||||||
RiaApplication::instance()->addToRecentFiles(fileName);
|
RiaApplication::instance()->addToRecentFiles(fileName);
|
||||||
return res;
|
return res;
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "RiaPreferences.h"
|
||||||
|
|
||||||
#include "cafCmdFeature.h"
|
#include "cafCmdFeature.h"
|
||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@ -54,6 +56,9 @@ public:
|
|||||||
static std::vector<RicSummaryCaseFileInfo> getFilesToImportWithDialog(const QStringList& initialFiles,
|
static std::vector<RicSummaryCaseFileInfo> getFilesToImportWithDialog(const QStringList& initialFiles,
|
||||||
bool enableApplyToAllField);
|
bool enableApplyToAllField);
|
||||||
|
|
||||||
|
static std::vector<RicSummaryCaseFileInfo> getFilesToImportFromPrefs(const QStringList& initialFiles,
|
||||||
|
RiaPreferences::SummaryRestartFilesImportModeType summaryRestartMode);
|
||||||
|
|
||||||
static bool createAndAddSummaryCaseFromFileInfo(const std::vector<RicSummaryCaseFileInfo>& fileInfos);
|
static bool createAndAddSummaryCaseFromFileInfo(const std::vector<RicSummaryCaseFileInfo>& fileInfos);
|
||||||
static bool createAndAddSummaryCaseFromFileWithDialog(const QString& fileName);
|
static bool createAndAddSummaryCaseFromFileWithDialog(const QString& fileName);
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "ExportCommands/RicSnapshotFilenameGenerator.h"
|
#include "ExportCommands/RicSnapshotFilenameGenerator.h"
|
||||||
|
|
||||||
#include "RiaApplication.h"
|
#include "RiaApplication.h"
|
||||||
|
#include "RiaFilePathTools.h"
|
||||||
|
|
||||||
#include "RifReaderEclipseSummary.h"
|
#include "RifReaderEclipseSummary.h"
|
||||||
|
|
||||||
@ -57,15 +58,6 @@
|
|||||||
#define DEFAULT_DIALOG_WIDTH 550
|
#define DEFAULT_DIALOG_WIDTH 550
|
||||||
#define DEFAULT_DIALOG_INIT_HEIGHT 150
|
#define DEFAULT_DIALOG_INIT_HEIGHT 150
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
/// Internal variables
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
static QString SEPARATOR = "/";
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
/// Internal functions
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
static QString toInternalSeparator(const QString& path);
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
@ -164,12 +156,12 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
return RicSummaryCaseRestartDialogResult(false, READ_SINGLE, QStringList(), false);
|
return RicSummaryCaseRestartDialogResult(false, READ_SINGLE, QStringList(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList files({ toInternalSeparator(summaryHeaderFile) });
|
QStringList files({ RiaFilePathTools::toInternalSeparator(summaryHeaderFile) });
|
||||||
if (dialog.selectedOption() == SEPARATE_CASES)
|
if (dialog.selectedOption() == SEPARATE_CASES)
|
||||||
{
|
{
|
||||||
for (const auto& fileInfo : fileInfos)
|
for (const auto& fileInfo : fileInfos)
|
||||||
{
|
{
|
||||||
files.push_back(toInternalSeparator(fileInfo.fileName));
|
files.push_back(RiaFilePathTools::toInternalSeparator(fileInfo.fileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return RicSummaryCaseRestartDialogResult(true, dialog.selectedOption(), files, dialog.applyToAllSelected());
|
return RicSummaryCaseRestartDialogResult(true, dialog.selectedOption(), files, dialog.applyToAllSelected());
|
||||||
@ -244,20 +236,3 @@ void RicSummaryCaseRestartDialog::slotDialogCancelClicked()
|
|||||||
/// Internal functions
|
/// Internal functions
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString toInternalSeparator(const QString& path)
|
|
||||||
{
|
|
||||||
QString currNativeSep = QDir::separator();
|
|
||||||
|
|
||||||
if (currNativeSep == "/")
|
|
||||||
{
|
|
||||||
// On Linux like system -> Do not convert separators
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
// On other systems (i.e. Windows) -> Convert to internal separator (/)
|
|
||||||
QString output = path;
|
|
||||||
return output.replace(QString("\\"), SEPARATOR);
|
|
||||||
}
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "RifReaderEclipseSummary.h"
|
#include "RifReaderEclipseSummary.h"
|
||||||
#include "RiaStringEncodingTools.h"
|
#include "RiaStringEncodingTools.h"
|
||||||
|
#include "RiaFilePathTools.h"
|
||||||
#include "RifReaderEclipseOutput.h"
|
#include "RifReaderEclipseOutput.h"
|
||||||
#include "RifEclipseSummaryTools.h"
|
#include "RifEclipseSummaryTools.h"
|
||||||
|
|
||||||
@ -416,7 +417,7 @@ RifRestartFileInfo RifReaderEclipseSummary::getRestartFile(const QString& header
|
|||||||
QString restartBase = QDir(restartCase).dirName();
|
QString restartBase = QDir(restartCase).dirName();
|
||||||
|
|
||||||
char* smspec_header = ecl_util_alloc_exfilename(path.toStdString().data(), restartBase.toStdString().data(), ECL_SUMMARY_HEADER_FILE, false /*unformatted*/, 0);
|
char* smspec_header = ecl_util_alloc_exfilename(path.toStdString().data(), restartBase.toStdString().data(), ECL_SUMMARY_HEADER_FILE, false /*unformatted*/, 0);
|
||||||
restartFile.fileName = QDir::toNativeSeparators(RiaStringEncodingTools::fromNativeEncoded(smspec_header));
|
restartFile.fileName = RiaFilePathTools::toInternalSeparator(RiaStringEncodingTools::fromNativeEncoded(smspec_header));
|
||||||
util_safe_free(smspec_header);
|
util_safe_free(smspec_header);
|
||||||
|
|
||||||
ecl_sum = openEclSum(headerFileName, false);
|
ecl_sum = openEclSum(headerFileName, false);
|
||||||
|
Loading…
Reference in New Issue
Block a user