Hide summary multiplot tree node if only one summary plot

This commit is contained in:
jonjenssen 2022-03-27 20:25:03 +02:00 committed by jonjenssen
parent ebba37a623
commit 28dcd47d73
4 changed files with 52 additions and 6 deletions

View File

@ -52,6 +52,7 @@ CAF_PDM_SOURCE_INIT( RimSummaryMultiPlot, "MultiSummaryPlot" );
//--------------------------------------------------------------------------------------------------
RimSummaryMultiPlot::RimSummaryMultiPlot()
: duplicatePlot( this )
, refreshTree( this )
{
CAF_PDM_InitObject( "Multi Summary Plot" );
this->setDeletable( true );
@ -101,9 +102,6 @@ void RimSummaryMultiPlot::addPlot( RimPlot* plot )
CVF_ASSERT( sumPlot != nullptr );
if ( sumPlot )
{
// Not required to connect signal here, as RimSummaryMultiPlot::insertPlot() will always be called from
// RimMultiPlot::addPlot()
RimMultiPlot::addPlot( plot );
}
}
@ -119,6 +117,7 @@ void RimSummaryMultiPlot::insertPlot( RimPlot* plot, size_t index )
{
sumPlot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
RimMultiPlot::insertPlot( plot, index );
signalRefresh();
}
}
@ -151,6 +150,7 @@ void RimSummaryMultiPlot::removePlot( RimPlot* plot )
if ( sumPlot )
{
RimMultiPlot::removePlot( plot );
signalRefresh();
}
}
@ -535,6 +535,14 @@ void RimSummaryMultiPlot::duplicate()
duplicatePlot.send( this );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlot::signalRefresh()
{
refreshTree.send( this );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -46,6 +46,7 @@ class RimSummaryMultiPlot : public RimMultiPlot, public RimSummaryDataSourceStep
public:
caf::Signal<RimSummaryMultiPlot*> duplicatePlot;
caf::Signal<RimSummaryMultiPlot*> refreshTree;
public:
RimSummaryMultiPlot();
@ -73,11 +74,12 @@ public:
void summaryPlotItemInfos( QList<caf::PdmOptionItemInfo>* optionInfos ) const;
std::vector<RimSummaryPlot*> summaryPlots() const;
protected:
bool handleGlobalKeyEvent( QKeyEvent* keyEvent ) override;
bool handleGlobalWheelEvent( QWheelEvent* wheelEvent ) override;
void initAfterRead() override;
private:
@ -88,11 +90,11 @@ private:
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute ) override;
std::vector<RimSummaryPlot*> summaryPlots() const;
void updatePlotWindowTitle() override;
void duplicate();
void signalRefresh();
void onSubPlotChanged( const caf::SignalEmitter* emitter );
private:

View File

@ -19,10 +19,12 @@
#include "RimProject.h"
#include "RimSummaryMultiPlot.h"
#include "RimSummaryPlot.h"
#include "RiuPlotMainWindowTools.h"
#include "cafPdmFieldReorderCapability.h"
#include "cafPdmUiTreeOrdering.h"
CAF_PDM_SOURCE_INIT( RimSummaryMultiPlotCollection, "RimSummaryMultiPlotCollection" );
@ -53,6 +55,7 @@ void RimSummaryMultiPlotCollection::initAfterRead()
for ( auto& plot : m_summaryMultiPlots )
{
plot->duplicatePlot.connect( this, &RimSummaryMultiPlotCollection::onDuplicatePlot );
plot->refreshTree.connect( this, &RimSummaryMultiPlotCollection::onRefreshTree );
}
}
@ -79,6 +82,7 @@ void RimSummaryMultiPlotCollection::addSummaryMultiPlot( RimSummaryMultiPlot* pl
{
m_summaryMultiPlots().push_back( plot );
plot->duplicatePlot.connect( this, &RimSummaryMultiPlotCollection::onDuplicatePlot );
plot->refreshTree.connect( this, &RimSummaryMultiPlotCollection::onRefreshTree );
}
//--------------------------------------------------------------------------------------------------
@ -119,3 +123,32 @@ void RimSummaryMultiPlotCollection::onDuplicatePlot( const caf::SignalEmitter* e
RiuPlotMainWindowTools::selectAsCurrentItem( plotCopy, true );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlotCollection::onRefreshTree( const caf::SignalEmitter* emitter, RimSummaryMultiPlot* plotRequesting )
{
if ( !plotRequesting ) return;
updateConnectedEditors();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlotCollection::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering,
QString uiConfigName /*= ""*/ )
{
for ( auto& plot : m_summaryMultiPlots() )
{
if ( plot->summaryPlots().size() == 1 )
{
uiTreeOrdering.add( plot->summaryPlots()[0] );
}
else
{
uiTreeOrdering.add( plot );
}
}
uiTreeOrdering.skipRemainingChildren( true );
}

View File

@ -45,7 +45,10 @@ public:
void addSummaryMultiPlot( RimSummaryMultiPlot* plot );
protected:
void defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "" ) override;
void onDuplicatePlot( const caf::SignalEmitter* emitter, RimSummaryMultiPlot* plotToDuplicate );
void onRefreshTree( const caf::SignalEmitter* emitter, RimSummaryMultiPlot* plotRequesting );
void initAfterRead() override;