2018-03-27 01:51:14 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// 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
|
|
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
|
|
// (at your option) any later version.
|
|
|
|
//
|
|
|
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
//
|
|
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
|
|
|
// for more details.
|
|
|
|
//
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#include "RimEnsambleCurveSet.h"
|
|
|
|
|
|
|
|
#include "RiaApplication.h"
|
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
#include "RiuSummaryCurveDefSelectionDialog.h"
|
|
|
|
|
2018-03-27 01:51:14 -05:00
|
|
|
#include "RifReaderEclipseSummary.h"
|
|
|
|
|
|
|
|
#include "RimProject.h"
|
|
|
|
#include "RimSummaryCase.h"
|
2018-04-06 01:16:14 -05:00
|
|
|
#include "RimSummaryCaseCollection.h"
|
2018-03-27 01:51:14 -05:00
|
|
|
#include "RimSummaryCrossPlot.h"
|
|
|
|
#include "RimSummaryCurve.h"
|
|
|
|
#include "RimSummaryPlot.h"
|
|
|
|
#include "RimSummaryPlotSourceStepping.h"
|
2018-04-06 01:16:14 -05:00
|
|
|
#include "RimSummaryFilter.h"
|
|
|
|
#include "RimSummaryAddress.h"
|
|
|
|
#include "RimEnsambleCurveSetCollection.h"
|
2018-03-27 01:51:14 -05:00
|
|
|
|
|
|
|
#include "RiuLineSegmentQwtPlotCurve.h"
|
|
|
|
#include "RiuSummaryQwtPlot.h"
|
|
|
|
|
|
|
|
#include "cafPdmUiTreeViewEditor.h"
|
2018-04-06 04:30:48 -05:00
|
|
|
#include "cafPdmUiTreeOrdering.h"
|
2018-04-06 01:16:14 -05:00
|
|
|
#include "cafPdmUiListEditor.h"
|
|
|
|
#include "cafPdmObject.h"
|
|
|
|
#include "cafPdmUiPushButtonEditor.h"
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 04:30:48 -05:00
|
|
|
#include "cvfScalarMapperContinuousLinear.h"
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
#include <QTextStream>
|
2018-03-27 01:51:14 -05:00
|
|
|
#include <QKeyEvent>
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
|
2018-04-06 06:35:47 -05:00
|
|
|
namespace caf
|
2018-04-06 01:16:14 -05:00
|
|
|
{
|
2018-04-06 06:35:47 -05:00
|
|
|
template<>
|
|
|
|
void AppEnum< RimEnsambleCurveSet::ColorMode >::setUp()
|
|
|
|
{
|
|
|
|
addItem(RimEnsambleCurveSet::SINGLE_COLOR, "SINGLE_COLOR", "Single Color");
|
|
|
|
addItem(RimEnsambleCurveSet::BY_ENSAMBLE_PARAM, "BY_ENSAMBLE_PARAM", "By Ensamble Parameter");
|
|
|
|
setDefault(RimEnsambleCurveSet::SINGLE_COLOR);
|
|
|
|
}
|
2018-04-06 01:16:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2018-03-27 01:51:14 -05:00
|
|
|
CAF_PDM_SOURCE_INIT(RimEnsambleCurveSet, "RimEnsambleCurveSet");
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
RimEnsambleCurveSet::RimEnsambleCurveSet()
|
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
CAF_PDM_InitObject("Ensamble Curve Set", ":/SummaryCurveFilter16x16.png", "", "");
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
CAF_PDM_InitFieldNoDefault(&m_curves, "EnsambleCurveSet", "Ensamble Curve Set", "", "", "");
|
2018-03-27 01:51:14 -05:00
|
|
|
m_curves.uiCapability()->setUiHidden(true);
|
|
|
|
m_curves.uiCapability()->setUiTreeChildrenHidden(false);
|
|
|
|
|
|
|
|
CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", "");
|
|
|
|
m_showCurves.uiCapability()->setUiHidden(true);
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//CAF_PDM_InitFieldNoDefault(&m_ySourceStepping, "YSourceStepping", "", "", "", "");
|
|
|
|
//m_ySourceStepping = new RimSummaryPlotSourceStepping;
|
|
|
|
//m_ySourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::Y_AXIS);
|
|
|
|
//m_ySourceStepping.uiCapability()->setUiHidden(true);
|
|
|
|
//m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
//m_ySourceStepping.xmlCapability()->disableIO();
|
|
|
|
|
|
|
|
//CAF_PDM_InitFieldNoDefault(&m_xSourceStepping, "XSourceStepping", "", "", "", "");
|
|
|
|
//m_xSourceStepping = new RimSummaryPlotSourceStepping;
|
|
|
|
//m_xSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::X_AXIS);
|
|
|
|
//m_xSourceStepping.uiCapability()->setUiHidden(true);
|
|
|
|
//m_xSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
//m_xSourceStepping.xmlCapability()->disableIO();
|
|
|
|
|
|
|
|
//CAF_PDM_InitFieldNoDefault(&m_unionSourceStepping, "UnionSourceStepping", "", "", "", "");
|
|
|
|
//m_unionSourceStepping = new RimSummaryPlotSourceStepping;
|
|
|
|
//m_unionSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::UNION_X_Y_AXIS);
|
|
|
|
//m_unionSourceStepping.uiCapability()->setUiHidden(true);
|
|
|
|
//m_unionSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
//m_unionSourceStepping.xmlCapability()->disableIO();
|
|
|
|
|
|
|
|
// Y Values
|
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryGroup, "SummaryGroup", "Group", "", "", "");
|
|
|
|
m_yValuesSummaryGroup.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
m_yValuesSummaryGroup.uiCapability()->setAutoAddingOptionFromValue(false);
|
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yValuesSelectedVariableDisplayField, "SelectedVariableDisplayVar", "Vector", "", "", "");
|
|
|
|
m_yValuesSelectedVariableDisplayField.xmlCapability()->disableIO();
|
2018-04-18 14:38:50 -05:00
|
|
|
m_yValuesSelectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
|
2018-04-06 01:16:14 -05:00
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yValuesSummaryFilter, "VarListFilter", "Filter", "", "", "");
|
|
|
|
m_yValuesSummaryFilter.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
m_yValuesSummaryFilter.uiCapability()->setUiHidden(true);
|
|
|
|
|
|
|
|
m_yValuesSummaryFilter = new RimSummaryFilter;
|
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yValuesUiFilterResultSelection, "FilterResultSelection", "Filter Result", "", "", "");
|
|
|
|
m_yValuesUiFilterResultSelection.xmlCapability()->disableIO();
|
|
|
|
m_yValuesUiFilterResultSelection.uiCapability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
|
|
|
m_yValuesUiFilterResultSelection.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
|
|
|
m_yValuesUiFilterResultSelection.uiCapability()->setAutoAddingOptionFromValue(false);
|
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yValuesCurveVariable, "SummaryAddress", "Summary Address", "", "", "");
|
|
|
|
m_yValuesCurveVariable.uiCapability()->setUiHidden(true);
|
|
|
|
m_yValuesCurveVariable.uiCapability()->setUiTreeChildrenHidden(true);
|
|
|
|
|
|
|
|
CAF_PDM_InitFieldNoDefault(&m_yPushButtonSelectSummaryAddress, "SelectAddress", "", "", "", "");
|
|
|
|
caf::PdmUiPushButtonEditor::configureEditorForField(&m_yPushButtonSelectSummaryAddress);
|
|
|
|
m_yPushButtonSelectSummaryAddress = false;
|
2018-04-18 14:38:50 -05:00
|
|
|
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiReadOnly(true);
|
2018-04-06 01:16:14 -05:00
|
|
|
|
|
|
|
m_yValuesCurveVariable = new RimSummaryAddress;
|
|
|
|
|
|
|
|
CAF_PDM_InitField(&m_colorMode, "ColorMode", caf::AppEnum<ColorMode>(SINGLE_COLOR), "Coloring Mode", "", "", "");
|
|
|
|
|
|
|
|
CAF_PDM_InitField(&m_color, "Color", cvf::Color3f(cvf::Color3::BLACK), "Color", "", "", "");
|
|
|
|
|
|
|
|
CAF_PDM_InitField(&m_ensambleParameter, "EnsambleParameter", QString(""), "Ensamble Parameter", "", "", "");
|
2018-04-06 04:30:48 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
CAF_PDM_InitFieldNoDefault(&m_plotAxis, "PlotAxis", "Axis", "", "", "");
|
|
|
|
|
2018-04-06 04:30:48 -05:00
|
|
|
CAF_PDM_InitFieldNoDefault(&m_legendConfig, "LegendConfig", "", "", "", "");
|
2018-04-18 03:10:39 -05:00
|
|
|
m_legendConfig = new RimRegularLegendConfig();
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
RimEnsambleCurveSet::~RimEnsambleCurveSet()
|
|
|
|
{
|
|
|
|
m_curves.deleteAllChildObjects();
|
2018-04-18 08:58:49 -05:00
|
|
|
|
|
|
|
RimSummaryPlot* parentPlot;
|
|
|
|
firstAncestorOrThisOfTypeAsserted(parentPlot);
|
|
|
|
if (parentPlot->qwtPlot())
|
|
|
|
{
|
|
|
|
parentPlot->qwtPlot()->removeEnsambleCurveSetLegend(this);
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
bool RimEnsambleCurveSet::isCurvesVisible()
|
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
RimEnsambleCurveSetCollection* coll = nullptr;
|
|
|
|
firstAncestorOrThisOfType(coll);
|
|
|
|
return m_showCurves() && (coll ? coll->isCurveSetsVisible() : true);
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
2018-04-18 01:32:16 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::setColor(cvf::Color3f color)
|
|
|
|
{
|
|
|
|
m_color = color;
|
|
|
|
}
|
|
|
|
|
2018-03-27 01:51:14 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::loadDataAndUpdate(bool updateParentPlot)
|
|
|
|
{
|
2018-04-18 14:38:50 -05:00
|
|
|
m_yValuesSelectedVariableDisplayField = QString::fromStdString(m_yValuesCurveVariable->address().uiText());
|
|
|
|
|
|
|
|
m_yValuesSummaryFilter->updateFromAddress(m_yValuesCurveVariable->address());
|
|
|
|
|
2018-03-27 01:51:14 -05:00
|
|
|
for (RimSummaryCurve* curve : m_curves)
|
|
|
|
{
|
|
|
|
curve->loadDataAndUpdate(false);
|
|
|
|
curve->updateQwtPlotAxis();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (updateParentPlot)
|
|
|
|
{
|
|
|
|
RimSummaryPlot* parentPlot;
|
|
|
|
firstAncestorOrThisOfTypeAsserted(parentPlot);
|
|
|
|
if (parentPlot->qwtPlot())
|
|
|
|
{
|
|
|
|
parentPlot->qwtPlot()->updateLegend();
|
|
|
|
parentPlot->updateAxes();
|
|
|
|
parentPlot->updateZoomInQwt();
|
2018-04-18 08:58:49 -05:00
|
|
|
|
|
|
|
if (m_showCurves() && m_colorMode() == BY_ENSAMBLE_PARAM)
|
|
|
|
{
|
|
|
|
parentPlot->qwtPlot()->addOrUpdateEnsambleCurveSetLegend(this);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
parentPlot->qwtPlot()->removeEnsambleCurveSetLegend(this);
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-18 01:32:16 -05:00
|
|
|
void RimEnsambleCurveSet::setParentQwtPlotNoReplot(QwtPlot* plot)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
|
|
|
for (RimSummaryCurve* curve : m_curves)
|
|
|
|
{
|
|
|
|
curve->setParentQwtPlotNoReplot(plot);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::detachQwtCurves()
|
|
|
|
{
|
|
|
|
for (RimSummaryCurve* curve : m_curves)
|
|
|
|
{
|
|
|
|
curve->detachQwtCurve();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
RimSummaryCurve* RimEnsambleCurveSet::findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const
|
|
|
|
{
|
|
|
|
for (RimSummaryCurve* rimCurve : m_curves)
|
|
|
|
{
|
|
|
|
if (rimCurve->qwtPlotCurve() == qwtCurve)
|
|
|
|
{
|
|
|
|
return rimCurve;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::addCurve(RimSummaryCurve* curve)
|
|
|
|
{
|
|
|
|
if (curve)
|
|
|
|
{
|
2018-04-18 01:32:16 -05:00
|
|
|
RimSummaryPlot* plot;
|
|
|
|
firstAncestorOrThisOfType(plot);
|
|
|
|
if (plot) curve->setParentQwtPlotNoReplot(plot->qwtPlot());
|
|
|
|
|
|
|
|
curve->setColor(m_color);
|
2018-03-27 01:51:14 -05:00
|
|
|
m_curves.push_back(curve);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::deleteCurve(RimSummaryCurve* curve)
|
|
|
|
{
|
|
|
|
if (curve)
|
|
|
|
{
|
|
|
|
m_curves.removeChildObject(curve);
|
|
|
|
delete curve;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
std::vector<RimSummaryCurve*> RimEnsambleCurveSet::curves() const
|
|
|
|
{
|
|
|
|
return m_curves.childObjects();
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
std::vector<RimSummaryCurve*> RimEnsambleCurveSet::visibleCurves() const
|
|
|
|
{
|
|
|
|
std::vector<RimSummaryCurve*> visible;
|
|
|
|
|
|
|
|
for (auto c : m_curves)
|
|
|
|
{
|
|
|
|
if (c->isCurveVisible())
|
|
|
|
{
|
|
|
|
visible.push_back(c);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return visible;
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
|
|
|
|
{
|
|
|
|
std::vector<RimSummaryCurve*> summaryCurvesToDelete;
|
|
|
|
|
|
|
|
for (RimSummaryCurve* summaryCurve : m_curves)
|
|
|
|
{
|
|
|
|
if (!summaryCurve) continue;
|
|
|
|
if (!summaryCurve->summaryCaseY()) continue;
|
|
|
|
|
|
|
|
if (summaryCurve->summaryCaseY() == summaryCase)
|
|
|
|
{
|
|
|
|
summaryCurvesToDelete.push_back(summaryCurve);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (RimSummaryCurve* summaryCurve : summaryCurvesToDelete)
|
|
|
|
{
|
|
|
|
m_curves.removeChildObject(summaryCurve);
|
|
|
|
delete summaryCurve;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::deleteAllCurves()
|
|
|
|
{
|
|
|
|
m_curves.deleteAllChildObjects();
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::updateCaseNameHasChanged()
|
|
|
|
{
|
|
|
|
for (RimSummaryCurve* curve : m_curves)
|
|
|
|
{
|
|
|
|
curve->updateCurveNameNoLegendUpdate();
|
|
|
|
curve->updateConnectedEditors();
|
|
|
|
}
|
|
|
|
|
|
|
|
RimSummaryPlot* parentPlot;
|
|
|
|
firstAncestorOrThisOfTypeAsserted(parentPlot);
|
|
|
|
if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend();
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::setCurrentSummaryCurve(RimSummaryCurve* curve)
|
|
|
|
{
|
|
|
|
m_currentSummaryCurve = curve;
|
|
|
|
|
|
|
|
updateConnectedEditors();
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-06 01:16:14 -05:00
|
|
|
//std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSet::fieldsToShowInToolbar()
|
|
|
|
//{
|
|
|
|
// RimSummaryCrossPlot* parentCrossPlot;
|
|
|
|
// firstAncestorOrThisOfType(parentCrossPlot);
|
|
|
|
//
|
|
|
|
// if (parentCrossPlot)
|
|
|
|
// {
|
|
|
|
// return m_unionSourceStepping->fieldsToShowInToolbar();
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// return m_ySourceStepping()->fieldsToShowInToolbar();
|
|
|
|
//}
|
2018-03-27 01:51:14 -05:00
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::handleKeyPressEvent(QKeyEvent* keyEvent)
|
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
//if (!keyEvent) return;
|
|
|
|
|
|
|
|
//RimSummaryPlotSourceStepping* sourceStepping = nullptr;
|
|
|
|
//{
|
|
|
|
// RimSummaryCrossPlot* summaryCrossPlot = nullptr;
|
|
|
|
// this->firstAncestorOrThisOfType(summaryCrossPlot);
|
|
|
|
|
|
|
|
// if (summaryCrossPlot)
|
|
|
|
// {
|
|
|
|
// sourceStepping = m_unionSourceStepping();
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// sourceStepping = m_ySourceStepping();
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
//if (keyEvent->key() == Qt::Key_PageUp)
|
|
|
|
//{
|
|
|
|
// if (keyEvent->modifiers() & Qt::ShiftModifier)
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyPrevCase();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
// else if (keyEvent->modifiers() & Qt::ControlModifier)
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyPrevOtherIdentifier();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyPrevQuantity();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
//else if (keyEvent->key() == Qt::Key_PageDown)
|
|
|
|
//{
|
|
|
|
// if (keyEvent->modifiers() & Qt::ShiftModifier)
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyNextCase();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
// else if (keyEvent->modifiers() & Qt::ControlModifier)
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyNextOtherIdentifier();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// sourceStepping->applyNextQuantity();
|
|
|
|
|
|
|
|
// keyEvent->accept();
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-18 08:58:49 -05:00
|
|
|
RimRegularLegendConfig* RimEnsambleCurveSet::legendConfig()
|
|
|
|
{
|
|
|
|
return m_legendConfig;
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-06 01:16:14 -05:00
|
|
|
void RimEnsambleCurveSet::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
|
|
|
{
|
2018-04-18 14:38:50 -05:00
|
|
|
RimSummaryPlot* plot = nullptr;
|
|
|
|
firstAncestorOrThisOfType(plot);
|
|
|
|
CVF_ASSERT(plot);
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
if (changedField == &m_showCurves)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
loadDataAndUpdate(true);
|
|
|
|
}
|
2018-04-18 14:38:50 -05:00
|
|
|
else if (changedField == &m_yValuesUiFilterResultSelection)
|
2018-04-06 01:16:14 -05:00
|
|
|
{
|
2018-04-18 14:38:50 -05:00
|
|
|
m_yValuesCurveVariable->setAddress(m_yValuesUiFilterResultSelection());
|
2018-04-06 01:16:14 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
createNewCurves();
|
2018-04-06 01:16:14 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
//RiuMainPlotWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();
|
|
|
|
//mainPlotWindow->updateSummaryPlotToolBar();
|
|
|
|
}
|
|
|
|
else if (changedField == &m_yValuesSummaryGroup)
|
|
|
|
{
|
|
|
|
createNewCurves();
|
2018-04-06 01:16:14 -05:00
|
|
|
}
|
2018-04-18 01:32:16 -05:00
|
|
|
else if (changedField == &m_ensambleParameter ||
|
|
|
|
changedField == &m_color ||
|
|
|
|
changedField == &m_colorMode)
|
2018-04-06 01:16:14 -05:00
|
|
|
{
|
2018-04-18 01:32:16 -05:00
|
|
|
updateCurveColors();
|
2018-04-06 01:16:14 -05:00
|
|
|
}
|
2018-04-18 14:38:50 -05:00
|
|
|
else if (changedField == &m_plotAxis)
|
|
|
|
{
|
|
|
|
for (RimSummaryCurve* curve : curves())
|
|
|
|
{
|
|
|
|
curve->setLeftOrRightAxisY(m_plotAxis());
|
|
|
|
}
|
|
|
|
updateQwtPlotAxis();
|
|
|
|
plot->updateAxes();
|
|
|
|
}
|
|
|
|
else if (changedField == &m_yPushButtonSelectSummaryAddress)
|
|
|
|
{
|
|
|
|
//RiuSummaryCurveDefSelectionDialog dlg(nullptr);
|
|
|
|
//RimSummaryCase* candidateCase = m_yValuesSummaryCase();
|
|
|
|
//RifEclipseSummaryAddress candicateAddress = m_yValuesCurveVariable->address();
|
|
|
|
|
|
|
|
//if (candidateCase == nullptr)
|
|
|
|
//{
|
|
|
|
// candidateCase = m_xValuesSummaryCase();
|
|
|
|
//}
|
|
|
|
|
|
|
|
//if (!candicateAddress.isValid())
|
|
|
|
//{
|
|
|
|
// candicateAddress = m_xValuesCurveVariable->address();
|
|
|
|
//}
|
|
|
|
|
|
|
|
//dlg.setCaseAndAddress(candidateCase, candicateAddress);
|
|
|
|
|
|
|
|
//if (dlg.exec() == QDialog::Accepted)
|
|
|
|
//{
|
|
|
|
// auto curveSelection = dlg.curveSelection();
|
|
|
|
// if (curveSelection.size() > 0)
|
|
|
|
// {
|
|
|
|
// m_yValuesSummaryCase = curveSelection[0].summaryCase();
|
|
|
|
// m_yValuesCurveVariable->setAddress(curveSelection[0].summaryAddress());
|
|
|
|
|
|
|
|
// crossPlotTestForMatchingTimeSteps = true;
|
|
|
|
// loadAndUpdate = true;
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
//m_yPushButtonSelectSummaryAddress = false;
|
|
|
|
}
|
2018-04-06 01:16:14 -05:00
|
|
|
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
|
|
|
{
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
QString curveDataGroupName = "Summary Vector";
|
|
|
|
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword(curveDataGroupName, "Summary Vector Y");
|
|
|
|
curveDataGroup->add(&m_yValuesSummaryGroup);
|
|
|
|
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
|
2018-04-18 14:38:50 -05:00
|
|
|
curveDataGroup->add(&m_plotAxis);
|
2018-04-06 01:16:14 -05:00
|
|
|
curveDataGroup->add(&m_yPushButtonSelectSummaryAddress);
|
|
|
|
|
|
|
|
QString curveVarSelectionGroupName = "Vector Selection Filter Y";
|
|
|
|
caf::PdmUiGroup* curveVarSelectionGroup = curveDataGroup->addNewGroupWithKeyword("Vector Selection Filter", curveVarSelectionGroupName);
|
|
|
|
curveVarSelectionGroup->setCollapsedByDefault(true);
|
|
|
|
m_yValuesSummaryFilter->uiOrdering(uiConfigName, *curveVarSelectionGroup);
|
|
|
|
curveVarSelectionGroup->add(&m_yValuesUiFilterResultSelection);
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
caf::PdmUiGroup* colorsGroup = uiOrdering.addNewGroup("Colors");
|
|
|
|
colorsGroup->add(&m_colorMode);
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
if (m_colorMode == SINGLE_COLOR)
|
|
|
|
{
|
|
|
|
colorsGroup->add(&m_color);
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
2018-04-06 01:16:14 -05:00
|
|
|
else if (m_colorMode == BY_ENSAMBLE_PARAM)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
colorsGroup->add(&m_ensambleParameter);
|
|
|
|
}
|
|
|
|
uiOrdering.skipRemainingFields(true);
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//RimSummaryCrossPlot* parentCrossPlot;
|
|
|
|
//firstAncestorOrThisOfType(parentCrossPlot);
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//if (parentCrossPlot)
|
|
|
|
//{
|
|
|
|
// {
|
|
|
|
// auto group = uiOrdering.addNewGroup("Y Source Stepping");
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
// m_ySourceStepping()->uiOrdering(uiConfigName, *group);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// {
|
|
|
|
// auto group = uiOrdering.addNewGroup("X Source Stepping");
|
|
|
|
|
|
|
|
// m_xSourceStepping()->uiOrdering(uiConfigName, *group);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// {
|
|
|
|
// auto group = uiOrdering.addNewGroup("XY Union Source Stepping");
|
|
|
|
|
|
|
|
// m_unionSourceStepping()->uiOrdering(uiConfigName, *group);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
//else
|
|
|
|
//{
|
|
|
|
// auto group = uiOrdering.addNewGroup("Plot Source Stepping");
|
|
|
|
|
|
|
|
// m_ySourceStepping()->uiOrdering(uiConfigName, *group);
|
|
|
|
//}
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
2018-04-06 04:30:48 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/)
|
|
|
|
{
|
|
|
|
uiTreeOrdering.add(m_legendConfig());
|
|
|
|
uiTreeOrdering.skipRemainingChildren(true);
|
|
|
|
}
|
|
|
|
|
2018-03-27 01:51:14 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-06 01:16:14 -05:00
|
|
|
caf::PdmFieldHandle* RimEnsambleCurveSet::objectToggleField()
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
return &m_showCurves;
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-18 14:38:50 -05:00
|
|
|
void RimEnsambleCurveSet::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
|
2018-04-06 01:16:14 -05:00
|
|
|
{
|
2018-04-18 14:38:50 -05:00
|
|
|
//caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast<caf::PdmUiTreeViewEditorAttribute*>(attribute);
|
|
|
|
//if (myAttr && m_currentSummaryCurve.notNull())
|
|
|
|
//{
|
|
|
|
// myAttr->currentObject = m_currentSummaryCurve.p();
|
|
|
|
//}
|
|
|
|
|
|
|
|
caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*> (attribute);
|
|
|
|
if (attrib)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-18 14:38:50 -05:00
|
|
|
attrib->m_buttonText = "Vector Selection Dialog";
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-06 01:16:14 -05:00
|
|
|
QList<caf::PdmOptionItemInfo> RimEnsambleCurveSet::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
QList<caf::PdmOptionItemInfo> options;
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
if (fieldNeedingOptions == &m_yValuesSummaryGroup)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
RimProject* proj = RiaApplication::instance()->project();
|
|
|
|
std::vector<RimSummaryCaseCollection*> groups = proj->summaryGroups();
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
for (RimSummaryCaseCollection* group : groups)
|
|
|
|
{
|
|
|
|
options.push_back(caf::PdmOptionItemInfo(group->name(), group));
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
options.push_front(caf::PdmOptionItemInfo("None", nullptr));
|
|
|
|
}
|
|
|
|
else if (fieldNeedingOptions == &m_ensambleParameter)
|
|
|
|
{
|
|
|
|
RimSummaryCaseCollection* group = m_yValuesSummaryGroup;
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 04:30:48 -05:00
|
|
|
//options.push_back(caf::PdmOptionItemInfo("None", ""));
|
2018-03-27 01:51:14 -05:00
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
if (group)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
std::set<QString> paramSet;
|
|
|
|
for (RimSummaryCase* rimCase : group->allSummaryCases())
|
|
|
|
{
|
|
|
|
if (!rimCase->caseRealizationParameters().isNull())
|
|
|
|
{
|
|
|
|
auto ps = rimCase->caseRealizationParameters()->parameters();
|
|
|
|
for (auto p : ps) paramSet.insert(p.first);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (auto param : paramSet)
|
|
|
|
{
|
|
|
|
options.push_back(caf::PdmOptionItemInfo(param, param));
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
}
|
2018-04-18 14:38:50 -05:00
|
|
|
else if (fieldNeedingOptions == &m_yValuesUiFilterResultSelection)
|
|
|
|
{
|
|
|
|
appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryGroup(), m_yValuesSummaryFilter());
|
|
|
|
}
|
2018-04-06 01:16:14 -05:00
|
|
|
else if (fieldNeedingOptions == &m_yValuesSelectedVariableDisplayField)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
//RimSummaryCaseCollection* group = m_yValuesSummaryGroup;
|
|
|
|
//std::map<QString, RifEclipseSummaryAddress> allOpts;
|
2018-04-06 01:16:14 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
//if (group)
|
|
|
|
//{
|
|
|
|
// for (auto& sumCase : group->allSummaryCases())
|
|
|
|
// {
|
|
|
|
// std::map<QString, RifEclipseSummaryAddress> opts;
|
|
|
|
// RimSummaryFilter filter;
|
|
|
|
// getOptionsForSummaryAddresses(&opts, sumCase, &filter);
|
2018-04-06 01:16:14 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
// for (auto& opt : opts) allOpts.insert(opt);
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
|
|
|
|
//for (const auto& opt : allOpts) options.push_back(caf::PdmOptionItemInfo(opt.first, QVariant::fromValue(opt.second)));
|
|
|
|
//options.push_front(caf::PdmOptionItemInfo(RiaDefines::undefinedResultName(), QVariant::fromValue(RifEclipseSummaryAddress())));
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
2018-04-06 01:16:14 -05:00
|
|
|
//else if (fieldNeedingOptions == &m_yValuesUiFilterResultSelection)
|
|
|
|
//{
|
|
|
|
// appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryCase(), m_yValuesSummaryFilter());
|
|
|
|
//}
|
|
|
|
|
|
|
|
return options;
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
2018-04-06 01:16:14 -05:00
|
|
|
void RimEnsambleCurveSet::getOptionsForSummaryAddresses(std::map<QString, RifEclipseSummaryAddress>* options,
|
|
|
|
RimSummaryCase* summaryCase,
|
|
|
|
RimSummaryFilter* summaryFilter)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
if (summaryCase)
|
2018-03-27 01:51:14 -05:00
|
|
|
{
|
2018-04-06 01:16:14 -05:00
|
|
|
RifSummaryReaderInterface* reader = summaryCase->summaryReader();
|
|
|
|
if (reader)
|
|
|
|
{
|
|
|
|
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
|
|
|
|
|
|
|
for (auto& address : allAddresses)
|
|
|
|
{
|
|
|
|
if (summaryFilter && !summaryFilter->isIncludedByFilter(address)) continue;
|
|
|
|
|
|
|
|
std::string name = address.uiText();
|
|
|
|
QString s = QString::fromStdString(name);
|
|
|
|
options->insert(std::make_pair(s, address));
|
|
|
|
}
|
|
|
|
}
|
2018-03-27 01:51:14 -05:00
|
|
|
}
|
|
|
|
}
|
2018-04-18 01:32:16 -05:00
|
|
|
|
2018-04-18 14:38:50 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::appendOptionItemsForSummaryAddresses(QList<caf::PdmOptionItemInfo>* options,
|
|
|
|
RimSummaryCaseCollection* summaryCaseGroup,
|
|
|
|
RimSummaryFilter* summaryFilter)
|
|
|
|
{
|
|
|
|
// BEJ
|
|
|
|
RimSummaryCase* summaryCase = summaryCaseGroup->allSummaryCases().front();
|
|
|
|
|
|
|
|
if (summaryCase)
|
|
|
|
{
|
|
|
|
RifSummaryReaderInterface* reader = summaryCase->summaryReader();
|
|
|
|
if (reader)
|
|
|
|
{
|
|
|
|
const std::vector<RifEclipseSummaryAddress> allAddresses = reader->allResultAddresses();
|
|
|
|
|
|
|
|
for (auto& address : allAddresses)
|
|
|
|
{
|
|
|
|
if (summaryFilter && !summaryFilter->isIncludedByFilter(address)) continue;
|
|
|
|
|
|
|
|
std::string name = address.uiText();
|
|
|
|
QString s = QString::fromStdString(name);
|
|
|
|
options->push_back(caf::PdmOptionItemInfo(s, QVariant::fromValue(address)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
options->push_front(caf::PdmOptionItemInfo(RiaDefines::undefinedResultName(), QVariant::fromValue(RifEclipseSummaryAddress())));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-04-18 01:32:16 -05:00
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::updateCurveColors()
|
|
|
|
{
|
|
|
|
if(m_colorMode == BY_ENSAMBLE_PARAM)
|
|
|
|
{
|
|
|
|
RimSummaryCaseCollection* group = m_yValuesSummaryGroup();
|
|
|
|
QString parameterName = m_ensambleParameter();
|
|
|
|
if (group && !parameterName.isEmpty())
|
|
|
|
{
|
|
|
|
double minValue = HUGE_VAL;
|
|
|
|
double maxValue = -HUGE_VAL;
|
|
|
|
|
|
|
|
for (RimSummaryCase* rimCase : group->allSummaryCases())
|
|
|
|
{
|
|
|
|
if (!rimCase->caseRealizationParameters().isNull())
|
|
|
|
{
|
|
|
|
double value = rimCase->caseRealizationParameters()->parameterValue(parameterName);
|
|
|
|
if (value != HUGE_VAL)
|
|
|
|
{
|
|
|
|
if (value < minValue) minValue = value;
|
|
|
|
if (value > maxValue) maxValue = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
cvf::ScalarMapperContinuousLinear colorMapper;
|
|
|
|
colorMapper.setRange(minValue, maxValue);
|
|
|
|
|
|
|
|
for (auto& curve : m_curves)
|
|
|
|
{
|
|
|
|
RimSummaryCase* rimCase = curve->summaryCaseY();
|
|
|
|
double value = rimCase->caseRealizationParameters()->parameterValue(parameterName);
|
|
|
|
curve->setColor(cvf::Color3f(colorMapper.mapToColor(value)));
|
|
|
|
curve->updateCurveAppearance();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (m_colorMode == SINGLE_COLOR)
|
|
|
|
{
|
|
|
|
for (auto& curve : m_curves)
|
|
|
|
{
|
|
|
|
curve->setColor(m_color);
|
|
|
|
curve->updateCurveAppearance();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
RimSummaryPlot* plot;
|
|
|
|
firstAncestorOrThisOfType(plot);
|
|
|
|
if (plot && plot->qwtPlot()) plot->qwtPlot()->replot();
|
|
|
|
}
|
2018-04-18 14:38:50 -05:00
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::updateQwtPlotAxis()
|
|
|
|
{
|
|
|
|
for (RimSummaryCurve* curve : curves())
|
|
|
|
{
|
|
|
|
curve->updateQwtPlotAxis();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
///
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
|
|
void RimEnsambleCurveSet::createNewCurves()
|
|
|
|
{
|
|
|
|
RimSummaryPlot* plot = nullptr;
|
|
|
|
firstAncestorOrThisOfType(plot);
|
|
|
|
CVF_ASSERT(plot);
|
|
|
|
|
|
|
|
deleteAllCurves();
|
|
|
|
|
|
|
|
plot->loadDataAndUpdate();
|
|
|
|
|
|
|
|
RimSummaryCaseCollection* group = m_yValuesSummaryGroup();
|
|
|
|
RimSummaryAddress* addr = m_yValuesCurveVariable();
|
|
|
|
if (group && plot && addr->address().category() != RifEclipseSummaryAddress::SUMMARY_INVALID)
|
|
|
|
{
|
|
|
|
for (auto& sumCase : group->allSummaryCases())
|
|
|
|
{
|
|
|
|
RimSummaryCurve* curve = new RimSummaryCurve();
|
|
|
|
curve->setSummaryCaseY(sumCase);
|
|
|
|
curve->setSummaryAddressY(addr->address());
|
|
|
|
|
|
|
|
addCurve(curve);
|
|
|
|
|
|
|
|
curve->updateCurveVisibility(true);
|
|
|
|
curve->loadDataAndUpdate(true);
|
|
|
|
}
|
|
|
|
|
|
|
|
RimSummaryPlot* plot;
|
|
|
|
firstAncestorOrThisOfType(plot);
|
|
|
|
if (plot->qwtPlot())
|
|
|
|
{
|
|
|
|
plot->qwtPlot()->replot();
|
|
|
|
plot->updateAxes();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
updateCurveColors();
|
|
|
|
}
|