From ab4829b2d91effd2f856f83e7820333082858411 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 6 Jul 2016 13:35:24 +0200 Subject: [PATCH] #775 Added user editable curve display name to summary cases --- .../ProjectDataModel/RimGridSummaryCase.cpp | 4 +- .../ProjectDataModel/RimPlotCurve.h | 3 +- .../ProjectDataModel/RimSummaryCase.cpp | 49 ++++++++++++++++++- .../ProjectDataModel/RimSummaryCase.h | 11 ++++- .../RimSummaryCaseCollection.cpp | 41 ++++++++++++++++ .../RimSummaryCaseCollection.h | 2 + .../ProjectDataModel/RimSummaryCurve.cpp | 4 +- .../RimSummaryCurveFilter.cpp | 12 +++++ .../ProjectDataModel/RimSummaryCurveFilter.h | 1 + .../ProjectDataModel/RimSummaryPlot.cpp | 17 +++++++ .../ProjectDataModel/RimSummaryPlot.h | 1 + .../RimSummaryPlotCollection.cpp | 11 +++++ .../RimSummaryPlotCollection.h | 1 + 13 files changed, 150 insertions(+), 7 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimGridSummaryCase.cpp b/ApplicationCode/ProjectDataModel/RimGridSummaryCase.cpp index 65bfb0cb17..d6dd103dc1 100644 --- a/ApplicationCode/ProjectDataModel/RimGridSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimGridSummaryCase.cpp @@ -85,6 +85,8 @@ QString RimGridSummaryCase::summaryHeaderFilename() const //-------------------------------------------------------------------------------------------------- void RimGridSummaryCase::initAfterRead() { + RimSummaryCase::updateOptionSensitivity(); + updateUiNames(); } @@ -95,7 +97,7 @@ void RimGridSummaryCase::updateUiNames() { m_summaryHeaderFilename = summaryHeaderFilename(); - m_userName = baseName(); + m_userName = curveDisplayName() + " - " + baseName(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimPlotCurve.h b/ApplicationCode/ProjectDataModel/RimPlotCurve.h index 2b509c73cc..4a389a01e8 100644 --- a/ApplicationCode/ProjectDataModel/RimPlotCurve.h +++ b/ApplicationCode/ProjectDataModel/RimPlotCurve.h @@ -68,6 +68,8 @@ public: void setColor(const cvf::Color3f& color); void setLineStyle(LineStyleEnum lineStyle); bool isCurveVisible() const; + + void updateCurveName(); QString curveName() const { return m_curveName; } protected: @@ -77,7 +79,6 @@ protected: virtual void onLoadDataAndUpdate() = 0; void updateCurvePresentation(); - void updateCurveName(); void updateCurveVisibility(); void updateCurveAppearance(); diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCase.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCase.cpp index cf591f652f..2d76d78034 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCase.cpp @@ -17,9 +17,15 @@ ///////////////////////////////////////////////////////////////////////////////// #include "RimSummaryCase.h" -#include "RimEclipseCase.h" + #include "RigSummaryCaseData.h" +#include "RimEclipseCase.h" +#include "RimSummaryCaseCollection.h" + #include +#include "RimProject.h" +#include "RimSummaryPlotCollection.h" +#include "RimMainPlotCollection.h" CAF_PDM_ABSTRACT_SOURCE_INIT(RimSummaryCase,"SummaryCase"); @@ -30,6 +36,8 @@ RimSummaryCase::RimSummaryCase() { CAF_PDM_InitObject("Summary Case",":/Cases16x16.png","",""); + CAF_PDM_InitField(&curveDisplayName, "CurveDisplayName", QString("Curve Display Name"), "Curve Display Name", "", "", ""); + CAF_PDM_InitField(&autoCurveDisplayName, "AutoCurveDisplayName", true, "Auto Curve Display Name", "", "", ""); } //-------------------------------------------------------------------------------------------------- @@ -55,5 +63,42 @@ QString RimSummaryCase::caseName() { QFileInfo caseFileName(this->summaryHeaderFilename()); - return caseFileName.completeBaseName(); + return caseFileName.completeBaseName(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) +{ + if (changedField == &autoCurveDisplayName) + { + if (autoCurveDisplayName) + { + RimSummaryCaseCollection* summaryCaseCollection = NULL; + this->firstAnchestorOrThisOfType(summaryCaseCollection); + if (summaryCaseCollection) + { + curveDisplayName = summaryCaseCollection->uniqueShortNameForCase(this); + } + } + } + + RimProject* proj = NULL; + this->firstAnchestorOrThisOfType(proj); + + RimMainPlotCollection* mainPlotColl = proj->mainPlotCollection(); + RimSummaryPlotCollection* summaryPlotColl = mainPlotColl->summaryPlotCollection(); + + summaryPlotColl->updateSummaryNameHasChanged(); + + updateOptionSensitivity(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCase::updateOptionSensitivity() +{ + curveDisplayName.uiCapability()->setUiReadOnly(autoCurveDisplayName); } diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCase.h b/ApplicationCode/ProjectDataModel/RimSummaryCase.h index a9025861be..ea8cb50324 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCase.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryCase.h @@ -46,7 +46,16 @@ public: RigSummaryCaseData* caseData() { return m_summaryCaseData.p(); } -protected: + caf::PdmField curveDisplayName; + caf::PdmField autoCurveDisplayName; + void updateOptionSensitivity(); + +protected: cvf::ref m_summaryCaseData; + +private: + // Overridden PDM methods + virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); + }; diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.cpp index cb2af709c8..ffd28ed364 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.cpp @@ -128,9 +128,50 @@ RimGridSummaryCase* RimSummaryCaseCollection::createAndAddSummaryCaseFromEclipse { RimGridSummaryCase* newSumCase = new RimGridSummaryCase(); newSumCase->setAssociatedEclipseCase(eclResCase); + newSumCase->curveDisplayName = uniqueShortNameForCase(newSumCase); + newSumCase->updateOptionSensitivity(); this->m_cases.push_back(newSumCase); return newSumCase; } return nullptr; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RimSummaryCaseCollection::uniqueShortNameForCase(RimSummaryCase* summaryCase) +{ + QStringList allAutoShortNames; + + for (RimSummaryCase* sumCase : m_cases) + { + if (sumCase && sumCase != summaryCase) + { + allAutoShortNames.push_back(sumCase->curveDisplayName()); + } + } + + bool foundUnique = false; + + QString caseName = summaryCase->caseName(); + QString candidateBase = caseName.left(2); + QString candidate = candidateBase; + int autoNumber = 0; + while (!foundUnique) + { + bool foundExisting = false; + for (QString autoName : allAutoShortNames) + { + if (autoName.left(candidate.size()) == candidate) + { + candidate = candidateBase + QString::number(autoNumber++); + foundExisting = true; + } + } + + foundUnique = !foundExisting; + } + + return candidate; +} + diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.h b/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.h index 90239bb67a..be72d37cb1 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryCaseCollection.h @@ -40,6 +40,8 @@ public: void loadAllSummaryCaseData(); + QString uniqueShortNameForCase(RimSummaryCase* summaryCase); + private: caf::PdmChildArrayField m_cases; }; diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCurve.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCurve.cpp index fb06a9353d..896518cc39 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCurve.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurve.cpp @@ -167,7 +167,7 @@ RimSummaryCurve::RimSummaryCurve() m_curveVariable = new RimSummaryAddress; // Add some space before name to indicate these belong to the Auto Name field - CAF_PDM_InitField(&m_addCaseNameToCurveName, "AddCaseNameToCurveName", false, " Case Name", "", "", ""); + CAF_PDM_InitField(&m_addCaseNameToCurveName, "AddCaseNameToCurveName", true, " Case Name", "", "", ""); m_symbolSkipPixelDistance = 10.0f; @@ -309,7 +309,7 @@ QString RimSummaryCurve::createCurveAutoName() generatedCurveName += ", "; } - generatedCurveName += m_summaryCase->caseName(); + generatedCurveName += m_summaryCase->curveDisplayName(); } return generatedCurveName; diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp index f9d129b88e..4c4d4c55c7 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.cpp @@ -484,3 +484,15 @@ void RimSummaryCurveFilter::createCurvesFromCurveDefinitions(const std::setupdateCurveName(); + curve->updateConnectedEditors(); + } +} diff --git a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h index 9194e7b9a3..b8e84c6901 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryCurveFilter.h @@ -60,6 +60,7 @@ public: RimSummaryCurve* findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const; std::set unitNames(); + void updateCaseNameHasChanged(); private: void syncCurvesFromUiSelection(); diff --git a/ApplicationCode/ProjectDataModel/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/RimSummaryPlot.cpp index c8c8513d1b..73fccc754a 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryPlot.cpp @@ -135,6 +135,23 @@ void RimSummaryPlot::updateYAxisUnit() m_qwtPlot->setYAxisTitle(assembledYAxisText); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlot::updateCaseNameHasChanged() +{ + for (RimSummaryCurve* curve : m_curves) + { + curve->updateCurveName(); + curve->updateConnectedEditors(); + } + + for (RimSummaryCurveFilter* curveFilter : m_curveFilters) + { + curveFilter->updateCaseNameHasChanged(); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimSummaryPlot.h b/ApplicationCode/ProjectDataModel/RimSummaryPlot.h index 6952297c14..85564fb975 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryPlot.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryPlot.h @@ -54,6 +54,7 @@ public: void loadDataAndUpdate(); void handleViewerDeletion(); void updateYAxisUnit(); + void updateCaseNameHasChanged(); QWidget* viewer(); diff --git a/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.cpp b/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.cpp index 8b88de3055..5eea46d180 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.cpp @@ -119,3 +119,14 @@ RifReaderEclipseSummary* RimSummaryPlotCollection::createSummaryFileReader(const } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlotCollection::updateSummaryNameHasChanged() +{ + for (RimSummaryPlot* plot : m_summaryPlots) + { + plot->updateCaseNameHasChanged(); + } +} + diff --git a/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.h b/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.h index 2356522f9d..00afb0d151 100644 --- a/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.h +++ b/ApplicationCode/ProjectDataModel/RimSummaryPlotCollection.h @@ -45,6 +45,7 @@ public: caf::PdmChildArrayField m_summaryPlots; + void updateSummaryNameHasChanged(); private: RifReaderEclipseSummary* createSummaryFileReader(const QString& eclipseCaseFilePathBasename); RifReaderEclipseSummary* getOrCreateSummaryFileReader(const QString& eclipseCaseFilePathBasename);