mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#8768 Multi Plot: Add option to sync all sub plots axis properties.
This commit is contained in:
parent
ca7a5d7b40
commit
45d28de6d3
@ -74,6 +74,8 @@ RimSummaryMultiPlot::RimSummaryMultiPlot()
|
|||||||
m_disableWheelZoom.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
|
m_disableWheelZoom.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
|
||||||
m_disableWheelZoom.uiCapability()->setUiIconFromResourceString( ":/DisableZoom.png" );
|
m_disableWheelZoom.uiCapability()->setUiIconFromResourceString( ":/DisableZoom.png" );
|
||||||
|
|
||||||
|
CAF_PDM_InitField( &m_syncSubPlotAxes, "SyncSubPlotAxes", false, "Sync Subplot Axes" );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" );
|
CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" );
|
||||||
m_sourceStepping = new RimSummaryPlotSourceStepping;
|
m_sourceStepping = new RimSummaryPlotSourceStepping;
|
||||||
m_sourceStepping->setSourceSteppingType( RimSummaryDataSourceStepping::Axis::Y_AXIS );
|
m_sourceStepping->setSourceSteppingType( RimSummaryDataSourceStepping::Axis::Y_AXIS );
|
||||||
@ -114,6 +116,7 @@ void RimSummaryMultiPlot::insertPlot( RimPlot* plot, size_t index )
|
|||||||
CVF_ASSERT( sumPlot != nullptr );
|
CVF_ASSERT( sumPlot != nullptr );
|
||||||
if ( sumPlot )
|
if ( sumPlot )
|
||||||
{
|
{
|
||||||
|
sumPlot->axisChanged.connect( this, &RimSummaryMultiPlot::onSubPlotAxisChanged );
|
||||||
sumPlot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
|
sumPlot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
|
||||||
RimMultiPlot::insertPlot( plot, index );
|
RimMultiPlot::insertPlot( plot, index );
|
||||||
}
|
}
|
||||||
@ -287,6 +290,9 @@ void RimSummaryMultiPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
|
|||||||
layoutGroup->add( &m_rowsPerPage );
|
layoutGroup->add( &m_rowsPerPage );
|
||||||
layoutGroup->add( &m_majorTickmarkCount );
|
layoutGroup->add( &m_majorTickmarkCount );
|
||||||
|
|
||||||
|
caf::PdmUiGroup* axesGroup = uiOrdering.addNewGroup( "Axes" );
|
||||||
|
axesGroup->add( &m_syncSubPlotAxes );
|
||||||
|
|
||||||
uiOrdering.skipRemainingFields( true );
|
uiOrdering.skipRemainingFields( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -499,6 +505,7 @@ void RimSummaryMultiPlot::initAfterRead()
|
|||||||
|
|
||||||
for ( auto plot : summaryPlots() )
|
for ( auto plot : summaryPlots() )
|
||||||
{
|
{
|
||||||
|
plot->axisChanged.connect( this, &RimSummaryMultiPlot::onSubPlotAxisChanged );
|
||||||
plot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
|
plot->curvesChanged.connect( this, &RimSummaryMultiPlot::onSubPlotChanged );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -576,3 +583,20 @@ void RimSummaryMultiPlot::onSubPlotChanged( const caf::SignalEmitter* emitter )
|
|||||||
updatePlotWindowTitle();
|
updatePlotWindowTitle();
|
||||||
applyPlotWindowTitleToWidgets();
|
applyPlotWindowTitleToWidgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimSummaryMultiPlot::onSubPlotAxisChanged( const caf::SignalEmitter* emitter, RimSummaryPlot* summaryPlot )
|
||||||
|
{
|
||||||
|
if ( !m_syncSubPlotAxes() ) return;
|
||||||
|
|
||||||
|
for ( auto plot : summaryPlots() )
|
||||||
|
{
|
||||||
|
if ( plot != summaryPlot )
|
||||||
|
{
|
||||||
|
plot->copyMatchingAxisPropertiesFromOther( *summaryPlot );
|
||||||
|
plot->updateAll();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -98,6 +98,7 @@ private:
|
|||||||
void duplicate();
|
void duplicate();
|
||||||
|
|
||||||
void onSubPlotChanged( const caf::SignalEmitter* emitter );
|
void onSubPlotChanged( const caf::SignalEmitter* emitter );
|
||||||
|
void onSubPlotAxisChanged( const caf::SignalEmitter* emitter, RimSummaryPlot* summaryPlot );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<bool> m_autoPlotTitles;
|
caf::PdmField<bool> m_autoPlotTitles;
|
||||||
@ -105,6 +106,7 @@ private:
|
|||||||
caf::PdmField<bool> m_syncAxisRanges;
|
caf::PdmField<bool> m_syncAxisRanges;
|
||||||
caf::PdmField<bool> m_disableWheelZoom;
|
caf::PdmField<bool> m_disableWheelZoom;
|
||||||
caf::PdmField<bool> m_createPlotDuplicate;
|
caf::PdmField<bool> m_createPlotDuplicate;
|
||||||
|
caf::PdmField<bool> m_syncSubPlotAxes;
|
||||||
|
|
||||||
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_sourceStepping;
|
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_sourceStepping;
|
||||||
|
|
||||||
|
@ -98,6 +98,7 @@ RimSummaryPlot::RimSummaryPlot( bool isCrossPlot )
|
|||||||
: RimPlot()
|
: RimPlot()
|
||||||
, m_isCrossPlot( isCrossPlot )
|
, m_isCrossPlot( isCrossPlot )
|
||||||
, curvesChanged( this )
|
, curvesChanged( this )
|
||||||
|
, axisChanged( this )
|
||||||
{
|
{
|
||||||
CAF_PDM_InitScriptableObject( "Summary Plot", ":/SummaryPlotLight16x16.png", "", "A Summary Plot" );
|
CAF_PDM_InitScriptableObject( "Summary Plot", ":/SummaryPlotLight16x16.png", "", "A Summary Plot" );
|
||||||
|
|
||||||
@ -617,6 +618,24 @@ void RimSummaryPlot::copyAxisPropertiesFromOther( const RimSummaryPlot& sourceSu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimSummaryPlot::copyMatchingAxisPropertiesFromOther( const RimSummaryPlot& summaryPlot )
|
||||||
|
{
|
||||||
|
for ( auto apToCopy : summaryPlot.plotAxes() )
|
||||||
|
{
|
||||||
|
for ( auto ap : plotAxes() )
|
||||||
|
{
|
||||||
|
if ( ap->name().compare( apToCopy->name() ) == 0 )
|
||||||
|
{
|
||||||
|
QString data = apToCopy->writeObjectToXmlString();
|
||||||
|
ap->readObjectFromXmlString( data, caf::PdmDefaultObjectFactory::instance() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -1743,6 +1762,7 @@ void RimSummaryPlot::connectAxisSignals( RimPlotAxisProperties* axis )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimSummaryPlot::axisSettingsChanged( const caf::SignalEmitter* emitter )
|
void RimSummaryPlot::axisSettingsChanged( const caf::SignalEmitter* emitter )
|
||||||
{
|
{
|
||||||
|
axisChanged.send( this );
|
||||||
updateAxes();
|
updateAxes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,8 @@ class RimSummaryPlot : public RimPlot, public RimSummaryDataSourceStepping
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
caf::Signal<> curvesChanged;
|
caf::Signal<> curvesChanged;
|
||||||
|
caf::Signal<RimSummaryPlot*> axisChanged;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RimSummaryPlot( bool isCrossPlot = false );
|
RimSummaryPlot( bool isCrossPlot = false );
|
||||||
@ -150,6 +151,7 @@ public:
|
|||||||
QString generatedPlotTitleFromAllCurves() const;
|
QString generatedPlotTitleFromAllCurves() const;
|
||||||
|
|
||||||
void copyAxisPropertiesFromOther( const RimSummaryPlot& sourceSummaryPlot );
|
void copyAxisPropertiesFromOther( const RimSummaryPlot& sourceSummaryPlot );
|
||||||
|
void copyMatchingAxisPropertiesFromOther( const RimSummaryPlot& sourceSummaryPlot );
|
||||||
|
|
||||||
void updateAll();
|
void updateAll();
|
||||||
void updateLegend() override;
|
void updateLegend() override;
|
||||||
|
Loading…
Reference in New Issue
Block a user