Skip to content

Commit

Permalink
#10587 Improve filtering of comparable views.
Browse files Browse the repository at this point in the history
Filter views based on the content of the source view. The option to
unsuccessfully compare 2D intersection views with 3D views is now removed.
  • Loading branch information
kriben committed Nov 17, 2023
1 parent 82e0866 commit 9281fed
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 34 deletions.
49 changes: 34 additions & 15 deletions ApplicationLibCode/ProjectDataModel/Rim3dView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

#include "RicfCommandObject.h"

#include "Rim2dIntersectionView.h"
#include "Rim3dWellLogCurve.h"
#include "RimAnnotationCollection.h"
#include "RimAnnotationInViewCollection.h"
Expand All @@ -40,6 +41,7 @@
#include "RimMeasurement.h"
#include "RimOilField.h"
#include "RimProject.h"
#include "RimSeismicView.h"
#include "RimTools.h"
#include "RimViewController.h"
#include "RimViewLinker.h"
Expand Down Expand Up @@ -581,8 +583,7 @@ std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
{
if ( field->keyword() == m_comparisonView.keyword() )
{
Rim3dView* containingView = nullptr;
containingView = dynamic_cast<Rim3dView*>( field->ownerObject() );
Rim3dView* containingView = dynamic_cast<Rim3dView*>( field->ownerObject() );
if ( containingView && containingView->activeComparisonView() == this )
{
containingViews.insert( containingView );
Expand All @@ -593,6 +594,32 @@ std::set<Rim3dView*> Rim3dView::viewsUsingThisAsComparisonView()
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;
}

//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -1518,21 +1545,13 @@ QList<caf::PdmOptionItemInfo> Rim3dView::calculateValueOptions( const caf::PdmFi

if ( fieldNeedingOptions == &m_comparisonView )
{
RimProject* proj = RimProject::current();
if ( proj )
std::vector<Rim3dView*> views = validComparisonViews();
for ( auto view : views )
{
std::vector<Rim3dView*> views;
proj->allViews( views );
for ( auto view : views )
{
if ( view != this )
{
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
}
}

options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
RiaOptionItemFactory::appendOptionItemFromViewNameAndCaseName( view, &options );
}

options.push_front( caf::PdmOptionItemInfo( "None", nullptr ) );
}
else if ( fieldNeedingOptions == &m_fontSize )
{
Expand Down
11 changes: 6 additions & 5 deletions ApplicationLibCode/ProjectDataModel/Rim3dView.h
Original file line number Diff line number Diff line change
Expand Up @@ -183,11 +183,12 @@ class Rim3dView : public RimViewWindow, public RiuViewerToViewInterface, public
bool isScaleZEditable();
double scaleZ() const;

bool isMasterView() const;
Rim3dView* activeComparisonView() const;
void setComparisonView( Rim3dView* compView );
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
void updateMdiWindowTitle() override;
bool isMasterView() const;
Rim3dView* activeComparisonView() const;
void setComparisonView( Rim3dView* compView );
std::set<Rim3dView*> viewsUsingThisAsComparisonView();
void updateMdiWindowTitle() override;
std::vector<Rim3dView*> validComparisonViews() const;

RimViewLinker* assosiatedViewLinker() const override;
RimViewController* viewController() const override;
Expand Down
15 changes: 1 addition & 14 deletions ApplicationLibCode/UserInterface/RiuViewerCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,20 +167,7 @@ void RiuViewerCommands::addCompareToViewMenu( caf::CmdFeatureMenuBuilder* menuBu
auto* mainGridView = m_reservoirView.p();
if ( mainGridView && !mainGridView->activeComparisonView() )
{
std::vector<Rim3dView*> 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 );
}
}

std::vector<Rim3dView*> validComparisonViews = mainGridView->validComparisonViews();
if ( !validComparisonViews.empty() )
{
menuBuilder->subMenuStart( "Compare To ...", QIcon( ":/ComparisonView16x16.png" ) );
Expand Down

0 comments on commit 9281fed

Please sign in to comment.