diff --git a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp index 5d80f255c0..41feed1223 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.cpp @@ -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()); diff --git a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.h b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.h index 7340af129a..88eedb07f8 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimFileSummaryCase.h @@ -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 m_summaryHeaderFilename; }; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp index 891e715d54..248623cc2e 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.cpp @@ -20,6 +20,7 @@ #include "RigSummaryCaseData.h" #include "RimEclipseCase.h" +#include "RimProject.h" #include @@ -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 allCases; + project->allCases(allCases); + for ( RimCase* someCase: allCases ) + { + auto eclCase = dynamic_cast(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; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.h b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.h index 1f51facd9d..9baa242e5d 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimGridSummaryCase.h @@ -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 m_eclipseCase; + mutable caf::PdmField m_cachedCaseName; caf::PdmProxyValueField m_eclipseGridFileName; - caf::PdmProxyValueField m_eclipseSummaryFileName; + //caf::PdmProxyValueField m_eclipseSummaryFileName; }; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp index da8d4fccd3..213ae2930d 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.cpp @@ -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); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.h index 1f1a1b0dce..e572ffa1a5 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCase.h @@ -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 m_shortName; caf::PdmField m_useAutoShortName; + caf::PdmField m_summaryHeaderFilename; cvf::ref m_summaryCaseData;