mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user