Support copy of property filters to linked views

* Copy and overwrite property filters when linked
When linking property filters between different cases, the property filter settings are copied and the property filter is evaluated per case. The previous implementation worked only for a single case.

* Move field to private
This commit is contained in:
Magne Sjaastad 2022-11-28 14:34:26 +01:00 committed by GitHub
parent 7065d5eaf4
commit 9995af07a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 216 additions and 88 deletions

View File

@ -61,7 +61,7 @@ std::vector<RimEclipsePropertyFilterCollection*> RicEclipsePropertyFilterFeature
void RicEclipsePropertyFilterFeatureImpl::addPropertyFilter( RimEclipsePropertyFilterCollection* propertyFilterCollection )
{
RimEclipsePropertyFilter* propertyFilter = new RimEclipsePropertyFilter();
propertyFilterCollection->propertyFilters.push_back( propertyFilter );
propertyFilterCollection->propertyFiltersField().push_back( propertyFilter );
setDefaults( propertyFilter );
propertyFilterCollection->reservoirView()->scheduleGeometryRegen( PROPERTY_FILTERED );
@ -69,6 +69,8 @@ void RicEclipsePropertyFilterFeatureImpl::addPropertyFilter( RimEclipsePropertyF
propertyFilterCollection->updateConnectedEditors();
Riu3DMainWindowTools::selectAsCurrentItem( propertyFilter, false );
propertyFilterCollection->onChildAdded( nullptr );
}
//--------------------------------------------------------------------------------------------------
@ -78,7 +80,7 @@ void RicEclipsePropertyFilterFeatureImpl::insertPropertyFilter( RimEclipseProper
size_t index )
{
RimEclipsePropertyFilter* propertyFilter = new RimEclipsePropertyFilter();
propertyFilterCollection->propertyFilters.insertAt( static_cast<int>( index ), propertyFilter );
propertyFilterCollection->propertyFiltersField().insertAt( static_cast<int>( index ), propertyFilter );
setDefaults( propertyFilter );
propertyFilterCollection->reservoirView()->scheduleGeometryRegen( PROPERTY_FILTERED );

View File

@ -59,8 +59,8 @@ void RicEclipsePropertyFilterInsertExec::redo()
RimEclipsePropertyFilterCollection* propertyFilterCollection = nullptr;
m_propertyFilter->firstAncestorOrThisOfTypeAsserted( propertyFilterCollection );
size_t index = propertyFilterCollection->propertyFilters.indexOf( m_propertyFilter );
CVF_ASSERT( index < propertyFilterCollection->propertyFilters.size() );
size_t index = propertyFilterCollection->propertyFiltersField().indexOf( m_propertyFilter );
CVF_ASSERT( index < propertyFilterCollection->propertyFilters().size() );
RicEclipsePropertyFilterFeatureImpl::insertPropertyFilter( propertyFilterCollection, index );
}

View File

@ -69,7 +69,7 @@ void RicEclipsePropertyFilterNewExec::redo()
//--------------------------------------------------------------------------------------------------
void RicEclipsePropertyFilterNewExec::undo()
{
m_propertyFilterCollection->propertyFilters.erase( m_propertyFilterCollection->propertyFilters.size() - 1 );
m_propertyFilterCollection->propertyFiltersField().erase( m_propertyFilterCollection->propertyFilters().size() - 1 );
m_propertyFilterCollection->updateConnectedEditors();
}

View File

@ -40,6 +40,7 @@
#include "RiuMainWindow.h"
#include "cafPdmUiDoubleSliderEditor.h"
#include "cafPdmUiTreeAttributes.h"
#include "cvfAssert.h"
@ -76,6 +77,9 @@ RimEclipsePropertyFilter::RimEclipsePropertyFilter()
CAF_PDM_InitField( &m_useCategorySelection, "CategorySelection", false, "Category Selection" );
m_upperBound.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_isDuplicatedFromLinkedView, "IsDuplicatedFromLinkedView", false, "Duplicated" );
m_isDuplicatedFromLinkedView.uiCapability()->setUiHidden( true );
// HEADLESS HACK
if ( RiaGuiApplication::isRunning() )
{
@ -124,6 +128,14 @@ bool RimEclipsePropertyFilter::isCategorySelectionActive() const
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::setIsDuplicatedFromLinkedView( bool isDuplicated )
{
m_isDuplicatedFromLinkedView = isDuplicated;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -131,14 +143,12 @@ void RimEclipsePropertyFilter::fieldChangedByUi( const caf::PdmFieldHandle* chan
const QVariant& oldValue,
const QVariant& newValue )
{
// clang-format off
if ( &m_lowerBound == changedField
|| &m_upperBound == changedField
|| &m_isActive == changedField
|| &m_filterMode == changedField
|| &m_selectedCategoryValues == changedField
|| &m_useCategorySelection == changedField)
if ( &m_lowerBound == changedField || &m_upperBound == changedField || &m_isActive == changedField ||
&m_filterMode == changedField || &m_selectedCategoryValues == changedField ||
&m_useCategorySelection == changedField )
{
m_isDuplicatedFromLinkedView = false;
this->m_resultDefinition->loadResult();
this->computeResultValueRange();
updateFilterName();
@ -147,7 +157,6 @@ void RimEclipsePropertyFilter::fieldChangedByUi( const caf::PdmFieldHandle* chan
parentContainer()->updateDisplayModelNotifyManagedViews( this );
}
// clang-format on
}
//--------------------------------------------------------------------------------------------------
@ -341,6 +350,31 @@ void RimEclipsePropertyFilter::defineEditorAttribute( const caf::PdmFieldHandle*
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilter::defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute )
{
if ( !m_isDuplicatedFromLinkedView ) return;
Rim3dView* rimView = nullptr;
firstAncestorOrThisOfTypeAsserted( rimView );
RimViewController* vc = rimView->viewController();
if ( vc && vc->isPropertyFilterDuplicationActive() )
{
auto* treeItemAttribute = dynamic_cast<caf::PdmUiTreeViewItemAttribute*>( attribute );
if ( treeItemAttribute )
{
treeItemAttribute->tags.clear();
auto tag = caf::PdmUiTreeViewItemAttribute::Tag::create();
tag->icon = caf::IconProvider( ":/chain.png" );
treeItemAttribute->tags.push_back( std::move( tag ) );
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -44,6 +44,8 @@ public:
void rangeValues( double* lower, double* upper ) const;
bool isCategorySelectionActive() const;
void setIsDuplicatedFromLinkedView( bool isControlled );
void setToDefaultValues();
void updateFilterName();
void computeResultValueRange();
@ -62,6 +64,9 @@ private:
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute ) override;
private:
void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
private:
friend class RimEclipsePropertyFilterCollection;
friend class RicEclipsePropertyFilterFeatureImpl;
@ -79,6 +84,7 @@ private:
caf::PdmField<QString> m_rangeLabelText;
caf::PdmField<double> m_lowerBound;
caf::PdmField<double> m_upperBound;
caf::PdmField<bool> m_isDuplicatedFromLinkedView;
caf::PdmField<bool> m_useCategorySelection;

View File

@ -38,8 +38,8 @@ RimEclipsePropertyFilterCollection::RimEclipsePropertyFilterCollection()
{
CAF_PDM_InitObject( "Property Filters", ":/CellFilter_Values.png" );
CAF_PDM_InitFieldNoDefault( &propertyFilters, "PropertyFilters", "Property Filters" );
propertyFilters.uiCapability()->setUiTreeHidden( true );
CAF_PDM_InitFieldNoDefault( &m_propertyFilters, "PropertyFilters", "Property Filters" );
m_propertyFilters.uiCapability()->setUiTreeHidden( true );
}
//--------------------------------------------------------------------------------------------------
@ -47,7 +47,7 @@ RimEclipsePropertyFilterCollection::RimEclipsePropertyFilterCollection()
//--------------------------------------------------------------------------------------------------
RimEclipsePropertyFilterCollection::~RimEclipsePropertyFilterCollection()
{
propertyFilters.deleteChildren();
m_propertyFilters.deleteChildren();
}
//--------------------------------------------------------------------------------------------------
@ -61,12 +61,39 @@ RimEclipseView* RimEclipsePropertyFilterCollection::reservoirView()
return eclipseView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilterCollection::setIsDuplicatedFromLinkedView()
{
for ( RimEclipsePropertyFilter* propertyFilter : m_propertyFilters )
{
propertyFilter->setIsDuplicatedFromLinkedView( true );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimEclipsePropertyFilter*> RimEclipsePropertyFilterCollection::propertyFilters() const
{
return m_propertyFilters.children();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmChildArrayField<RimEclipsePropertyFilter*>& RimEclipsePropertyFilterCollection::propertyFiltersField()
{
return m_propertyFilters;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilterCollection::loadAndInitializePropertyFilters()
{
for ( RimEclipsePropertyFilter* propertyFilter : propertyFilters )
for ( RimEclipsePropertyFilter* propertyFilter : m_propertyFilters )
{
propertyFilter->resultDefinition()->setEclipseCase( reservoirView()->eclipseCase() );
propertyFilter->initAfterRead();
@ -93,7 +120,7 @@ bool RimEclipsePropertyFilterCollection::hasActiveFilters() const
{
if ( !isActive ) return false;
for ( RimEclipsePropertyFilter* propertyFilter : propertyFilters )
for ( RimEclipsePropertyFilter* propertyFilter : m_propertyFilters )
{
if ( propertyFilter->isActive() && propertyFilter->resultDefinition()->hasResult() ) return true;
}
@ -108,7 +135,7 @@ bool RimEclipsePropertyFilterCollection::hasActiveDynamicFilters() const
{
if ( !isActive ) return false;
for ( RimEclipsePropertyFilter* propertyFilter : propertyFilters )
for ( RimEclipsePropertyFilter* propertyFilter : m_propertyFilters )
{
if ( propertyFilter->isActive() && propertyFilter->resultDefinition()->hasDynamicResult() ) return true;
}
@ -123,7 +150,7 @@ bool RimEclipsePropertyFilterCollection::isUsingFormationNames() const
{
if ( !isActive ) return false;
for ( RimEclipsePropertyFilter* propertyFilter : propertyFilters )
for ( RimEclipsePropertyFilter* propertyFilter : m_propertyFilters )
{
if ( propertyFilter->isActive() &&
propertyFilter->resultDefinition()->resultType() == RiaDefines::ResultCatType::FORMATION_NAMES &&
@ -159,7 +186,7 @@ void RimEclipsePropertyFilterCollection::updateIconState()
updateUiIconFromState( activeIcon );
for ( RimEclipsePropertyFilter* cellFilter : propertyFilters )
for ( RimEclipsePropertyFilter* cellFilter : m_propertyFilters )
{
cellFilter->updateActiveState();
cellFilter->updateIconState();
@ -171,7 +198,7 @@ void RimEclipsePropertyFilterCollection::updateIconState()
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilterCollection::updateFromCurrentTimeStep()
{
for ( RimEclipsePropertyFilter* cellFilter : propertyFilters() )
for ( RimEclipsePropertyFilter* cellFilter : m_propertyFilters() )
{
cellFilter->updateFromCurrentTimeStep();
}

View File

@ -40,11 +40,11 @@ public:
~RimEclipsePropertyFilterCollection() override;
RimEclipseView* reservoirView();
void setIsDuplicatedFromLinkedView();
// Fields:
caf::PdmChildArrayField<RimEclipsePropertyFilter*> propertyFilters;
std::vector<RimEclipsePropertyFilter*> propertyFilters() const;
caf::PdmChildArrayField<RimEclipsePropertyFilter*>& propertyFiltersField();
// Methods
bool hasActiveFilters() const override;
bool hasActiveDynamicFilters() const override;
bool isUsingFormationNames() const;
@ -55,6 +55,8 @@ public:
void updateFromCurrentTimeStep();
protected:
// Overridden methods
void initAfterRead() override;
private:
caf::PdmChildArrayField<RimEclipsePropertyFilter*> m_propertyFilters;
};

View File

@ -66,16 +66,21 @@ void RimPropertyFilterCollection::updateDisplayModelNotifyManagedViews( RimPrope
view->scheduleCreateDisplayModelAndRedraw();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPropertyFilterCollection::onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
std::vector<caf::PdmObjectHandle*>& referringObjects )
{
Rim3dView* view = nullptr;
this->firstAncestorOrThisOfType( view );
CVF_ASSERT( view );
if ( !view ) return;
updateDisplayModelNotifyManagedViews( nullptr );
}
view->scheduleGeometryRegen( PROPERTY_FILTERED );
view->scheduleCreateDisplayModelAndRedraw();
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPropertyFilterCollection::onChildAdded( caf::PdmFieldHandle* containerForNewObject )
{
updateDisplayModelNotifyManagedViews( nullptr );
}
//--------------------------------------------------------------------------------------------------

View File

@ -48,6 +48,7 @@ public:
virtual void updateIconState() = 0;
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray,
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
void onChildAdded( caf::PdmFieldHandle* containerForNewObject ) override;
protected:
// Overridden methods

View File

@ -543,7 +543,7 @@ void RimEclipseCase::updateFormationNamesData()
}
RimEclipsePropertyFilterCollection* eclFilColl = eclView->eclipsePropertyFilterCollection();
for ( RimEclipsePropertyFilter* propFilter : eclFilColl->propertyFilters )
for ( RimEclipsePropertyFilter* propFilter : eclFilColl->propertyFilters() )
{
if ( propFilter->resultDefinition()->resultType() == RiaDefines::ResultCatType::FORMATION_NAMES )
{
@ -553,7 +553,7 @@ void RimEclipseCase::updateFormationNamesData()
}
RimEclipsePropertyFilterCollection* eclFilColl = eclView->eclipsePropertyFilterCollection();
for ( RimEclipsePropertyFilter* propFilter : eclFilColl->propertyFilters )
for ( RimEclipsePropertyFilter* propFilter : eclFilColl->propertyFilters() )
{
if ( propFilter->resultDefinition()->resultType() == RiaDefines::ResultCatType::FORMATION_NAMES )
{

View File

@ -1836,7 +1836,7 @@ void RimEclipseView::calculateCompletionTypeAndRedrawIfRequired()
isDependingOnCompletionType = true;
}
for ( const auto& propFilter : m_propertyFilterCollection()->propertyFilters )
for ( const auto& propFilter : m_propertyFilterCollection()->propertyFilters() )
{
if ( propFilter->isActive() &&
propFilter->resultDefinition()->resultVariable() == RiaResultNames::completionTypeResultName() )
@ -1859,7 +1859,7 @@ void RimEclipseView::calculateCompletionTypeAndRedrawIfRequired()
}
}
for ( const auto& propFilter : m_propertyFilterCollection()->propertyFilters )
for ( const auto& propFilter : m_propertyFilterCollection()->propertyFilters() )
{
if ( propFilter->isActive() &&
propFilter->resultDefinition()->resultVariable() == RiaResultNames::completionTypeResultName() )

View File

@ -78,13 +78,11 @@ RimViewController::RimViewController()
CAF_PDM_InitField( &m_syncCellResult, "SyncCellResult", false, "Cell Result" );
CAF_PDM_InitField( &m_syncLegendDefinitions, "SyncLegendDefinitions", true, " Color Legend" );
CAF_PDM_InitField( &m_syncVisibleCells, "SyncVisibleCells", false, "Visible Cells" );
/// We do not support this. Consider to remove sometime
m_syncVisibleCells.uiCapability()->setUiHidden( true );
m_syncVisibleCells.xmlCapability()->disableIO();
CAF_PDM_InitField( &m_syncCellFilters, "SyncRangeFilters", false, "Cell Filters" );
CAF_PDM_InitField( &m_syncPropertyFilters, "SyncPropertyFilters", false, "Property Filters" );
m_syncPropertyFilters.uiCapability()->setUiHidden( true );
CAF_PDM_InitField( &m_duplicatePropertyFilters, "DuplicatePropertyFilters", false, "Property Filters" );
setDeletable( true );
}
@ -165,6 +163,7 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
}
updateOverrides();
updateDuplicatedPropertyFilters();
updateResultColorsControl();
updateCameraLink();
updateDisplayNameAndIcon();
@ -215,6 +214,10 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
{
updateOverrides();
}
else if ( changedField == &m_duplicatePropertyFilters )
{
updateDuplicatedPropertyFilters();
}
else if ( changedField == &m_managedView )
{
PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle>>().rawPtr();
@ -225,11 +228,6 @@ void RimViewController::fieldChangedByUi( const caf::PdmFieldHandle* changedFiel
m_name.uiCapability()->updateConnectedEditors();
}
else if ( &m_syncVisibleCells == changedField )
{
updateOptionSensitivity();
updateOverrides();
}
}
//--------------------------------------------------------------------------------------------------
@ -432,8 +430,6 @@ void RimViewController::updateOptionSensitivity()
this->m_showCursor.uiCapability()->setUiReadOnly( true );
this->m_showCursor = false;
}
m_syncVisibleCells.uiCapability()->setUiReadOnly( !this->isMasterAndDepViewDifferentType() );
}
//--------------------------------------------------------------------------------------------------
@ -453,6 +449,7 @@ void RimViewController::setManagedView( Rim3dView* view )
updateOptionSensitivity();
updateOverrides();
updateDuplicatedPropertyFilters();
updateResultColorsControl();
updateCameraLink();
updateDisplayNameAndIcon();
@ -481,9 +478,9 @@ void RimViewController::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderi
scriptGroup->add( &m_syncLegendDefinitions );
caf::PdmUiGroup* visibleCells = uiOrdering.addNewGroup( "Link Cell Filters" );
visibleCells->add( &m_syncVisibleCells );
visibleCells->add( &m_syncCellFilters );
visibleCells->add( &m_syncPropertyFilters );
visibleCells->add( &m_duplicatePropertyFilters );
}
//--------------------------------------------------------------------------------------------------
@ -497,6 +494,46 @@ void RimViewController::updateDisplayNameAndIcon()
setUiIcon( iconProvider );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewController::updateDuplicatedPropertyFilters()
{
if ( !m_duplicatePropertyFilters ) return;
RimViewLinker* viewLinker = ownerViewLinker();
auto masterView = viewLinker->masterView();
CVF_ASSERT( masterView );
if ( m_managedView )
{
RimEclipseView* manEclView = managedEclipseView();
auto* masterEclipseView = dynamic_cast<RimEclipseView*>( masterView );
if ( masterEclipseView && manEclView )
{
auto propertyString = masterEclipseView->eclipsePropertyFilterCollection()->writeObjectToXmlString();
manEclView->eclipsePropertyFilterCollection()->readObjectFromXmlString( propertyString,
caf::PdmDefaultObjectFactory::instance() );
manEclView->eclipsePropertyFilterCollection()->loadAndInitializePropertyFilters();
manEclView->eclipsePropertyFilterCollection()->setIsDuplicatedFromLinkedView();
manEclView->eclipsePropertyFilterCollection()->updateAllRequiredEditors();
}
auto* masterGeoView = dynamic_cast<RimGeoMechView*>( masterView );
RimGeoMechView* manGeoView = managedGeoView();
if ( masterGeoView && manGeoView )
{
auto propertyString = masterGeoView->geoMechPropertyFilterCollection()->writeObjectToXmlString();
manGeoView->geoMechPropertyFilterCollection()->readObjectFromXmlString( propertyString,
caf::PdmDefaultObjectFactory::instance() );
managedGeoView()->geoMechPropertyFilterCollection()->loadAndInitializePropertyFilters();
managedGeoView()->geoMechPropertyFilterCollection()->updateAllRequiredEditors();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -781,16 +818,6 @@ bool RimViewController::isLegendDefinitionsControlled() const
//--------------------------------------------------------------------------------------------------
bool RimViewController::isVisibleCellsOveridden() const
{
if ( isMasterAndDepViewDifferentType() )
{
if ( ownerViewLinker()->isActive() && this->m_isActive() )
{
return m_syncVisibleCells();
}
return false;
}
return false;
}
@ -891,7 +918,7 @@ bool RimViewController::isPropertyFilterControlPossible() const
{
RimEclipseView* depEclipseView = managedEclipseView();
if ( depEclipseView && eclipseView->eclipseCase() && depEclipseView->eclipseCase() &&
eclipseView->eclipseCase()->isGridSizeEqualTo( depEclipseView->eclipseCase() ) )
eclipseView->eclipseCase() == depEclipseView->eclipseCase() )
{
return true;
}
@ -915,6 +942,14 @@ bool RimViewController::isPropertyFilterOveridden() const
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimViewController::isPropertyFilterDuplicationActive() const
{
return m_duplicatePropertyFilters;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -1043,6 +1078,7 @@ void RimViewController::updateCellFilterOverrides( const RimCellFilter* changedF
void RimViewController::updatePropertyFilterOverrides( RimPropertyFilter* changedPropertyFilter )
{
updateOverrides();
updateDuplicatedPropertyFilters();
}
//--------------------------------------------------------------------------------------------------

View File

@ -69,6 +69,7 @@ public:
bool isVisibleCellsOveridden() const;
bool isPropertyFilterOveridden() const;
bool isPropertyFilterDuplicationActive() const;
void scheduleCreateDisplayModelAndRedrawForDependentView() const;
void scheduleGeometryRegenForDepViews( RivCellSetEnum geometryType ) const;
@ -76,6 +77,7 @@ public:
void updateOptionSensitivity();
void removeOverrides();
void updateDisplayNameAndIcon();
void updateDuplicatedPropertyFilters();
void updateCellFilterOverrides( const RimCellFilter* changedFilter );
void applyCellFilterCollectionByUserChoice();
@ -118,13 +120,12 @@ private:
caf::PdmField<bool> m_showCursor;
caf::PdmField<bool> m_syncTimeStep;
// Overridden properties
caf::PdmField<bool> m_syncCellResult;
caf::PdmField<bool> m_syncLegendDefinitions;
caf::PdmField<bool> m_syncCellFilters;
caf::PdmField<bool> m_syncVisibleCells;
caf::PdmField<bool> m_syncPropertyFilters;
caf::PdmField<bool> m_duplicatePropertyFilters;
cvf::ref<RigCaseToCaseCellMapper> m_caseToCaseCellMapper;
};

View File

@ -112,13 +112,14 @@ void RimViewLinker::updateTimeStep( Rim3dView* sourceView, int timeStep )
m_masterView->viewer()->setCurrentFrame( timeStep );
}
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( !viewLink->isTimeStepLinked() ) continue;
if ( !viewController->isTimeStepLinked() ) continue;
if ( viewLink->managedView() && viewLink->managedView() != sourceView && viewLink->managedView()->viewer() )
if ( viewController->managedView() && viewController->managedView() != sourceView &&
viewController->managedView()->viewer() )
{
viewLink->managedView()->viewer()->setCurrentFrame( timeStep );
viewController->managedView()->viewer()->setCurrentFrame( timeStep );
}
}
}
@ -134,20 +135,20 @@ void RimViewLinker::updateCellResult()
{
RimEclipseResultDefinition* eclipseCellResultDefinition = masterEclipseView->cellResult();
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( viewLink->managedView() )
if ( viewController->managedView() )
{
Rim3dView* managedView = viewLink->managedView();
Rim3dView* managedView = viewController->managedView();
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>( managedView );
if ( eclipseView )
{
if ( viewLink->isResultColorControlled() )
if ( viewController->isResultColorControlled() )
{
eclipseView->cellResult()->simpleCopy( eclipseCellResultDefinition );
eclipseView->cellResult()->loadResult();
if ( viewLink->isLegendDefinitionsControlled() )
if ( viewController->isLegendDefinitionsControlled() )
{
eclipseView->cellResult()->legendConfig()->setUiValuesFromLegendConfig(
masterEclipseView->cellResult()->legendConfig() );
@ -172,19 +173,19 @@ void RimViewLinker::updateCellResult()
{
RimGeoMechResultDefinition* geoMechResultDefinition = masterGeoView->cellResult();
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( viewLink->managedView() )
if ( viewController->managedView() )
{
Rim3dView* managedView = viewLink->managedView();
Rim3dView* managedView = viewController->managedView();
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>( managedView );
if ( geoView )
{
if ( viewLink->isResultColorControlled() )
if ( viewController->isResultColorControlled() )
{
geoView->cellResult()->setResultAddress( geoMechResultDefinition->resultAddress() );
if ( viewLink->isLegendDefinitionsControlled() )
if ( viewController->isLegendDefinitionsControlled() )
{
geoView->cellResult()->legendConfig()->setUiValuesFromLegendConfig(
masterGeoView->cellResult()->legendConfig() );
@ -207,9 +208,9 @@ void RimViewLinker::updateCellResult()
//--------------------------------------------------------------------------------------------------
void RimViewLinker::updateCellFilters( const RimCellFilter* changedFilter )
{
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
viewLink->updateCellFilterOverrides( changedFilter );
viewController->updateCellFilterOverrides( changedFilter );
}
}
@ -218,15 +219,15 @@ void RimViewLinker::updateCellFilters( const RimCellFilter* changedFilter )
//--------------------------------------------------------------------------------------------------
void RimViewLinker::updateOverrides()
{
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( viewLink->isActive() )
if ( viewController->isActive() )
{
viewLink->updateOverrides();
viewController->updateOverrides();
}
else
{
viewLink->removeOverrides();
viewController->removeOverrides();
}
}
}
@ -238,15 +239,26 @@ void RimViewLinker::updateWindowTitles()
{
if ( m_masterView ) m_masterView->updateMdiWindowTitle();
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( auto view = viewLink->managedView() )
if ( auto view = viewController->managedView() )
{
view->updateMdiWindowTitle();
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLinker::updateDuplicatedPropertyFilters()
{
for ( RimViewController* viewController : m_viewControllers )
{
viewController->updateDuplicatedPropertyFilters();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -271,11 +283,11 @@ void RimViewLinker::updateScaleWidgetVisibility()
if ( masterView() ) masterView()->scheduleCreateDisplayModelAndRedraw();
for ( RimViewController* viewLink : m_viewControllers )
for ( RimViewController* viewController : m_viewControllers )
{
if ( viewLink->managedView() )
if ( viewController->managedView() )
{
viewLink->managedView()->scheduleCreateDisplayModelAndRedraw();
viewController->managedView()->scheduleCreateDisplayModelAndRedraw();
}
}
}
@ -312,6 +324,7 @@ void RimViewLinker::updateDependentViews()
if ( m_viewControllers.empty() ) return;
updateOverrides();
updateDuplicatedPropertyFilters();
updateCellResult();
updateScaleZ( m_masterView, m_masterView->scaleZ() );
updateCamera( m_masterView );

View File

@ -68,6 +68,7 @@ public:
void updateOverrides();
void updateWindowTitles();
void updateDuplicatedPropertyFilters();
void updateCamera( Rim3dView* sourceView );
void updateTimeStep( Rim3dView* sourceView, int timeStep );