mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Support linking of 2D intersection views
* Major refactor from RimGridView to Rim3dView * Move view linker/controller functions to Rim3dView * Add bitmask to define the content of a 3D view * Link views based on matching content * Enable bit mask operators at global scope * Make it possible to use 2d intersection views as comparison views * Fix crash when a view used as comparison view is deleted * Move unlinking to Rim3dView * Add options to snapshot only 3D views/plots as part of regression testing * WBS plot: Improve default name, hide axis for some tracks
This commit is contained in:
@@ -95,8 +95,8 @@ RimViewController::RimViewController()
|
||||
RimViewController::~RimViewController()
|
||||
{
|
||||
this->removeOverrides();
|
||||
RimGridView* managedView = m_managedView;
|
||||
m_managedView = nullptr;
|
||||
auto managedView = m_managedView();
|
||||
m_managedView = nullptr;
|
||||
|
||||
if ( managedView ) managedView->updateAutoName();
|
||||
}
|
||||
@@ -110,8 +110,8 @@ QList<caf::PdmOptionItemInfo> RimViewController::calculateValueOptions( const ca
|
||||
|
||||
if ( fieldNeedingOptions == &m_managedView )
|
||||
{
|
||||
RimProject* proj = RimProject::current();
|
||||
std::vector<RimGridView*> views;
|
||||
RimProject* proj = RimProject::current();
|
||||
std::vector<Rim3dView*> views;
|
||||
proj->allNotLinkedViews( views );
|
||||
|
||||
// Add currently linked view to list
|
||||
@@ -124,7 +124,7 @@ QList<caf::PdmOptionItemInfo> RimViewController::calculateValueOptions( const ca
|
||||
this->firstAncestorOrThisOfType( viewLinker );
|
||||
CVF_ASSERT( viewLinker );
|
||||
|
||||
for ( RimGridView* view : views )
|
||||
for ( auto view : views )
|
||||
{
|
||||
if ( view != viewLinker->masterView() )
|
||||
{
|
||||
@@ -221,8 +221,6 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
||||
auto* previousManagedView = dynamic_cast<RimGridView*>( prevValue );
|
||||
RimViewController::removeOverrides( previousManagedView );
|
||||
|
||||
ownerViewLinker()->notifyManagedViewChange( previousManagedView, m_managedView() );
|
||||
|
||||
setManagedView( m_managedView() );
|
||||
|
||||
m_name.uiCapability()->updateConnectedEditors();
|
||||
@@ -239,9 +237,7 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseView* RimViewController::managedEclipseView() const
|
||||
{
|
||||
RimGridView* rimView = m_managedView;
|
||||
|
||||
return dynamic_cast<RimEclipseView*>( rimView );
|
||||
return dynamic_cast<RimEclipseView*>( m_managedView() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -249,9 +245,7 @@ RimEclipseView* RimViewController::managedEclipseView() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimGeoMechView* RimViewController::managedGeoView() const
|
||||
{
|
||||
RimGridView* rimView = m_managedView;
|
||||
|
||||
return dynamic_cast<RimGeoMechView*>( rimView );
|
||||
return dynamic_cast<RimGeoMechView*>( m_managedView() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -261,7 +255,7 @@ void RimViewController::updateOverrides()
|
||||
{
|
||||
RimViewLinker* viewLinker = ownerViewLinker();
|
||||
|
||||
RimGridView* masterView = viewLinker->masterView();
|
||||
auto masterView = viewLinker->masterView();
|
||||
|
||||
CVF_ASSERT( masterView );
|
||||
|
||||
@@ -332,7 +326,7 @@ void RimViewController::updateOverrides()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::removeOverrides()
|
||||
{
|
||||
removeOverrides( m_managedView );
|
||||
removeOverrides( dynamic_cast<RimGridView*>( m_managedView() ) );
|
||||
|
||||
RimEclipseView* manEclView = managedEclipseView();
|
||||
RimGeoMechView* manGeoView = managedGeoView();
|
||||
@@ -369,7 +363,7 @@ void RimViewController::removeOverrides( RimGridView* view )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::updateOptionSensitivity()
|
||||
{
|
||||
RimGridView* mainView = nullptr;
|
||||
Rim3dView* mainView = nullptr;
|
||||
|
||||
{
|
||||
RimViewLinker* linkedViews = nullptr;
|
||||
@@ -445,7 +439,7 @@ void RimViewController::updateOptionSensitivity()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimGridView* RimViewController::managedView() const
|
||||
Rim3dView* RimViewController::managedView() const
|
||||
{
|
||||
return m_managedView;
|
||||
}
|
||||
@@ -453,13 +447,8 @@ RimGridView* RimViewController::managedView() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::setManagedView( RimGridView* view )
|
||||
void RimViewController::setManagedView( Rim3dView* view )
|
||||
{
|
||||
if ( m_managedView != view )
|
||||
{
|
||||
ownerViewLinker()->notifyManagedViewChange( m_managedView(), view );
|
||||
}
|
||||
|
||||
m_managedView = view;
|
||||
|
||||
updateOptionSensitivity();
|
||||
@@ -648,7 +637,7 @@ const RigCaseToCaseCellMapper* RimViewController::cellMapper()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimGridView* RimViewController::masterView() const
|
||||
Rim3dView* RimViewController::masterView() const
|
||||
{
|
||||
return ownerViewLinker()->masterView();
|
||||
}
|
||||
@@ -692,7 +681,8 @@ void RimViewController::scheduleCreateDisplayModelAndRedrawForDependentView() co
|
||||
|
||||
if ( this->isResultColorControlled() && this->managedView() )
|
||||
{
|
||||
this->managedView()->intersectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
|
||||
auto gridView = dynamic_cast<RimGridView*>( this->managedView() );
|
||||
if ( gridView ) gridView->intersectionCollection()->scheduleCreateDisplayModelAndRedraw2dIntersectionViews();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -930,16 +920,19 @@ bool RimViewController::isPropertyFilterOveridden() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedFilter )
|
||||
{
|
||||
if ( !m_managedView ) return;
|
||||
auto controlledGridView = dynamic_cast<RimGridView*>( m_managedView() );
|
||||
if ( !controlledGridView ) return;
|
||||
|
||||
if ( !isCellFiltersControlled() )
|
||||
{
|
||||
m_managedView->setOverrideCellFilterCollection( nullptr );
|
||||
controlledGridView->setOverrideCellFilterCollection( nullptr );
|
||||
return;
|
||||
}
|
||||
// Copy the rangeFilterCollection
|
||||
auto masterGridView = dynamic_cast<RimGridView*>( masterView() );
|
||||
if ( !masterGridView ) return;
|
||||
|
||||
RimCellFilterCollection* sourceFilterCollection = masterView()->cellFilterCollection();
|
||||
RimCellFilterCollection* sourceFilterCollection = masterGridView->cellFilterCollection();
|
||||
QString xmlFilterCollCopy = sourceFilterCollection->writeObjectToXmlString();
|
||||
PdmObjectHandle* objectCopy =
|
||||
PdmXmlObjectHandle::readUnknownObjectFromXmlString( xmlFilterCollCopy,
|
||||
@@ -1041,7 +1034,7 @@ void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedF
|
||||
}
|
||||
}
|
||||
|
||||
m_managedView->setOverrideCellFilterCollection( overrideFilterColl );
|
||||
controlledGridView->setOverrideCellFilterCollection( overrideFilterColl );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1057,33 +1050,33 @@ void RimViewController::updatePropertyFilterOverrides( RimPropertyFilter* change
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::applyCellFilterCollectionByUserChoice()
|
||||
{
|
||||
if ( !m_managedView ) return;
|
||||
auto managedGridView = dynamic_cast<RimGridView*>( m_managedView() );
|
||||
|
||||
if ( !m_managedView->hasOverriddenCellFilterCollection() )
|
||||
if ( !managedGridView ) return;
|
||||
|
||||
if ( !managedGridView->hasOverriddenCellFilterCollection() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RimViewLinker* viewLinker = ownerViewLinker();
|
||||
RimGridView* masterView = viewLinker->masterView();
|
||||
auto* masterView = dynamic_cast<RimGridView*>( viewLinker->masterView() );
|
||||
|
||||
bool restoreOriginal = true;
|
||||
bool anyActiveFilter = false;
|
||||
|
||||
bool anyActiveFilter = !masterView->cellFilterCollection()->filters().empty() ||
|
||||
masterView->propertyFilterCollection()->hasActiveFilters();
|
||||
|
||||
if ( anyActiveFilter )
|
||||
if ( masterView )
|
||||
{
|
||||
restoreOriginal = askUserToRestoreOriginalCellFilterCollection( m_managedView->name() );
|
||||
anyActiveFilter = !masterView->cellFilterCollection()->filters().empty() ||
|
||||
masterView->propertyFilterCollection()->hasActiveFilters();
|
||||
}
|
||||
|
||||
if ( restoreOriginal )
|
||||
if ( anyActiveFilter && askUserToRestoreOriginalCellFilterCollection( m_managedView->name() ) )
|
||||
{
|
||||
m_managedView->setOverrideCellFilterCollection( nullptr );
|
||||
managedGridView->setOverrideCellFilterCollection( nullptr );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_managedView->replaceCellFilterCollectionWithOverride();
|
||||
managedGridView->replaceCellFilterCollectionWithOverride();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user