mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
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:
parent
7065d5eaf4
commit
9995af07a1
@ -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 );
|
||||
|
@ -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 );
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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 )
|
||||
{
|
||||
|
@ -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() )
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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 );
|
||||
|
@ -68,6 +68,7 @@ public:
|
||||
|
||||
void updateOverrides();
|
||||
void updateWindowTitles();
|
||||
void updateDuplicatedPropertyFilters();
|
||||
|
||||
void updateCamera( Rim3dView* sourceView );
|
||||
void updateTimeStep( Rim3dView* sourceView, int timeStep );
|
||||
|
Loading…
Reference in New Issue
Block a user