#1887 Curve Creator: Make the new SummaryCurveCollection operational

This commit is contained in:
Rebecca Cox 2017-09-14 13:56:50 +02:00
parent 1ec9e72ce2
commit 0044fb9e50
8 changed files with 345 additions and 113 deletions

View File

@ -37,6 +37,7 @@
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCaseMainCollection.h" #include "RimSummaryCaseMainCollection.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryCurveCollection.h"
#include "RimSummaryCurveFilter.h" #include "RimSummaryCurveFilter.h"
#include "RimSummaryPlotCollection.h" #include "RimSummaryPlotCollection.h"
@ -156,6 +157,8 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle); RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
if (summaryCurve) if (summaryCurve)
{ {
//TODO: When removing curve filter functionality, move this to summaryCurveCollection
//loop and update "if (parentCollection)"-block
summaryCurve->setSummaryCase(newSumCase); summaryCurve->setSummaryCase(newSumCase);
summaryCurve->updateConnectedEditors(); summaryCurve->updateConnectedEditors();
@ -178,6 +181,22 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr
curveFilter->updateConnectedEditors(); curveFilter->updateConnectedEditors();
} }
for (caf::PdmObjectHandle* objHandle : referringObjects)
{
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
if (summaryCurve)
{
RimSummaryCurveCollection* parentCollection = nullptr;
summaryCurve->firstAncestorOrThisOfType(parentCollection);
if (parentCollection)
{
parentCollection->loadDataAndUpdate();
parentCollection->updateConnectedEditors();
break;
}
}
}
sumCaseColl->removeCase(existingFileSummaryCase); sumCaseColl->removeCase(existingFileSummaryCase);
delete existingFileSummaryCase; delete existingFileSummaryCase;

View File

@ -56,7 +56,7 @@ void RicCloseSummaryCaseFeature::deleteSummaryCases(const std::vector<RimSummary
{ {
for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots) for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots)
{ {
summaryPlot->removeCurvesAssosiatedWithCase(summaryCase); summaryPlot->deleteCurvesAssosiatedWithCase(summaryCase);
} }
summaryPlotColl->updateConnectedEditors(); summaryPlotColl->updateConnectedEditors();

View File

@ -49,7 +49,7 @@ void RicDeleteSummaryCaseCollectionFeature::deleteSummaryCaseCollection(RimSumma
{ {
for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots) for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots)
{ {
summaryPlot->removeCurvesAssosiatedWithCase(summaryCase); summaryPlot->deleteCurvesAssosiatedWithCase(summaryCase);
} }
} }

View File

@ -17,7 +17,9 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#include "RimPlotCurve.h" #include "RimPlotCurve.h"
#include "RimSummaryCurveCollection.h"
#include "RimSummaryCurveFilter.h" #include "RimSummaryCurveFilter.h"
#include "RiuLineSegmentQwtPlotCurve.h" #include "RiuLineSegmentQwtPlotCurve.h"
#include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiComboBoxEditor.h"
@ -186,6 +188,12 @@ void RimPlotCurve::updateCurveVisibility()
this->firstAncestorOrThisOfType(cFilter); this->firstAncestorOrThisOfType(cFilter);
if(cFilter) isVisibleInPossibleParent = cFilter->isCurvesVisible(); if(cFilter) isVisibleInPossibleParent = cFilter->isCurvesVisible();
} }
{
RimSummaryCurveCollection* summaryCurveCollection = nullptr;
this->firstAncestorOrThisOfType(summaryCurveCollection);
if (summaryCurveCollection) isVisibleInPossibleParent = summaryCurveCollection->isCurvesVisible();
}
if (m_showCurve() && m_parentQwtPlot && isVisibleInPossibleParent) if (m_showCurve() && m_parentQwtPlot && isVisibleInPossibleParent)
{ {

View File

@ -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 // ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@ -18,45 +18,19 @@
#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveCollection.h"
//#include "RiaApplication.h"
//
#include "RifReaderEclipseSummary.h" #include "RifReaderEclipseSummary.h"
//
//#include "RigSummaryCaseData.h" #include "RigSummaryCaseData.h"
//
//#include "RiaDefines.h" #include "RiaApplication.h"
//#include "RimEclipseResultCase.h" #include "RimProject.h"
//#include "RimProject.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
//#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
//#include "RimSummaryCurveAppearanceCalculator.h" #include "RimSummaryPlot.h"
//#include "RimSummaryCurveAutoName.h"
//#include "RimSummaryFilter.h" #include "RiuLineSegmentQwtPlotCurve.h"
//#include "RimSummaryPlot.h" #include "RiuSummaryQwtPlot.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<RifEclipseSummaryAddress>& sobj)
//{
// CVF_ASSERT(false);
// return str;
//}
//
//QTextStream& operator >> (QTextStream& str, std::vector<RifEclipseSummaryAddress>& sobj)
//{
// CVF_ASSERT(false);
// return str;
//}
//
//
CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection"); CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -64,6 +38,14 @@ CAF_PDM_SOURCE_INIT(RimSummaryCurveCollection, "RimSummaryCurveCollection");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
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() 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<RimSummaryCase*> selectedCases; curve->loadDataAndUpdate();
selectedCases.push_back(summaryCase);
//m_summaryFilter->setCompleteVarStringFilter(stringFilter);
std::set<std::pair<RimSummaryCase*, RifEclipseSummaryAddress> > newCurveDefinitions;
//createSetOfCasesAndResultAdresses(selectedCases, *m_summaryFilter, &newCurveDefinitions);
//createCurvesFromCurveDefinitions(newCurveDefinitions);
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
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<RimSummaryCurve*> RimSummaryCurveCollection::curves()
{
std::vector<RimSummaryCurve*> myCurves;
for (RimSummaryCurve* curve : m_curves)
{
myCurves.push_back(curve);
}
return myCurves;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCurveCollection::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
{
std::vector<RimSummaryCurve*> 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;
}

View File

@ -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 // ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by // it under the terms of the GNU General Public License as published by
@ -19,35 +19,25 @@
#pragma once #pragma once
//#include "cafPdmField.h"
#include "RiaDefines.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
//#include "cafPdmPointer.h" #include "cafPdmPtrArrayField.h"
//#include "cafPdmPtrField.h"
//#include "cafPdmChildField.h" #include "QPointer"
//#include "cafPdmChildArrayField.h" #include "QList"
//#include "cafAppEnum.h"
//#include "cafPdmPtrArrayField.h" class QwtPlot;
// class QwtPlotCurve;
//#include "RifEclipseSummaryAddress.h"
//
//#include "RiaDefines.h"
//#include "RimSummaryCurveAppearanceCalculator.h"
//
//class QwtPlot;
//class QwtPlotCurve;
//class RifReaderEclipseSummary;
class RimSummaryCase; class RimSummaryCase;
//class RimSummaryCurve; class RimSummaryCurve;
//class RimSummaryFilter; class RiuLineSegmentQwtPlotCurve;
//class RiuLineSegmentQwtPlotCurve;
//class RimSummaryCurveAutoName;
//
//
//Q_DECLARE_METATYPE(RifEclipseSummaryAddress);
//================================================================================================== //==================================================================================================
/// ///
///
//================================================================================================== //==================================================================================================
class RimSummaryCurveCollection : public caf::PdmObject class RimSummaryCurveCollection : public caf::PdmObject
{ {
@ -57,6 +47,31 @@ public:
RimSummaryCurveCollection(); RimSummaryCurveCollection();
virtual ~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<RimSummaryCurve*> curves();
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
void updateCaseNameHasChanged();
private:
caf::PdmFieldHandle* objectToggleField();
private:
caf::PdmPtrArrayField<RimSummaryCase*> m_selectedSummaryCases;
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
}; };

View File

@ -20,16 +20,16 @@
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RimAsciiDataCurve.h"
#include "RimGridTimeHistoryCurve.h" #include "RimGridTimeHistoryCurve.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryCurveFilter.h"
#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveCollection.h"
#include "RimSummaryCurveFilter.h"
#include "RimSummaryCurvesCalculator.h" #include "RimSummaryCurvesCalculator.h"
#include "RimSummaryPlotCollection.h" #include "RimSummaryPlotCollection.h"
#include "RimSummaryTimeAxisProperties.h" #include "RimSummaryTimeAxisProperties.h"
#include "RimSummaryYAxisProperties.h" #include "RimSummaryYAxisProperties.h"
#include "RimAsciiDataCurve.h"
#include "RiuMainPlotWindow.h" #include "RiuMainPlotWindow.h"
#include "RiuSummaryQwtPlot.h" #include "RiuSummaryQwtPlot.h"
@ -44,10 +44,10 @@
#include <QString> #include <QString>
#include <QRectF> #include <QRectF>
#include "qwt_plot_curve.h"
#include "qwt_plot_renderer.h"
#include "qwt_abstract_legend.h" #include "qwt_abstract_legend.h"
#include "qwt_legend.h" #include "qwt_legend.h"
#include "qwt_plot_curve.h"
#include "qwt_plot_renderer.h"
#include "vector" #include "vector"
@ -70,8 +70,9 @@ RimSummaryPlot::RimSummaryPlot()
CAF_PDM_InitFieldNoDefault(&m_curveFilters, "SummaryCurveFilters", "", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_curveFilters, "SummaryCurveFilters", "", "", "", "");
m_curveFilters.uiCapability()->setUiTreeHidden(true); 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", "", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_summaryCurves, "SummaryCurves", "", "", "", "");
m_summaryCurves.uiCapability()->setUiTreeHidden(true); m_summaryCurves.uiCapability()->setUiTreeHidden(true);
@ -84,23 +85,25 @@ RimSummaryPlot::RimSummaryPlot()
CAF_PDM_InitFieldNoDefault(&m_leftYAxisProperties, "LeftYAxisProperties", "Left Y Axis", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_leftYAxisProperties, "LeftYAxisProperties", "Left Y Axis", "", "", "");
m_leftYAxisProperties.uiCapability()->setUiTreeHidden(true); 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", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_rightYAxisProperties, "RightYAxisProperties", "Right Y Axis", "", "", "");
m_rightYAxisProperties.uiCapability()->setUiTreeHidden(true); 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", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_timeAxisProperties, "TimeAxisProperties", "Time Axis", "", "", "");
m_timeAxisProperties.uiCapability()->setUiTreeHidden(true); m_timeAxisProperties.uiCapability()->setUiTreeHidden(true);
m_timeAxisProperties = new RimSummaryTimeAxisProperties;
CAF_PDM_InitField(&m_isAutoZoom, "AutoZoom", true, "Auto Zoom", "", "", ""); CAF_PDM_InitField(&m_isAutoZoom, "AutoZoom", true, "Auto Zoom", "", "", "");
m_isAutoZoom.uiCapability()->setUiHidden(true); 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(); setAsPlotMdiWindow();
} }
@ -115,6 +118,7 @@ RimSummaryPlot::~RimSummaryPlot()
m_summaryCurves.deleteAllChildObjects(); m_summaryCurves.deleteAllChildObjects();
m_curveFilters.deleteAllChildObjects(); m_curveFilters.deleteAllChildObjects();
delete m_summaryCurveCollection;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -189,6 +193,17 @@ time_t RimSummaryPlot::firstTimeStepOfFirstCurve()
} }
} }
if (m_summaryCurveCollection)
{
std::vector<RimSummaryCurve*> curves = m_summaryCurveCollection->curves();
size_t i = 0;
while (firstCurve == nullptr && i < curves.size())
{
firstCurve = curves[i];
++i;
}
}
size_t i = 0; size_t i = 0;
while (firstCurve == nullptr && i < m_summaryCurves.size()) while (firstCurve == nullptr && i < m_summaryCurves.size())
{ {
@ -548,6 +563,17 @@ std::vector<RimSummaryCurve*> 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; return curves;
} }
@ -706,6 +732,12 @@ void RimSummaryPlot::updateCaseNameHasChanged()
{ {
curveFilter->updateCaseNameHasChanged(); curveFilter->updateCaseNameHasChanged();
} }
if (m_summaryCurveCollection)
{
m_summaryCurveCollection->updateCaseNameHasChanged();
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -755,7 +787,8 @@ void RimSummaryPlot::addCurve(RimSummaryCurve* curve)
{ {
if (curve) if (curve)
{ {
m_summaryCurves.push_back(curve); m_summaryCurveCollection->addCurve(curve);
if (m_qwtPlot) if (m_qwtPlot)
{ {
curve->setParentQwtPlot(m_qwtPlot); curve->setParentQwtPlot(m_qwtPlot);
@ -771,15 +804,22 @@ void RimSummaryPlot::deleteCurve(RimSummaryCurve* curve)
{ {
if (curve) if (curve)
{ {
m_summaryCurves.removeChildObject(curve); if (m_summaryCurveCollection)
delete curve; {
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) for (RimSummaryCurveFilter* summaryCurveFilter : m_curveFilters)
{ {
@ -787,6 +827,11 @@ void RimSummaryPlot::removeCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
summaryCurveFilter->removeCurvesAssosiatedWithCase(summaryCase); summaryCurveFilter->removeCurvesAssosiatedWithCase(summaryCase);
} }
if (m_summaryCurveCollection)
{
m_summaryCurveCollection->deleteCurvesAssosiatedWithCase(summaryCase);
}
std::vector<RimSummaryCurve*> summaryCurvesToDelete; std::vector<RimSummaryCurve*> summaryCurvesToDelete;
for (RimSummaryCurve* summaryCurve : m_summaryCurves) 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); axisFolder->add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_curveFilters); uiTreeOrdering.add(&m_curveFilters);
uiTreeOrdering.add(&m_summaryCurveCollection);
uiTreeOrdering.add(&m_summaryCurves); uiTreeOrdering.add(&m_summaryCurves);
uiTreeOrdering.add(&m_gridTimeHistoryCurves); uiTreeOrdering.add(&m_gridTimeHistoryCurves);
uiTreeOrdering.add(&m_asciiDataCurves); uiTreeOrdering.add(&m_asciiDataCurves);
@ -922,10 +984,15 @@ void RimSummaryPlot::loadDataAndUpdate()
{ {
updateMdiWindowVisibility(); updateMdiWindowVisibility();
for (RimSummaryCurveFilter* curveFilter: m_curveFilters) for (RimSummaryCurveFilter* curveFilter: m_curveFilters)
{ {
curveFilter->loadDataAndUpdate(); curveFilter->loadDataAndUpdate();
} }
if (m_summaryCurveCollection)
{
m_summaryCurveCollection->loadDataAndUpdate();
}
for (RimSummaryCurve* curve : m_summaryCurves) for (RimSummaryCurve* curve : m_summaryCurves)
{ {
@ -1031,12 +1098,17 @@ QWidget* RimSummaryPlot::createViewWidget(QWidget* mainWindowParent)
{ {
curveFilter->setParentQwtPlot(m_qwtPlot); curveFilter->setParentQwtPlot(m_qwtPlot);
} }
for(RimSummaryCurve* curve : m_summaryCurves) for (RimSummaryCurve* curve : m_summaryCurves)
{ {
curve->setParentQwtPlot(m_qwtPlot); curve->setParentQwtPlot(m_qwtPlot);
} }
if(m_summaryCurveCollection)
{
m_summaryCurveCollection->setParentQwtPlot(m_qwtPlot);
}
for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves) for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves)
{ {
curve->setParentQwtPlot(m_qwtPlot); curve->setParentQwtPlot(m_qwtPlot);
@ -1107,6 +1179,11 @@ void RimSummaryPlot::detachAllCurves()
curveFilter->detachQwtCurves(); curveFilter->detachQwtCurves();
} }
if (m_summaryCurveCollection)
{
m_summaryCurveCollection->detachQwtCurves();
}
for(RimSummaryCurve* curve : m_summaryCurves) for(RimSummaryCurve* curve : m_summaryCurves)
{ {
curve->detachQwtCurve(); curve->detachQwtCurve();
@ -1158,6 +1235,12 @@ caf::PdmObject* RimSummaryPlot::findRimCurveFromQwtCurve(const QwtPlotCurve* qwt
if (foundCurve) return foundCurve; if (foundCurve) return foundCurve;
} }
if (m_summaryCurveCollection)
{
RimSummaryCurve* foundCurve = m_summaryCurveCollection->findRimCurveFromQwtCurve(qwtCurve);
if (foundCurve) return foundCurve;
}
return NULL; return NULL;
} }

View File

@ -30,19 +30,19 @@
#include <QPointer> #include <QPointer>
class RiuSummaryQwtPlot;
class RimSummaryCurve;
class RimSummaryCase;
class RimSummaryCurveFilter;
class RimSummaryCurveCollection;
class RimSummaryYAxisProperties;
class RimSummaryTimeAxisProperties;
class RimGridTimeHistoryCurve;
class RimAsciiDataCurve;
class PdmUiTreeOrdering; 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 QwtInterval;
class QwtPlotCurve;
//================================================================================================== //==================================================================================================
/// ///
@ -62,7 +62,8 @@ public:
void addCurve(RimSummaryCurve* curve); void addCurve(RimSummaryCurve* curve);
void deleteCurve(RimSummaryCurve* curve); void deleteCurve(RimSummaryCurve* curve);
void addCurveFilter(RimSummaryCurveFilter* curveFilter); void addCurveFilter(RimSummaryCurveFilter* curveFilter);
void removeCurvesAssosiatedWithCase(RimSummaryCase* summaryCase); void setCurveCollection(RimSummaryCurveCollection* curveCollection);
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
void deleteAllTopLevelCurves(); void deleteAllTopLevelCurves();
void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve); void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve);
@ -137,7 +138,7 @@ private:
caf::PdmChildArrayField<RimGridTimeHistoryCurve*> m_gridTimeHistoryCurves; caf::PdmChildArrayField<RimGridTimeHistoryCurve*> m_gridTimeHistoryCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_summaryCurves; caf::PdmChildArrayField<RimSummaryCurve*> m_summaryCurves;
caf::PdmChildArrayField<RimSummaryCurveFilter*> m_curveFilters; caf::PdmChildArrayField<RimSummaryCurveFilter*> m_curveFilters;
caf::PdmChildField<RimSummaryCurveCollection*> m_curveCollection; caf::PdmChildField<RimSummaryCurveCollection*> m_summaryCurveCollection;
caf::PdmChildArrayField<RimAsciiDataCurve*> m_asciiDataCurves; caf::PdmChildArrayField<RimAsciiDataCurve*> m_asciiDataCurves;
caf::PdmField<bool> m_isAutoZoom; caf::PdmField<bool> m_isAutoZoom;