Improve UI labels for grid slices in radial and Cartesian modes

Enhance slice feature constructors and UI logic to support context-aware labeling for both Cartesian and radial grids. Axis and slice labels now clearly indicate both physical and index names (e.g., "Radial (I)", "Theta (J)"). Context menus and filter UIs display the appropriate labels based on grid type, improving clarity and usability.
This commit is contained in:
Magne Sjaastad committed 2026-02-03 20:14:12 +01:00
1 parent bda3522bd4
commit 058918a85e
8 files changed
+51 -18

No files matched your search

@@ -26,6 +26,6 @@ CAF_CMD_SOURCE_INIT( RicNewCellRangeFilterFeature, "RicNewCellRangeFilterFeature
///
//--------------------------------------------------------------------------------------------------
RicNewCellRangeFilterFeature::RicNewCellRangeFilterFeature()
: RicNewRangeFilterSliceFeature( "IJK Filter", -1 )
: RicNewRangeFilterSliceFeature( "IJK Filter", QString(), -1 )
{
}
@@ -20,10 +20,14 @@
#include "RiaApplication.h"
#include "RigMainGrid.h"
#include "Rim3dView.h"
#include "RimCase.h"
#include "RimCellFilterCollection.h"
#include "RimCellRangeFilter.h"
#include "RimEclipseCase.h"
#include "RimEclipseView.h"
#include "RimGridView.h"
#include "Riu3DMainWindowTools.h"
@@ -33,9 +37,10 @@
#include <QAction>
RicNewRangeFilterSliceFeature::RicNewRangeFilterSliceFeature( QString cmdText, int sliceDirection )
RicNewRangeFilterSliceFeature::RicNewRangeFilterSliceFeature( QString cmdText, QString radialText, int sliceDirection )
: m_sliceDirection( sliceDirection )
, m_sliceText( cmdText )
, m_radialText( radialText )
{
}
@@ -82,5 +87,30 @@ void RicNewRangeFilterSliceFeature::onActionTriggered( bool isChecked )
void RicNewRangeFilterSliceFeature::setupActionLook( QAction* actionToSetup )
{
actionToSetup->setIcon( QIcon( ":/CellFilter_Range.png" ) );
actionToSetup->setText( m_sliceText );
if ( !m_radialText.isEmpty() && isMainGridRadial() )
{
actionToSetup->setText( m_radialText );
}
else
{
actionToSetup->setText( m_sliceText );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RicNewRangeFilterSliceFeature::isMainGridRadial()
{
RimGridView* viewOrComparisonView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !viewOrComparisonView ) return false;
auto eclipseView = dynamic_cast<RimEclipseView*>( viewOrComparisonView );
if ( !eclipseView || !eclipseView->eclipseCase() ) return false;
auto mainGrid = eclipseView->eclipseCase()->mainGrid();
if ( !mainGrid ) return false;
return mainGrid->isRadial();
}
@@ -26,12 +26,15 @@
class RicNewRangeFilterSliceFeature : public caf::CmdFeature
{
protected:
RicNewRangeFilterSliceFeature( QString cmdText, int sliceDirection );
RicNewRangeFilterSliceFeature( QString cmdText, QString radialText, int sliceDirection );
protected:
void onActionTriggered( bool isChecked ) override;
void setupActionLook( QAction* actionToSetup ) override;
static bool isMainGridRadial();
QString m_sliceText;
QString m_radialText;
int m_sliceDirection;
};
@@ -26,6 +26,6 @@ CAF_CMD_SOURCE_INIT( RicNewRangeFilterSliceIFeature, "RicNewRangeFilterSliceIFea
///
//--------------------------------------------------------------------------------------------------
RicNewRangeFilterSliceIFeature::RicNewRangeFilterSliceIFeature()
: RicNewRangeFilterSliceFeature( "I Slice", 0 )
: RicNewRangeFilterSliceFeature( "I Slice", "Radial (I) Slice", 0 )
{
}
@@ -26,6 +26,6 @@ CAF_CMD_SOURCE_INIT( RicNewRangeFilterSliceJFeature, "RicNewRangeFilterSliceJFea
///
//--------------------------------------------------------------------------------------------------
RicNewRangeFilterSliceJFeature::RicNewRangeFilterSliceJFeature()
: RicNewRangeFilterSliceFeature( "J Slice", 1 )
: RicNewRangeFilterSliceFeature( "J Slice", "Theta (J) Slice", 1 )
{
}
@@ -26,6 +26,6 @@ CAF_CMD_SOURCE_INIT( RicNewRangeFilterSliceKFeature, "RicNewRangeFilterSliceKFea
///
//--------------------------------------------------------------------------------------------------
RicNewRangeFilterSliceKFeature::RicNewRangeFilterSliceKFeature()
: RicNewRangeFilterSliceFeature( "K Slice", 2 )
: RicNewRangeFilterSliceFeature( "K Slice", QString(), 2 )
{
}
@@ -94,9 +94,9 @@ QString RimCellRangeFilter::fullName() const
{
bool isRadialGrid = isMainGridRadial();
auto axisI = isRadialGrid ? "R" : "I";
auto axisJ = isRadialGrid ? "θ" : "J";
auto axisK = isRadialGrid ? "Z" : "K";
auto axisI = isRadialGrid ? "R (I)" : "I";
auto axisJ = isRadialGrid ? "θ (J)" : "J";
auto axisK = isRadialGrid ? "Z (K)" : "K";
auto makePostfix = [&]() -> QString
{
@@ -333,13 +333,13 @@ void RimCellRangeFilter::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder
if ( isRadialGrid )
{
label = QString( "I (Radial) Active Cell Range %1 to %2, %3 cells" ).arg( min.x() ).arg( max.x() ).arg( max.x() - min.x() + 1 );
label = QString( "Radial (I) Active Cell Range %1 to %2, %3 cells" ).arg( min.x() ).arg( max.x() ).arg( max.x() - min.x() + 1 );
m_labelI.uiCapability()->setUiName( label );
label = QString( "J (Angular) Active Cell Range %1 to %2, %3 cells" ).arg( min.y() ).arg( max.y() ).arg( max.y() - min.y() + 1 );
label = QString( "Theta (J) Active Cell Range %1 to %2, %3 cells" ).arg( min.y() ).arg( max.y() ).arg( max.y() - min.y() + 1 );
m_labelJ.uiCapability()->setUiName( label );
label = QString( "K (Height) Active Cell Range %1 to %2, %3 cells" ).arg( min.z() ).arg( max.z() ).arg( max.z() - min.z() + 1 );
label = QString( "Height (K) Active Cell Range %1 to %2, %3 cells" ).arg( min.z() ).arg( max.z() ).arg( max.z() - min.z() + 1 );
m_labelK.uiCapability()->setUiName( label );
}
else
@@ -358,9 +358,9 @@ void RimCellRangeFilter::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder
{
if ( isRadialGrid )
{
m_labelI.uiCapability()->setUiName( "I (Radial)" );
m_labelJ.uiCapability()->setUiName( "J (Angular)" );
m_labelK.uiCapability()->setUiName( "K (Height)" );
m_labelI.uiCapability()->setUiName( "Radial (I)" );
m_labelJ.uiCapability()->setUiName( "Theta (J)" );
m_labelK.uiCapability()->setUiName( "Height (K)" );
}
else
{
@@ -380,8 +380,8 @@ void RiuViewerCommands::displayContextMenu( QMouseEvent* event )
if ( isRadialGrid( mainOrComparisonView, m_currentGridIdx ) )
{
menuBuilder.addCmdFeatureWithUserData( "RicNewRangeFilterSlice3dviewFeature", "Radial Slice", iSliceList );
menuBuilder.addCmdFeatureWithUserData( "RicNewRangeFilterSlice3dviewFeature", "Theta Slice", jSliceList );
menuBuilder.addCmdFeatureWithUserData( "RicNewRangeFilterSlice3dviewFeature", "Radial (I) Slice", iSliceList );
menuBuilder.addCmdFeatureWithUserData( "RicNewRangeFilterSlice3dviewFeature", "Theta (J) Slice", jSliceList );
}
else
{