Skip to content

Commit

Permalink
Refactor Rim classes and update selection handling
Browse files Browse the repository at this point in the history
Refactored RimAutomationSettings to replace cellSelectionDestination with summaryPlots and updated related methods and fields. Enhanced RimGridTimeHistoryCurve with updateResultDefinition parameter. Updated RiuSelectionChangedHandler to handle grid cell curve updates and removed obsolete references. Included necessary headers and forward declarations.
  • Loading branch information
magnesj committed Feb 14, 2025
1 parent 1acdf3a commit d6437b2
Show file tree
Hide file tree
Showing 6 changed files with 113 additions and 75 deletions.
18 changes: 8 additions & 10 deletions ApplicationLibCode/ProjectDataModel/RimGridTimeHistoryCurve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,19 +83,16 @@ RimGridTimeHistoryCurve::~RimGridTimeHistoryCurve()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridTimeHistoryCurve::setFromSelectionItem( const RiuSelectionItem* selectionItem )
void RimGridTimeHistoryCurve::setFromSelectionItem( const RiuSelectionItem* selectionItem, bool updateResultDefinition )
{
delete m_eclipseResultDefinition();
delete m_geoMechResultDefinition();

if ( const RiuEclipseSelectionItem* eclSelectionItem = dynamic_cast<const RiuEclipseSelectionItem*>( selectionItem ) )
{
m_eclipseDataSource = new RimEclipseGeometrySelectionItem;
m_eclipseDataSource->setFromSelectionItem( eclSelectionItem );

if ( eclSelectionItem->m_resultDefinition )
if ( updateResultDefinition && eclSelectionItem->m_resultDefinition )
{
m_eclipseResultDefinition = new RimEclipseResultDefinition;
if ( !m_eclipseResultDefinition() ) m_eclipseResultDefinition = new RimEclipseResultDefinition;
m_eclipseResultDefinition->simpleCopy( eclSelectionItem->m_resultDefinition );
}
}
Expand All @@ -105,9 +102,9 @@ void RimGridTimeHistoryCurve::setFromSelectionItem( const RiuSelectionItem* sele
m_geoMechDataSource = new RimGeoMechGeometrySelectionItem;
m_geoMechDataSource->setFromSelectionItem( geoMechSelectionItem );

if ( geoMechSelectionItem->m_resultDefinition )
if ( updateResultDefinition && geoMechSelectionItem->m_resultDefinition )
{
m_geoMechResultDefinition = new RimGeoMechResultDefinition;
if ( !m_geoMechResultDefinition ) m_geoMechResultDefinition = new RimGeoMechResultDefinition;
m_geoMechResultDefinition->setGeoMechCase( geoMechSelectionItem->m_resultDefinition->geoMechCase() );
m_geoMechResultDefinition->setResultAddress( geoMechSelectionItem->m_resultDefinition->resultAddress() );
}
Expand Down Expand Up @@ -305,8 +302,9 @@ void RimGridTimeHistoryCurve::createCurveFromSelectionItem( const RiuSelectionIt
{
if ( !selectionItem || !plot ) return;

RimGridTimeHistoryCurve* newCurve = new RimGridTimeHistoryCurve();
newCurve->setFromSelectionItem( selectionItem );
RimGridTimeHistoryCurve* newCurve = new RimGridTimeHistoryCurve();
bool updateResultDefinition = true;
newCurve->setFromSelectionItem( selectionItem, updateResultDefinition );
newCurve->setLineThickness( 2 );

cvf::Color3f curveColor = RicWellLogPlotCurveFeatureImpl::curveColorFromTable( plot->curveCount() );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class RimGridTimeHistoryCurve : public RimPlotCurve
RimGridTimeHistoryCurve();
~RimGridTimeHistoryCurve() override;

void setFromSelectionItem( const RiuSelectionItem* selectionItem );
void setFromSelectionItem( const RiuSelectionItem* selectionItem, bool updateResultDefinition );
void setFromEclipseCellAndResult( RimEclipseCase* eclCase, size_t gridIdx, size_t i, size_t j, size_t k, const RigEclipseResultAddress& resAddr );
RiuPlotAxis yAxis() const;
void setYAxis( RiaDefines::PlotAxis plotAxis );
Expand Down
63 changes: 23 additions & 40 deletions ApplicationLibCode/ProjectDataModel/Tools/RimAutomationSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "PlotBuilderCommands/RicSummaryPlotBuilder.h"
#include "RiuPlotMainWindowTools.h"

#include "cafPdmUiPushButtonEditor.h"
#include "RimSummaryMultiPlot.h"

CAF_PDM_SOURCE_INIT( RimAutomationSettings, "RimAutomationSettings" );

Expand All @@ -42,36 +42,24 @@ RimAutomationSettings::RimAutomationSettings()
"Cell Selection Destination",
"",
"Add curves to the selected Summary Plot when clicking on cells in a 3D view." );

CAF_PDM_InitFieldNoDefault( &m_createSummaryPlot, "CreateSummaryPlot", "Create Summary Plot" );
caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_createSummaryPlot );
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimSummaryPlot* RimAutomationSettings::cellSelectionDestination() const
{
return m_cellSelectionDestination();
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAutomationSettings::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
std::vector<RimSummaryPlot*> RimAutomationSettings::summaryPlots() const
{
if ( changedField == &m_createSummaryPlot )
if ( auto summaryPlot = dynamic_cast<RimSummaryPlot*>( m_cellSelectionDestination() ) )
{
if ( m_createSummaryPlot )
{
RimSummaryPlot* newPlot = new RimSummaryPlot();
RicSummaryPlotBuilder::createAndAppendSingleSummaryMultiPlot( newPlot );

RiuPlotMainWindowTools::selectAsCurrentItem( this );
return { summaryPlot };
}

m_cellSelectionDestination = newPlot;
}
if ( auto multiSummaryPlot = dynamic_cast<RimSummaryMultiPlot*>( m_cellSelectionDestination() ) )
{
return multiSummaryPlot->summaryPlots();
}

return {};
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -83,9 +71,6 @@ void RimAutomationSettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOr

group->add( &m_cellSelectionDestination );
m_cellSelectionDestination.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );

// group->add( &m_createSummaryPlot );
uiOrdering.skipRemainingFields();
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -99,25 +84,23 @@ QList<caf::PdmOptionItemInfo> RimAutomationSettings::calculateValueOptions( cons
{
if ( auto summaryPlotColl = RiaSummaryTools::summaryMultiPlotCollection() )
{
summaryPlotColl->summaryPlotItemInfos( &options );
for ( RimSummaryMultiPlot* multiPlot : summaryPlotColl->multiPlots() )
{
auto mainPlotName = multiPlot->description();

options.push_back( caf::PdmOptionItemInfo( mainPlotName, multiPlot, false, multiPlot->uiIconProvider() ) );

for ( RimSummaryPlot* plot : multiPlot->summaryPlots() )
{
QString displayName = mainPlotName + " : ";
displayName += plot->userDescriptionField()->uiCapability()->uiValue().toString();
options.push_back( caf::PdmOptionItemInfo( displayName, plot, false, plot->uiIconProvider() ) );
}
}
}

options.push_back( caf::PdmOptionItemInfo( "None", nullptr ) );
}

return options;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimAutomationSettings::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute )
{
if ( field == &m_createSummaryPlot )
{
if ( auto* attr = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute ) )
{
attr->m_buttonText = "Create Plot";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "cafPdmObject.h"
#include "cafPdmPtrField.h"

class RimPlotWindow;
class RimSummaryPlot;

//==================================================================================================
Expand All @@ -35,15 +36,12 @@ class RimAutomationSettings : public caf::PdmObject
public:
RimAutomationSettings();

RimSummaryPlot* cellSelectionDestination() const;
std::vector<RimSummaryPlot*> summaryPlots() const;

private:
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;

private:
caf::PdmPtrField<RimSummaryPlot*> m_cellSelectionDestination;
caf::PdmField<bool> m_createSummaryPlot;
caf::PdmPtrField<RimPlotWindow*> m_cellSelectionDestination;
};
93 changes: 75 additions & 18 deletions ApplicationLibCode/UserInterface/RiuSelectionChangedHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

#include "RiuSelectionChangedHandler.h"

#include "RiaColorTables.h"
#include "RiaResultNames.h"

#include "RigCaseCellResultsData.h"
Expand Down Expand Up @@ -102,12 +103,6 @@ void RiuSelectionChangedHandler::handleSelectionDeleted() const
RiuMohrsCirclePlot* mohrsCirclePlot = RiuMainWindow::instance()->mohrsCirclePlot();
if ( mohrsCirclePlot ) mohrsCirclePlot->clearPlot();

auto autoSettings = RimProject::current()->automationSettings();
if ( auto summaryPlot = autoSettings->cellSelectionDestination() )
{
summaryPlot->deleteAllGridTimeHistoryCurves();
}

updateResultInfo( nullptr );

scheduleUpdateForAllVisibleViews();
Expand All @@ -134,6 +129,7 @@ void RiuSelectionChangedHandler::handleItemAppended( const RiuSelectionItem* ite
if ( mohrsCirclePlot ) mohrsCirclePlot->appendSelection( item );

updateResultInfo( item );
updateGridCellCurvesFromSelection();

scheduleUpdateForAllVisibleViews();
}
Expand All @@ -151,12 +147,6 @@ void RiuSelectionChangedHandler::handleSetSelectedItem( const RiuSelectionItem*
RiuMohrsCirclePlot* mohrsCirclePlot = RiuMainWindow::instance()->mohrsCirclePlot();
if ( mohrsCirclePlot ) mohrsCirclePlot->clearPlot();

auto autoSettings = RimProject::current()->automationSettings();
if ( auto summaryPlot = autoSettings->cellSelectionDestination() )
{
summaryPlot->deleteAllGridTimeHistoryCurves();
}

handleItemAppended( item );
}

Expand Down Expand Up @@ -208,12 +198,6 @@ void RiuSelectionChangedHandler::addResultCurveFromSelectionItem( const RiuEclip
{
RiuMainWindow::instance()->resultPlot()->showTimeStep( timeStepDates[eclipseSelectionItem->m_timestepIdx] );
}

auto autoSettings = RimProject::current()->automationSettings();
if ( auto summaryPlot = autoSettings->cellSelectionDestination() )
{
RimGridTimeHistoryCurve::createCurveFromSelectionItem( eclipseSelectionItem, summaryPlot );
}
}
}

Expand Down Expand Up @@ -438,6 +422,79 @@ void RiuSelectionChangedHandler::updateResultInfo( const RiuSelectionItem* itemA
mainWnd->setResultInfo( resultInfo );
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuSelectionChangedHandler::updateGridCellCurvesFromSelection()
{
std::vector<RiuSelectionItem*> items;
Riu3dSelectionManager::instance()->selectedItems( items );
if ( items.empty() ) return;

auto autoSettings = RimProject::current()->automationSettings();
for ( auto summaryPlot : autoSettings->summaryPlots() )
{
// if no curves present, create from selection
if ( summaryPlot->gridTimeHistoryCurves().empty() )
{
for ( auto item : items )
{
RimGridTimeHistoryCurve::createCurveFromSelectionItem( item, summaryPlot );
}
}
else
{
// find unique result types like soil, swat
// for each result type, create a curve for all cells in selection

auto curves = summaryPlot->gridTimeHistoryCurves();

std::map<QString, RimGridTimeHistoryCurve*> uniqueCurves;
for ( auto curve : curves )
{
uniqueCurves[curve->quantityName()] = curve;
}

std::vector<RimGridTimeHistoryCurve*> sourceCurves;
std::transform( uniqueCurves.begin(),
uniqueCurves.end(),
std::back_inserter( sourceCurves ),
[]( const auto& pair ) { return pair.second; } );

std::vector<RimGridTimeHistoryCurve*> newCurves;

for ( auto curve : sourceCurves )
{
int index = 0;
for ( auto item : items )
{
auto newCurve = curve->copyObject<RimGridTimeHistoryCurve>();
bool updateResultDefinition = false;
newCurve->setFromSelectionItem( item, updateResultDefinition );

if ( index != 0 )
{
cvf::Color3f curveColor = RiaColorTables::wellLogPlotPaletteColors().cycledColor3f( index );
newCurve->setColor( curveColor );
}
index++;

newCurves.push_back( newCurve );
}
}

summaryPlot->deleteAllGridTimeHistoryCurves();
for ( auto c : newCurves )
{
summaryPlot->addGridTimeHistoryCurve( c );
}

summaryPlot->updateConnectedEditors();
summaryPlot->loadDataAndUpdate();
}
}
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions ApplicationLibCode/UserInterface/RiuSelectionChangedHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,6 @@ class RiuSelectionChangedHandler

void scheduleUpdateForAllVisibleViews() const;
void updateResultInfo( const RiuSelectionItem* itemAdded ) const;

static void updateGridCellCurvesFromSelection();
};

0 comments on commit d6437b2

Please sign in to comment.