Fix missing curve tracker

* Move some functionality from protected to private
* Attach curve text provider when creating plot widget
* Add missing cleanup in destructor of RimWellLogTrack
This commit is contained in:
Magne Sjaastad 2023-07-07 07:53:22 +02:00 committed by GitHub
parent ad4930db79
commit 8b7144d987
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 37 deletions

View File

@ -798,19 +798,13 @@ void RimDepthTrackPlot::recreatePlotWidgets()
{
CVF_ASSERT( m_viewer );
auto plotVector = plots();
m_viewer->removeAllPlots();
for ( size_t tIdx = 0; tIdx < plotVector.size(); ++tIdx )
for ( auto plot : m_plots )
{
plotVector[tIdx]->createPlotWidget();
m_viewer->addPlot( plotVector[tIdx]->plotWidget() );
}
RimDepthTrackPlot::createPlotWidgetAndAttachCurveTextProvider( plot );
for ( size_t idx = 0; idx < m_plots.size(); ++idx )
{
createAndSetCurveTextProvider( m_plots[idx] );
m_viewer->addPlot( plot->plotWidget() );
}
}
@ -1130,12 +1124,7 @@ void RimDepthTrackPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi
legendGroup->setCollapsedByDefault();
RimPlotWindow::uiOrderingForLegends( uiConfigName, *legendGroup, true );
caf::PdmUiGroup* fontGroup = uiOrdering.addNewGroup( "Fonts" );
fontGroup->setCollapsedByDefault();
RimPlotWindow::uiOrderingForFonts( uiConfigName, *fontGroup );
fontGroup->add( &m_subTitleFontSize );
fontGroup->add( &m_axisTitleFontSize );
fontGroup->add( &m_axisValueFontSize );
uiOrderingForFonts( uiConfigName, uiOrdering );
std::vector<RimEnsembleWellLogCurveSet*> ensembleWellLogCurveSets = descendantsOfType<RimEnsembleWellLogCurveSet>();
if ( !ensembleWellLogCurveSets.empty() )
@ -1291,12 +1280,25 @@ caf::PdmFieldHandle* RimDepthTrackPlot::userDescriptionField()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDepthTrackPlot::createAndSetCurveTextProvider( RimWellLogTrack* track )
void RimDepthTrackPlot::uiOrderingForFonts( const QString& uiConfigName, caf::PdmUiOrdering& uiOrdering )
{
caf::PdmUiGroup* fontGroup = uiOrdering.addNewGroup( "Fonts" );
fontGroup->setCollapsedByDefault();
RimPlotWindow::uiOrderingForFonts( uiConfigName, *fontGroup );
fontGroup->add( &m_subTitleFontSize );
fontGroup->add( &m_axisTitleFontSize );
fontGroup->add( &m_axisValueFontSize );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDepthTrackPlot::createPlotWidgetAndAttachCurveTextProvider( RimWellLogTrack* track )
{
if ( !track ) return;
track->createPlotWidget();
auto* qwtPlotWidget = dynamic_cast<RiuQwtPlotWidget*>( track->plotWidget() );
if ( !qwtPlotWidget ) return;
new RiuWellLogCurvePointTracker( qwtPlotWidget->qwtPlot(), curveTextProvider(), track );
@ -1305,7 +1307,7 @@ void RimDepthTrackPlot::createAndSetCurveTextProvider( RimWellLogTrack* track )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuPlotCurveInfoTextProvider* RimDepthTrackPlot::curveTextProvider() const
RiuPlotCurveInfoTextProvider* RimDepthTrackPlot::curveTextProvider()
{
static auto textProvider = RimWellLogCurveInfoTextProvider();
return &textProvider;
@ -1325,7 +1327,8 @@ void RimDepthTrackPlot::insertPlot( RimPlot* plot, size_t index )
if ( m_viewer )
{
wellLogTrack->createPlotWidget();
RimDepthTrackPlot::createPlotWidgetAndAttachCurveTextProvider( wellLogTrack );
m_viewer->insertPlot( wellLogTrack->plotWidget(), index );
}
wellLogTrack->setShowWindow( true );

View File

@ -198,8 +198,14 @@ protected:
void updatePlots();
caf::PdmFieldHandle* userDescriptionField() override;
void createAndSetCurveTextProvider( RimWellLogTrack* track );
virtual RiuPlotCurveInfoTextProvider* curveTextProvider() const;
void uiOrderingForFonts( const QString& uiConfigName, caf::PdmUiOrdering& uiOrdering );
protected:
bool m_commonDataSourceEnabled;
caf::PdmChildField<RimWellLogCurveCommonDataSource*> m_commonDataSource;
caf::PdmChildField<RimWellLogPlotNameConfig*> m_nameConfig;
caf::PdmField<caf::AppEnum<DepthTypeEnum>> m_depthType;
caf::PdmField<caf::AppEnum<RiaDefines::Orientation>> m_depthOrientation;
private:
void cleanupBeforeClose();
@ -209,17 +215,16 @@ private:
void doUpdateLayout() override;
void onPlotsReordered( const caf::SignalEmitter* emitter );
protected:
caf::PdmChildField<RimWellLogCurveCommonDataSource*> m_commonDataSource;
bool m_commonDataSourceEnabled;
static void createPlotWidgetAndAttachCurveTextProvider( RimWellLogTrack* track );
static RiuPlotCurveInfoTextProvider* curveTextProvider();
private:
caf::PdmField<QString> m_plotWindowTitle;
caf::PdmField<QString> m_nameTemplateText;
caf::PdmField<caf::AppEnum<RiaDefines::ObjectNamingMethod>> m_namingMethod;
// Depth axis
caf::PdmField<caf::AppEnum<DepthTypeEnum>> m_depthType;
caf::PdmField<caf::AppEnum<RiaDefines::DepthUnitType>> m_depthUnit;
caf::PdmField<double> m_minVisibleDepth;
caf::PdmField<double> m_maxVisibleDepth;
@ -235,14 +240,11 @@ protected:
caf::PdmField<caf::FontTools::RelativeSizeEnum> m_axisTitleFontSize;
caf::PdmField<caf::FontTools::RelativeSizeEnum> m_axisValueFontSize;
caf::PdmChildField<RimWellLogPlotNameConfig*> m_nameConfig;
caf::PdmChildArrayField<RimWellLogTrack*> m_plots;
caf::PdmChildArrayField<RimWellLogTrack*> m_plots;
caf::PdmField<caf::AppEnum<RimEnsembleWellLogStatistics::DepthEqualization>> m_depthEqualization;
caf::PdmPtrField<RimEnsembleCurveSet*> m_ensembleCurveSet;
caf::PdmField<caf::AppEnum<RiaDefines::Orientation>> m_depthOrientation;
QPointer<RiuWellLogPlot> m_viewer;
std::set<RiaDefines::DepthUnitType> m_availableDepthUnits;
std::set<DepthTypeEnum> m_availableDepthTypes;

View File

@ -1211,7 +1211,7 @@ void RimPlotCurve::detach( bool deletePlotCurve )
}
}
m_parentPlot->scheduleReplot();
if ( m_parentPlot ) m_parentPlot->scheduleReplot();
}
//--------------------------------------------------------------------------------------------------

View File

@ -132,13 +132,7 @@ void RimWellBoreStabilityPlot::defineUiOrdering( QString uiConfigName, caf::PdmU
legendGroup->setCollapsedByDefault();
RimPlotWindow::uiOrderingForLegends( uiConfigName, *legendGroup, true );
caf::PdmUiGroup* fontGroup = uiOrdering.addNewGroup( "Fonts" );
fontGroup->setCollapsedByDefault();
RimPlotWindow::uiOrderingForFonts( uiConfigName, *fontGroup );
fontGroup->add( &m_subTitleFontSize );
fontGroup->add( &m_axisTitleFontSize );
fontGroup->add( &m_axisValueFontSize );
RimDepthTrackPlot::uiOrderingForFonts( uiConfigName, uiOrdering );
uiOrdering.skipRemainingFields( true );
}

View File

@ -294,6 +294,8 @@ RimWellLogTrack::RimWellLogTrack()
RimWellLogTrack::~RimWellLogTrack()
{
m_curves.deleteChildren();
deleteViewWidget();
}
//--------------------------------------------------------------------------------------------------