#2610 New command, display ensamble curves with single color

This commit is contained in:
Bjørn Erik Jensen 2018-04-06 08:16:14 +02:00
parent 43f1101f1f
commit 21a81744f1
18 changed files with 893 additions and 381 deletions

View File

@ -32,6 +32,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculatorDialog.h
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculatorEditor.h
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryEnsambleCurveSetFeature.h
)
set (SOURCE_GROUP_SOURCE_FILES
@ -67,6 +68,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculatorDialog.cpp
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculatorEditor.cpp
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryEnsambleCurveSetFeature.cpp
)
list(APPEND CODE_HEADER_FILES

View File

@ -0,0 +1,101 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2016- 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 "RicNewSummaryEnsambleCurveSetFeature.h"
#include "RiaApplication.h"
#include "RimMainPlotCollection.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RiaSummaryTools.h"
#include "RimSummaryCaseMainCollection.h"
#include "RimSummaryCurve.h"
#include "RimSummaryPlot.h"
#include "RimSummaryPlotCollection.h"
#include "RimEnsambleCurveSet.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RiuMainPlotWindow.h"
#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h"
#include "cafSelectionManager.h"
#include "cvfAssert.h"
#include <QAction>
CAF_CMD_SOURCE_INIT(RicNewSummaryEnsambleCurveSetFeature, "RicNewSummaryEnsambleCurveSetFeature");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicNewSummaryEnsambleCurveSetFeature::isCommandEnabled()
{
return (selectedSummaryPlot());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicNewSummaryEnsambleCurveSetFeature::onActionTriggered(bool isChecked)
{
RimProject* project = RiaApplication::instance()->project();
CVF_ASSERT(project);
RimSummaryPlot* plot = selectedSummaryPlot();
if (plot)
{
RimEnsambleCurveSet* curveSet = new RimEnsambleCurveSet();
plot->ensambleCurveSets()->addCurveSet(curveSet);
plot->updateConnectedEditors();
RiaApplication::instance()->getOrCreateAndShowMainPlotWindow()->selectAsCurrentItem(curveSet);
RiuMainPlotWindow* mainPlotWindow = RiaApplication::instance()->mainPlotWindow();
mainPlotWindow->updateSummaryPlotToolBar();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicNewSummaryEnsambleCurveSetFeature::setupActionLook(QAction* actionToSetup)
{
actionToSetup->setText("New Summary Ensamble Curve Set");
actionToSetup->setIcon(QIcon(":/SummaryCurve16x16.png"));
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryPlot* RicNewSummaryEnsambleCurveSetFeature::selectedSummaryPlot() const
{
RimSummaryPlot* sumPlot = nullptr;
caf::PdmObject* selObj = dynamic_cast<caf::PdmObject*>(caf::SelectionManager::instance()->selectedItem());
if (selObj)
{
sumPlot = RiaSummaryTools::parentSummaryPlot(selObj);
}
return sumPlot;
}

View File

@ -0,0 +1,41 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2016- 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.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "cafCmdFeature.h"
#include <vector>
class RimSummaryPlot;
//==================================================================================================
///
//==================================================================================================
class RicNewSummaryEnsambleCurveSetFeature : public caf::CmdFeature
{
CAF_CMD_HEADER_INIT;
protected:
// Overrides
virtual bool isCommandEnabled();
virtual void onActionTriggered( bool isChecked );
virtual void setupActionLook( QAction* actionToSetup );
private:
RimSummaryPlot* selectedSummaryPlot() const;
};

View File

@ -40,6 +40,8 @@
#include "RimSummaryPlot.h"
#include "RimSummaryPlotCollection.h"
#include "RimSummaryCalculationCollection.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RimEnsambleCurveSet.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuSummaryCurveDefSelection.h"
@ -540,6 +542,23 @@ void RicSummaryCurveCreator::updateTargetPlot()
copyCurveAndAddToPlot(editedCurve, m_targetPlot);
}
// DEBUG
//{
// m_targetPlot->ensambleCurveSets()->deleteAllCurveSets();
// RimEnsambleCurveSet* curveSet = new RimEnsambleCurveSet();
// m_targetPlot->ensambleCurveSets()->addCurveSet(curveSet);
// for (const auto& editedCurve : m_previewPlot->summaryCurves())
// {
// if (!editedCurve->isCurveVisible())
// {
// continue;
// }
// copyEnsambleCurveAndAddToPlot(editedCurve, curveSet);
// }
//}
m_targetPlot->enableAutoPlotTitle(m_useAutoPlotTitleProxy());
m_targetPlot->loadDataAndUpdate();
@ -570,6 +589,30 @@ void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve *curve,
curveCopy->loadDataAndUpdate(false);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::copyEnsambleCurveAndAddToPlot(const RimSummaryCurve *curve, RimEnsambleCurveSet *curveSet, bool forceVisible)
{
RimSummaryCurve* curveCopy = dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
CVF_ASSERT(curveCopy);
if (forceVisible)
{
curveCopy->setCurveVisiblity(true);
}
curveSet->addCurve(curveCopy);
// Resolve references after object has been inserted into the project data model
curveCopy->resolveReferencesRecursively();
// The curve creator is not a descendant of the project, and need to be set manually
curveCopy->setSummaryCaseY(curve->summaryCaseY());
curveCopy->initAfterReadRecursively();
curveCopy->loadDataAndUpdate(false);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -41,6 +41,7 @@ class RimSummaryCase;
class RimSummaryCurveAutoName;
class RimSummaryPlot;
class RiaSummaryCurveDefinition;
class RimEnsambleCurveSet;
//==================================================================================================
///
@ -85,6 +86,7 @@ private:
void populateCurveCreator(const RimSummaryPlot& sourceSummaryPlot);
void updateTargetPlot();
static void copyCurveAndAddToPlot(const RimSummaryCurve *curve, RimSummaryPlot *plot, bool forceVisible = false);
static void copyEnsambleCurveAndAddToPlot(const RimSummaryCurve *curve, RimEnsambleCurveSet* curveSet, bool forceVisible = false);
void setDefaultCurveSelection();
void resetAllFields();

View File

@ -35,6 +35,7 @@
#include "RimEclipsePropertyFilterCollection.h"
#include "RimEclipseStatisticsCase.h"
#include "RimEclipseView.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RimFaultInView.h"
#include "RimFlowCharacteristicsPlot.h"
#include "RimFlowDiagSolution.h"
@ -440,6 +441,10 @@ caf::CmdFeatureMenuBuilder RimContextCommandBuilder::commandsFromSelection()
menuBuilder << "RicNewSummaryCurveFeature";
menuBuilder << "RicNewSummaryCrossPlotCurveFeature";
}
else if (dynamic_cast<RimEnsambleCurveSetCollection*>(uiItem))
{
menuBuilder << "RicNewSummaryEnsambleCurveSetFeature";
}
else if (dynamic_cast<RimSummaryCase*>(uiItem))
{
if (!dynamic_cast<RimObservedData*>(uiItem))

View File

@ -19,6 +19,7 @@
#include "RimPlotCurve.h"
#include "RimSummaryCurveCollection.h"
#include "RimSummaryCurveFilter.h"
#include "RimEnsambleCurveSet.h"
#include "RiuLineSegmentQwtPlotCurve.h"
@ -188,6 +189,10 @@ void RimPlotCurve::updateCurveVisibility(bool updateParentPlot)
RimSummaryCurveCollection* summaryCurveCollection = nullptr;
this->firstAncestorOrThisOfType(summaryCurveCollection);
if (summaryCurveCollection) isVisibleInPossibleParent = summaryCurveCollection->isCurvesVisible();
RimEnsambleCurveSet* ensambleCurveSet = nullptr;
firstAncestorOrThisOfType(ensambleCurveSet);
if (ensambleCurveSet) isVisibleInPossibleParent = ensambleCurveSet->isCurvesVisible();
}
if (m_showCurve() && m_parentQwtPlot && isVisibleInPossibleParent)

View File

@ -100,6 +100,8 @@ public:
void setZOrder(double z);
virtual void updateCurveAppearance();
protected:
virtual QString createCurveAutoName() = 0;
@ -107,7 +109,6 @@ protected:
virtual void onLoadDataAndUpdate(bool updateParentPlot) = 0;
void updateCurvePresentation(bool updatePlotLegend);
virtual void updateCurveAppearance();
void updateOptionSensitivity();

View File

@ -602,6 +602,27 @@ std::vector<RimSummaryCase*> RimProject::allSummaryCases() const
return sumCases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCaseCollection*> RimProject::summaryGroups() const
{
std::vector<RimSummaryCaseCollection*> groups;
for (RimOilField* oilField : oilFields)
{
if (!oilField) continue;
RimSummaryCaseMainCollection* sumCaseMainColl = oilField->summaryCaseMainCollection();
if (sumCaseMainColl)
{
std::vector<RimSummaryCaseCollection*> g = sumCaseMainColl->summaryCaseCollections();
groups.insert(groups.end(), g.begin(), g.end());
}
}
return groups;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -47,6 +47,7 @@ class RimObservedData;
class RimOilField;
class RimScriptCollection;
class RimSummaryCase;
class RimSummaryCaseCollection;
class Rim3dView;
class RimGridView;
class RimViewLinker;
@ -106,6 +107,7 @@ public:
void allCases(std::vector<RimCase*>& cases);
std::vector<RimSummaryCase*> allSummaryCases() const;
std::vector<RimSummaryCaseCollection*> summaryGroups() const;
void allVisibleViews(std::vector<Rim3dView*>& views);
void allVisibleGridViews(std::vector<RimGridView*>& views);

View File

@ -24,18 +24,49 @@
#include "RimProject.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCrossPlot.h"
#include "RimSummaryCurve.h"
#include "RimSummaryPlot.h"
#include "RimSummaryPlotSourceStepping.h"
#include "RimSummaryFilter.h"
#include "RimSummaryAddress.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RiuLineSegmentQwtPlotCurve.h"
#include "RiuSummaryQwtPlot.h"
#include "cafPdmUiTreeViewEditor.h"
#include "cafPdmUiListEditor.h"
#include "cafPdmObject.h"
#include "cafPdmUiPushButtonEditor.h"
#include <QTextStream>
#include <QKeyEvent>
// See also corresponding fake implementations in RimSummaryCurveFilter
static QTextStream& operator << (QTextStream& str, const RifEclipseSummaryAddress& sobj)
{
CVF_ASSERT(false);
return str;
}
static QTextStream& operator >> (QTextStream& str, RifEclipseSummaryAddress& sobj)
{
CVF_ASSERT(false);
return str;
}
template<>
void caf::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);
}
CAF_PDM_SOURCE_INIT(RimEnsambleCurveSet, "RimEnsambleCurveSet");
//--------------------------------------------------------------------------------------------------
@ -43,35 +74,73 @@ CAF_PDM_SOURCE_INIT(RimEnsambleCurveSet, "RimEnsambleCurveSet");
//--------------------------------------------------------------------------------------------------
RimEnsambleCurveSet::RimEnsambleCurveSet()
{
CAF_PDM_InitObject("Summary Curves", ":/SummaryCurveFilter16x16.png", "", "");
CAF_PDM_InitObject("Ensamble Curve Set", ":/SummaryCurveFilter16x16.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_curves, "CollectionCurves", "Collection Curves", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_curves, "EnsambleCurveSet", "Ensamble Curve Set", "", "", "");
m_curves.uiCapability()->setUiHidden(true);
m_curves.uiCapability()->setUiTreeChildrenHidden(false);
CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", "");
m_showCurves.uiCapability()->setUiHidden(true);
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_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_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();
//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();
//m_yValuesSelectedVariableDisplayField.uiCapability()->setUiReadOnly(true);
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;
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", "", "", "");
}
//--------------------------------------------------------------------------------------------------
@ -87,7 +156,9 @@ RimEnsambleCurveSet::~RimEnsambleCurveSet()
//--------------------------------------------------------------------------------------------------
bool RimEnsambleCurveSet::isCurvesVisible()
{
return m_showCurves();
RimEnsambleCurveSetCollection* coll = nullptr;
firstAncestorOrThisOfType(coll);
return m_showCurves() && (coll ? coll->isCurveSetsVisible() : true);
}
//--------------------------------------------------------------------------------------------------
@ -265,83 +336,83 @@ void RimEnsambleCurveSet::setCurrentSummaryCurve(RimSummaryCurve* curve)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSet::fieldsToShowInToolbar()
{
RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot)
{
return m_unionSourceStepping->fieldsToShowInToolbar();
}
return m_ySourceStepping()->fieldsToShowInToolbar();
}
//std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSet::fieldsToShowInToolbar()
//{
// RimSummaryCrossPlot* parentCrossPlot;
// firstAncestorOrThisOfType(parentCrossPlot);
//
// if (parentCrossPlot)
// {
// return m_unionSourceStepping->fieldsToShowInToolbar();
// }
//
// return m_ySourceStepping()->fieldsToShowInToolbar();
//}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSet::handleKeyPressEvent(QKeyEvent* keyEvent)
{
if (!keyEvent) return;
//if (!keyEvent) return;
RimSummaryPlotSourceStepping* sourceStepping = nullptr;
{
RimSummaryCrossPlot* summaryCrossPlot = nullptr;
this->firstAncestorOrThisOfType(summaryCrossPlot);
//RimSummaryPlotSourceStepping* sourceStepping = nullptr;
//{
// RimSummaryCrossPlot* summaryCrossPlot = nullptr;
// this->firstAncestorOrThisOfType(summaryCrossPlot);
if (summaryCrossPlot)
{
sourceStepping = m_unionSourceStepping();
}
else
{
sourceStepping = m_ySourceStepping();
}
}
// if (summaryCrossPlot)
// {
// sourceStepping = m_unionSourceStepping();
// }
// else
// {
// sourceStepping = m_ySourceStepping();
// }
//}
if (keyEvent->key() == Qt::Key_PageUp)
{
if (keyEvent->modifiers() & Qt::ShiftModifier)
{
sourceStepping->applyPrevCase();
//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 if (keyEvent->modifiers() & Qt::ControlModifier)
// {
// sourceStepping->applyPrevOtherIdentifier();
keyEvent->accept();
}
else
{
sourceStepping->applyPrevQuantity();
// 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->key() == Qt::Key_PageDown)
//{
// if (keyEvent->modifiers() & Qt::ShiftModifier)
// {
// sourceStepping->applyNextCase();
keyEvent->accept();
}
else if (keyEvent->modifiers() & Qt::ControlModifier)
{
sourceStepping->applyNextOtherIdentifier();
// keyEvent->accept();
// }
// else if (keyEvent->modifiers() & Qt::ControlModifier)
// {
// sourceStepping->applyNextOtherIdentifier();
keyEvent->accept();
}
else
{
sourceStepping->applyNextQuantity();
// keyEvent->accept();
// }
// else
// {
// sourceStepping->applyNextQuantity();
keyEvent->accept();
}
}
// keyEvent->accept();
// }
//}
}
//--------------------------------------------------------------------------------------------------
@ -353,6 +424,48 @@ void RimEnsambleCurveSet::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
{
loadDataAndUpdate(true);
}
else if (changedField == &m_yValuesSummaryGroup || changedField == &m_yValuesSelectedVariableDisplayField)
{
deleteAllCurves();
RimSummaryPlot* plot;
firstAncestorOrThisOfType(plot);
if (plot) plot->loadDataAndUpdate();
RimSummaryCaseCollection* group = m_yValuesSummaryGroup();
RifEclipseSummaryAddress addr = m_yValuesSelectedVariableDisplayField();
if (group && plot && addr.category() != RifEclipseSummaryAddress::SUMMARY_INVALID)
{
for (auto& sumCase : group->allSummaryCases())
{
RimSummaryCurve* curve = new RimSummaryCurve();
curve->setSummaryCaseY(sumCase);
curve->setSummaryAddressY(addr);
addCurve(curve);
curve->setParentQwtPlotNoReplot(plot->qwtPlot());
curve->updateCurveVisibility(true);
curve->loadDataAndUpdate(true);
}
}
}
else if (changedField == &m_ensambleParameter)
{
}
else if (changedField == &m_color)
{
for (auto& curve : m_curves)
{
curve->setColor(m_color);
curve->updateCurveAppearance();
}
RimSummaryPlot* plot;
firstAncestorOrThisOfType(plot);
if (plot && plot->qwtPlot()) plot->qwtPlot()->replot();
}
}
//--------------------------------------------------------------------------------------------------
@ -360,35 +473,63 @@ void RimEnsambleCurveSet::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSet::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot)
{
{
auto group = uiOrdering.addNewGroup("Y Source Stepping");
QString curveDataGroupName = "Summary Vector";
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword(curveDataGroupName, "Summary Vector Y");
curveDataGroup->add(&m_yValuesSummaryGroup);
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
curveDataGroup->add(&m_yPushButtonSelectSummaryAddress);
m_ySourceStepping()->uiOrdering(uiConfigName, *group);
}
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);
{
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
caf::PdmUiGroup* colorsGroup = uiOrdering.addNewGroup("Colors");
colorsGroup->add(&m_colorMode);
if (m_colorMode == SINGLE_COLOR)
{
auto group = uiOrdering.addNewGroup("Plot Source Stepping");
m_ySourceStepping()->uiOrdering(uiConfigName, *group);
colorsGroup->add(&m_color);
}
else if (m_colorMode == BY_ENSAMBLE_PARAM)
{
colorsGroup->add(&m_ensambleParameter);
}
uiOrdering.skipRemainingFields(true);
//RimSummaryCrossPlot* parentCrossPlot;
//firstAncestorOrThisOfType(parentCrossPlot);
//if (parentCrossPlot)
//{
// {
// auto group = uiOrdering.addNewGroup("Y Source Stepping");
// 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);
//}
}
//--------------------------------------------------------------------------------------------------
@ -410,3 +551,101 @@ void RimEnsambleCurveSet::defineObjectEditorAttribute(QString uiConfigName, caf:
myAttr->currentObject = m_currentSummaryCurve.p();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimEnsambleCurveSet::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
{
QList<caf::PdmOptionItemInfo> options;
if (fieldNeedingOptions == &m_yValuesSummaryGroup)
{
RimProject* proj = RiaApplication::instance()->project();
std::vector<RimSummaryCaseCollection*> groups = proj->summaryGroups();
for (RimSummaryCaseCollection* group : groups)
{
options.push_back(caf::PdmOptionItemInfo(group->name(), group));
}
options.push_front(caf::PdmOptionItemInfo("None", nullptr));
}
else if (fieldNeedingOptions == &m_ensambleParameter)
{
RimSummaryCaseCollection* group = m_yValuesSummaryGroup;
options.push_back(caf::PdmOptionItemInfo("None", ""));
if (group)
{
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));
}
}
}
else if (fieldNeedingOptions == &m_yValuesSelectedVariableDisplayField)
{
RimSummaryCaseCollection* group = m_yValuesSummaryGroup;
std::map<QString, RifEclipseSummaryAddress> allOpts;
if (group)
{
for (auto& sumCase : group->allSummaryCases())
{
std::map<QString, RifEclipseSummaryAddress> opts;
RimSummaryFilter filter;
getOptionsForSummaryAddresses(&opts, sumCase, &filter);
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())));
}
//else if (fieldNeedingOptions == &m_yValuesUiFilterResultSelection)
//{
// appendOptionItemsForSummaryAddresses(&options, m_yValuesSummaryCase(), m_yValuesSummaryFilter());
//}
return options;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSet::getOptionsForSummaryAddresses(std::map<QString, RifEclipseSummaryAddress>* options,
RimSummaryCase* summaryCase,
RimSummaryFilter* summaryFilter)
{
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->insert(std::make_pair(s, address));
}
}
}
}

View File

@ -19,16 +19,24 @@
#pragma once
#include "RifEclipseSummaryAddress.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmPtrArrayField.h"
#include "cafPdmPtrField.h"
#include "cafAppEnum.h"
class QwtPlot;
class QwtPlotCurve;
class RimSummaryCase;
class RimSummaryCaseCollection;
class RimSummaryCurve;
class RimSummaryAddress;
class RimSummaryFilter;
class RimSummaryPlotSourceStepping;
class QKeyEvent;
@ -40,6 +48,8 @@ class RimEnsambleCurveSet : public caf::PdmObject
CAF_PDM_HEADER_INIT;
public:
enum ColorMode {SINGLE_COLOR, BY_ENSAMBLE_PARAM};
RimEnsambleCurveSet();
virtual ~RimEnsambleCurveSet();
@ -63,7 +73,7 @@ public:
void setCurrentSummaryCurve(RimSummaryCurve* curve);
std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
//std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
void handleKeyPressEvent(QKeyEvent* keyEvent);
@ -72,19 +82,36 @@ private:
virtual void defineObjectEditorAttribute(QString uiConfigName,
caf::PdmUiEditorAttribute* attribute) override;
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly);
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue, const QVariant& newValue) override;
static void getOptionsForSummaryAddresses(std::map<QString, RifEclipseSummaryAddress>* options,
RimSummaryCase* summaryCase,
RimSummaryFilter* summaryFilter);
private:
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves; // Convert to PtrField ?
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_ySourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_unionSourceStepping;
//caf::PdmChildField<RimSummaryPlotSourceStepping*> m_ySourceStepping;
//caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping;
//caf::PdmChildField<RimSummaryPlotSourceStepping*> m_unionSourceStepping;
caf::PdmPointer<RimSummaryCurve> m_currentSummaryCurve;
// Y values
caf::PdmPtrField<RimSummaryCaseCollection*> m_yValuesSummaryGroup;
caf::PdmChildField<RimSummaryAddress*> m_yValuesCurveVariable;
caf::PdmField<RifEclipseSummaryAddress> m_yValuesSelectedVariableDisplayField;
caf::PdmChildField<RimSummaryFilter*> m_yValuesSummaryFilter;
caf::PdmField<RifEclipseSummaryAddress> m_yValuesUiFilterResultSelection;
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
caf::PdmField<caf::AppEnum<ColorMode>> m_colorMode;
caf::PdmField<cvf::Color3f> m_color;
caf::PdmField<QString> m_ensambleParameter;
};

View File

@ -23,6 +23,7 @@
#include "RifReaderEclipseSummary.h"
#include "RimProject.h"
#include "RimEnsambleCurveSet.h"
#include "RimSummaryCase.h"
#include "RimSummaryCrossPlot.h"
#include "RimSummaryCurve.h"
@ -43,35 +44,35 @@ CAF_PDM_SOURCE_INIT(RimEnsambleCurveSetCollection, "RimEnsambleCurveSetCollectio
//--------------------------------------------------------------------------------------------------
RimEnsambleCurveSetCollection::RimEnsambleCurveSetCollection()
{
CAF_PDM_InitObject("Summary Curves", ":/SummaryCurveFilter16x16.png", "", "");
CAF_PDM_InitObject("Ensamble Curve Sets", ":/SummaryCurveFilter16x16.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_curves, "CollectionCurves", "Collection Curves", "", "", "");
m_curves.uiCapability()->setUiHidden(true);
m_curves.uiCapability()->setUiTreeChildrenHidden(false);
CAF_PDM_InitFieldNoDefault(&m_curveSets, "EnsambleCurveSets", "Ensamble Curve Sets", "", "", "");
m_curveSets.uiCapability()->setUiHidden(true);
m_curveSets.uiCapability()->setUiTreeChildrenHidden(false);
CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", "");
m_showCurves.uiCapability()->setUiHidden(true);
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_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_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();
//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();
}
//--------------------------------------------------------------------------------------------------
@ -79,13 +80,13 @@ RimEnsambleCurveSetCollection::RimEnsambleCurveSetCollection()
//--------------------------------------------------------------------------------------------------
RimEnsambleCurveSetCollection::~RimEnsambleCurveSetCollection()
{
m_curves.deleteAllChildObjects();
m_curveSets.deleteAllChildObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimEnsambleCurveSetCollection::isCurvesVisible()
bool RimEnsambleCurveSetCollection::isCurveSetsVisible()
{
return m_showCurves();
}
@ -95,36 +96,28 @@ bool RimEnsambleCurveSetCollection::isCurvesVisible()
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::loadDataAndUpdate(bool updateParentPlot)
{
for (RimSummaryCurve* curve : m_curves)
for (RimEnsambleCurveSet* curveSet : m_curveSets)
{
curve->loadDataAndUpdate(false);
curve->updateQwtPlotAxis();
curveSet->loadDataAndUpdate(updateParentPlot);
}
if ( updateParentPlot )
{
RimSummaryPlot* parentPlot;
firstAncestorOrThisOfTypeAsserted(parentPlot);
if ( parentPlot->qwtPlot() )
{
parentPlot->qwtPlot()->updateLegend();
parentPlot->updateAxes();
parentPlot->updateZoomInQwt();
}
}
}
//for (RimSummaryCurve* curve : m_curves)
//{
// curve->loadDataAndUpdate(false);
// curve->updateQwtPlotAxis();
//}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::setParentQwtPlotAndReplot(QwtPlot* plot)
{
for (RimSummaryCurve* curve : m_curves)
{
curve->setParentQwtPlotNoReplot(plot);
}
if (plot) plot->replot();
//if ( updateParentPlot )
//{
// RimSummaryPlot* parentPlot;
// firstAncestorOrThisOfTypeAsserted(parentPlot);
// if ( parentPlot->qwtPlot() )
// {
// parentPlot->qwtPlot()->updateLegend();
// parentPlot->updateAxes();
// parentPlot->updateZoomInQwt();
// }
//}
}
//--------------------------------------------------------------------------------------------------
@ -132,69 +125,53 @@ void RimEnsambleCurveSetCollection::setParentQwtPlotAndReplot(QwtPlot* plot)
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::detachQwtCurves()
{
for (RimSummaryCurve* curve : m_curves)
for(const auto& curveSet : m_curveSets)
{
curve->detachQwtCurve();
curveSet->detachQwtCurves();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryCurve* RimEnsambleCurveSetCollection::findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const
void RimEnsambleCurveSetCollection::addCurveSet(RimEnsambleCurveSet* curveSet)
{
for (RimSummaryCurve* rimCurve : m_curves)
if (curveSet)
{
if (rimCurve->qwtPlotCurve() == qwtCurve)
{
return rimCurve;
}
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::addCurve(RimSummaryCurve* curve)
{
if (curve)
{
m_curves.push_back(curve);
m_curveSets.push_back(curveSet);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::deleteCurve(RimSummaryCurve* curve)
void RimEnsambleCurveSetCollection::deleteCurveSet(RimEnsambleCurveSet* curveSet)
{
if (curve)
if (curveSet)
{
m_curves.removeChildObject(curve);
delete curve;
m_curveSets.removeChildObject(curveSet);
delete curveSet;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCurve*> RimEnsambleCurveSetCollection::curves() const
std::vector<RimEnsambleCurveSet*> RimEnsambleCurveSetCollection::curveSets() const
{
return m_curves.childObjects();
return m_curveSets.childObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCurve*> RimEnsambleCurveSetCollection::visibleCurves() const
std::vector<RimEnsambleCurveSet*> RimEnsambleCurveSetCollection::visibleCurveSets() const
{
std::vector<RimSummaryCurve*> visible;
std::vector<RimEnsambleCurveSet*> visible;
for (auto c : m_curves)
for (auto c : m_curveSets)
{
if (c->isCurveVisible())
if (c->isCurvesVisible())
{
visible.push_back(c);
}
@ -203,146 +180,146 @@ std::vector<RimSummaryCurve*> RimEnsambleCurveSetCollection::visibleCurves() con
return visible;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::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 RimEnsambleCurveSetCollection::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 RimEnsambleCurveSetCollection::deleteAllCurves()
void RimEnsambleCurveSetCollection::deleteAllCurveSets()
{
m_curves.deleteAllChildObjects();
m_curveSets.deleteAllChildObjects();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::updateCaseNameHasChanged()
{
for (RimSummaryCurve* curve : m_curves)
{
curve->updateCurveNameNoLegendUpdate();
curve->updateConnectedEditors();
}
RimSummaryPlot* parentPlot;
firstAncestorOrThisOfTypeAsserted(parentPlot);
if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::setCurrentSummaryCurve(RimSummaryCurve* curve)
{
m_currentSummaryCurve = curve;
updateConnectedEditors();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSetCollection::fieldsToShowInToolbar()
{
RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot)
{
return m_unionSourceStepping->fieldsToShowInToolbar();
}
return m_ySourceStepping()->fieldsToShowInToolbar();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::handleKeyPressEvent(QKeyEvent* keyEvent)
{
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();
}
}
}
////--------------------------------------------------------------------------------------------------
/////
////--------------------------------------------------------------------------------------------------
//void RimEnsambleCurveSetCollection::updateCaseNameHasChanged()
//{
// for (RimSummaryCurve* curve : m_curves)
// {
// curve->updateCurveNameNoLegendUpdate();
// curve->updateConnectedEditors();
// }
//
// RimSummaryPlot* parentPlot;
// firstAncestorOrThisOfTypeAsserted(parentPlot);
// if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend();
//}
//
////--------------------------------------------------------------------------------------------------
/////
////--------------------------------------------------------------------------------------------------
//void RimEnsambleCurveSetCollection::setCurrentSummaryCurve(RimSummaryCurve* curve)
//{
// m_currentSummaryCurve = curve;
//
// updateConnectedEditors();
//}
//
////--------------------------------------------------------------------------------------------------
/////
////--------------------------------------------------------------------------------------------------
//std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSetCollection::fieldsToShowInToolbar()
//{
// RimSummaryCrossPlot* parentCrossPlot;
// firstAncestorOrThisOfType(parentCrossPlot);
//
// if (parentCrossPlot)
// {
// return m_unionSourceStepping->fieldsToShowInToolbar();
// }
//
// return m_ySourceStepping()->fieldsToShowInToolbar();
//}
//
////--------------------------------------------------------------------------------------------------
/////
////--------------------------------------------------------------------------------------------------
//void RimEnsambleCurveSetCollection::handleKeyPressEvent(QKeyEvent* keyEvent)
//{
// 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();
// }
// }
//}
//--------------------------------------------------------------------------------------------------
///
@ -360,35 +337,35 @@ void RimEnsambleCurveSetCollection::fieldChangedByUi(const caf::PdmFieldHandle*
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot);
//RimSummaryCrossPlot* parentCrossPlot;
//firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot)
{
{
auto group = uiOrdering.addNewGroup("Y Source Stepping");
//if (parentCrossPlot)
//{
// {
// auto group = uiOrdering.addNewGroup("Y Source Stepping");
m_ySourceStepping()->uiOrdering(uiConfigName, *group);
}
// m_ySourceStepping()->uiOrdering(uiConfigName, *group);
// }
{
auto group = uiOrdering.addNewGroup("X Source Stepping");
// {
// auto group = uiOrdering.addNewGroup("X Source Stepping");
m_xSourceStepping()->uiOrdering(uiConfigName, *group);
}
// m_xSourceStepping()->uiOrdering(uiConfigName, *group);
// }
{
auto group = uiOrdering.addNewGroup("XY Union Source Stepping");
// {
// auto group = uiOrdering.addNewGroup("XY Union Source Stepping");
m_unionSourceStepping()->uiOrdering(uiConfigName, *group);
}
}
else
{
auto group = uiOrdering.addNewGroup("Plot Source Stepping");
// m_unionSourceStepping()->uiOrdering(uiConfigName, *group);
// }
//}
//else
//{
// auto group = uiOrdering.addNewGroup("Plot Source Stepping");
m_ySourceStepping()->uiOrdering(uiConfigName, *group);
}
// m_ySourceStepping()->uiOrdering(uiConfigName, *group);
//}
}
//--------------------------------------------------------------------------------------------------
@ -404,9 +381,9 @@ caf::PdmFieldHandle* RimEnsambleCurveSetCollection::objectToggleField()
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::defineObjectEditorAttribute(QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
{
caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast<caf::PdmUiTreeViewEditorAttribute*>(attribute);
if (myAttr && m_currentSummaryCurve.notNull())
{
myAttr->currentObject = m_currentSummaryCurve.p();
}
//caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast<caf::PdmUiTreeViewEditorAttribute*>(attribute);
//if (myAttr && m_currentSummaryCurve.notNull())
//{
// myAttr->currentObject = m_currentSummaryCurve.p();
//}
}

View File

@ -25,12 +25,8 @@
#include "cafPdmObject.h"
#include "cafPdmPtrArrayField.h"
class QwtPlot;
class QwtPlotCurve;
class RimSummaryCase;
class RimSummaryCurve;
class RimSummaryPlotSourceStepping;
class QKeyEvent;
class RimEnsambleCurveSet;
//==================================================================================================
///
@ -43,29 +39,29 @@ public:
RimEnsambleCurveSetCollection();
virtual ~RimEnsambleCurveSetCollection();
bool isCurvesVisible();
bool isCurveSetsVisible();
void loadDataAndUpdate(bool updateParentPlot);
void setParentQwtPlotAndReplot(QwtPlot* plot);
//void setParentQwtPlotAndReplot(QwtPlot* plot);
void detachQwtCurves();
RimSummaryCurve* findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const;
//RimSummaryCurve* findRimCurveFromQwtCurve(const QwtPlotCurve* qwtCurve) const;
void addCurve(RimSummaryCurve* curve);
void deleteCurve(RimSummaryCurve* curve);
void addCurveSet(RimEnsambleCurveSet* curveSet);
void deleteCurveSet(RimEnsambleCurveSet* curveSet);
std::vector<RimSummaryCurve*> curves() const;
std::vector<RimSummaryCurve*> visibleCurves() const;
std::vector<RimEnsambleCurveSet*> curveSets() const;
std::vector<RimEnsambleCurveSet*> visibleCurveSets() const;
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
void deleteAllCurves();
void updateCaseNameHasChanged();
//void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
void deleteAllCurveSets();
//void updateCaseNameHasChanged();
void setCurrentSummaryCurve(RimSummaryCurve* curve);
//void setCurrentSummaryCurve(RimSummaryCurve* curve);
std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
//std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
void handleKeyPressEvent(QKeyEvent* keyEvent);
//void handleKeyPressEvent(QKeyEvent* keyEvent);
private:
caf::PdmFieldHandle* objectToggleField();
@ -78,13 +74,9 @@ private:
const QVariant& oldValue, const QVariant& newValue) override;
private:
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimEnsambleCurveSet*> m_curveSets;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_ySourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_unionSourceStepping;
caf::PdmPointer<RimSummaryCurve> m_currentSummaryCurve;
//caf::PdmPointer<RimSummaryCurve> m_currentSummaryCurve;
};

View File

@ -22,12 +22,14 @@
#include "RiaSummaryCurveAnalyzer.h"
#include "RimAsciiDataCurve.h"
#include "RimEnsambleCurveSet.h"
#include "RimGridTimeHistoryCurve.h"
#include "RimProject.h"
#include "RimSummaryAxisProperties.h"
#include "RimSummaryCase.h"
#include "RimSummaryCurve.h"
#include "RimSummaryCurveCollection.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RimSummaryCurveFilter.h"
#include "RimSummaryCurvesCalculator.h"
#include "RimSummaryPlotCollection.h"
@ -83,6 +85,10 @@ RimSummaryPlot::RimSummaryPlot()
m_summaryCurveCollection.uiCapability()->setUiTreeHidden(true);
m_summaryCurveCollection = new RimSummaryCurveCollection;
CAF_PDM_InitFieldNoDefault(&m_ensambleCurveSetCollection, "EnsambleCurveSetCollection", "", "", "", "");
m_ensambleCurveSetCollection.uiCapability()->setUiTreeHidden(true);
m_ensambleCurveSetCollection = new RimEnsambleCurveSetCollection();
CAF_PDM_InitFieldNoDefault(&m_summaryCurves_OBSOLETE, "SummaryCurves", "", "", "", "");
m_summaryCurves_OBSOLETE.uiCapability()->setUiTreeHidden(true);
@ -133,6 +139,7 @@ RimSummaryPlot::~RimSummaryPlot()
m_summaryCurves_OBSOLETE.deleteAllChildObjects();
m_curveFilters_OBSOLETE.deleteAllChildObjects();
delete m_summaryCurveCollection;
delete m_ensambleCurveSetCollection;
}
//--------------------------------------------------------------------------------------------------
@ -937,6 +944,18 @@ void RimSummaryPlot::addCurveNoUpdate(RimSummaryCurve* curve)
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
//void RimSummaryPlot::addEnsambleCurve(const RimEnsambleCurveSet* curveSet, RimSummaryCurve* curve)
//{
// if (curveSet && curve)
// {
// const_cast<RimEnsambleCurveSet*>(curveSet)->addCurve(curve);
// curve->setParentQwtPlotAndReplot(m_qwtPlot);
// }
//}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -962,6 +981,14 @@ void RimSummaryPlot::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEnsambleCurveSetCollection* RimSummaryPlot::ensambleCurveSets() const
{
return m_ensambleCurveSetCollection;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -969,6 +996,9 @@ void RimSummaryPlot::setCurveCollection(RimSummaryCurveCollection* curveCollecti
{
if (curveCollection)
{
// Delete current curve coll ?
m_summaryCurveCollection = curveCollection;
if (m_qwtPlot)
{
@ -1114,6 +1144,7 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering
axisFolder->add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_summaryCurveCollection);
uiTreeOrdering.add(&m_ensambleCurveSetCollection);
uiTreeOrdering.add(&m_gridTimeHistoryCurves);
uiTreeOrdering.add(&m_asciiDataCurves);
@ -1134,6 +1165,8 @@ void RimSummaryPlot::onLoadDataAndUpdate()
m_summaryCurveCollection->loadDataAndUpdate(false);
}
m_ensambleCurveSetCollection->loadDataAndUpdate(false);
for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves)
{
curve->loadDataAndUpdate(true);
@ -1461,6 +1494,8 @@ void RimSummaryPlot::detachAllCurves()
m_summaryCurveCollection->detachQwtCurves();
}
m_ensambleCurveSetCollection->detachQwtCurves();
for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves)
{
curve->detachQwtCurve();

View File

@ -38,6 +38,7 @@ class RimGridTimeHistoryCurve;
class RimSummaryCase;
class RimSummaryCurve;
class RimSummaryCurveCollection;
class RimEnsambleCurveSetCollection;
class RimSummaryCurveFilter_OBSOLETE;
class RimSummaryTimeAxisProperties;
class RimSummaryAxisProperties;
@ -69,10 +70,14 @@ public:
void addCurveAndUpdate(RimSummaryCurve* curve);
void addCurveNoUpdate(RimSummaryCurve* curve);
//void addEnsambleCurve(const RimEnsambleCurveSet* curveSet, RimSummaryCurve* curve);
void deleteCurve(RimSummaryCurve* curve);
void setCurveCollection(RimSummaryCurveCollection* curveCollection);
void deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase);
RimEnsambleCurveSetCollection* ensambleCurveSets() const;
void addGridTimeHistoryCurve(RimGridTimeHistoryCurve* curve);
void addAsciiDataCruve(RimAsciiDataCurve* curve);
@ -165,6 +170,8 @@ private:
caf::PdmChildArrayField<RimGridTimeHistoryCurve*> m_gridTimeHistoryCurves;
caf::PdmChildField<RimSummaryCurveCollection*> m_summaryCurveCollection;
caf::PdmChildField<RimEnsambleCurveSetCollection*> m_ensambleCurveSetCollection;
caf::PdmChildArrayField<RimAsciiDataCurve*> m_asciiDataCurves;
caf::PdmField<bool> m_isAutoZoom;

View File

@ -526,7 +526,9 @@ std::set<RifEclipseSummaryAddress> RimSummaryPlotSourceStepping::visibleAddresse
std::set<RifEclipseSummaryAddress> addresses;
RimSummaryCurveCollection* curveCollection = nullptr;
this->firstAncestorOrThisOfTypeAsserted(curveCollection);
this->firstAncestorOrThisOfType(curveCollection);
if (!curveCollection) return addresses;
auto curves = curveCollection->visibleCurves();
for (auto c : curves)
@ -553,7 +555,9 @@ std::set<RimSummaryCase*> RimSummaryPlotSourceStepping::visibleSummaryCasesCurve
std::set<RimSummaryCase*> sumCases;
RimSummaryCurveCollection* curveCollection = nullptr;
this->firstAncestorOrThisOfTypeAsserted(curveCollection);
this->firstAncestorOrThisOfType(curveCollection);
if (!curveCollection) return sumCases;
auto curves = curveCollection->visibleCurves();
for (auto c : curves)

View File

@ -307,7 +307,15 @@ void RiuSummaryCurveDefSelection::setDefaultSelection()
RiaSummaryCurveDefinition curveDef(allSumCases[0], defaultAddress);
std::vector<RiaSummaryCurveDefinition> curveDefs;
curveDefs.push_back(curveDef);
// DEBUG
//{
// RifEclipseSummaryAddress defaultAddress = RifEclipseSummaryAddress::fieldVarAddress("FOPTH");
// RiaSummaryCurveDefinition curveDef(allSumCases[0], defaultAddress);
// curveDefs.push_back(curveDef);
//}
setSelectedCurveDefinitions(curveDefs);
}
}