#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

@ -32,8 +32,7 @@ CAF_PDM_SOURCE_INIT(RimFileSummaryCase,"FileSummaryCase");
//--------------------------------------------------------------------------------------------------
RimFileSummaryCase::RimFileSummaryCase()
{
CAF_PDM_InitFieldNoDefault(&m_summaryHeaderFilename, "SummaryHeaderFilename", "Summary Header File", "", "", "");
m_summaryHeaderFilename.uiCapability()->setUiReadOnly(true);
}
//--------------------------------------------------------------------------------------------------
@ -66,7 +65,7 @@ QString RimFileSummaryCase::summaryHeaderFilename() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFileSummaryCase::caseName() const
QString RimFileSummaryCase::caseName()
{
QFileInfo caseFileName(this->summaryHeaderFilename());

View File

@ -34,10 +34,9 @@ public:
void setSummaryHeaderFilename(const QString& fileName);
virtual QString summaryHeaderFilename() const override;
virtual QString caseName() const override;
virtual QString caseName() override;
private:
caf::PdmField<QString> m_summaryHeaderFilename;
};

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

View File

@ -40,15 +40,16 @@ public:
RimEclipseCase* associatedEclipseCase();
virtual QString summaryHeaderFilename() const override;
virtual QString caseName() const override;
virtual QString caseName() override;
private:
QString eclipseGridFileName() const;
private:
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
mutable caf::PdmField<QString> m_cachedCaseName;
caf::PdmProxyValueField<QString> m_eclipseGridFileName;
caf::PdmProxyValueField<QString> m_eclipseSummaryFileName;
//caf::PdmProxyValueField<QString> m_eclipseSummaryFileName;
};

View File

@ -38,6 +38,9 @@ RimSummaryCase::RimSummaryCase()
CAF_PDM_InitField(&m_shortName, "ShortName", QString("Display Name"), "Display Name", "", "", "");
CAF_PDM_InitField(&m_useAutoShortName, "AutoShortyName", false, "Use Auto Display Name", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_summaryHeaderFilename, "SummaryHeaderFilename", "Summary Header File", "", "", "");
m_summaryHeaderFilename.uiCapability()->setUiReadOnly(true);
}
//--------------------------------------------------------------------------------------------------

View File

@ -39,7 +39,7 @@ public:
virtual ~RimSummaryCase();
virtual QString summaryHeaderFilename() const = 0;
virtual QString caseName() const = 0;
virtual QString caseName() = 0;
QString shortName() const;
void updateAutoShortName();
@ -53,6 +53,7 @@ protected:
caf::PdmField<QString> m_shortName;
caf::PdmField<bool> m_useAutoShortName;
caf::PdmField<QString> m_summaryHeaderFilename;
cvf::ref<RigSummaryCaseData> m_summaryCaseData;