mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Fix update issues when switching from axis side (#8664)
* #8610 Ensemble import : Set default axis * Summary Axis : Delete previous axis when switching side * Janitor: Use auto and empty()
This commit is contained in:
parent
262aed3c8d
commit
0bab8a9834
ApplicationLibCode
ProjectDataModel/Summary
UserInterface
@ -1685,6 +1685,8 @@ void RimEnsembleCurveSet::updateEnsembleCurves( const std::vector<RimSummaryCase
|
||||
|
||||
if ( m_statistics->hideEnsembleCurves() ) return;
|
||||
|
||||
setLeftOrRightAxisY( axisY() );
|
||||
|
||||
RimSummaryAddress* addr = m_yValuesSummaryAddress();
|
||||
if ( plot && addr->address().category() != RifEclipseSummaryAddress::SUMMARY_INVALID )
|
||||
{
|
||||
@ -2095,7 +2097,7 @@ RiuPlotAxis RimEnsembleCurveSet::axisY() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEnsembleCurveSet::setAxisY( RiuPlotAxis plotAxis )
|
||||
void RimEnsembleCurveSet::setLeftOrRightAxisY( RiuPlotAxis plotAxis )
|
||||
{
|
||||
RimSummaryPlot* plot = nullptr;
|
||||
firstAncestorOrThisOfTypeAsserted( plot );
|
||||
|
@ -168,7 +168,7 @@ public:
|
||||
std::vector<cvf::Color3f> generateColorsForCases( const std::vector<RimSummaryCase*>& summaryCases ) const;
|
||||
|
||||
RiuPlotAxis axisY() const;
|
||||
void setAxisY( RiuPlotAxis plotAxis );
|
||||
void setLeftOrRightAxisY( RiuPlotAxis plotAxis );
|
||||
|
||||
protected:
|
||||
void initAfterRead() override;
|
||||
|
@ -93,8 +93,7 @@ CAF_PDM_SOURCE_INIT( RimSummaryPlot, "SummaryPlot" );
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryPlot::RimSummaryPlot( bool isCrossPlot )
|
||||
: RimPlot()
|
||||
, m_isCrossPlot( isCrossPlot )
|
||||
: m_isCrossPlot( isCrossPlot )
|
||||
{
|
||||
CAF_PDM_InitScriptableObject( "Summary Plot", ":/SummaryPlotLight16x16.png", "", "A Summary Plot" );
|
||||
|
||||
@ -134,7 +133,7 @@ RimSummaryPlot::RimSummaryPlot( bool isCrossPlot )
|
||||
}
|
||||
else
|
||||
{
|
||||
RimSummaryTimeAxisProperties* timeAxisProperties = new RimSummaryTimeAxisProperties;
|
||||
auto* timeAxisProperties = new RimSummaryTimeAxisProperties;
|
||||
m_axisProperties.push_back( timeAxisProperties );
|
||||
}
|
||||
|
||||
@ -142,7 +141,7 @@ RimSummaryPlot::RimSummaryPlot( bool isCrossPlot )
|
||||
m_textCurveSetEditor.uiCapability()->setUiTreeHidden( true );
|
||||
m_textCurveSetEditor = new RimSummaryPlotFilterTextCurveSetEditor;
|
||||
|
||||
m_nameHelperAllCurves.reset( new RimSummaryPlotNameHelper );
|
||||
m_nameHelperAllCurves = std::make_unique<RimSummaryPlotNameHelper>();
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" );
|
||||
m_sourceStepping = new RimSummaryPlotSourceStepping;
|
||||
@ -240,9 +239,9 @@ bool RimSummaryPlot::isLogarithmicScaleEnabled( RiuPlotAxis plotAxis ) const
|
||||
RimSummaryTimeAxisProperties* RimSummaryPlot::timeAxisProperties()
|
||||
{
|
||||
// Find the first time axis (which is correct since there is only one).
|
||||
for ( auto ap : m_axisProperties )
|
||||
for ( const auto& ap : m_axisProperties )
|
||||
{
|
||||
RimSummaryTimeAxisProperties* timeAxis = dynamic_cast<RimSummaryTimeAxisProperties*>( ap.p() );
|
||||
auto* timeAxis = dynamic_cast<RimSummaryTimeAxisProperties*>( ap.p() );
|
||||
if ( timeAxis ) return timeAxis;
|
||||
}
|
||||
|
||||
@ -267,12 +266,11 @@ time_t RimSummaryPlot::firstTimeStepOfFirstCurve()
|
||||
}
|
||||
}
|
||||
|
||||
if ( firstCurve && firstCurve->timeStepsY().size() > 0 )
|
||||
if ( firstCurve && !firstCurve->timeStepsY().empty() )
|
||||
{
|
||||
return firstCurve->timeStepsY()[0];
|
||||
}
|
||||
else
|
||||
return time_t( 0 );
|
||||
return time_t( 0 );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -673,7 +671,7 @@ void RimSummaryPlot::setPlotInfoLabel( const QString& label )
|
||||
font.setBold( true );
|
||||
qwtText.setFont( font );
|
||||
|
||||
m_plotInfoLabel.reset( new QwtPlotTextLabel() );
|
||||
m_plotInfoLabel = std::make_unique<QwtPlotTextLabel>();
|
||||
m_plotInfoLabel->setText( qwtText );
|
||||
m_plotInfoLabel->setMargin( 10 );
|
||||
}
|
||||
@ -683,7 +681,7 @@ void RimSummaryPlot::setPlotInfoLabel( const QString& label )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::showPlotInfoLabel( bool show )
|
||||
{
|
||||
RiuQwtPlotWidget* qwtPlotWidget = dynamic_cast<RiuQwtPlotWidget*>( plotWidget() );
|
||||
auto* qwtPlotWidget = dynamic_cast<RiuQwtPlotWidget*>( plotWidget() );
|
||||
if ( !qwtPlotWidget ) return;
|
||||
|
||||
if ( show )
|
||||
@ -791,7 +789,7 @@ void RimSummaryPlot::updateAxis( RiaDefines::PlotAxis plotAxis )
|
||||
RiuPlotAxis riuPlotAxis = yAxisProperties->plotAxisType();
|
||||
if ( riuPlotAxis.axis() == plotAxis )
|
||||
{
|
||||
RimPlotAxisProperties* axisProperties = dynamic_cast<RimPlotAxisProperties*>( yAxisProperties );
|
||||
auto* axisProperties = dynamic_cast<RimPlotAxisProperties*>( yAxisProperties );
|
||||
if ( yAxisProperties->isActive() && hasVisibleCurvesForAxis( riuPlotAxis ) && axisProperties )
|
||||
{
|
||||
plotWidget()->enableAxis( riuPlotAxis, true );
|
||||
@ -931,17 +929,17 @@ std::vector<RimSummaryCurve*> RimSummaryPlot::visibleSummaryCurvesForAxis( RiuPl
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimSummaryPlot::hasVisibleCurvesForAxis( RiuPlotAxis plotAxis ) const
|
||||
{
|
||||
if ( visibleSummaryCurvesForAxis( plotAxis ).size() > 0 )
|
||||
if ( !visibleSummaryCurvesForAxis( plotAxis ).empty() )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( visibleTimeHistoryCurvesForAxis( plotAxis ).size() > 0 )
|
||||
if ( !visibleTimeHistoryCurvesForAxis( plotAxis ).empty() )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if ( visibleAsciiDataCurvesForAxis( plotAxis ).size() > 0 )
|
||||
if ( !visibleAsciiDataCurvesForAxis( plotAxis ).empty() )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@ -969,7 +967,7 @@ std::vector<RimGridTimeHistoryCurve*> RimSummaryPlot::visibleTimeHistoryCurvesFo
|
||||
{
|
||||
std::vector<RimGridTimeHistoryCurve*> curves;
|
||||
|
||||
for ( auto c : m_gridTimeHistoryCurves )
|
||||
for ( const auto& c : m_gridTimeHistoryCurves )
|
||||
{
|
||||
if ( c->isCurveVisible() )
|
||||
{
|
||||
@ -990,7 +988,7 @@ std::vector<RimAsciiDataCurve*> RimSummaryPlot::visibleAsciiDataCurvesForAxis( R
|
||||
{
|
||||
std::vector<RimAsciiDataCurve*> curves;
|
||||
|
||||
for ( auto c : m_asciiDataCurves )
|
||||
for ( const auto& c : m_asciiDataCurves )
|
||||
{
|
||||
if ( c->isCurveVisible() )
|
||||
{
|
||||
@ -1023,8 +1021,8 @@ void RimSummaryPlot::updateTimeAxis( RimSummaryTimeAxisProperties* timeAxisPrope
|
||||
RiaQDateTimeTools::DateFormatComponents dateComponents = timeAxisProperties->dateComponents();
|
||||
RiaQDateTimeTools::TimeFormatComponents timeComponents = timeAxisProperties->timeComponents();
|
||||
|
||||
QString dateFormat = timeAxisProperties->dateFormat();
|
||||
QString timeFormat = timeAxisProperties->timeFormat();
|
||||
const QString& dateFormat = timeAxisProperties->dateFormat();
|
||||
const QString& timeFormat = timeAxisProperties->timeFormat();
|
||||
|
||||
m_summaryPlot->useDateBasedTimeAxis( dateFormat, timeFormat, dateComponents, timeComponents );
|
||||
}
|
||||
@ -1096,7 +1094,7 @@ void RimSummaryPlot::addTimeAnnotation( time_t time )
|
||||
{
|
||||
RimSummaryTimeAxisProperties* axisProps = timeAxisProperties();
|
||||
{
|
||||
RimTimeAxisAnnotation* annotation = new RimTimeAxisAnnotation;
|
||||
auto* annotation = new RimTimeAxisAnnotation;
|
||||
annotation->setTime( time );
|
||||
|
||||
axisProps->appendAnnotation( annotation );
|
||||
@ -1110,7 +1108,7 @@ void RimSummaryPlot::addTimeRangeAnnotation( time_t startTime, time_t endTime )
|
||||
{
|
||||
RimSummaryTimeAxisProperties* axisProps = timeAxisProperties();
|
||||
{
|
||||
RimTimeAxisAnnotation* annotation = new RimTimeAxisAnnotation;
|
||||
auto* annotation = new RimTimeAxisAnnotation;
|
||||
annotation->setTimeRange( startTime, endTime );
|
||||
|
||||
axisProps->appendAnnotation( annotation );
|
||||
@ -1584,7 +1582,7 @@ void RimSummaryPlot::updateZoomInParentPlot()
|
||||
{
|
||||
if ( plotWidget() )
|
||||
{
|
||||
for ( auto axisProperty : m_axisProperties )
|
||||
for ( const auto& axisProperty : m_axisProperties )
|
||||
{
|
||||
updateZoomForAxis( axisProperty->plotAxisType() );
|
||||
}
|
||||
@ -1742,7 +1740,7 @@ RimPlotAxisProperties* RimSummaryPlot::addNewAxisProperties( RiaDefines::PlotAxi
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimPlotAxisProperties* RimSummaryPlot::addNewAxisProperties( RiuPlotAxis plotAxis, const QString& name )
|
||||
{
|
||||
RimPlotAxisProperties* axisProperties = new RimPlotAxisProperties;
|
||||
auto* axisProperties = new RimPlotAxisProperties;
|
||||
axisProperties->setNameAndAxis( name, plotAxis.axis(), plotAxis.index() );
|
||||
m_axisProperties.push_back( axisProperties );
|
||||
connectAxisSignals( axisProperties );
|
||||
@ -1773,15 +1771,29 @@ void RimSummaryPlot::axisPositionChanged( const caf::SignalEmitter* emitter,
|
||||
if ( curve->axisY() == oldPlotAxis ) curve->setLeftOrRightAxisY( fixedUpPlotAxis );
|
||||
}
|
||||
|
||||
for ( auto curveSet : ensembleCurveSetCollection()->curveSets() )
|
||||
{
|
||||
if ( curveSet->axisY() == oldPlotAxis ) curveSet->setLeftOrRightAxisY( fixedUpPlotAxis );
|
||||
}
|
||||
|
||||
// Remove the now unused axis (but keep the default axis)
|
||||
if ( oldPlotAxis != RiuPlotAxis::defaultLeft() && oldPlotAxis != RiuPlotAxis::defaultRight() )
|
||||
{
|
||||
auto oldAxisProperties = axisPropertiesForPlotAxis( oldPlotAxis );
|
||||
if ( oldAxisProperties ) m_axisProperties.removeChildObject( oldAxisProperties );
|
||||
}
|
||||
|
||||
std::set<RiuPlotAxis> usedPlotAxis;
|
||||
for ( const auto& axisProperties : m_axisProperties )
|
||||
{
|
||||
usedPlotAxis.insert( axisProperties->plotAxisType() );
|
||||
}
|
||||
|
||||
plotWidget()->pruneAxes( usedPlotAxis );
|
||||
}
|
||||
|
||||
updateAxes();
|
||||
// This is probably to much, but difficult to find the required updates
|
||||
loadDataAndUpdate();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -1994,7 +2006,7 @@ void RimSummaryPlot::handleDroppedObjects( const std::vector<caf::PdmObjectHandl
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::addNewCurveY( const RifEclipseSummaryAddress& address, RimSummaryCase* summaryCase )
|
||||
{
|
||||
RimSummaryCurve* newCurve = new RimSummaryCurve();
|
||||
auto* newCurve = new RimSummaryCurve();
|
||||
newCurve->setSummaryCaseY( summaryCase );
|
||||
newCurve->setSummaryAddressYAndApplyInterpolation( address );
|
||||
addCurveNoUpdate( newCurve );
|
||||
@ -2005,7 +2017,7 @@ void RimSummaryPlot::addNewCurveY( const RifEclipseSummaryAddress& address, RimS
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::addNewEnsembleCurveY( const RifEclipseSummaryAddress& address, RimSummaryCaseCollection* ensemble )
|
||||
{
|
||||
RimEnsembleCurveSet* curveSet = new RimEnsembleCurveSet();
|
||||
auto* curveSet = new RimEnsembleCurveSet();
|
||||
|
||||
curveSet->setSummaryCaseCollection( ensemble );
|
||||
curveSet->setSummaryAddress( address );
|
||||
@ -2096,7 +2108,7 @@ RiuPlotWidget* RimSummaryPlot::doCreatePlotViewWidget( QWidget* mainWindowParent
|
||||
m_summaryPlot = std::make_unique<RiuSummaryQwtPlot>( this, mainWindowParent );
|
||||
#endif
|
||||
|
||||
for ( auto axisProperties : m_axisProperties )
|
||||
for ( const auto& axisProperties : m_axisProperties )
|
||||
{
|
||||
plotWidget()->ensureAxisIsCreated( axisProperties->plotAxisType() );
|
||||
}
|
||||
@ -2173,7 +2185,7 @@ void RimSummaryPlot::initAfterRead()
|
||||
copyAxis( RiuPlotAxis::defaultBottom(), m_timeAxisProperties_OBSOLETE.v() );
|
||||
}
|
||||
|
||||
for ( auto axisProperties : m_axisProperties )
|
||||
for ( const auto& axisProperties : m_axisProperties )
|
||||
{
|
||||
auto plotAxisProperties = dynamic_cast<RimPlotAxisProperties*>( axisProperties.p() );
|
||||
if ( plotAxisProperties )
|
||||
@ -2403,7 +2415,7 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlot::fieldsToShowInToolbar()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setAutoScaleXEnabled( bool enabled )
|
||||
{
|
||||
for ( auto ap : m_axisProperties )
|
||||
for ( const auto& ap : m_axisProperties )
|
||||
{
|
||||
if ( ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_TOP ||
|
||||
ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_BOTTOM )
|
||||
@ -2418,7 +2430,7 @@ void RimSummaryPlot::setAutoScaleXEnabled( bool enabled )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryPlot::setAutoScaleYEnabled( bool enabled )
|
||||
{
|
||||
for ( auto ap : m_axisProperties )
|
||||
for ( const auto& ap : m_axisProperties )
|
||||
{
|
||||
if ( ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_LEFT ||
|
||||
ap->plotAxisType().axis() == RiaDefines::PlotAxis::PLOT_AXIS_RIGHT )
|
||||
@ -2452,7 +2464,7 @@ bool RimSummaryPlot::isDeletable() const
|
||||
std::vector<RimPlotAxisPropertiesInterface*> RimSummaryPlot::plotAxes() const
|
||||
{
|
||||
std::vector<RimPlotAxisPropertiesInterface*> axisProps;
|
||||
for ( auto ap : m_axisProperties )
|
||||
for ( const auto& ap : m_axisProperties )
|
||||
{
|
||||
axisProps.push_back( ap );
|
||||
}
|
||||
@ -2569,22 +2581,22 @@ void RimSummaryPlot::onChildDeleted( caf::PdmChildArrayFieldHandle* childAr
|
||||
{
|
||||
for ( caf::PdmObjectHandle* reffingObj : referringObjects )
|
||||
{
|
||||
RimSummaryCurve* curve = dynamic_cast<RimSummaryCurve*>( reffingObj );
|
||||
RimEnsembleCurveSet* curveSet = dynamic_cast<RimEnsembleCurveSet*>( reffingObj );
|
||||
auto* curve = dynamic_cast<RimSummaryCurve*>( reffingObj );
|
||||
auto* curveSet = dynamic_cast<RimEnsembleCurveSet*>( reffingObj );
|
||||
if ( curve )
|
||||
{
|
||||
curve->setLeftOrRightAxisY( RiuPlotAxis::defaultLeft() );
|
||||
}
|
||||
else if ( curveSet )
|
||||
{
|
||||
curveSet->setAxisY( RiuPlotAxis::defaultLeft() );
|
||||
curveSet->setLeftOrRightAxisY( RiuPlotAxis::defaultLeft() );
|
||||
}
|
||||
}
|
||||
|
||||
if ( plotWidget() )
|
||||
{
|
||||
std::set<RiuPlotAxis> usedPlotAxis;
|
||||
for ( auto axisProperties : m_axisProperties )
|
||||
for ( const auto& axisProperties : m_axisProperties )
|
||||
{
|
||||
usedPlotAxis.insert( axisProperties->plotAxisType() );
|
||||
}
|
||||
|
@ -981,6 +981,22 @@ void RiuQtChartsPlotWidget::addAxis( RiuPlotAxis plotAxis, bool isEnabled, bool
|
||||
m_axesAutoScale[plotAxis] = isAutoScale;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuQtChartsPlotWidget::deleteAxis( RiuPlotAxis axis )
|
||||
{
|
||||
auto toBeDeleted = plotAxis( axis );
|
||||
|
||||
qtChart()->removeAxis( toBeDeleted );
|
||||
m_axes.erase( axis );
|
||||
m_axesEnabled.erase( axis );
|
||||
m_axesAutoScale.erase( axis );
|
||||
|
||||
delete toBeDeleted;
|
||||
toBeDeleted = nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -1195,10 +1211,7 @@ void RiuQtChartsPlotWidget::pruneAxes( const std::set<RiuPlotAxis>& usedAxes )
|
||||
{
|
||||
if ( usedAxes.count( plotAxis ) == 0 )
|
||||
{
|
||||
// This axis is now unused, and can be disabled
|
||||
qtAxis->setVisible( false );
|
||||
m_axesEnabled[plotAxis] = false;
|
||||
m_axesAutoScale[plotAxis] = false;
|
||||
deleteAxis( plotAxis );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -217,7 +217,9 @@ private slots:
|
||||
void axisRangeChanged();
|
||||
|
||||
private:
|
||||
void addAxis( RiuPlotAxis plotAxis, bool isEnabled, bool isAutoScale );
|
||||
void addAxis( RiuPlotAxis plotAxis, bool isEnabled, bool isAutoScale );
|
||||
void deleteAxis( RiuPlotAxis plotAxis );
|
||||
|
||||
static Qt::Alignment mapPlotAxisToQtAlignment( RiaDefines::PlotAxis axis );
|
||||
|
||||
static int defaultMinimumWidth();
|
||||
|
Loading…
Reference in New Issue
Block a user