#2658 Ensemble curves. Fix curve set coloring. Minor fixes.Some ClangFormat auto-changes

This commit is contained in:
Bjørn Erik Jensen 2018-05-14 09:51:06 +02:00
parent 090a79cf90
commit dc319646b2
2 changed files with 131 additions and 105 deletions

View File

@ -19,6 +19,7 @@
#include "RicSummaryCurveCreator.h"
#include "RiaApplication.h"
#include "RiaColorTables.h"
#include "RiaSummaryCurveDefinition.h"
#include "RicSelectSummaryPlotUI.h"
@ -26,11 +27,15 @@
#include "RifReaderEclipseSummary.h"
#include "RimEnsembleCurveSet.h"
#include "RimEnsembleCurveSetCollection.h"
#include "RimEnsembleCurveSetColorManager.h"
#include "RimMainPlotCollection.h"
#include "RimObservedData.h"
#include "RimObservedDataCollection.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimSummaryCalculationCollection.h"
#include "RimSummaryCase.h"
#include "RimSummaryCaseCollection.h"
#include "RimSummaryCaseMainCollection.h"
@ -39,9 +44,6 @@
#include "RimSummaryCurveCollection.h"
#include "RimSummaryPlot.h"
#include "RimSummaryPlotCollection.h"
#include "RimSummaryCalculationCollection.h"
#include "RimEnsembleCurveSetCollection.h"
#include "RimEnsembleCurveSet.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuSummaryCurveDefSelection.h"
@ -56,7 +58,6 @@
#include <algorithm>
#include <sstream>
CAF_PDM_SOURCE_INIT(RicSummaryCurveCreator, "RicSummaryCurveCreator");
//--------------------------------------------------------------------------------------------------
@ -111,17 +112,15 @@ RicSummaryCurveCreator::RicSummaryCurveCreator()
m_summaryCurveSelectionEditor.reset(new RiuSummaryCurveDefSelectionEditor());
m_summaryCurveSelectionEditor->summaryAddressSelection()->setFieldChangedHandler([this]() { this->selectionEditorFieldChanged(); });
m_summaryCurveSelectionEditor->summaryAddressSelection()->setFieldChangedHandler(
[this]() { this->selectionEditorFieldChanged(); });
m_summaryCurveSelectionEditor->summaryAddressSelection()->setMultiSelectionMode(true);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCurveCreator::~RicSummaryCurveCreator()
{
}
RicSummaryCurveCreator::~RicSummaryCurveCreator() {}
//--------------------------------------------------------------------------------------------------
///
@ -188,7 +187,9 @@ void RicSummaryCurveCreator::clearCloseButton()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
void RicSummaryCurveCreator::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue)
{
if (changedField == &m_applyButtonField || changedField == &m_okButtonField)
{
@ -235,7 +236,8 @@ void RicSummaryCurveCreator::fieldChangedByUi(const caf::PdmFieldHandle* changed
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RicSummaryCurveCreator::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly)
QList<caf::PdmOptionItemInfo> RicSummaryCurveCreator::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly)
{
QList<caf::PdmOptionItemInfo> options;
@ -264,7 +266,8 @@ QList<caf::PdmOptionItemInfo> RicSummaryCurveCreator::calculateValueOptions(cons
void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
// Appearance settings
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroupWithKeyword("Curve Appearance Assignment", RiuSummaryCurveDefinitionKeywords::appearance());
caf::PdmUiGroup* appearanceGroup =
uiOrdering.addNewGroupWithKeyword("Curve Appearance Assignment", RiuSummaryCurveDefinitionKeywords::appearance());
caf::PdmUiGroup* appearanceSubGroup = appearanceGroup->addNewGroup("Appearance Type Assignment");
appearanceSubGroup->setCollapsedByDefault(true);
@ -288,7 +291,8 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
}
// Name config
caf::PdmUiGroup* autoNameGroup = uiOrdering.addNewGroupWithKeyword("Plot and Curve Name Configuration", RiuSummaryCurveDefinitionKeywords::nameConfig());
caf::PdmUiGroup* autoNameGroup =
uiOrdering.addNewGroupWithKeyword("Plot and Curve Name Configuration", RiuSummaryCurveDefinitionKeywords::nameConfig());
autoNameGroup->setCollapsedByDefault(true);
autoNameGroup->add(&m_useAutoPlotTitleProxy);
@ -313,8 +317,10 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
{
std::vector<RiaSummaryCurveDefinition> allCurveDefinitionsVector = m_summaryCurveSelectionEditor->summaryAddressSelection()->selectedCurveDefinitions();
std::set<RiaSummaryCurveDefinition> allCurveDefinitions = std::set<RiaSummaryCurveDefinition>(allCurveDefinitionsVector.begin(), allCurveDefinitionsVector.end());
std::vector<RiaSummaryCurveDefinition> allCurveDefinitionsVector =
m_summaryCurveSelectionEditor->summaryAddressSelection()->selectedCurveDefinitions();
std::set<RiaSummaryCurveDefinition> allCurveDefinitions =
std::set<RiaSummaryCurveDefinition>(allCurveDefinitionsVector.begin(), allCurveDefinitionsVector.end());
std::vector<RimSummaryCurve*> currentCurvesInPreviewPlot = m_previewPlot->summaryAndEnsembleCurves();
if (allCurveDefinitions.size() != currentCurvesInPreviewPlot.size())
@ -332,22 +338,25 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
{
// Determine which curves to delete from plot
std::set<RiaSummaryCurveDefinition> deleteCurveDefs;
std::set_difference(currentCurveDefs.begin(), currentCurveDefs.end(),
allCurveDefinitions.begin(), allCurveDefinitions.end(),
std::set_difference(currentCurveDefs.begin(),
currentCurveDefs.end(),
allCurveDefinitions.begin(),
allCurveDefinitions.end(),
std::inserter(deleteCurveDefs, deleteCurveDefs.end()));
for (const auto& curve : currentCurvesInPreviewPlot)
{
RiaSummaryCurveDefinition curveDef = RiaSummaryCurveDefinition(curve->summaryCaseY(), curve->summaryAddressY());
if (deleteCurveDefs.count(curveDef) > 0)
curvesToDelete.insert(curve);
if (deleteCurveDefs.count(curveDef) > 0) curvesToDelete.insert(curve);
}
}
else
{
// Determine which curves are new since last time
std::set_difference(allCurveDefinitions.begin(), allCurveDefinitions.end(),
currentCurveDefs.begin(), currentCurveDefs.end(),
std::set_difference(allCurveDefinitions.begin(),
allCurveDefinitions.end(),
currentCurveDefs.begin(),
currentCurveDefs.end(),
std::inserter(newCurveDefs, newCurveDefs.end()));
}
@ -363,8 +372,15 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
const std::set<RimSummaryCurve*>& curvesToDelete)
{
RimSummaryCase* prevCase = nullptr;
RimSummaryCurveAppearanceCalculator curveLookCalc(allCurveDefsToDisplay, getAllSummaryCaseNames(), getAllSummaryWellNames());
std::set<RiaSummaryCurveDefinition> summaryCurveDefsToDisplay;
// Ignore curve sets when assigning colors to singe summary curves
for (const auto& def : allCurveDefsToDisplay)
{
if (!def.isEnsembleCurve()) summaryCurveDefsToDisplay.insert(def);
}
RimSummaryCurveAppearanceCalculator curveLookCalc(summaryCurveDefsToDisplay, getAllSummaryCaseNames(), getAllSummaryWellNames());
initCurveAppearanceCalculator(curveLookCalc);
// Delete curves
@ -400,6 +416,10 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(const std::
curveSet->setSummaryCaseCollection(curveDef.ensemble());
curveSet->setSummaryAddress(curveDef.summaryAddress());
m_previewPlot->ensembleCurveSetCollection()->addCurveSet(curveSet);
// Set single curve set color
size_t colorIndex = m_previewPlot->ensembleCurveSetCollection()->curveSetCount();
curveSet->setColor(RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f(colorIndex));
}
curveSet->addCurve(curve);
}
@ -469,7 +489,9 @@ std::set<std::string> RicSummaryCurveCreator::getAllSummaryWellNames()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
void RicSummaryCurveCreator::defineEditorAttribute(const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute)
{
if (&m_applyButtonField == field)
{
@ -607,7 +629,8 @@ void RicSummaryCurveCreator::updateTargetPlot()
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve* curve, RimSummaryPlot* plot, bool forceVisible)
{
RimSummaryCurve* curveCopy = dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
RimSummaryCurve* curveCopy =
dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
CVF_ASSERT(curveCopy);
if (forceVisible)
@ -626,9 +649,12 @@ void RicSummaryCurveCreator::copyCurveAndAddToPlot(const RimSummaryCurve *curve,
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreator::copyEnsembleCurveAndAddToCurveSet(const RimSummaryCurve *curve, RimEnsembleCurveSet* curveSet, bool forceVisible)
void RicSummaryCurveCreator::copyEnsembleCurveAndAddToCurveSet(const RimSummaryCurve* curve,
RimEnsembleCurveSet* curveSet,
bool forceVisible)
{
RimSummaryCurve* curveCopy = dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
RimSummaryCurve* curveCopy =
dynamic_cast<RimSummaryCurve*>(curve->xmlCapability()->copyByXmlSerialization(caf::PdmDefaultObjectFactory::instance()));
CVF_ASSERT(curveCopy);
if (forceVisible)
@ -685,11 +711,7 @@ void RicSummaryCurveCreator::initCurveAppearanceCalculator(RimSummaryCurveAppear
RimSummaryCurveAppearanceCalculator::CurveAppearanceType gropAppearance;
RimSummaryCurveAppearanceCalculator::CurveAppearanceType regiAppearance;
curveAppearanceCalc.getDimensions(&caseAppearance,
&variAppearance,
&wellAppearance,
&gropAppearance,
&regiAppearance);
curveAppearanceCalc.getDimensions(&caseAppearance, &variAppearance, &wellAppearance, &gropAppearance, &regiAppearance);
m_caseAppearanceType = caseAppearance;
m_variableAppearanceType = variAppearance;
@ -764,11 +786,11 @@ void RicSummaryCurveCreator::createNewPlot()
candidatePlotName = m_previewPlot->generatedPlotTitleFromVisibleCurves();
}
{
bool ok = false;
candidatePlotName = QInputDialog::getText(nullptr,
"New Summary Plot Name", "New Summary Plot Name",
"New Summary Plot Name",
"New Summary Plot Name",
QLineEdit::Normal,
candidatePlotName,
&ok,

View File

@ -1004,6 +1004,10 @@ void RimSummaryPlot::deleteCurve(RimSummaryCurve* curve)
curveSet->deleteCurve(curve);
if (curveSet->curves().empty())
{
if (curveSet->colorMode() == RimEnsembleCurveSet::BY_ENSEMBLE_PARAM)
{
qwtPlot()->removeEnsembleCurveSetLegend(curveSet);
}
m_ensembleCurveSetCollection->deleteCurveSet(curveSet);
}
return;
@ -1189,7 +1193,7 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering
if (uiConfigName == RicSummaryCurveCreator::CONFIGURATION_NAME)
{
uiTreeOrdering.add(&m_summaryCurveCollection);
if (!m_isCrossPlot && !m_ensembleCurveSetCollection->curveSets().empty())
if (!m_isCrossPlot)
{
uiTreeOrdering.add(&m_ensembleCurveSetCollection);
}
@ -1210,7 +1214,7 @@ void RimSummaryPlot::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering
axisFolder->add(&m_rightYAxisProperties);
uiTreeOrdering.add(&m_summaryCurveCollection);
if (!m_isCrossPlot && !m_ensembleCurveSetCollection->curveSets().empty())
if (!m_isCrossPlot)
{
uiTreeOrdering.add(&m_ensembleCurveSetCollection);
}