#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}/RicSummaryCurveCalculatorEditor.h
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.h ${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.h ${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.h
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryEnsambleCurveSetFeature.h
) )
set (SOURCE_GROUP_SOURCE_FILES 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}/RicSummaryCurveCalculatorEditor.cpp
${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.cpp ${CMAKE_CURRENT_LIST_DIR}/RicSummaryCurveCalculator.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.cpp ${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryCrossPlotCurveFeature.cpp
${CMAKE_CURRENT_LIST_DIR}/RicNewSummaryEnsambleCurveSetFeature.cpp
) )
list(APPEND CODE_HEADER_FILES 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 "RimSummaryPlot.h"
#include "RimSummaryPlotCollection.h" #include "RimSummaryPlotCollection.h"
#include "RimSummaryCalculationCollection.h" #include "RimSummaryCalculationCollection.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RimEnsambleCurveSet.h"
#include "RiuPlotMainWindowTools.h" #include "RiuPlotMainWindowTools.h"
#include "RiuSummaryCurveDefSelection.h" #include "RiuSummaryCurveDefSelection.h"
@@ -540,6 +542,23 @@ void RicSummaryCurveCreator::updateTargetPlot()
copyCurveAndAddToPlot(editedCurve, m_targetPlot); 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->enableAutoPlotTitle(m_useAutoPlotTitleProxy());
m_targetPlot->loadDataAndUpdate(); m_targetPlot->loadDataAndUpdate();
@@ -570,6 +589,30 @@ void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve *curve,
curveCopy->loadDataAndUpdate(false); 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 RimSummaryCurveAutoName;
class RimSummaryPlot; class RimSummaryPlot;
class RiaSummaryCurveDefinition; class RiaSummaryCurveDefinition;
class RimEnsambleCurveSet;
//================================================================================================== //==================================================================================================
/// ///
@@ -85,6 +86,7 @@ private:
void populateCurveCreator(const RimSummaryPlot& sourceSummaryPlot); void populateCurveCreator(const RimSummaryPlot& sourceSummaryPlot);
void updateTargetPlot(); void updateTargetPlot();
static void copyCurveAndAddToPlot(const RimSummaryCurve *curve, RimSummaryPlot *plot, bool forceVisible = false); 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 setDefaultCurveSelection();
void resetAllFields(); void resetAllFields();

View File

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

View File

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

View File

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

View File

@@ -602,6 +602,27 @@ std::vector<RimSummaryCase*> RimProject::allSummaryCases() const
return sumCases; 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 RimOilField;
class RimScriptCollection; class RimScriptCollection;
class RimSummaryCase; class RimSummaryCase;
class RimSummaryCaseCollection;
class Rim3dView; class Rim3dView;
class RimGridView; class RimGridView;
class RimViewLinker; class RimViewLinker;
@@ -106,6 +107,7 @@ public:
void allCases(std::vector<RimCase*>& cases); void allCases(std::vector<RimCase*>& cases);
std::vector<RimSummaryCase*> allSummaryCases() const; std::vector<RimSummaryCase*> allSummaryCases() const;
std::vector<RimSummaryCaseCollection*> summaryGroups() const;
void allVisibleViews(std::vector<Rim3dView*>& views); void allVisibleViews(std::vector<Rim3dView*>& views);
void allVisibleGridViews(std::vector<RimGridView*>& views); void allVisibleGridViews(std::vector<RimGridView*>& views);

View File

@@ -24,18 +24,49 @@
#include "RimProject.h" #include "RimProject.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCrossPlot.h" #include "RimSummaryCrossPlot.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryPlot.h" #include "RimSummaryPlot.h"
#include "RimSummaryPlotSourceStepping.h" #include "RimSummaryPlotSourceStepping.h"
#include "RimSummaryFilter.h"
#include "RimSummaryAddress.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RiuLineSegmentQwtPlotCurve.h" #include "RiuLineSegmentQwtPlotCurve.h"
#include "RiuSummaryQwtPlot.h" #include "RiuSummaryQwtPlot.h"
#include "cafPdmUiTreeViewEditor.h" #include "cafPdmUiTreeViewEditor.h"
#include "cafPdmUiListEditor.h"
#include "cafPdmObject.h"
#include "cafPdmUiPushButtonEditor.h"
#include <QTextStream>
#include <QKeyEvent> #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"); CAF_PDM_SOURCE_INIT(RimEnsambleCurveSet, "RimEnsambleCurveSet");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -43,35 +74,73 @@ CAF_PDM_SOURCE_INIT(RimEnsambleCurveSet, "RimEnsambleCurveSet");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
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()->setUiHidden(true);
m_curves.uiCapability()->setUiTreeChildrenHidden(false); m_curves.uiCapability()->setUiTreeChildrenHidden(false);
CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", ""); CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", "");
m_showCurves.uiCapability()->setUiHidden(true); m_showCurves.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_ySourceStepping, "YSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_ySourceStepping, "YSourceStepping", "", "", "", "");
m_ySourceStepping = new RimSummaryPlotSourceStepping; //m_ySourceStepping = new RimSummaryPlotSourceStepping;
m_ySourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::Y_AXIS); //m_ySourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::Y_AXIS);
m_ySourceStepping.uiCapability()->setUiHidden(true); //m_ySourceStepping.uiCapability()->setUiHidden(true);
m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_ySourceStepping.xmlCapability()->disableIO(); //m_ySourceStepping.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault(&m_xSourceStepping, "XSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_xSourceStepping, "XSourceStepping", "", "", "", "");
m_xSourceStepping = new RimSummaryPlotSourceStepping; //m_xSourceStepping = new RimSummaryPlotSourceStepping;
m_xSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::X_AXIS); //m_xSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::X_AXIS);
m_xSourceStepping.uiCapability()->setUiHidden(true); //m_xSourceStepping.uiCapability()->setUiHidden(true);
m_xSourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_xSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_xSourceStepping.xmlCapability()->disableIO(); //m_xSourceStepping.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault(&m_unionSourceStepping, "UnionSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_unionSourceStepping, "UnionSourceStepping", "", "", "", "");
m_unionSourceStepping = new RimSummaryPlotSourceStepping; //m_unionSourceStepping = new RimSummaryPlotSourceStepping;
m_unionSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::UNION_X_Y_AXIS); //m_unionSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::UNION_X_Y_AXIS);
m_unionSourceStepping.uiCapability()->setUiHidden(true); //m_unionSourceStepping.uiCapability()->setUiHidden(true);
m_unionSourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_unionSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_unionSourceStepping.xmlCapability()->disableIO(); //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() 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() //std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSet::fieldsToShowInToolbar()
{ //{
RimSummaryCrossPlot* parentCrossPlot; // RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot); // firstAncestorOrThisOfType(parentCrossPlot);
//
if (parentCrossPlot) // if (parentCrossPlot)
{ // {
return m_unionSourceStepping->fieldsToShowInToolbar(); // return m_unionSourceStepping->fieldsToShowInToolbar();
} // }
//
return m_ySourceStepping()->fieldsToShowInToolbar(); // return m_ySourceStepping()->fieldsToShowInToolbar();
} //}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSet::handleKeyPressEvent(QKeyEvent* keyEvent) void RimEnsambleCurveSet::handleKeyPressEvent(QKeyEvent* keyEvent)
{ {
if (!keyEvent) return; //if (!keyEvent) return;
RimSummaryPlotSourceStepping* sourceStepping = nullptr; //RimSummaryPlotSourceStepping* sourceStepping = nullptr;
{ //{
RimSummaryCrossPlot* summaryCrossPlot = nullptr; // RimSummaryCrossPlot* summaryCrossPlot = nullptr;
this->firstAncestorOrThisOfType(summaryCrossPlot); // this->firstAncestorOrThisOfType(summaryCrossPlot);
if (summaryCrossPlot) // if (summaryCrossPlot)
{ // {
sourceStepping = m_unionSourceStepping(); // sourceStepping = m_unionSourceStepping();
} // }
else // else
{ // {
sourceStepping = m_ySourceStepping(); // sourceStepping = m_ySourceStepping();
} // }
} //}
if (keyEvent->key() == Qt::Key_PageUp) //if (keyEvent->key() == Qt::Key_PageUp)
{ //{
if (keyEvent->modifiers() & Qt::ShiftModifier) // if (keyEvent->modifiers() & Qt::ShiftModifier)
{ // {
sourceStepping->applyPrevCase(); // sourceStepping->applyPrevCase();
keyEvent->accept(); // keyEvent->accept();
} // }
else if (keyEvent->modifiers() & Qt::ControlModifier) // else if (keyEvent->modifiers() & Qt::ControlModifier)
{ // {
sourceStepping->applyPrevOtherIdentifier(); // sourceStepping->applyPrevOtherIdentifier();
keyEvent->accept(); // keyEvent->accept();
} // }
else // else
{ // {
sourceStepping->applyPrevQuantity(); // sourceStepping->applyPrevQuantity();
keyEvent->accept(); // keyEvent->accept();
} // }
} //}
else if (keyEvent->key() == Qt::Key_PageDown) //else if (keyEvent->key() == Qt::Key_PageDown)
{ //{
if (keyEvent->modifiers() & Qt::ShiftModifier) // if (keyEvent->modifiers() & Qt::ShiftModifier)
{ // {
sourceStepping->applyNextCase(); // sourceStepping->applyNextCase();
keyEvent->accept(); // keyEvent->accept();
} // }
else if (keyEvent->modifiers() & Qt::ControlModifier) // else if (keyEvent->modifiers() & Qt::ControlModifier)
{ // {
sourceStepping->applyNextOtherIdentifier(); // sourceStepping->applyNextOtherIdentifier();
keyEvent->accept(); // keyEvent->accept();
} // }
else // else
{ // {
sourceStepping->applyNextQuantity(); // sourceStepping->applyNextQuantity();
keyEvent->accept(); // keyEvent->accept();
} // }
} //}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -353,6 +424,48 @@ void RimEnsambleCurveSet::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
{ {
loadDataAndUpdate(true); 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) void RimEnsambleCurveSet::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{ {
RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot)
{ {
{ QString curveDataGroupName = "Summary Vector";
auto group = uiOrdering.addNewGroup("Y Source Stepping"); caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword(curveDataGroupName, "Summary Vector Y");
curveDataGroup->add(&m_yValuesSummaryGroup);
curveDataGroup->add(&m_yValuesSelectedVariableDisplayField);
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);
m_ySourceStepping()->uiOrdering(uiConfigName, *group);
} }
caf::PdmUiGroup* colorsGroup = uiOrdering.addNewGroup("Colors");
colorsGroup->add(&m_colorMode);
if (m_colorMode == SINGLE_COLOR)
{ {
auto group = uiOrdering.addNewGroup("X Source Stepping"); colorsGroup->add(&m_color);
m_xSourceStepping()->uiOrdering(uiConfigName, *group);
} }
else if (m_colorMode == BY_ENSAMBLE_PARAM)
{ {
auto group = uiOrdering.addNewGroup("XY Union Source Stepping"); colorsGroup->add(&m_ensambleParameter);
}
uiOrdering.skipRemainingFields(true);
m_unionSourceStepping()->uiOrdering(uiConfigName, *group); //RimSummaryCrossPlot* parentCrossPlot;
} //firstAncestorOrThisOfType(parentCrossPlot);
}
else
{
auto group = uiOrdering.addNewGroup("Plot Source Stepping");
m_ySourceStepping()->uiOrdering(uiConfigName, *group); //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(); 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 #pragma once
#include "RifEclipseSummaryAddress.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmChildArrayField.h" #include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h" #include "cafPdmChildField.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafPdmPtrArrayField.h" #include "cafPdmPtrArrayField.h"
#include "cafPdmPtrField.h"
#include "cafAppEnum.h"
class QwtPlot; class QwtPlot;
class QwtPlotCurve; class QwtPlotCurve;
class RimSummaryCase; class RimSummaryCase;
class RimSummaryCaseCollection;
class RimSummaryCurve; class RimSummaryCurve;
class RimSummaryAddress;
class RimSummaryFilter;
class RimSummaryPlotSourceStepping; class RimSummaryPlotSourceStepping;
class QKeyEvent; class QKeyEvent;
@@ -40,6 +48,8 @@ class RimEnsambleCurveSet : public caf::PdmObject
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public: public:
enum ColorMode {SINGLE_COLOR, BY_ENSAMBLE_PARAM};
RimEnsambleCurveSet(); RimEnsambleCurveSet();
virtual ~RimEnsambleCurveSet(); virtual ~RimEnsambleCurveSet();
@@ -63,7 +73,7 @@ public:
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);
@@ -72,19 +82,36 @@ private:
virtual void defineObjectEditorAttribute(QString uiConfigName, virtual void defineObjectEditorAttribute(QString uiConfigName,
caf::PdmUiEditorAttribute* attribute) override; 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 defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue, const QVariant& newValue) override; const QVariant& oldValue, const QVariant& newValue) override;
static void getOptionsForSummaryAddresses(std::map<QString, RifEclipseSummaryAddress>* options,
RimSummaryCase* summaryCase,
RimSummaryFilter* summaryFilter);
private: private:
caf::PdmField<bool> m_showCurves; 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_ySourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping; //caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_unionSourceStepping; //caf::PdmChildField<RimSummaryPlotSourceStepping*> m_unionSourceStepping;
caf::PdmPointer<RimSummaryCurve> m_currentSummaryCurve; 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 "RifReaderEclipseSummary.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimEnsambleCurveSet.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCrossPlot.h" #include "RimSummaryCrossPlot.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
@@ -43,35 +44,35 @@ CAF_PDM_SOURCE_INIT(RimEnsambleCurveSetCollection, "RimEnsambleCurveSetCollectio
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimEnsambleCurveSetCollection::RimEnsambleCurveSetCollection() 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", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_curveSets, "EnsambleCurveSets", "Ensamble Curve Sets", "", "", "");
m_curves.uiCapability()->setUiHidden(true); m_curveSets.uiCapability()->setUiHidden(true);
m_curves.uiCapability()->setUiTreeChildrenHidden(false); m_curveSets.uiCapability()->setUiTreeChildrenHidden(false);
CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", ""); CAF_PDM_InitField(&m_showCurves, "IsActive", true, "Show Curves", "", "", "");
m_showCurves.uiCapability()->setUiHidden(true); m_showCurves.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_ySourceStepping, "YSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_ySourceStepping, "YSourceStepping", "", "", "", "");
m_ySourceStepping = new RimSummaryPlotSourceStepping; //m_ySourceStepping = new RimSummaryPlotSourceStepping;
m_ySourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::Y_AXIS); //m_ySourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::Y_AXIS);
m_ySourceStepping.uiCapability()->setUiHidden(true); //m_ySourceStepping.uiCapability()->setUiHidden(true);
m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_ySourceStepping.xmlCapability()->disableIO(); //m_ySourceStepping.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault(&m_xSourceStepping, "XSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_xSourceStepping, "XSourceStepping", "", "", "", "");
m_xSourceStepping = new RimSummaryPlotSourceStepping; //m_xSourceStepping = new RimSummaryPlotSourceStepping;
m_xSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::X_AXIS); //m_xSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::X_AXIS);
m_xSourceStepping.uiCapability()->setUiHidden(true); //m_xSourceStepping.uiCapability()->setUiHidden(true);
m_xSourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_xSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_xSourceStepping.xmlCapability()->disableIO(); //m_xSourceStepping.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault(&m_unionSourceStepping, "UnionSourceStepping", "", "", "", ""); //CAF_PDM_InitFieldNoDefault(&m_unionSourceStepping, "UnionSourceStepping", "", "", "", "");
m_unionSourceStepping = new RimSummaryPlotSourceStepping; //m_unionSourceStepping = new RimSummaryPlotSourceStepping;
m_unionSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::UNION_X_Y_AXIS); //m_unionSourceStepping->setSourceSteppingType(RimSummaryPlotSourceStepping::UNION_X_Y_AXIS);
m_unionSourceStepping.uiCapability()->setUiHidden(true); //m_unionSourceStepping.uiCapability()->setUiHidden(true);
m_unionSourceStepping.uiCapability()->setUiTreeChildrenHidden(true); //m_unionSourceStepping.uiCapability()->setUiTreeChildrenHidden(true);
m_unionSourceStepping.xmlCapability()->disableIO(); //m_unionSourceStepping.xmlCapability()->disableIO();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -79,13 +80,13 @@ RimEnsambleCurveSetCollection::RimEnsambleCurveSetCollection()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimEnsambleCurveSetCollection::~RimEnsambleCurveSetCollection() RimEnsambleCurveSetCollection::~RimEnsambleCurveSetCollection()
{ {
m_curves.deleteAllChildObjects(); m_curveSets.deleteAllChildObjects();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RimEnsambleCurveSetCollection::isCurvesVisible() bool RimEnsambleCurveSetCollection::isCurveSetsVisible()
{ {
return m_showCurves(); return m_showCurves();
} }
@@ -95,36 +96,28 @@ bool RimEnsambleCurveSetCollection::isCurvesVisible()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::loadDataAndUpdate(bool updateParentPlot) void RimEnsambleCurveSetCollection::loadDataAndUpdate(bool updateParentPlot)
{ {
for (RimSummaryCurve* curve : m_curves) for (RimEnsambleCurveSet* curveSet : m_curveSets)
{ {
curve->loadDataAndUpdate(false); curveSet->loadDataAndUpdate(updateParentPlot);
curve->updateQwtPlotAxis();
} }
if ( updateParentPlot ) //for (RimSummaryCurve* curve : m_curves)
{ //{
RimSummaryPlot* parentPlot; // curve->loadDataAndUpdate(false);
firstAncestorOrThisOfTypeAsserted(parentPlot); // curve->updateQwtPlotAxis();
if ( parentPlot->qwtPlot() ) //}
{
parentPlot->qwtPlot()->updateLegend();
parentPlot->updateAxes();
parentPlot->updateZoomInQwt();
}
}
}
//-------------------------------------------------------------------------------------------------- //if ( updateParentPlot )
/// //{
//-------------------------------------------------------------------------------------------------- // RimSummaryPlot* parentPlot;
void RimEnsambleCurveSetCollection::setParentQwtPlotAndReplot(QwtPlot* plot) // firstAncestorOrThisOfTypeAsserted(parentPlot);
{ // if ( parentPlot->qwtPlot() )
for (RimSummaryCurve* curve : m_curves) // {
{ // parentPlot->qwtPlot()->updateLegend();
curve->setParentQwtPlotNoReplot(plot); // parentPlot->updateAxes();
} // parentPlot->updateZoomInQwt();
// }
if (plot) plot->replot(); //}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -132,69 +125,53 @@ void RimEnsambleCurveSetCollection::setParentQwtPlotAndReplot(QwtPlot* plot)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::detachQwtCurves() 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) m_curveSets.push_back(curveSet);
{
return rimCurve;
}
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::addCurve(RimSummaryCurve* curve)
{
if (curve)
{
m_curves.push_back(curve);
} }
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::deleteCurve(RimSummaryCurve* curve) void RimEnsambleCurveSetCollection::deleteCurveSet(RimEnsambleCurveSet* curveSet)
{ {
if (curve) if (curveSet)
{ {
m_curves.removeChildObject(curve); m_curveSets.removeChildObject(curveSet);
delete curve; 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); visible.push_back(c);
} }
@@ -203,146 +180,146 @@ std::vector<RimSummaryCurve*> RimEnsambleCurveSetCollection::visibleCurves() con
return visible; return visible;
} }
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
/// /////
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase) //void RimEnsambleCurveSetCollection::deleteCurvesAssosiatedWithCase(RimSummaryCase* summaryCase)
{ //{
std::vector<RimSummaryCurve*> summaryCurvesToDelete; // std::vector<RimSummaryCurve*> summaryCurvesToDelete;
//
for (RimSummaryCurve* summaryCurve : m_curves) // for (RimSummaryCurve* summaryCurve : m_curves)
{ // {
if (!summaryCurve) continue; // if (!summaryCurve) continue;
if (!summaryCurve->summaryCaseY()) continue; // if (!summaryCurve->summaryCaseY()) continue;
//
if (summaryCurve->summaryCaseY() == summaryCase) // if (summaryCurve->summaryCaseY() == summaryCase)
{ // {
summaryCurvesToDelete.push_back(summaryCurve); // summaryCurvesToDelete.push_back(summaryCurve);
} // }
} // }
for (RimSummaryCurve* summaryCurve : summaryCurvesToDelete) // for (RimSummaryCurve* summaryCurve : summaryCurvesToDelete)
{ // {
m_curves.removeChildObject(summaryCurve); // m_curves.removeChildObject(summaryCurve);
delete summaryCurve; // delete summaryCurve;
} // }
//
} //}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::deleteAllCurves() void RimEnsambleCurveSetCollection::deleteAllCurveSets()
{ {
m_curves.deleteAllChildObjects(); m_curveSets.deleteAllChildObjects();
} }
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
/// /////
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::updateCaseNameHasChanged() //void RimEnsambleCurveSetCollection::updateCaseNameHasChanged()
{ //{
for (RimSummaryCurve* curve : m_curves) // for (RimSummaryCurve* curve : m_curves)
{ // {
curve->updateCurveNameNoLegendUpdate(); // curve->updateCurveNameNoLegendUpdate();
curve->updateConnectedEditors(); // curve->updateConnectedEditors();
} // }
//
RimSummaryPlot* parentPlot; // RimSummaryPlot* parentPlot;
firstAncestorOrThisOfTypeAsserted(parentPlot); // firstAncestorOrThisOfTypeAsserted(parentPlot);
if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend(); // if (parentPlot->qwtPlot()) parentPlot->qwtPlot()->updateLegend();
} //}
//
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
/// /////
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::setCurrentSummaryCurve(RimSummaryCurve* curve) //void RimEnsambleCurveSetCollection::setCurrentSummaryCurve(RimSummaryCurve* curve)
{ //{
m_currentSummaryCurve = curve; // m_currentSummaryCurve = curve;
//
updateConnectedEditors(); // updateConnectedEditors();
} //}
//
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
/// /////
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSetCollection::fieldsToShowInToolbar() //std::vector<caf::PdmFieldHandle*> RimEnsambleCurveSetCollection::fieldsToShowInToolbar()
{ //{
RimSummaryCrossPlot* parentCrossPlot; // RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot); // firstAncestorOrThisOfType(parentCrossPlot);
//
if (parentCrossPlot) // if (parentCrossPlot)
{ // {
return m_unionSourceStepping->fieldsToShowInToolbar(); // return m_unionSourceStepping->fieldsToShowInToolbar();
} // }
//
return m_ySourceStepping()->fieldsToShowInToolbar(); // return m_ySourceStepping()->fieldsToShowInToolbar();
} //}
//
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
/// /////
//-------------------------------------------------------------------------------------------------- ////--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::handleKeyPressEvent(QKeyEvent* keyEvent) //void RimEnsambleCurveSetCollection::handleKeyPressEvent(QKeyEvent* keyEvent)
{ //{
if (!keyEvent) return; // if (!keyEvent) return;
//
RimSummaryPlotSourceStepping* sourceStepping = nullptr; // RimSummaryPlotSourceStepping* sourceStepping = nullptr;
{ // {
RimSummaryCrossPlot* summaryCrossPlot = nullptr; // RimSummaryCrossPlot* summaryCrossPlot = nullptr;
this->firstAncestorOrThisOfType(summaryCrossPlot); // this->firstAncestorOrThisOfType(summaryCrossPlot);
//
if (summaryCrossPlot) // if (summaryCrossPlot)
{ // {
sourceStepping = m_unionSourceStepping(); // sourceStepping = m_unionSourceStepping();
} // }
else // else
{ // {
sourceStepping = m_ySourceStepping(); // sourceStepping = m_ySourceStepping();
} // }
} // }
//
if (keyEvent->key() == Qt::Key_PageUp) // if (keyEvent->key() == Qt::Key_PageUp)
{ // {
if (keyEvent->modifiers() & Qt::ShiftModifier) // if (keyEvent->modifiers() & Qt::ShiftModifier)
{ // {
sourceStepping->applyPrevCase(); // sourceStepping->applyPrevCase();
//
keyEvent->accept(); // keyEvent->accept();
} // }
else if (keyEvent->modifiers() & Qt::ControlModifier) // else if (keyEvent->modifiers() & Qt::ControlModifier)
{ // {
sourceStepping->applyPrevOtherIdentifier(); // sourceStepping->applyPrevOtherIdentifier();
//
keyEvent->accept(); // keyEvent->accept();
} // }
else // else
{ // {
sourceStepping->applyPrevQuantity(); // sourceStepping->applyPrevQuantity();
//
keyEvent->accept(); // keyEvent->accept();
} // }
} // }
else if (keyEvent->key() == Qt::Key_PageDown) // else if (keyEvent->key() == Qt::Key_PageDown)
{ // {
if (keyEvent->modifiers() & Qt::ShiftModifier) // if (keyEvent->modifiers() & Qt::ShiftModifier)
{ // {
sourceStepping->applyNextCase(); // sourceStepping->applyNextCase();
//
keyEvent->accept(); // keyEvent->accept();
} // }
else if (keyEvent->modifiers() & Qt::ControlModifier) // else if (keyEvent->modifiers() & Qt::ControlModifier)
{ // {
sourceStepping->applyNextOtherIdentifier(); // sourceStepping->applyNextOtherIdentifier();
//
keyEvent->accept(); // keyEvent->accept();
} // }
else // else
{ // {
sourceStepping->applyNextQuantity(); // sourceStepping->applyNextQuantity();
//
keyEvent->accept(); // keyEvent->accept();
} // }
} // }
} //}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@@ -360,35 +337,35 @@ void RimEnsambleCurveSetCollection::fieldChangedByUi(const caf::PdmFieldHandle*
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimEnsambleCurveSetCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) void RimEnsambleCurveSetCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{ {
RimSummaryCrossPlot* parentCrossPlot; //RimSummaryCrossPlot* parentCrossPlot;
firstAncestorOrThisOfType(parentCrossPlot); //firstAncestorOrThisOfType(parentCrossPlot);
if (parentCrossPlot) //if (parentCrossPlot)
{ //{
{ // {
auto group = uiOrdering.addNewGroup("Y Source Stepping"); // 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); // m_unionSourceStepping()->uiOrdering(uiConfigName, *group);
} // }
} //}
else //else
{ //{
auto group = uiOrdering.addNewGroup("Plot Source Stepping"); // 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) void RimEnsambleCurveSetCollection::defineObjectEditorAttribute(QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
{ {
caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast<caf::PdmUiTreeViewEditorAttribute*>(attribute); //caf::PdmUiTreeViewEditorAttribute* myAttr = dynamic_cast<caf::PdmUiTreeViewEditorAttribute*>(attribute);
if (myAttr && m_currentSummaryCurve.notNull()) //if (myAttr && m_currentSummaryCurve.notNull())
{ //{
myAttr->currentObject = m_currentSummaryCurve.p(); // myAttr->currentObject = m_currentSummaryCurve.p();
} //}
} }

View File

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

View File

@@ -22,12 +22,14 @@
#include "RiaSummaryCurveAnalyzer.h" #include "RiaSummaryCurveAnalyzer.h"
#include "RimAsciiDataCurve.h" #include "RimAsciiDataCurve.h"
#include "RimEnsambleCurveSet.h"
#include "RimGridTimeHistoryCurve.h" #include "RimGridTimeHistoryCurve.h"
#include "RimProject.h" #include "RimProject.h"
#include "RimSummaryAxisProperties.h" #include "RimSummaryAxisProperties.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveCollection.h"
#include "RimEnsambleCurveSetCollection.h"
#include "RimSummaryCurveFilter.h" #include "RimSummaryCurveFilter.h"
#include "RimSummaryCurvesCalculator.h" #include "RimSummaryCurvesCalculator.h"
#include "RimSummaryPlotCollection.h" #include "RimSummaryPlotCollection.h"
@@ -83,6 +85,10 @@ RimSummaryPlot::RimSummaryPlot()
m_summaryCurveCollection.uiCapability()->setUiTreeHidden(true); m_summaryCurveCollection.uiCapability()->setUiTreeHidden(true);
m_summaryCurveCollection = new RimSummaryCurveCollection; 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", "", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_summaryCurves_OBSOLETE, "SummaryCurves", "", "", "", "");
m_summaryCurves_OBSOLETE.uiCapability()->setUiTreeHidden(true); m_summaryCurves_OBSOLETE.uiCapability()->setUiTreeHidden(true);
@@ -133,6 +139,7 @@ RimSummaryPlot::~RimSummaryPlot()
m_summaryCurves_OBSOLETE.deleteAllChildObjects(); m_summaryCurves_OBSOLETE.deleteAllChildObjects();
m_curveFilters_OBSOLETE.deleteAllChildObjects(); m_curveFilters_OBSOLETE.deleteAllChildObjects();
delete m_summaryCurveCollection; 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) if (curveCollection)
{ {
// Delete current curve coll ?
m_summaryCurveCollection = curveCollection; m_summaryCurveCollection = curveCollection;
if (m_qwtPlot) if (m_qwtPlot)
{ {
@@ -1114,6 +1144,7 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering
axisFolder->add(&m_rightYAxisProperties); axisFolder->add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_summaryCurveCollection); uiTreeOrdering.add(&m_summaryCurveCollection);
uiTreeOrdering.add(&m_ensambleCurveSetCollection);
uiTreeOrdering.add(&m_gridTimeHistoryCurves); uiTreeOrdering.add(&m_gridTimeHistoryCurves);
uiTreeOrdering.add(&m_asciiDataCurves); uiTreeOrdering.add(&m_asciiDataCurves);
@@ -1134,6 +1165,8 @@ void RimSummaryPlot::onLoadDataAndUpdate()
m_summaryCurveCollection->loadDataAndUpdate(false); m_summaryCurveCollection->loadDataAndUpdate(false);
} }
m_ensambleCurveSetCollection->loadDataAndUpdate(false);
for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves) for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves)
{ {
curve->loadDataAndUpdate(true); curve->loadDataAndUpdate(true);
@@ -1461,6 +1494,8 @@ void RimSummaryPlot::detachAllCurves()
m_summaryCurveCollection->detachQwtCurves(); m_summaryCurveCollection->detachQwtCurves();
} }
m_ensambleCurveSetCollection->detachQwtCurves();
for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves) for (RimGridTimeHistoryCurve* curve : m_gridTimeHistoryCurves)
{ {
curve->detachQwtCurve(); curve->detachQwtCurve();

View File

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

View File

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

View File

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