mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#5607 Saturation Pressure Plots : Add workaround for multi plot of SatNumPlots
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
#include "RimMultiPlotCollection.h"
|
||||
#include "RimPlot.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSaturationPressurePlot.h"
|
||||
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
#include <QAction>
|
||||
@@ -68,6 +69,21 @@ caf::PdmScriptResponse RicNewMultiPlotFeature::execute()
|
||||
for ( auto plot : plots )
|
||||
{
|
||||
auto copy = dynamic_cast<RimPlot*>( plot->copyByXmlSerialization( caf::PdmDefaultObjectFactory::instance() ) );
|
||||
|
||||
{
|
||||
// TODO: Workaround for fixing the PdmPointer in RimEclipseResultDefinition
|
||||
// caf::PdmPointer<RimEclipseCase> m_eclipseCase;
|
||||
// This pdmpointer must be changed to a ptrField
|
||||
|
||||
auto saturationPressurePlotOriginal = dynamic_cast<RimSaturationPressurePlot*>( plot );
|
||||
auto saturationPressurePlotCopy = dynamic_cast<RimSaturationPressurePlot*>( copy );
|
||||
if ( saturationPressurePlotCopy && saturationPressurePlotOriginal )
|
||||
{
|
||||
RimSaturationPressurePlot::fixPointersAfterCopy( saturationPressurePlotOriginal,
|
||||
saturationPressurePlotCopy );
|
||||
}
|
||||
}
|
||||
|
||||
plotWindow->addPlot( copy );
|
||||
|
||||
copy->resolveReferencesRecursively();
|
||||
|
||||
@@ -74,6 +74,19 @@ void RimPlotCellPropertyFilter::setValueRange( double lowerBound, double upperBo
|
||||
m_upperBound = upperBound;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPlotCellPropertyFilter::updatePointerAfterCopy( RimPlotCellPropertyFilter* other )
|
||||
{
|
||||
if ( eclipseResultDefinition() && eclipseResultDefinition()->eclipseCase() )
|
||||
{
|
||||
auto eclipseCase = eclipseResultDefinition()->eclipseCase();
|
||||
|
||||
other->eclipseResultDefinition()->setEclipseCase( eclipseCase );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -43,6 +43,8 @@ public:
|
||||
|
||||
void setValueRange( double lowerBound, double upperBound );
|
||||
|
||||
void updatePointerAfterCopy( RimPlotCellPropertyFilter* other );
|
||||
|
||||
protected:
|
||||
void updateCellVisibilityFromFilter( size_t timeStepIndex, cvf::UByteArray* visibleCells ) override;
|
||||
void defineEditorAttribute( const caf::PdmFieldHandle* field,
|
||||
|
||||
@@ -190,6 +190,31 @@ void RimSaturationPressurePlot::assignCaseAndEquilibriumRegion( RiaDefines::Poro
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSaturationPressurePlot::fixPointersAfterCopy( RimSaturationPressurePlot* source, RimSaturationPressurePlot* copy )
|
||||
{
|
||||
CAF_ASSERT( source && copy );
|
||||
|
||||
std::vector<RimPlotCellPropertyFilter*> sourceFilters;
|
||||
source->descendantsIncludingThisOfType( sourceFilters );
|
||||
|
||||
std::vector<RimPlotCellPropertyFilter*> copyFilters;
|
||||
copy->descendantsIncludingThisOfType( copyFilters );
|
||||
|
||||
if ( !sourceFilters.empty() && ( sourceFilters.size() == copyFilters.size() ) )
|
||||
{
|
||||
for ( size_t i = 0; i < sourceFilters.size(); i++ )
|
||||
{
|
||||
auto sourceFilter = sourceFilters[i];
|
||||
auto copyFilter = copyFilters[i];
|
||||
|
||||
sourceFilter->updatePointerAfterCopy( copyFilter );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -40,6 +40,8 @@ public:
|
||||
int zeroBasedEquilRegionIndex,
|
||||
int timeStep );
|
||||
|
||||
static void fixPointersAfterCopy( RimSaturationPressurePlot* source, RimSaturationPressurePlot* copy );
|
||||
|
||||
protected:
|
||||
void initAfterRead() override;
|
||||
QString xAxisParameterString() const override;
|
||||
|
||||
Reference in New Issue
Block a user