mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1369 Made Grid-Summary cases independent of the Grid Case, if the grid case is closed. Reconnect if the grid-cases is opened again.
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "RigSummaryCaseData.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
@@ -40,13 +41,14 @@ RimGridSummaryCase::RimGridSummaryCase()
|
||||
CAF_PDM_InitFieldNoDefault(&m_eclipseCase, "Associated3DCase", "Eclipse Case", "", "", "");
|
||||
m_eclipseCase.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_cachedCaseName, "CachedCasename", "Case Name", "", "", "");
|
||||
m_cachedCaseName.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_eclipseGridFileName, "Associated3DCaseGridFileName", "Grid File Name", "", "", "");
|
||||
m_eclipseGridFileName.registerGetMethod(this, &RimGridSummaryCase::eclipseGridFileName);
|
||||
m_eclipseGridFileName.uiCapability()->setUiReadOnly(true);
|
||||
m_eclipseGridFileName.xmlCapability()->setIOWritable(false);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_eclipseSummaryFileName, "SummaryFileName", "Summary File Name", "", "", "");
|
||||
m_eclipseSummaryFileName.registerGetMethod(this, &RimGridSummaryCase::summaryHeaderFilename);
|
||||
m_eclipseSummaryFileName.uiCapability()->setUiReadOnly(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -57,12 +59,33 @@ RimGridSummaryCase::~RimGridSummaryCase()
|
||||
|
||||
}
|
||||
|
||||
QString summaryHeaderFilenameFromEclipseCase(RimEclipseCase* eclCase)
|
||||
{
|
||||
if (!eclCase) return QString();
|
||||
|
||||
QFileInfo gridFileInfo(eclCase->gridFileName());
|
||||
|
||||
QString possibleSumHeaderFileName = gridFileInfo.path() +"/"+ gridFileInfo.completeBaseName() + ".SMSPEC";
|
||||
|
||||
return possibleSumHeaderFileName;
|
||||
}
|
||||
|
||||
QString caseNameFromEclipseCase(RimEclipseCase* eclCase)
|
||||
{
|
||||
if (!eclCase) return QString();
|
||||
|
||||
return eclCase->caseUserDescription();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridSummaryCase::setAssociatedEclipseCase(RimEclipseCase* eclipseCase)
|
||||
{
|
||||
m_eclipseCase = eclipseCase;
|
||||
m_summaryHeaderFilename = summaryHeaderFilenameFromEclipseCase(eclipseCase);
|
||||
m_cachedCaseName = caseNameFromEclipseCase(eclipseCase);
|
||||
|
||||
this->updateAutoShortName();
|
||||
this->updateTreeItemName();
|
||||
}
|
||||
@@ -72,6 +95,32 @@ void RimGridSummaryCase::setAssociatedEclipseCase(RimEclipseCase* eclipseCase)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseCase* RimGridSummaryCase::associatedEclipseCase()
|
||||
{
|
||||
if (!m_eclipseCase())
|
||||
{
|
||||
// Find a possible associated eclipse case
|
||||
|
||||
RimProject* project;
|
||||
firstAncestorOrThisOfTypeAsserted(project);
|
||||
std::vector<RimCase*> allCases;
|
||||
project->allCases(allCases);
|
||||
for ( RimCase* someCase: allCases )
|
||||
{
|
||||
auto eclCase = dynamic_cast<RimEclipseCase*>(someCase);
|
||||
if ( eclCase )
|
||||
{
|
||||
QString sumHeaderFileName = summaryHeaderFilenameFromEclipseCase(eclCase);
|
||||
if ( sumHeaderFileName == m_summaryHeaderFilename )
|
||||
{
|
||||
m_eclipseCase = eclCase;
|
||||
this->updateAutoShortName();
|
||||
this->updateTreeItemName();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m_eclipseCase();
|
||||
}
|
||||
|
||||
@@ -80,24 +129,19 @@ RimEclipseCase* RimGridSummaryCase::associatedEclipseCase()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimGridSummaryCase::summaryHeaderFilename() const
|
||||
{
|
||||
if (!m_eclipseCase()) return QString();
|
||||
if (!m_eclipseCase()) return m_summaryHeaderFilename();
|
||||
|
||||
QFileInfo gridFileInfo(m_eclipseCase()->gridFileName());
|
||||
|
||||
QString possibleSumHeaderFileName = gridFileInfo.path() +"/"+ gridFileInfo.completeBaseName() + ".SMSPEC";
|
||||
|
||||
return possibleSumHeaderFileName;
|
||||
return summaryHeaderFilenameFromEclipseCase(m_eclipseCase());
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimGridSummaryCase::caseName() const
|
||||
QString RimGridSummaryCase::caseName()
|
||||
{
|
||||
if (!m_eclipseCase()) return QString();
|
||||
if (m_eclipseCase()) m_cachedCaseName = caseNameFromEclipseCase(m_eclipseCase());
|
||||
|
||||
return m_eclipseCase()->caseUserDescription();
|
||||
return m_cachedCaseName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user