mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-09 23:16:00 -06:00
#3200 Plot editor. Remove curve sets correctly
This commit is contained in:
parent
6feb743542
commit
8b14a01a2b
@ -7,6 +7,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaFractureDefines.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferences.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaRftPltCurveDefinition.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaViewRedrawScheduler.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaMemoryCleanup.h
|
||||
@ -21,6 +22,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RiaMain.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaPreferences.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaPorosityModel.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaSummaryCurveDefinition.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaCurveSetDefinition.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaRftPltCurveDefinition.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaViewRedrawScheduler.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RiaMemoryCleanup.cpp
|
||||
|
71
ApplicationCode/Application/RiaCurveSetDefinition.cpp
Normal file
71
ApplicationCode/Application/RiaCurveSetDefinition.cpp
Normal file
@ -0,0 +1,71 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2017 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RiaCurveSetDefinition.h"
|
||||
|
||||
#include "RifSummaryReaderInterface.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaCurveSetDefinition::RiaCurveSetDefinition() :
|
||||
m_ensemble(nullptr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiaCurveSetDefinition::RiaCurveSetDefinition(RimSummaryCaseCollection* ensemble, const RifEclipseSummaryAddress& summaryAddress) :
|
||||
m_ensemble(ensemble),
|
||||
m_summaryAddress(summaryAddress)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCaseCollection* RiaCurveSetDefinition::ensemble() const
|
||||
{
|
||||
return m_ensemble;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RifEclipseSummaryAddress& RiaCurveSetDefinition::summaryAddress() const
|
||||
{
|
||||
return m_summaryAddress;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RiaCurveSetDefinition::operator<(const RiaCurveSetDefinition& other) const
|
||||
{
|
||||
if (m_ensemble != other.ensemble())
|
||||
{
|
||||
return (m_ensemble < other.ensemble());
|
||||
}
|
||||
|
||||
return (m_summaryAddress < other.summaryAddress());
|
||||
}
|
48
ApplicationCode/Application/RiaCurveSetDefinition.h
Normal file
48
ApplicationCode/Application/RiaCurveSetDefinition.h
Normal file
@ -0,0 +1,48 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2017 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
class RimSummaryCaseCollection;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RiaCurveSetDefinition
|
||||
{
|
||||
public:
|
||||
RiaCurveSetDefinition();
|
||||
explicit RiaCurveSetDefinition(RimSummaryCaseCollection* emsemble,
|
||||
const RifEclipseSummaryAddress& summaryAddress);
|
||||
|
||||
RimSummaryCaseCollection* ensemble() const;
|
||||
const RifEclipseSummaryAddress& summaryAddress() const;
|
||||
|
||||
bool operator < (const RiaCurveSetDefinition& other) const;
|
||||
|
||||
private:
|
||||
RimSummaryCaseCollection * m_ensemble;
|
||||
RifEclipseSummaryAddress m_summaryAddress;
|
||||
};
|
@ -21,6 +21,7 @@
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaColorTables.h"
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
#include "RiaCurveSetDefinition.h"
|
||||
|
||||
#include "RicSelectSummaryPlotUI.h"
|
||||
#include "RiuSummaryCurveDefinitionKeywords.h"
|
||||
@ -335,7 +336,7 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
std::set<RiaSummaryCurveDefinition>(allCurveDefinitionsVector.begin(), allCurveDefinitionsVector.end());
|
||||
|
||||
std::vector<RimSummaryCurve*> currentCurvesInPreviewPlot = m_previewPlot->summaryAndEnsembleCurves();
|
||||
if (allCurveDefinitions.size() != currentCurvesInPreviewPlot.size())
|
||||
|
||||
{
|
||||
std::set<RiaSummaryCurveDefinition> currentCurveDefs;
|
||||
std::set<RiaSummaryCurveDefinition> newCurveDefs;
|
||||
@ -347,7 +348,6 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
currentCurveDefs.insert(RiaSummaryCurveDefinition(sumCase, curve->summaryAddressY(), sumCase ? sumCase->ensemble() : nullptr));
|
||||
}
|
||||
|
||||
if (allCurveDefinitions.size() < currentCurvesInPreviewPlot.size())
|
||||
{
|
||||
// Determine which curves to delete from plot
|
||||
std::set<RiaSummaryCurveDefinition> deleteCurveDefs;
|
||||
@ -364,7 +364,7 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
if (deleteCurveDefs.count(curveDef) > 0) curvesToDelete.insert(curve);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
{
|
||||
// Determine which curves are new since last time
|
||||
std::set_difference(allCurveDefinitions.begin(),
|
||||
@ -374,7 +374,40 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
std::inserter(newCurveDefs, newCurveDefs.end()));
|
||||
}
|
||||
|
||||
updatePreviewCurvesFromCurveDefinitions(allCurveDefinitions, newCurveDefs, curvesToDelete);
|
||||
// Curve sets to delete
|
||||
std::set<RimEnsembleCurveSet*> curveSetsToDelete;
|
||||
{
|
||||
std::vector<RiaCurveSetDefinition> allCurveSetDefinitionsVector = m_summaryCurveSelectionEditor->summaryAddressSelection()->allCurveSetDefinitionsFromSelections();
|
||||
std::set<RiaCurveSetDefinition> allCurveSetDefinitions = std::set<RiaCurveSetDefinition>(allCurveSetDefinitionsVector.begin(), allCurveSetDefinitionsVector.end());
|
||||
std::vector<RimEnsembleCurveSet*> currentCurveSetsInPreviewPlot = m_previewPlot->curveSets();
|
||||
std::set<RiaCurveSetDefinition> currentCurveSetDefs;
|
||||
|
||||
for (const auto& curveSet : currentCurveSetsInPreviewPlot)
|
||||
{
|
||||
RimSummaryCaseCollection* ensemble = curveSet->summaryCaseCollection();
|
||||
currentCurveSetDefs.insert(RiaCurveSetDefinition(ensemble, curveSet->summaryAddress()));
|
||||
}
|
||||
|
||||
if (allCurveSetDefinitions.size() < currentCurveSetsInPreviewPlot.size())
|
||||
{
|
||||
// Determine which curves to delete from plot
|
||||
std::set<RiaCurveSetDefinition> deleteCurveSetDefs;
|
||||
std::set_difference(currentCurveSetDefs.begin(),
|
||||
currentCurveSetDefs.end(),
|
||||
allCurveSetDefinitions.begin(),
|
||||
allCurveSetDefinitions.end(),
|
||||
std::inserter(deleteCurveSetDefs, deleteCurveSetDefs.end()));
|
||||
|
||||
for (const auto& curveSet : currentCurveSetsInPreviewPlot)
|
||||
{
|
||||
RimSummaryCaseCollection* ensemble = curveSet->summaryCaseCollection();
|
||||
RiaCurveSetDefinition curveSetDef = RiaCurveSetDefinition(ensemble, curveSet->summaryAddress());
|
||||
if (deleteCurveSetDefs.count(curveSetDef) > 0) curveSetsToDelete.insert(curveSet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updatePreviewCurvesFromCurveDefinitions(allCurveDefinitions, newCurveDefs, curvesToDelete, curveSetsToDelete);
|
||||
}
|
||||
}
|
||||
|
||||
@ -384,7 +417,8 @@ void RicSummaryCurveCreator::syncPreviewCurvesFromUiSelection()
|
||||
void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(
|
||||
const std::set<RiaSummaryCurveDefinition>& allCurveDefsToDisplay,
|
||||
const std::set<RiaSummaryCurveDefinition>& curveDefsToAdd,
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete)
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete,
|
||||
const std::set<RimEnsembleCurveSet*>& curveSetsToDelete)
|
||||
{
|
||||
static bool warningDisplayed = false;
|
||||
|
||||
@ -402,6 +436,10 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(
|
||||
initCurveAppearanceCalculator(curveLookCalc);
|
||||
|
||||
// Delete curves
|
||||
for (const auto& curveSet : curveSetsToDelete)
|
||||
{
|
||||
m_previewPlot->ensembleCurveSetCollection()->deleteCurveSet(curveSet);
|
||||
}
|
||||
for (const auto& curve : curvesToDelete)
|
||||
{
|
||||
m_previewPlot->deleteCurve(curve);
|
||||
|
@ -87,7 +87,8 @@ private:
|
||||
void syncPreviewCurvesFromUiSelection();
|
||||
void updatePreviewCurvesFromCurveDefinitions(const std::set<RiaSummaryCurveDefinition>& allCurveDefsToDisplay,
|
||||
const std::set<RiaSummaryCurveDefinition>& curveDefsToAdd,
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete);
|
||||
const std::set<RimSummaryCurve*>& curvesToDelete,
|
||||
const std::set<RimEnsembleCurveSet*>& curveSetsToDelete);
|
||||
std::set<std::string> getAllSummaryCaseNames();
|
||||
std::set<std::string> getAllSummaryWellNames();
|
||||
|
||||
|
@ -400,6 +400,14 @@ RiuSummaryQwtPlot* RimSummaryPlot::qwtPlot() const
|
||||
return m_qwtPlot;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimEnsembleCurveSet*> RimSummaryPlot::curveSets() const
|
||||
{
|
||||
return ensembleCurveSetCollection()->curveSets();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -112,6 +112,8 @@ public:
|
||||
RimSummaryCurveCollection* summaryCurveCollection() const;
|
||||
RiuSummaryQwtPlot* qwtPlot() const;
|
||||
|
||||
std::vector<RimEnsembleCurveSet*> curveSets() const;
|
||||
|
||||
void updatePlotTitle();
|
||||
|
||||
const RimSummaryPlotNameHelper* activePlotTitleHelperAllCurves() const;
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaSummaryCurveDefinition.h"
|
||||
#include "RiaCurveSetDefinition.h"
|
||||
|
||||
#include "RifEclipseSummaryAddress.h"
|
||||
#include "RifSummaryReaderInterface.h"
|
||||
@ -302,6 +303,40 @@ std::vector<RiaSummaryCurveDefinition> RiuSummaryCurveDefSelection::allCurveDefi
|
||||
return curveDefVector;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RiaCurveSetDefinition> RiuSummaryCurveDefSelection::allCurveSetDefinitionsFromSelections() const
|
||||
{
|
||||
std::vector<RiaCurveSetDefinition> curveSetDefVector;
|
||||
std::set<RiaCurveSetDefinition> curveSetDefinitions;
|
||||
std::set<RifEclipseSummaryAddress> selectedAddressesFromUi = buildAddressListFromSelections();
|
||||
|
||||
for (SummarySource* currSource : selectedSummarySources())
|
||||
{
|
||||
RimSummaryCaseCollection* ensemble = dynamic_cast<RimSummaryCaseCollection*>(currSource);
|
||||
if (!ensemble) continue;
|
||||
|
||||
std::vector<SummarySource*> sourceSources;
|
||||
std::set<RifEclipseSummaryAddress> addressesFromSource;
|
||||
|
||||
// Build case list
|
||||
auto addresses = ensemble->calculateUnionOfSummaryAddresses();
|
||||
addressesFromSource.insert(addresses.begin(), addresses.end());
|
||||
|
||||
for (const auto& addressFromSource : addressesFromSource)
|
||||
{
|
||||
if (selectedAddressesFromUi.count(addressFromSource) > 0)
|
||||
{
|
||||
curveSetDefinitions.insert(RiaCurveSetDefinition(ensemble, addressFromSource));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::copy(curveSetDefinitions.begin(), curveSetDefinitions.end(), std::back_inserter(curveSetDefVector));
|
||||
return curveSetDefVector;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// One CurveDefinition pr ensemble curve set
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -37,6 +37,7 @@ class RimSummaryCaseCollection;
|
||||
class RimSummaryCurveAutoName;
|
||||
class RimSummaryPlot;
|
||||
class RiaSummaryCurveDefinition;
|
||||
class RiaCurveSetDefinition;
|
||||
class SummaryIdentifierAndField;
|
||||
|
||||
|
||||
@ -57,6 +58,7 @@ public:
|
||||
|
||||
void setSelectedCurveDefinitions(const std::vector<RiaSummaryCurveDefinition>& curveDefinitions);
|
||||
std::vector<RiaSummaryCurveDefinition> allCurveDefinitionsFromSelection() const;
|
||||
std::vector<RiaCurveSetDefinition> allCurveSetDefinitionsFromSelections() const;
|
||||
std::vector<RiaSummaryCurveDefinition> selection() const;
|
||||
|
||||
void setMultiSelectionMode(bool multiSelectionMode);
|
||||
|
Loading…
Reference in New Issue
Block a user