mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
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:
parent
75a3d3d8f1
commit
ffc84457c6
@ -32,6 +32,7 @@
|
||||
#include "RimSummaryPlotControls.h"
|
||||
|
||||
#include "RimMultiPlot.h"
|
||||
#include "RimSummaryAddress.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotNameHelper.h"
|
||||
#include "RimSummaryPlotSourceStepping.h"
|
||||
@ -50,6 +51,7 @@ CAF_PDM_SOURCE_INIT( RimSummaryMultiPlot, "MultiSummaryPlot" );
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryMultiPlot::RimSummaryMultiPlot()
|
||||
: duplicatePlot( this )
|
||||
{
|
||||
CAF_PDM_InitObject( "Multi Summary Plot" );
|
||||
this->setDeletable( true );
|
||||
@ -62,6 +64,11 @@ RimSummaryMultiPlot::RimSummaryMultiPlot()
|
||||
m_syncAxisRanges.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
|
||||
m_syncAxisRanges.uiCapability()->setUiIconFromResourceString( ":/AxesSync16x16.png" );
|
||||
|
||||
CAF_PDM_InitField( &m_createPlotDuplicate, "DuplicatePlot", false, "", "", "Duplicate Plot" );
|
||||
m_createPlotDuplicate.xmlCapability()->disableIO();
|
||||
m_createPlotDuplicate.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
|
||||
m_createPlotDuplicate.uiCapability()->setUiIconFromResourceString( ":/Copy.svg" );
|
||||
|
||||
CAF_PDM_InitField( &m_disableWheelZoom, "DisableWheelZoom", true, "", "", "Disable Mouse Wheel Zooming in Multi Summary Plot" );
|
||||
m_disableWheelZoom.xmlCapability()->disableIO();
|
||||
m_disableWheelZoom.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
|
||||
@ -116,12 +123,18 @@ void RimSummaryMultiPlot::insertPlot( RimPlot* plot, size_t index )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryMultiPlot::addPlot( const std::vector<caf::PdmObjectHandle*>& objects )
|
||||
{
|
||||
RimSummaryPlot* plot = new RimSummaryPlot();
|
||||
plot->enableAutoPlotTitle( true );
|
||||
if ( objects.empty() ) return;
|
||||
|
||||
addPlot( plot );
|
||||
RimSummaryAddress* addr = dynamic_cast<RimSummaryAddress*>( objects[0] );
|
||||
if ( addr )
|
||||
{
|
||||
RimSummaryPlot* plot = new RimSummaryPlot();
|
||||
plot->enableAutoPlotTitle( true );
|
||||
|
||||
plot->handleDroppedObjects( objects );
|
||||
addPlot( plot );
|
||||
|
||||
plot->handleDroppedObjects( objects );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -269,8 +282,13 @@ void RimSummaryMultiPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFi
|
||||
}
|
||||
else if ( changedField == &m_syncAxisRanges )
|
||||
{
|
||||
syncAxisRanges();
|
||||
m_syncAxisRanges = false;
|
||||
syncAxisRanges();
|
||||
}
|
||||
else if ( changedField == &m_createPlotDuplicate )
|
||||
{
|
||||
m_createPlotDuplicate = false;
|
||||
duplicate();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -429,6 +447,7 @@ std::vector<caf::PdmFieldHandle*> RimSummaryMultiPlot::fieldsToShowInToolbar()
|
||||
|
||||
toolBarFields.push_back( &m_disableWheelZoom );
|
||||
toolBarFields.push_back( &m_syncAxisRanges );
|
||||
toolBarFields.push_back( &m_createPlotDuplicate );
|
||||
|
||||
auto& sourceObject = m_sourceStepping();
|
||||
if ( sourceObject )
|
||||
@ -533,3 +552,11 @@ void RimSummaryMultiPlot::syncAxisRanges()
|
||||
plot->updateAxes();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryMultiPlot::duplicate()
|
||||
{
|
||||
duplicatePlot.send( this );
|
||||
}
|
||||
|
@ -41,6 +41,9 @@ class RimSummaryMultiPlot : public RimMultiPlot, public RimSummaryDataSourceStep
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
caf::Signal<RimSummaryMultiPlot*> duplicatePlot;
|
||||
|
||||
public:
|
||||
RimSummaryMultiPlot();
|
||||
~RimSummaryMultiPlot() override;
|
||||
@ -83,11 +86,14 @@ private:
|
||||
|
||||
void updatePlotWindowTitle() override;
|
||||
|
||||
void duplicate();
|
||||
|
||||
private:
|
||||
caf::PdmField<bool> m_autoPlotTitles;
|
||||
caf::PdmField<bool> m_autoPlotTitlesOnSubPlots;
|
||||
caf::PdmField<bool> m_syncAxisRanges;
|
||||
caf::PdmField<bool> m_disableWheelZoom;
|
||||
caf::PdmField<bool> m_createPlotDuplicate;
|
||||
|
||||
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_sourceStepping;
|
||||
|
||||
|
@ -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 );
|
||||
}
|
||||
|
@ -44,6 +44,11 @@ public:
|
||||
|
||||
void addMultiSummaryPlot( RimSummaryMultiPlot* plot );
|
||||
|
||||
protected:
|
||||
void onDuplicatePlot( const caf::SignalEmitter* emitter, RimSummaryMultiPlot* plotToDuplicate );
|
||||
|
||||
void initAfterRead() override;
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimSummaryMultiPlot*> m_summaryMultiPlots;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user