Summary Multiplot: add button to create plot copy (#8698)

* Add button to create a duplicate of the active summary multiplot
* Block dropping other things than RimSummaryAddress objects in empty areas
This commit is contained in:
jonjenssen
2022-03-16 14:14:14 +01:00
committed by GitHub
parent 75a3d3d8f1
commit ffc84457c6
4 changed files with 79 additions and 5 deletions

View File

@@ -20,6 +20,8 @@
#include "RimProject.h"
#include "RimSummaryMultiPlot.h"
#include "RiuPlotMainWindowTools.h"
#include "cafPdmFieldReorderCapability.h"
CAF_PDM_SOURCE_INIT( RimSummaryMultiPlotCollection, "RimSummaryMultiPlotCollection" );
@@ -43,6 +45,17 @@ RimSummaryMultiPlotCollection::~RimSummaryMultiPlotCollection()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlotCollection::initAfterRead()
{
for ( auto& plot : m_summaryMultiPlots )
{
plot->duplicatePlot.connect( this, &RimSummaryMultiPlotCollection::onDuplicatePlot );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -65,6 +78,7 @@ std::vector<RimSummaryMultiPlot*> RimSummaryMultiPlotCollection::multiPlots() co
void RimSummaryMultiPlotCollection::addMultiSummaryPlot( RimSummaryMultiPlot* plot )
{
m_summaryMultiPlots().push_back( plot );
plot->duplicatePlot.connect( this, &RimSummaryMultiPlotCollection::onDuplicatePlot );
}
//--------------------------------------------------------------------------------------------------
@@ -83,3 +97,25 @@ size_t RimSummaryMultiPlotCollection::plotCount() const
{
return m_summaryMultiPlots.size();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryMultiPlotCollection::onDuplicatePlot( const caf::SignalEmitter* emitter, RimSummaryMultiPlot* plotToDuplicate )
{
if ( !plotToDuplicate ) return;
auto plotCopy = dynamic_cast<RimSummaryMultiPlot*>(
plotToDuplicate->copyByXmlSerialization( caf::PdmDefaultObjectFactory::instance() ) );
addMultiSummaryPlot( plotCopy );
plotCopy->resolveReferencesRecursively();
plotCopy->initAfterReadRecursively();
plotCopy->updateAllRequiredEditors();
plotCopy->loadDataAndUpdate();
updateConnectedEditors();
RiuPlotMainWindowTools::selectAsCurrentItem( plotCopy, true );
}