Merge pull request #4943 from OPM/feature-picking-in-comparison-view-fixes

Picking in comparison view fixes
This commit is contained in:
Jacob Støren 2019-10-29 12:41:14 +01:00 committed by GitHub
commit c76699cdb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 107 additions and 62 deletions

View File

@ -269,7 +269,7 @@ RimGridView* RiaApplication::activeMainOrComparisonGridView()
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* viewOrComparisonView = activeView;
if ( activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() )
if ( activeView != nullptr && activeView->viewer()->viewerCommands()->isCurrentPickInComparisonView() )
{
if ( RimGridView* compView = dynamic_cast<RimGridView*>( activeView->activeComparisonView() ) )
{

View File

@ -53,7 +53,7 @@ bool RicNewWellPathIntersectionFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicNewWellPathIntersectionFeature::onActionTriggered( bool isChecked )
{
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return;
std::vector<RimWellPath*> collection;
@ -113,7 +113,7 @@ void RicNewWellPathIntersectionFeatureCmd::redo()
intersection->type = RimIntersection::CS_WELL_PATH;
intersection->wellPath = m_wellPath;
m_intersectionCollection->appendIntersectionAndUpdate( intersection );
m_intersectionCollection->appendIntersectionAndUpdate( intersection, false );
}
//--------------------------------------------------------------------------------------------------

View File

@ -63,7 +63,7 @@ void RicEclipseHideFaultFeature::onActionTriggered( bool isChecked )
if ( !userData.isNull() && userData.type() == QVariant::List )
{
Rim3dView* view = RiaApplication::instance()->activeReservoirView();
Rim3dView* view = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !view ) return;
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( view );
if ( !eclView ) return;

View File

@ -41,7 +41,10 @@
#include "Riu3DMainWindowTools.h"
#include "RiuPropertyViewTabWidget.h"
#include "RiuViewer.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmSettings.h"
#include "cafPdmUiPropertyViewDialog.h"
#include "cafProgressInfo.h"
#include "cafSelectionManager.h"
@ -299,12 +302,18 @@ void RicExportEclipseSectorModelFeature::setupActionLook( QAction* actionToSetup
//--------------------------------------------------------------------------------------------------
RimEclipseView* RicExportEclipseSectorModelFeature::selectedView() const
{
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
if ( view )
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( contextViewer != nullptr )
{
// Command is triggered from viewer
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
return dynamic_cast<RimEclipseView*>( activeView );
}
else
{
// Command triggered from project tree or file menu
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
return view;
}
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
return dynamic_cast<RimEclipseView*>( activeView );
}

View File

@ -29,12 +29,14 @@
#include "RimEclipseCase.h"
#include "RimEclipseCellColors.h"
#include "RimEclipseView.h"
#include "RiuViewer.h"
#include "RigActiveCellInfo.h"
#include "RigEclipseCaseData.h"
#include "Riu3DMainWindowTools.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmUiPropertyViewDialog.h"
#include "cafSelectionManager.h"
@ -135,14 +137,20 @@ void RicSaveEclipseInputVisibleCellsFeature::setupActionLook( QAction* actionToS
//--------------------------------------------------------------------------------------------------
RimEclipseView* RicSaveEclipseInputVisibleCellsFeature::selectedView() const
{
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
if ( view )
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( contextViewer != nullptr )
{
// Command is triggered from viewer
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
return dynamic_cast<RimEclipseView*>( activeView );
}
else
{
// Command triggered from project tree or file menu
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
return view;
}
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
return dynamic_cast<RimEclipseView*>( activeView );
}
//--------------------------------------------------------------------------------------------------
@ -175,12 +183,18 @@ void RicSaveEclipseInputActiveVisibleCellsFeature::setupActionLook( QAction* act
//--------------------------------------------------------------------------------------------------
RimEclipseView* RicSaveEclipseInputActiveVisibleCellsFeature::selectedView()
{
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
if ( view )
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( contextViewer != nullptr )
{
// Command is triggered from viewer
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
return dynamic_cast<RimEclipseView*>( activeView );
}
else
{
// Command triggered from project tree or file menu
RimEclipseView* view = caf::SelectionManager::instance()->selectedItemAncestorOfType<RimEclipseView>();
return view;
}
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
return dynamic_cast<RimEclipseView*>( activeView );
}

View File

@ -40,7 +40,7 @@ CAF_CMD_SOURCE_INIT( RicShowFlowCharacteristicsPlotFeature, "RicShowFlowCharacte
RimEclipseResultCase* activeEclipseResultCase()
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( activeView );
@ -78,7 +78,7 @@ void RicShowFlowCharacteristicsPlotFeature::onActionTriggered( bool isChecked )
{
// Make sure flow results for the the active timestep is calculated, to avoid an empty plot
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( activeView && eclCase->defaultFlowDiagSolution()->flowDiagResults() )
{
// Trigger calculation

View File

@ -57,7 +57,7 @@ bool RicShowWellAllocationPlotFeature::isCommandEnabled()
if ( wellPathCollection.empty() ) return false;
Rim3dView* view = RiaApplication::instance()->activeReservoirView();
Rim3dView* view = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !view ) return false;
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( view );
if ( !eclView ) return false;
@ -92,7 +92,7 @@ void RicShowWellAllocationPlotFeature::onActionTriggered( bool isChecked )
}
else if ( wellPathCollection.size() > 0 )
{
Rim3dView* view = RiaApplication::instance()->activeReservoirView();
Rim3dView* view = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !view ) return;
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( view );
if ( !eclView ) return;

View File

@ -28,7 +28,9 @@
#include "RimProject.h"
#include "RiuPlotMainWindowTools.h"
#include "RiuViewer.h"
#include "cafCmdFeatureManager.h"
#include "cafSelectionManager.h"
#include <QAction>
@ -48,22 +50,26 @@ bool RicCreateGridCrossPlotFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicCreateGridCrossPlotFeature::onActionTriggered( bool isChecked )
{
RimProject* project = RiaApplication::instance()->project();
bool launchedFromPlotCollection = true;
RimGridCrossPlotCollection* collection = caf::SelectionManager::instance()
RimProject* project = RiaApplication::instance()->project();
RimGridCrossPlotCollection* collection = caf::SelectionManager::instance()
->selectedItemAncestorOfType<RimGridCrossPlotCollection>();
if ( !collection )
{
collection = project->mainPlotCollection()->gridCrossPlotCollection();
launchedFromPlotCollection = false;
collection = project->mainPlotCollection()->gridCrossPlotCollection();
}
RimGridCrossPlot* plot = collection->createGridCrossPlot();
RimGridCrossPlotDataSet* dataSet = plot->createDataSet();
if ( !launchedFromPlotCollection )
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( contextViewer != nullptr )
{
dataSet->setCellFilterView( RiaApplication::instance()->activeGridView() );
// Command is triggered from viewer
dataSet->setCellFilterView( RiaApplication::instance()->activeMainOrComparisonGridView() );
}
else
{
// Triggered from context menu: get the selected view
// TODO: get the filter from somewhere
}
plot->loadDataAndUpdate();
@ -80,15 +86,17 @@ void RicCreateGridCrossPlotFeature::onActionTriggered( bool isChecked )
//--------------------------------------------------------------------------------------------------
void RicCreateGridCrossPlotFeature::setupActionLook( QAction* actionToSetup )
{
RimGridCrossPlotCollection* collection = caf::SelectionManager::instance()
->selectedItemAncestorOfType<RimGridCrossPlotCollection>();
if ( !collection )
auto contextViewer = dynamic_cast<RiuViewer*>( caf::CmdFeatureManager::instance()->currentContextMenuTargetWidget() );
if ( contextViewer != nullptr )
{
// Command is triggered from viewer
actionToSetup->setText( "Create Grid Cross Plot from 3d View" );
}
else
{
// Command triggered from project tree or file menu
actionToSetup->setText( "Create Grid Cross Plot" );
}
actionToSetup->setIcon( QIcon( ":/SummaryXPlotsLight16x16.png" ) );
}

View File

@ -23,6 +23,7 @@
#include "RiuViewerCommands.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "RimIntersection.h"
#include "RimMeasurement.h"
#include "RimProject.h"
@ -84,7 +85,7 @@ void RicMeasurementPickEventHandler::enablePolyLineMode( bool polyLineModeEnable
//--------------------------------------------------------------------------------------------------
bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& eventObject )
{
auto measurement = RiaApplication::instance()->project()->measurement();
RimMeasurement* measurement = RiaApplication::instance()->project()->measurement();
if ( measurement && measurement->measurementMode() )
{
@ -98,8 +99,7 @@ bool RicMeasurementPickEventHandler::handle3dPickEvent( const Ric3dPickEvent& ev
}
}
Rim3dView* rimView = RiaApplication::instance()->activeReservoirView();
Rim3dView* rimView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( firstGeometryPickInfo && rimView )
{
cvf::ref<caf::DisplayCoordTransform> transForm = rimView->displayCoordTransform();

View File

@ -23,6 +23,7 @@
#include "Rim3dView.h"
#include "RimMeasurement.h"
#include "RimProject.h"
#include "RimGridView.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmUiPropertyViewDialog.h"
@ -123,7 +124,7 @@ Rim3dView* RicToggleMeasurementModeFeature::activeView() const
{
RiaApplication* app = RiaApplication::instance();
CAF_ASSERT( app );
auto view = app->activeReservoirView();
auto view = dynamic_cast<Rim3dView*>(app->activeMainOrComparisonGridView());
return view;
}

View File

@ -48,7 +48,7 @@ bool RicShowGridStatisticsFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicShowGridStatisticsFeature::onActionTriggered( bool isChecked )
{
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( activeView )
{

View File

@ -152,7 +152,7 @@ QString RicNewGridTimeHistoryCurveFeature::suggestedNewPlotName()
{
QString resultName;
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
RimEclipseView* eclView = dynamic_cast<RimEclipseView*>( activeView );
if ( eclView )
{

View File

@ -58,7 +58,7 @@ bool RicLinkViewFeature::isCommandEnabled()
else
{
// Link only the active view to an existing view link collection.
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return false;
RimProject* proj = RiaApplication::instance()->project();
@ -97,7 +97,7 @@ void RicLinkViewFeature::onActionTriggered( bool isChecked )
}
else
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
RimGridView* gridView = dynamic_cast<RimGridView*>( activeView );
if ( gridView )
{

View File

@ -40,7 +40,7 @@ CAF_CMD_SOURCE_INIT( RicSetMasterViewFeature, "RicSetMasterViewFeature" );
//--------------------------------------------------------------------------------------------------
bool RicSetMasterViewFeature::isCommandEnabled()
{
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return false;
RimProject* proj = RiaApplication::instance()->project();
@ -68,7 +68,7 @@ bool RicSetMasterViewFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicSetMasterViewFeature::onActionTriggered( bool isChecked )
{
RimGridView* activeView = RiaApplication::instance()->activeGridView();
RimGridView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return;
RimProject* proj = RiaApplication::instance()->project();

View File

@ -21,6 +21,7 @@
#include "RiaApplication.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "RimProject.h"
#include "RimViewController.h"
#include "RimViewLinker.h"
@ -37,7 +38,7 @@ CAF_CMD_SOURCE_INIT( RicShowLinkOptionsFeature, "RicShowLinkOptionsFeature" );
//--------------------------------------------------------------------------------------------------
bool RicShowLinkOptionsFeature::isCommandEnabled()
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return false;
RimViewController* viewController = activeView->viewController();
@ -55,7 +56,7 @@ bool RicShowLinkOptionsFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicShowLinkOptionsFeature::onActionTriggered( bool isChecked )
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( !activeView ) return;
RimViewController* viewController = activeView->viewController();

View File

@ -22,6 +22,7 @@
#include "RiaApplication.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "RimProject.h"
#include "RimViewController.h"
#include "RimViewLinker.h"
@ -38,7 +39,8 @@ CAF_CMD_SOURCE_INIT( RicUnLinkViewFeature, "RicUnLinkViewFeature" );
//--------------------------------------------------------------------------------------------------
bool RicUnLinkViewFeature::isCommandEnabled()
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
;
if ( !activeView ) return false;
RimViewController* viewController = activeView->viewController();
@ -56,7 +58,8 @@ bool RicUnLinkViewFeature::isCommandEnabled()
//--------------------------------------------------------------------------------------------------
void RicUnLinkViewFeature::onActionTriggered( bool isChecked )
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
Rim3dView* activeView = RiaApplication::instance()->activeMainOrComparisonGridView();
;
if ( !activeView ) return;
RimViewController* viewController = activeView->viewController();

View File

@ -24,6 +24,7 @@
#include "Rim3dWellLogExtractionCurve.h"
#include "RimCase.h"
#include "RimGridView.h"
#include "RimProject.h"
#include "RimWellPath.h"
@ -57,7 +58,7 @@ void RicAdd3dWellLogCurveFeature::onActionTriggered( bool isChecked )
Rim3dWellLogExtractionCurve* rim3dWellLogExtractionCurve = new Rim3dWellLogExtractionCurve();
Rim3dView* view = RiaApplication::instance()->activeReservoirView();
Rim3dView* view = RiaApplication::instance()->activeMainOrComparisonGridView();
if ( view )
{
rim3dWellLogExtractionCurve->setPropertiesFromView( view );

View File

@ -28,6 +28,7 @@
#include "RigWellLogCurveData.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "RimProject.h"
#include "RimSimWellInView.h"
#include "RimSimWellInViewCollection.h"
@ -81,7 +82,7 @@ void RicNewWellLogCurveExtractionFeature::onActionTriggered( bool isChecked )
RimWellPath* wellPath = caf::SelectionManager::instance()->selectedItemOfType<RimWellPath>();
int branchIndex = -1;
RimSimWellInView* simWell = RicWellLogTools::selectedSimulationWell( &branchIndex );
Rim3dView* view = RiaApplication::instance()->activeReservoirView();
Rim3dView* view = RiaApplication::instance()->activeMainOrComparisonGridView();
bool useBranchDetection = true;
RimSimWellInViewCollection* simWellColl = nullptr;
if ( simWell )

View File

@ -21,6 +21,7 @@
#include "RiaApplication.h"
#include "Rim3dView.h"
#include "RimGridView.h"
#include "MeasurementCommands/RicMeasurementPickEventHandler.h"
@ -89,7 +90,7 @@ RimMeasurement::MeasurementMode RimMeasurement::measurementMode() const
//--------------------------------------------------------------------------------------------------
void RimMeasurement::addPointInDomainCoords( const Vec3d& domainCoord )
{
auto activeView = RiaApplication::instance()->activeReservoirView();
auto activeView = dynamic_cast<Rim3dView*>( RiaApplication::instance()->activeMainOrComparisonGridView() );
if ( m_sourceView.p() != activeView )
{
@ -194,8 +195,6 @@ RimMeasurement::Lengths RimMeasurement::calculateLenghts() const
//--------------------------------------------------------------------------------------------------
void RimMeasurement::updateView() const
{
if ( m_sourceView )
{
m_sourceView->updateMeasurement();
}
Rim3dView* rimView = RiaApplication::instance()->activeReservoirView();
rimView->createMeasurementDisplayModelAndRedraw();
}

View File

@ -1027,11 +1027,18 @@ void Rim3dView::updateZScaleLabel()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dView::updateMeasurement()
void Rim3dView::createMeasurementDisplayModelAndRedraw()
{
if ( m_viewer )
appendMeasurementToModel();
if ( Rim3dView* depView = prepareComparisonView() )
{
depView->appendMeasurementToModel();
restoreComparisonView();
}
if ( nativeOrOverrideViewer() )
{
appendMeasurementToModel();
nativeOrOverrideViewer()->update();
}
}

View File

@ -161,7 +161,7 @@ public:
void updateAnnotationItems();
void updateScaling();
void updateZScaleLabel();
void updateMeasurement();
void createMeasurementDisplayModelAndRedraw();
bool isMasterView() const;
Rim3dView* activeComparisonView() const;

View File

@ -198,14 +198,14 @@ void RimIntersectionCollection::recomputeSimWellBranchData()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimIntersectionCollection::appendIntersectionAndUpdate( RimIntersection* intersection )
void RimIntersectionCollection::appendIntersectionAndUpdate( RimIntersection* intersection, bool allowActiveViewChange )
{
m_intersections.push_back( intersection );
syncronize2dIntersectionViews();
updateConnectedEditors();
Riu3DMainWindowTools::selectAsCurrentItem( intersection );
Riu3DMainWindowTools::selectAsCurrentItem( intersection, allowActiveViewChange );
Rim3dView* rimView = nullptr;
firstAncestorOrThisOfType( rimView );

View File

@ -52,7 +52,7 @@ public:
caf::PdmField<bool> isActive;
void appendIntersectionAndUpdate( RimIntersection* intersection );
void appendIntersectionAndUpdate( RimIntersection* intersection, bool allowActiveViewChange = true );
void appendIntersectionNoUpdate( RimIntersection* intersection );
void appendIntersectionBoxAndUpdate( RimIntersectionBox* intersectionBox );

View File

@ -324,6 +324,7 @@ void RiuSelectionChangedHandler::scheduleUpdateForAllVisibleViews() const
for ( size_t i = 0; i < visibleViews.size(); i++ )
{
visibleViews[i]->createHighlightAndGridBoxDisplayModelWithRedraw();
visibleViews[i]->createMeasurementDisplayModelAndRedraw();
}
}
}