From 3f9f337e64c9090813f5b113b34e75bcdc182b12 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 7 Oct 2022 15:25:19 +0200 Subject: [PATCH] #9347 Well Log Plot : Add possibility to show depth axis in all tracks --- .../Application/RiaPlotDefines.cpp | 9 ++++++ .../Application/RiaPlotDefines.h | 6 ++++ .../ProjectDataModel/RimDepthTrackPlot.cpp | 23 ++++++++++++++- .../ProjectDataModel/RimDepthTrackPlot.h | 29 ++++++++++++------- .../WellLog/RimWellLogTrack.cpp | 15 ++++++++-- 5 files changed, 69 insertions(+), 13 deletions(-) diff --git a/ApplicationLibCode/Application/RiaPlotDefines.cpp b/ApplicationLibCode/Application/RiaPlotDefines.cpp index 49ae37cdc5..08953b3191 100644 --- a/ApplicationLibCode/Application/RiaPlotDefines.cpp +++ b/ApplicationLibCode/Application/RiaPlotDefines.cpp @@ -35,6 +35,15 @@ void caf::AppEnum::setUp() setDefault( RiaDefines::PlotAxis::PLOT_AXIS_LEFT ); } + +template <> +void caf::AppEnum::setUp() +{ + addItem( RiaDefines::MultiPlotAxisVisibility::ONE_VISIBLE, "ONE_VISIBLE", "One Axis Per Plot" ); + addItem( RiaDefines::MultiPlotAxisVisibility::ALL_VISIBLE, "ALL_VISIBLE", "All Axis Visible" ); + + setDefault( RiaDefines::MultiPlotAxisVisibility::ONE_VISIBLE ); +} }; // namespace caf //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/RiaPlotDefines.h b/ApplicationLibCode/Application/RiaPlotDefines.h index a8b9834c0f..f2d06d803b 100644 --- a/ApplicationLibCode/Application/RiaPlotDefines.h +++ b/ApplicationLibCode/Application/RiaPlotDefines.h @@ -59,6 +59,12 @@ enum class Orientation VERTICAL }; +enum class MultiPlotAxisVisibility +{ + ONE_VISIBLE, + ALL_VISIBLE +}; + double minimumDefaultValuePlot(); double minimumDefaultLogValuePlot(); double maximumDefaultValuePlot(); diff --git a/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.cpp b/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.cpp index f786a94fc5..c064d60119 100644 --- a/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.cpp @@ -123,6 +123,9 @@ RimDepthTrackPlot::RimDepthTrackPlot() CAF_PDM_InitScriptableField( &m_isAutoScaleDepthEnabled, "AutoScaleDepthEnabled", true, "Auto Scale" ); m_isAutoScaleDepthEnabled.uiCapability()->setUiHidden( true ); + caf::AppEnum depthAxisVisibility = RiaDefines::MultiPlotAxisVisibility::ONE_VISIBLE; + CAF_PDM_InitField( &m_depthAxisVisibility, "DepthAxisVisibility", depthAxisVisibility, "Axis Visibility" ); + CAF_PDM_InitScriptableFieldNoDefault( &m_subTitleFontSize, "SubTitleFontSize", "Track Title Font Size" ); CAF_PDM_InitScriptableFieldNoDefault( &m_axisTitleFontSize, "AxisTitleFontSize", "Axis Title Font Size" ); CAF_PDM_InitScriptableFieldNoDefault( &m_axisValueFontSize, "AxisValueFontSize", "Axis Value Font Size" ); @@ -200,6 +203,7 @@ RimDepthTrackPlot& RimDepthTrackPlot::operator=( RimDepthTrackPlot&& rhs ) m_maxVisibleDepth = rhs.m_maxVisibleDepth(); m_depthAxisGridVisibility = rhs.m_depthAxisGridVisibility(); m_isAutoScaleDepthEnabled = rhs.m_isAutoScaleDepthEnabled(); + m_depthAxisVisibility = rhs.m_depthAxisVisibility(); m_subTitleFontSize = rhs.m_subTitleFontSize(); m_axisTitleFontSize = rhs.m_axisTitleFontSize(); @@ -473,6 +477,7 @@ void RimDepthTrackPlot::uiOrderingForDepthAxis( QString uiConfigName, caf::PdmUi uiOrdering.add( &m_minVisibleDepth ); uiOrdering.add( &m_maxVisibleDepth ); uiOrdering.add( &m_depthAxisGridVisibility ); + uiOrdering.add( &m_depthAxisVisibility ); } //-------------------------------------------------------------------------------------------------- @@ -878,7 +883,7 @@ void RimDepthTrackPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel m_isAutoScaleDepthEnabled = true; onLoadDataAndUpdate(); } - else if ( changedField == &m_depthOrientation ) + else if ( changedField == &m_depthOrientation || changedField == &m_depthAxisVisibility ) { onLoadDataAndUpdate(); } @@ -1214,6 +1219,22 @@ void RimDepthTrackPlot::setDepthOrientation( DepthOrientation depthOrientation ) m_depthOrientation = depthOrientation; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RiaDefines::MultiPlotAxisVisibility RimDepthTrackPlot::depthAxisVisibility() const +{ + return m_depthAxisVisibility(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimDepthTrackPlot::setDepthAxisVisibility( RiaDefines::MultiPlotAxisVisibility axisVisibility ) +{ + m_depthAxisVisibility = axisVisibility; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.h b/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.h index dc8f2ac50c..057ea4be33 100644 --- a/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.h +++ b/ApplicationLibCode/ProjectDataModel/RimDepthTrackPlot.h @@ -20,6 +20,8 @@ #pragma once #include "RiaDefines.h" +#include "RiaPlotDefines.h" + #include "RimAbstractPlotCollection.h" #include "RimEnsembleWellLogStatistics.h" #include "RimPlot.h" @@ -107,6 +109,9 @@ public: RimDepthTrackPlot::DepthOrientation depthOrientation() const; void setDepthOrientation( RimDepthTrackPlot::DepthOrientation depthOrientation ); + RiaDefines::MultiPlotAxisVisibility depthAxisVisibility() const; + void setDepthAxisVisibility( RiaDefines::MultiPlotAxisVisibility axisVisibility ); + RiuPlotAxis depthAxis() const; RiuPlotAxis valueAxis() const; RiuPlotAxis annotationAxis() const; @@ -188,16 +193,20 @@ protected: caf::PdmChildField m_commonDataSource; bool m_commonDataSourceEnabled; - caf::PdmField m_plotWindowTitle; - caf::PdmField> m_depthType; - caf::PdmField> m_depthUnit; - caf::PdmField m_minVisibleDepth; - caf::PdmField m_maxVisibleDepth; - caf::PdmField m_depthAxisGridVisibility; - caf::PdmField m_isAutoScaleDepthEnabled; - caf::PdmField m_subTitleFontSize; - caf::PdmField m_axisTitleFontSize; - caf::PdmField m_axisValueFontSize; + caf::PdmField m_plotWindowTitle; + + // Depth axis + caf::PdmField> m_depthType; + caf::PdmField> m_depthUnit; + caf::PdmField m_minVisibleDepth; + caf::PdmField m_maxVisibleDepth; + caf::PdmField m_depthAxisGridVisibility; + caf::PdmField m_isAutoScaleDepthEnabled; + caf::PdmField> m_depthAxisVisibility; + + caf::PdmField m_subTitleFontSize; + caf::PdmField m_axisTitleFontSize; + caf::PdmField m_axisValueFontSize; caf::PdmChildField m_nameConfig; caf::PdmChildArrayField m_plots; diff --git a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp index b4b8c4ca19..8b07a080d6 100644 --- a/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellLog/RimWellLogTrack.cpp @@ -1287,19 +1287,30 @@ void RimWellLogTrack::updateAxesVisibility( RimDepthTrackPlot::DepthOrientation bool needUpdate = false; + RimDepthTrackPlot* wellLogPlot; + this->firstAncestorOrThisOfTypeAsserted( wellLogPlot ); + + bool showFirstTrack = + wellLogPlot->depthAxisVisibility() == RiaDefines::MultiPlotAxisVisibility::ALL_VISIBLE || + ( isFirstTrack && wellLogPlot->depthAxisVisibility() == RiaDefines::MultiPlotAxisVisibility::ONE_VISIBLE ); + + bool showLastTrack = + wellLogPlot->depthAxisVisibility() == RiaDefines::MultiPlotAxisVisibility::ALL_VISIBLE || + ( isLastTrack && wellLogPlot->depthAxisVisibility() == RiaDefines::MultiPlotAxisVisibility::ONE_VISIBLE ); + if ( orientation == RimDepthTrackPlot::DepthOrientation::VERTICAL ) { // Show depth axis only for the first track (on the left side) needUpdate |= setAxisVisible( QwtAxis::XBottom, false ); needUpdate |= setAxisVisible( QwtAxis::XTop, true ); - needUpdate |= setAxisVisible( QwtAxis::YLeft, isFirstTrack ); + needUpdate |= setAxisVisible( QwtAxis::YLeft, showFirstTrack ); needUpdate |= setAxisVisible( QwtAxis::YRight, false ); } else { // Show depth axis only for the last track (on the bottom side) needUpdate |= setAxisVisible( QwtAxis::XTop, false ); - needUpdate |= setAxisVisible( QwtAxis::XBottom, isLastTrack ); + needUpdate |= setAxisVisible( QwtAxis::XBottom, showLastTrack ); needUpdate |= setAxisVisible( QwtAxis::YLeft, true ); needUpdate |= setAxisVisible( QwtAxis::YRight, false ); }