diff --git a/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp b/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp index 3c4155562e..13c2a2942c 100644 --- a/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp +++ b/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp @@ -37,6 +37,7 @@ #include "RimSummaryCase.h" #include "RimSummaryCaseMainCollection.h" #include "RimSummaryCurve.h" +#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveFilter.h" #include "RimSummaryPlotCollection.h" @@ -156,6 +157,8 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr RimSummaryCurve* summaryCurve = dynamic_cast(objHandle); if (summaryCurve) { + //TODO: When removing curve filter functionality, move this to summaryCurveCollection + //loop and update "if (parentCollection)"-block summaryCurve->setSummaryCase(newSumCase); summaryCurve->updateConnectedEditors(); @@ -178,6 +181,22 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr curveFilter->updateConnectedEditors(); } + for (caf::PdmObjectHandle* objHandle : referringObjects) + { + RimSummaryCurve* summaryCurve = dynamic_cast(objHandle); + if (summaryCurve) + { + RimSummaryCurveCollection* parentCollection = nullptr; + summaryCurve->firstAncestorOrThisOfType(parentCollection); + if (parentCollection) + { + parentCollection->loadDataAndUpdate(); + parentCollection->updateConnectedEditors(); + break; + } + } + } + sumCaseColl->removeCase(existingFileSummaryCase); delete existingFileSummaryCase; diff --git a/ApplicationCode/Commands/RicCloseSummaryCaseFeature.cpp b/ApplicationCode/Commands/RicCloseSummaryCaseFeature.cpp index f1757b1a3a..fa153b0afd 100644 --- a/ApplicationCode/Commands/RicCloseSummaryCaseFeature.cpp +++ b/ApplicationCode/Commands/RicCloseSummaryCaseFeature.cpp @@ -56,7 +56,7 @@ void RicCloseSummaryCaseFeature::deleteSummaryCases(const std::vectorsummaryPlots) { - summaryPlot->removeCurvesAssosiatedWithCase(summaryCase); + summaryPlot->deleteCurvesAssosiatedWithCase(summaryCase); } summaryPlotColl->updateConnectedEditors(); diff --git a/ApplicationCode/Commands/RicDeleteSummaryCaseCollectionFeature.cpp b/ApplicationCode/Commands/RicDeleteSummaryCaseCollectionFeature.cpp index 8036e690c5..7967f5febf 100644 --- a/ApplicationCode/Commands/RicDeleteSummaryCaseCollectionFeature.cpp +++ b/ApplicationCode/Commands/RicDeleteSummaryCaseCollectionFeature.cpp @@ -49,7 +49,7 @@ void RicDeleteSummaryCaseCollectionFeature::deleteSummaryCaseCollection(RimSumma { for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots) { - summaryPlot->removeCurvesAssosiatedWithCase(summaryCase); + summaryPlot->deleteCurvesAssosiatedWithCase(summaryCase); } } diff --git a/ApplicationCode/ProjectDataModel/RimPlotCurve.cpp b/ApplicationCode/ProjectDataModel/RimPlotCurve.cpp index 4e0dde87f5..8197fad21c 100644 --- a/ApplicationCode/ProjectDataModel/RimPlotCurve.cpp +++ b/ApplicationCode/ProjectDataModel/RimPlotCurve.cpp @@ -17,7 +17,9 @@ ///////////////////////////////////////////////////////////////////////////////// #include "RimPlotCurve.h" +#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveFilter.h" + #include "RiuLineSegmentQwtPlotCurve.h" #include "cafPdmUiComboBoxEditor.h" @@ -186,6 +188,12 @@ void RimPlotCurve::updateCurveVisibility() this->firstAncestorOrThisOfType(cFilter); if(cFilter) isVisibleInPossibleParent = cFilter->isCurvesVisible(); } + + { + RimSummaryCurveCollection* summaryCurveCollection = nullptr; + this->firstAncestorOrThisOfType(summaryCurveCollection); + if (summaryCurveCollection) isVisibleInPossibleParent = summaryCurveCollection->isCurvesVisible(); + } if (m_showCurve() && m_parentQwtPlot && isVisibleInPossibleParent) { diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp index 54a258f1b8..c5cae1a02b 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2016 Statoil ASA +// Copyright (C) 2017- Statoil ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -18,45 +18,19 @@ #include "RimSummaryCurveCollection.h" -//#include "RiaApplication.h" -// #include "RifReaderEclipseSummary.h" -// -//#include "RigSummaryCaseData.h" -// -//#include "RiaDefines.h" -//#include "RimEclipseResultCase.h" -//#include "RimProject.h" + +#include "RigSummaryCaseData.h" + +#include "RiaApplication.h" +#include "RimProject.h" #include "RimSummaryCase.h" -//#include "RimSummaryCurve.h" -//#include "RimSummaryCurveAppearanceCalculator.h" -//#include "RimSummaryCurveAutoName.h" -//#include "RimSummaryFilter.h" -//#include "RimSummaryPlot.h" -//#include "RimSummaryPlotCollection.h" -// -//#include "RiuLineSegmentQwtPlotCurve.h" -//#include "RiuSummaryQwtPlot.h" -// -//#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h" -// -//#include "cafPdmUiListEditor.h" -//#include "cafPdmUiPushButtonEditor.h" -// -// -//QTextStream& operator << (QTextStream& str, const std::vector& sobj) -//{ -// CVF_ASSERT(false); -// return str; -//} -// -//QTextStream& operator >> (QTextStream& str, std::vector& sobj) -//{ -// CVF_ASSERT(false); -// return str; -//} -// -// +#include "RimSummaryCurve.h" +#include "RimSummaryPlot.h" + +#include "RiuLineSegmentQwtPlotCurve.h" +#include "RiuSummaryQwtPlot.h" + CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection"); //-------------------------------------------------------------------------------------------------- @@ -64,6 +38,14 @@ CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection"); //-------------------------------------------------------------------------------------------------- RimSummaryCurveCollection::RimSummaryCurveCollection() { + CAF_PDM_InitObject("Curve Collection", ":/SummaryCurveFilter16x16.png", "", ""); + + CAF_PDM_InitFieldNoDefault(&m_curves, "CollectionCurves", "Collection Curves", "", "", ""); + m_curves.uiCapability()->setUiHidden(true); + m_curves.uiCapability()->setUiTreeChildrenHidden(false); + + CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", ""); + m_showCurves.uiCapability()->setUiHidden(true); } //-------------------------------------------------------------------------------------------------- @@ -71,21 +53,145 @@ RimSummaryCurveCollection::RimSummaryCurveCollection() //-------------------------------------------------------------------------------------------------- RimSummaryCurveCollection::~RimSummaryCurveCollection() { + m_curves.deleteAllChildObjects(); } -void RimSummaryCurveCollection::createCurves(RimSummaryCase* summaryCase, const QString& stringFilter) +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimSummaryCurveCollection::isCurvesVisible() { - if (summaryCase) + return m_showCurves(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::loadDataAndUpdate() +{ + for (RimSummaryCurve* curve : m_curves) { - std::vector selectedCases; - selectedCases.push_back(summaryCase); - - //m_summaryFilter->setCompleteVarStringFilter(stringFilter); - - std::set > newCurveDefinitions; - - //createSetOfCasesAndResultAdresses(selectedCases, *m_summaryFilter, &newCurveDefinitions); - - //createCurvesFromCurveDefinitions(newCurveDefinitions); + curve->loadDataAndUpdate(); } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::setParentQwtPlot(QwtPlot* plot) +{ + for (RimSummaryCurve* curve : m_curves) + { + curve->setParentQwtPlot(plot); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::detachQwtCurves() +{ + for (RimSummaryCurve* curve : m_curves) + { + curve->detachQwtCurve(); + } +} + + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RimSummaryCurve* RimSummaryCurveCollection::findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const +{ + for (RimSummaryCurve* rimCurve : m_curves) + { + if (rimCurve->qwtPlotCurve() == qwtCurve) + { + return rimCurve; + } + } + + return NULL; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::addCurve(RimSummaryCurve* curve) +{ + if (curve) + { + m_curves.push_back(curve); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::deleteCurve(RimSummaryCurve* curve) +{ + if (curve) + { + m_curves.removeChildObject(curve); + delete curve; + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RimSummaryCurveCollection::curves() +{ + std::vector myCurves; + + for (RimSummaryCurve* curve : m_curves) + { + myCurves.push_back(curve); + } + + return myCurves; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase) +{ + std::vector summaryCurvesToDelete; + + for (RimSummaryCurve* summaryCurve : m_curves) + { + if (!summaryCurve) continue; + if (!summaryCurve->summaryCase()) continue; + + if (summaryCurve->summaryCase() == summaryCase) + { + summaryCurvesToDelete.push_back(summaryCurve); + } + } + for (RimSummaryCurve* summaryCurve : summaryCurvesToDelete) + { + m_curves.removeChildObject(summaryCurve); + delete summaryCurve; + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurveCollection::updateCaseNameHasChanged() +{ + for (RimSummaryCurve* curve : m_curves) + { + curve->updateCurveName(); + curve->updateConnectedEditors(); + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmFieldHandle* RimSummaryCurveCollection::objectToggleField() +{ + return &m_showCurves; +} \ No newline at end of file diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h index f92692994b..aa127c24e4 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////////// // -// Copyright (C) 2016 Statoil ASA +// Copyright (C) 2017- Statoil ASA // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,35 +19,25 @@ #pragma once -//#include "cafPdmField.h" + +#include "RiaDefines.h" + +#include "cafPdmChildArrayField.h" +#include "cafPdmField.h" #include "cafPdmObject.h" -//#include "cafPdmPointer.h" -//#include "cafPdmPtrField.h" -//#include "cafPdmChildField.h" -//#include "cafPdmChildArrayField.h" -//#include "cafAppEnum.h" -//#include "cafPdmPtrArrayField.h" -// -//#include "RifEclipseSummaryAddress.h" -// -//#include "RiaDefines.h" -//#include "RimSummaryCurveAppearanceCalculator.h" -// -//class QwtPlot; -//class QwtPlotCurve; -//class RifReaderEclipseSummary; +#include "cafPdmPtrArrayField.h" + +#include "QPointer" +#include "QList" + +class QwtPlot; +class QwtPlotCurve; class RimSummaryCase; -//class RimSummaryCurve; -//class RimSummaryFilter; -//class RiuLineSegmentQwtPlotCurve; -//class RimSummaryCurveAutoName; -// -// -//Q_DECLARE_METATYPE(RifEclipseSummaryAddress); +class RimSummaryCurve; +class RiuLineSegmentQwtPlotCurve; //================================================================================================== /// -/// //================================================================================================== class RimSummaryCurveCollection : public caf::PdmObject { @@ -57,6 +47,31 @@ public: RimSummaryCurveCollection(); virtual ~RimSummaryCurveCollection(); - void createCurves(RimSummaryCase* summaryCase, const QString& stringFilter); + bool isCurvesVisible(); + + void loadDataAndUpdate(); + void setParentQwtPlot(QwtPlot* plot); + void detachQwtCurves(); + + RimSummaryCurve* findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const; + + void addCurve(RimSummaryCurve* curve); + void deleteCurve(RimSummaryCurve* curve); + + std::vector curves(); + void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase); + + void updateCaseNameHasChanged(); + +private: + caf::PdmFieldHandle* objectToggleField(); + + +private: + caf::PdmPtrArrayField m_selectedSummaryCases; + + caf::PdmField m_showCurves; + caf::PdmChildArrayField m_curves; + }; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp index e5ddfd362f..9444f1839c 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.cpp @@ -20,16 +20,16 @@ #include "RiaApplication.h" +#include "RimAsciiDataCurve.h" #include "RimGridTimeHistoryCurve.h" #include "RimSummaryCase.h" #include "RimSummaryCurve.h" -#include "RimSummaryCurveFilter.h" #include "RimSummaryCurveCollection.h" +#include "RimSummaryCurveFilter.h" #include "RimSummaryCurvesCalculator.h" #include "RimSummaryPlotCollection.h" #include "RimSummaryTimeAxisProperties.h" #include "RimSummaryYAxisProperties.h" -#include "RimAsciiDataCurve.h" #include "RiuMainPlotWindow.h" #include "RiuSummaryQwtPlot.h" @@ -44,10 +44,10 @@ #include #include -#include "qwt_plot_curve.h" -#include "qwt_plot_renderer.h" #include "qwt_abstract_legend.h" #include "qwt_legend.h" +#include "qwt_plot_curve.h" +#include "qwt_plot_renderer.h" #include "vector" @@ -70,8 +70,9 @@ RimSummaryPlot::RimSummaryPlot() CAF_PDM_InitFieldNoDefault(&m_curveFilters, "SummaryCurveFilters", "", "", "", ""); m_curveFilters.uiCapability()->setUiTreeHidden(true); - CAF_PDM_InitFieldNoDefault(&m_curveCollection, "SummaryCurveCollection", "", "", "", ""); - + CAF_PDM_InitFieldNoDefault(&m_summaryCurveCollection, "SummaryCurveCollection", "", "", "", ""); + m_summaryCurveCollection.uiCapability()->setUiTreeHidden(true); + CAF_PDM_InitFieldNoDefault(&m_summaryCurves, "SummaryCurves", "", "", "", ""); m_summaryCurves.uiCapability()->setUiTreeHidden(true); @@ -84,23 +85,25 @@ RimSummaryPlot::RimSummaryPlot() CAF_PDM_InitFieldNoDefault(&m_leftYAxisProperties, "LeftYAxisProperties", "Left Y Axis", "", "", ""); m_leftYAxisProperties.uiCapability()->setUiTreeHidden(true); - m_leftYAxisProperties = new RimSummaryYAxisProperties; - m_leftYAxisProperties->setNameAndAxis("Left Y-Axis", QwtPlot::yLeft); - CAF_PDM_InitFieldNoDefault(&m_rightYAxisProperties, "RightYAxisProperties", "Right Y Axis", "", "", ""); m_rightYAxisProperties.uiCapability()->setUiTreeHidden(true); - m_rightYAxisProperties = new RimSummaryYAxisProperties; - m_rightYAxisProperties->setNameAndAxis("Right Y-Axis", QwtPlot::yRight); - CAF_PDM_InitFieldNoDefault(&m_timeAxisProperties, "TimeAxisProperties", "Time Axis", "", "", ""); m_timeAxisProperties.uiCapability()->setUiTreeHidden(true); - m_timeAxisProperties = new RimSummaryTimeAxisProperties; - CAF_PDM_InitField(&m_isAutoZoom, "AutoZoom", true, "Auto Zoom", "", "", ""); m_isAutoZoom.uiCapability()->setUiHidden(true); + m_summaryCurveCollection = new RimSummaryCurveCollection; + + m_leftYAxisProperties = new RimSummaryYAxisProperties; + m_leftYAxisProperties->setNameAndAxis("Left Y-Axis", QwtPlot::yLeft); + + m_rightYAxisProperties = new RimSummaryYAxisProperties; + m_rightYAxisProperties->setNameAndAxis("Right Y-Axis", QwtPlot::yRight); + + m_timeAxisProperties = new RimSummaryTimeAxisProperties; + setAsPlotMdiWindow(); } @@ -115,6 +118,7 @@ RimSummaryPlot::~RimSummaryPlot() m_summaryCurves.deleteAllChildObjects(); m_curveFilters.deleteAllChildObjects(); + delete m_summaryCurveCollection; } //-------------------------------------------------------------------------------------------------- @@ -189,6 +193,17 @@ time_t RimSummaryPlot::firstTimeStepOfFirstCurve() } } + if (m_summaryCurveCollection) + { + std::vector curves = m_summaryCurveCollection->curves(); + size_t i = 0; + while (firstCurve == nullptr && i < curves.size()) + { + firstCurve = curves[i]; + ++i; + } + } + size_t i = 0; while (firstCurve == nullptr && i < m_summaryCurves.size()) { @@ -548,6 +563,17 @@ std::vector RimSummaryPlot::visibleSummaryCurvesForAxis(RiaDef } } + if (m_summaryCurveCollection && m_summaryCurveCollection->isCurvesVisible()) + { + for (RimSummaryCurve* curve : m_summaryCurveCollection->curves()) + { + if (curve->isCurveVisible() && curve->yAxis() == plotAxis) + { + curves.push_back(curve); + } + } + } + return curves; } @@ -706,6 +732,12 @@ void RimSummaryPlot::updateCaseNameHasChanged() { curveFilter->updateCaseNameHasChanged(); } + + if (m_summaryCurveCollection) + { + m_summaryCurveCollection->updateCaseNameHasChanged(); + } + } //-------------------------------------------------------------------------------------------------- @@ -755,7 +787,8 @@ void RimSummaryPlot::addCurve(RimSummaryCurve* curve) { if (curve) { - m_summaryCurves.push_back(curve); + m_summaryCurveCollection->addCurve(curve); + if (m_qwtPlot) { curve->setParentQwtPlot(m_qwtPlot); @@ -771,15 +804,22 @@ void RimSummaryPlot::deleteCurve(RimSummaryCurve* curve) { if (curve) { - m_summaryCurves.removeChildObject(curve); - delete curve; + if (m_summaryCurveCollection) + { + m_summaryCurveCollection->deleteCurve(curve); + } + else + { + m_summaryCurves.removeChildObject(curve); + delete curve; + } } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSummaryPlot::removeCurvesAssosiatedWithCase(RimSummaryCase* summaryCase) +void RimSummaryPlot::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase) { for (RimSummaryCurveFilter* summaryCurveFilter : m_curveFilters) { @@ -787,6 +827,11 @@ void RimSummaryPlot::removeCurvesAssosiatedWithCase(RimSummaryCase* summaryCase) summaryCurveFilter->removeCurvesAssosiatedWithCase(summaryCase); } + if (m_summaryCurveCollection) + { + m_summaryCurveCollection->deleteCurvesAssosiatedWithCase(summaryCase); + } + std::vector summaryCurvesToDelete; for (RimSummaryCurve* summaryCurve : m_summaryCurves) @@ -829,6 +874,22 @@ void RimSummaryPlot::addCurveFilter(RimSummaryCurveFilter* curveFilter) } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryPlot::setCurveCollection(RimSummaryCurveCollection* curveCollection) +{ + if (curveCollection) + { + m_summaryCurveCollection = curveCollection; + if (m_qwtPlot) + { + m_summaryCurveCollection->setParentQwtPlot(m_qwtPlot); + this->updateAxes(); + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -908,6 +969,7 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering axisFolder->add(&m_rightYAxisProperties); uiTreeOrdering.add(&m_curveFilters); + uiTreeOrdering.add(&m_summaryCurveCollection); uiTreeOrdering.add(&m_summaryCurves); uiTreeOrdering.add(&m_gridTimeHistoryCurves); uiTreeOrdering.add(&m_asciiDataCurves); @@ -922,10 +984,15 @@ void RimSummaryPlot::loadDataAndUpdate() { updateMdiWindowVisibility(); - for (RimSummaryCurveFilter* curveFilter: m_curveFilters) - { + for (RimSummaryCurveFilter* curveFilter: m_curveFilters) + { curveFilter->loadDataAndUpdate(); - } + } + + if (m_summaryCurveCollection) + { + m_summaryCurveCollection->loadDataAndUpdate(); + } for (RimSummaryCurve* curve : m_summaryCurves) { @@ -1031,12 +1098,17 @@ QWidget* RimSummaryPlot::createViewWidget(QWidget* mainWindowParent) { curveFilter->setParentQwtPlot(m_qwtPlot); } - - for(RimSummaryCurve* curve : m_summaryCurves) + + for (RimSummaryCurve* curve : m_summaryCurves) { curve->setParentQwtPlot(m_qwtPlot); } + if(m_summaryCurveCollection) + { + m_summaryCurveCollection->setParentQwtPlot(m_qwtPlot); + } + for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves) { curve->setParentQwtPlot(m_qwtPlot); @@ -1107,6 +1179,11 @@ void RimSummaryPlot::detachAllCurves() curveFilter->detachQwtCurves(); } + if (m_summaryCurveCollection) + { + m_summaryCurveCollection->detachQwtCurves(); + } + for(RimSummaryCurve* curve : m_summaryCurves) { curve->detachQwtCurve(); @@ -1158,6 +1235,12 @@ caf::PdmObject* RimSummaryPlot::findRimCurveFromQwtCurve(const QwtPlotCurve* qwt if (foundCurve) return foundCurve; } + if (m_summaryCurveCollection) + { + RimSummaryCurve* foundCurve = m_summaryCurveCollection->findRimCurveFromQwtCurve(qwtCurve); + if (foundCurve) return foundCurve; + } + return NULL; } diff --git a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h index 0570445004..3ac8381fbc 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h +++ b/ApplicationCode/ProjectDataModel/Summary/RimSummaryPlot.h @@ -30,19 +30,19 @@ #include -class RiuSummaryQwtPlot; -class RimSummaryCurve; -class RimSummaryCase; -class RimSummaryCurveFilter; -class RimSummaryCurveCollection; -class RimSummaryYAxisProperties; -class RimSummaryTimeAxisProperties; -class RimGridTimeHistoryCurve; -class RimAsciiDataCurve; class PdmUiTreeOrdering; +class RimAsciiDataCurve; +class RimGridTimeHistoryCurve; +class RimSummaryCase; +class RimSummaryCurve; +class RimSummaryCurveCollection; +class RimSummaryCurveFilter; +class RimSummaryTimeAxisProperties; +class RimSummaryYAxisProperties; +class RiuSummaryQwtPlot; -class QwtPlotCurve; class QwtInterval; +class QwtPlotCurve; //================================================================================================== /// @@ -62,7 +62,8 @@ public: void addCurve(RimSummaryCurve* curve); void deleteCurve(RimSummaryCurve* curve); void addCurveFilter(RimSummaryCurveFilter* curveFilter); - void removeCurvesAssosiatedWithCase(RimSummaryCase* summaryCase); + void setCurveCollection(RimSummaryCurveCollection* curveCollection); + void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase); void deleteAllTopLevelCurves(); void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve); @@ -137,7 +138,7 @@ private: caf::PdmChildArrayField m_gridTimeHistoryCurves; caf::PdmChildArrayField m_summaryCurves; caf::PdmChildArrayField m_curveFilters; - caf::PdmChildField m_curveCollection; + caf::PdmChildField m_summaryCurveCollection; caf::PdmChildArrayField m_asciiDataCurves; caf::PdmField m_isAutoZoom;