mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Fix conversion into new cross plot structure
* Fix conversion into new cross plot structure * Guard null pointer * Create one multi plot per cross plot
This commit is contained in:
parent
8e5788bb24
commit
55687c4e3e
@ -196,34 +196,31 @@ void RimMainPlotCollection::initAfterRead()
|
||||
|
||||
// Move cross plots into summary plot collection
|
||||
auto crossPlots = m_summaryCrossPlotCollection_OBSOLETE->plots();
|
||||
if ( !crossPlots.empty() )
|
||||
for ( auto crossPlot : crossPlots )
|
||||
{
|
||||
m_summaryCrossPlotCollection_OBSOLETE->removePlot( crossPlot );
|
||||
|
||||
auto* summaryMultiPlot = new RimSummaryMultiPlot;
|
||||
summaryMultiPlot->setMultiPlotTitle( QString( "Multi Plot %1" ).arg( m_summaryMultiPlotCollection->multiPlots().size() + 1 ) );
|
||||
summaryMultiPlot->setAsPlotMdiWindow();
|
||||
m_summaryMultiPlotCollection->addSummaryMultiPlot( summaryMultiPlot );
|
||||
|
||||
for ( auto crossPlot : crossPlots )
|
||||
// We want to convert RimSummaryCrossPlot into a RimSummaryPlot. The cross plot is derived from RimSummaryPlot, but we need to
|
||||
// create a new RimSummaryPlot to be able to store the PDM object as a RimSummaryPlot instead of RimSummaryCrossPlot
|
||||
auto summaryPlot = new RimSummaryPlot;
|
||||
summaryMultiPlot->addPlot( summaryPlot );
|
||||
|
||||
for ( auto curve : crossPlot->allCurves( RimSummaryDataSourceStepping::Axis::Y_AXIS ) )
|
||||
{
|
||||
m_summaryCrossPlotCollection_OBSOLETE->removePlot( crossPlot );
|
||||
summaryMultiPlot->addPlot( crossPlot );
|
||||
crossPlot->removeCurve( curve );
|
||||
|
||||
// We want to convert RimSummaryCrossPlot into a RimSummaryPlot. The cross plot is derived from RimSummaryPlot, but we need to
|
||||
// create a new RimSummaryPlot to be able to store the PDM object as a RimSummaryPlot instead of RimSummaryCrossPlot
|
||||
auto summaryPlot = new RimSummaryPlot;
|
||||
summaryMultiPlot->addPlot( summaryPlot );
|
||||
if ( curve->summaryCaseX() != nullptr ) curve->setAxisTypeX( RiaDefines::HorizontalAxisType::SUMMARY_VECTOR );
|
||||
|
||||
for ( auto curve : crossPlot->allCurves( RimSummaryDataSourceStepping::Axis::Y_AXIS ) )
|
||||
{
|
||||
crossPlot->removeCurve( curve );
|
||||
|
||||
if ( curve->summaryCaseX() != nullptr ) curve->setAxisTypeX( RiaDefines::HorizontalAxisType::SUMMARY_VECTOR );
|
||||
|
||||
summaryPlot->insertCurve( curve, std::numeric_limits<size_t>::max() );
|
||||
}
|
||||
|
||||
delete crossPlot;
|
||||
summaryPlot->insertCurve( curve, std::numeric_limits<size_t>::max() );
|
||||
summaryPlot->findOrAssignPlotAxisX( curve );
|
||||
}
|
||||
|
||||
delete crossPlot;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -644,7 +644,11 @@ void RimSummaryPlot::copyAxisPropertiesFromOther( RiaDefines::PlotAxis plotAxisT
|
||||
|
||||
QString data = ap->writeObjectToXmlString();
|
||||
|
||||
axisPropertiesForPlotAxis( ap->plotAxis() )->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||
auto axisProperty = axisPropertiesForPlotAxis( ap->plotAxis() );
|
||||
if ( axisProperty )
|
||||
{
|
||||
axisProperty->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1237,20 +1241,39 @@ void RimSummaryPlot::findOrAssignPlotAxisX( RimSummaryCurve* curve )
|
||||
}
|
||||
}
|
||||
|
||||
if ( curve->summaryCaseX() != nullptr && plotWidget() && plotWidget()->isMultiAxisSupported() )
|
||||
if ( curve->summaryCaseX() != nullptr )
|
||||
{
|
||||
QString axisObjectName = "New Axis";
|
||||
if ( !curve->summaryAddressX().uiText().empty() ) axisObjectName = QString::fromStdString( curve->summaryAddressX().uiText() );
|
||||
|
||||
RiuPlotAxis newPlotAxis = plotWidget()->createNextPlotAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
addNewAxisProperties( newPlotAxis, axisObjectName );
|
||||
if ( plotWidget() )
|
||||
if ( !plotWidget() )
|
||||
{
|
||||
plotWidget()->ensureAxisIsCreated( newPlotAxis );
|
||||
// Assign a default bottom axis if no plot widget is present. This can happens during project load and transformation to new
|
||||
// cross plot structure in RimMainPlotCollection::initAfterRead()
|
||||
|
||||
QString axisObjectName = "New Axis";
|
||||
if ( !curve->summaryAddressX().uiText().empty() ) axisObjectName = QString::fromStdString( curve->summaryAddressX().uiText() );
|
||||
|
||||
RiuPlotAxis newPlotAxis = RiuPlotAxis::defaultBottomForSummaryVectors();
|
||||
addNewAxisProperties( newPlotAxis, axisObjectName );
|
||||
|
||||
curve->setTopOrBottomAxisX( newPlotAxis );
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
updateAxes();
|
||||
curve->setTopOrBottomAxisX( newPlotAxis );
|
||||
if ( plotWidget()->isMultiAxisSupported() )
|
||||
{
|
||||
QString axisObjectName = "New Axis";
|
||||
if ( !curve->summaryAddressX().uiText().empty() ) axisObjectName = QString::fromStdString( curve->summaryAddressX().uiText() );
|
||||
|
||||
RiuPlotAxis newPlotAxis = plotWidget()->createNextPlotAxis( RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM );
|
||||
addNewAxisProperties( newPlotAxis, axisObjectName );
|
||||
if ( plotWidget() )
|
||||
{
|
||||
plotWidget()->ensureAxisIsCreated( newPlotAxis );
|
||||
}
|
||||
|
||||
updateAxes();
|
||||
curve->setTopOrBottomAxisX( newPlotAxis );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user