mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#10587 Improve filtering of comparable views.
Filter views based on the content of the source view. The option to unsuccessfully compare 2D intersection views with 3D views is now removed.
This commit is contained in:
parent
78544f5c70
commit
d2d1929f18
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
#include "RicfCommandObject.h"
|
#include "RicfCommandObject.h"
|
||||||
|
|
||||||
|
#include "Rim2dIntersectionView.h"
|
||||||
#include "Rim3dWellLogCurve.h"
|
#include "Rim3dWellLogCurve.h"
|
||||||
#include "RimAnnotationCollection.h"
|
#include "RimAnnotationCollection.h"
|
||||||
#include "RimAnnotationInViewCollection.h"
|
#include "RimAnnotationInViewCollection.h"
|
||||||
@ -40,6 +41,7 @@
|
|||||||
#include "RimMeasurement.h"
|
#include "RimMeasurement.h"
|
||||||
#include "RimOilField.h"
|
#include "RimOilField.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
|
#include "RimSeismicView.h"
|
||||||
#include "RimTools.h"
|
#include "RimTools.h"
|
||||||
#include "RimViewController.h"
|
#include "RimViewController.h"
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
@ -581,8 +583,7 @@ std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
|
|||||||
{
|
{
|
||||||
if ( field->keyword() == m_comparisonView.keyword() )
|
if ( field->keyword() == m_comparisonView.keyword() )
|
||||||
{
|
{
|
||||||
Rim3dView* containingView = nullptr;
|
Rim3dView* containingView = dynamic_cast<Rim3dView*>( field->ownerObject() );
|
||||||
containingView = dynamic_cast<Rim3dView*>( field->ownerObject() );
|
|
||||||
if ( containingView && containingView->activeComparisonView() == this )
|
if ( containingView && containingView->activeComparisonView() == this )
|
||||||
{
|
{
|
||||||
containingViews.insert( containingView );
|
containingViews.insert( containingView );
|
||||||
@ -593,6 +594,32 @@ std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
|
|||||||
return containingViews;
|
return containingViews;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<Rim3dView*> Rim3dView::validComparisonViews() const
|
||||||
|
{
|
||||||
|
auto isIntersectionView = []( const Rim3dView* view ) { return dynamic_cast<const Rim2dIntersectionView*>( view ) != nullptr; };
|
||||||
|
|
||||||
|
std::vector<Rim3dView*> views;
|
||||||
|
RimProject::current()->allViews( views );
|
||||||
|
|
||||||
|
std::vector<Rim3dView*> validComparisonViews;
|
||||||
|
for ( auto view : views )
|
||||||
|
{
|
||||||
|
if ( dynamic_cast<RimSeismicView*>( view ) ) continue;
|
||||||
|
|
||||||
|
bool isSameViewType = isIntersectionView( this ) == isIntersectionView( view );
|
||||||
|
|
||||||
|
if ( view != this && isSameViewType )
|
||||||
|
{
|
||||||
|
validComparisonViews.push_back( view );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return validComparisonViews;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -1518,21 +1545,13 @@ QList<caf::PdmOptionItemInfo> Rim3dView::calculateValueOptions( const caf::PdmFi
|
|||||||
|
|
||||||
if ( fieldNeedingOptions == &m_comparisonView )
|
if ( fieldNeedingOptions == &m_comparisonView )
|
||||||
{
|
{
|
||||||
RimProject* proj = RimProject::current();
|
std::vector<Rim3dView*> views = validComparisonViews();
|
||||||
if ( proj )
|
for ( auto view : views )
|
||||||
{
|
{
|
||||||
std::vector<Rim3dView*> views;
|
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
|
||||||
proj->allViews( views );
|
|
||||||
for ( auto view : views )
|
|
||||||
{
|
|
||||||
if ( view != this )
|
|
||||||
{
|
|
||||||
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
|
||||||
}
|
}
|
||||||
else if ( fieldNeedingOptions == &m_fontSize )
|
else if ( fieldNeedingOptions == &m_fontSize )
|
||||||
{
|
{
|
||||||
|
@ -183,11 +183,12 @@ public:
|
|||||||
bool isScaleZEditable();
|
bool isScaleZEditable();
|
||||||
double scaleZ() const;
|
double scaleZ() const;
|
||||||
|
|
||||||
bool isMasterView() const;
|
bool isMasterView() const;
|
||||||
Rim3dView* activeComparisonView() const;
|
Rim3dView* activeComparisonView() const;
|
||||||
void setComparisonView( Rim3dView* compView );
|
void setComparisonView( Rim3dView* compView );
|
||||||
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
|
||||||
void updateMdiWindowTitle() override;
|
void updateMdiWindowTitle() override;
|
||||||
|
std::vector<Rim3dView*> validComparisonViews() const;
|
||||||
|
|
||||||
RimViewLinker* assosiatedViewLinker() const override;
|
RimViewLinker* assosiatedViewLinker() const override;
|
||||||
RimViewController* viewController() const override;
|
RimViewController* viewController() const override;
|
||||||
|
@ -167,20 +167,7 @@ void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBu
|
|||||||
auto* mainGridView = m_reservoirView.p();
|
auto* mainGridView = m_reservoirView.p();
|
||||||
if ( mainGridView && !mainGridView->activeComparisonView() )
|
if ( mainGridView && !mainGridView->activeComparisonView() )
|
||||||
{
|
{
|
||||||
std::vector<Rim3dView*> validComparisonViews;
|
std::vector<Rim3dView*> validComparisonViews = mainGridView->validComparisonViews();
|
||||||
|
|
||||||
std::vector<Rim3dView*> views;
|
|
||||||
RimProject::current()->allViews( views );
|
|
||||||
for ( auto view : views )
|
|
||||||
{
|
|
||||||
if ( dynamic_cast<RimSeismicView*>( view ) ) continue;
|
|
||||||
|
|
||||||
if ( view != mainGridView )
|
|
||||||
{
|
|
||||||
validComparisonViews.push_back( view );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !validComparisonViews.empty() )
|
if ( !validComparisonViews.empty() )
|
||||||
{
|
{
|
||||||
menuBuilder->subMenuStart( "Compare To ...", QIcon( ":/ComparisonView16x16.png" ) );
|
menuBuilder->subMenuStart( "Compare To ...", QIcon( ":/ComparisonView16x16.png" ) );
|
||||||
|
Loading…
Reference in New Issue
Block a user