#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:
Jacob Støren
2017-04-04 12:14:13 +02:00
parent 8af7702904
commit 0ec1d44125
6 changed files with 68 additions and 21 deletions

View File

@@ -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;
}
//--------------------------------------------------------------------------------------------------