From 802a9154e4103de574403646b2a87e7f9660758b Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 27 Sep 2017 08:12:01 +0200 Subject: [PATCH] #1912 Curve Creator : Avoid selection in main project tree when clicking on curve --- .../Summary/RimSummaryCurveCollection.cpp | 28 +++++++++++++++++-- .../Summary/RimSummaryCurveCollection.h | 6 +++- .../Summary/RimSummaryPlot.cpp | 8 +++++- .../UserInterface/RiuSummaryQwtPlot.cpp | 9 ++++-- 4 files changed, 44 insertions(+), 7 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp index 73081e9f14..f74736b4cd 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp @@ -29,6 +29,8 @@ #include "RiuLineSegmentQwtPlotCurve.h" #include "RiuSummaryQwtPlot.h" +#include "cafPdmUiTreeViewEditor.h" + CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection"); //-------------------------------------------------------------------------------------------------- @@ -109,7 +111,6 @@ void RimSummaryCurveCollection::detachQwtCurves() } } - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -186,6 +187,7 @@ void RimSummaryCurveCollection::deleteCurvesAssosiatedWithCase(RimSummaryCase* s m_curves.removeChildObject(summaryCurve); delete summaryCurve; } + } //-------------------------------------------------------------------------------------------------- @@ -212,10 +214,32 @@ void RimSummaryCurveCollection::updateCaseNameHasChanged() if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend(); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::setCurrentSummaryCurve(RimSummaryCurve* curve) +{ + m_currentSummaryCurve = curve; + + updateConnectedEditors(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- caf::PdmFieldHandle* RimSummaryCurveCollection::objectToggleField() { return &m_showCurves; -} \ No newline at end of file +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::defineObjectEditorAttribute(QString uiConfigName, caf::PdmUiEditorAttribute* attribute) +{ + caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast(attribute); + if (myAttr && m_currentSummaryCurve.notNull()) + { + myAttr->currentObject = m_currentSummaryCurve.p(); + } +} diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h index 609b247a23..669e40ac93 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h @@ -57,9 +57,12 @@ public: void deleteAllCurves(); void updateCaseNameHasChanged(); + void setCurrentSummaryCurve(RimSummaryCurve* curve); + private: caf::PdmFieldHandle* objectToggleField(); - + virtual void defineObjectEditorAttribute(QString uiConfigName, + caf::PdmUiEditorAttribute* attribute) override; private: caf::PdmPtrArrayField m_selectedSummaryCases; @@ -67,5 +70,6 @@ private: caf::PdmField m_showCurves; caf::PdmChildArrayField m_curves; + caf::PdmPointer m_currentSummaryCurve; }; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index 238eed2dcf..3580750bca 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -1320,7 +1320,13 @@ caf::PdmObject* RimSummaryPlot::findRimCurveFromQwtCurve(const QwtPlotCurve* qwt if (m_summaryCurveCollection) { RimSummaryCurve* foundCurve = m_summaryCurveCollection->findRimCurveFromQwtCurve(qwtCurve); - if (foundCurve) return foundCurve; + + if (foundCurve) + { + m_summaryCurveCollection->setCurrentSummaryCurve(foundCurve); + + return foundCurve; + } } return NULL; diff --git a/ApplicationCode/UserInterface/RiuSummaryQwtPlot.cpp b/ApplicationCode/UserInterface/RiuSummaryQwtPlot.cpp index 080e6b6681..e423793b06 100644 --- a/ApplicationCode/UserInterface/RiuSummaryQwtPlot.cpp +++ b/ApplicationCode/UserInterface/RiuSummaryQwtPlot.cpp @@ -21,6 +21,7 @@ #include "RiaApplication.h" #include "RimContextCommandBuilder.h" +#include "RimProject.h" #include "RimSummaryCurve.h" #include "RimSummaryPlot.h" @@ -316,8 +317,6 @@ bool RiuSummaryQwtPlot::eventFilter(QObject* watched, QEvent* event) return QwtPlot::eventFilter(watched, event); } - - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -345,7 +344,11 @@ void RiuSummaryQwtPlot::selectClosestCurve(const QPoint& pos) if(closestCurve && distMin < 20) { caf::PdmObject* selectedCurve = m_plotDefinition->findRimCurveFromQwtCurve(closestCurve); - if(selectedCurve) + + RimProject* proj = nullptr; + selectedCurve->firstAncestorOrThisOfType(proj); + + if(proj && selectedCurve) { RiaApplication::instance()->getOrCreateAndShowMainPlotWindow()->selectAsCurrentItem(selectedCurve); }