From 71e74599ffd37e5782a41c0170871480917f98d3 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 23 Sep 2015 14:35:35 +0200 Subject: [PATCH] (#483) Gray out overridden range and property collections --- .../RimCellRangeFilterCollection.cpp | 39 +++++++++----- .../RimCellRangeFilterCollection.h | 1 + .../RimEclipsePropertyFilterCollection.cpp | 52 ++++++++++++------- .../RimEclipsePropertyFilterCollection.h | 3 +- .../ProjectDataModel/RimEclipseView.cpp | 10 ++++ .../ProjectDataModel/RimEclipseView.h | 2 + .../RimGeoMechPropertyFilterCollection.cpp | 50 +++++++++++------- .../RimGeoMechPropertyFilterCollection.h | 3 +- .../ProjectDataModel/RimGeoMechView.cpp | 10 ++++ .../ProjectDataModel/RimGeoMechView.h | 1 + .../ProjectDataModel/RimViewLink.cpp | 10 ++++ 11 files changed, 129 insertions(+), 52 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.cpp b/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.cpp index 549b4ab79a..31199c9e38 100644 --- a/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.cpp @@ -31,7 +31,7 @@ #include "RimEclipseView.h" #include "RimGeoMechCase.h" #include "RimGeoMechView.h" -#include "RimProject.h" +#include "RimViewLink.h" #include "RimViewLinker.h" #include "cafPdmUiEditorHandle.h" @@ -138,7 +138,7 @@ RigActiveCellInfo* RimCellRangeFilterCollection::activeCellInfo() const //-------------------------------------------------------------------------------------------------- void RimCellRangeFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { - this->updateUiIconFromToggleField(); + updateIconState(); updateDisplayModeNotifyManagedViews(); } @@ -155,16 +155,6 @@ void RimCellRangeFilterCollection::updateDisplayModeNotifyManagedViews() view->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE); view->scheduleCreateDisplayModelAndRedraw(); - /* - RimProject* proj = NULL; - view->firstAnchestorOrThisOfType(proj); - - RimViewLinker* viewLinker = proj->findViewLinkerFromView(view); - if (viewLinker) - { - viewLinker->updateRangeFilters(); - } - */ } //-------------------------------------------------------------------------------------------------- @@ -186,7 +176,7 @@ void RimCellRangeFilterCollection::initAfterRead() rangeFilter->updateIconState(); } - this->updateUiIconFromToggleField(); + updateIconState(); } //-------------------------------------------------------------------------------------------------- @@ -323,3 +313,26 @@ RimView* RimCellRangeFilterCollection::baseView() const return rimView; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimCellRangeFilterCollection::updateIconState() +{ + bool activeIcon = true; + + RimViewLink* viewLink = RimViewLinker::viewLinkForView(baseView()); + if (viewLink && viewLink->syncRangeFilters()) + { + activeIcon = false; + } + + if (!isActive) + { + activeIcon = false; + } + + updateUiIconFromState(activeIcon); + + uiCapability()->updateConnectedEditors(); +} + diff --git a/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.h b/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.h index 1f4cff0030..9c8279a70c 100644 --- a/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.h +++ b/ApplicationCode/ProjectDataModel/RimCellRangeFilterCollection.h @@ -54,6 +54,7 @@ public: RigActiveCellInfo* activeCellInfo() const; void updateDisplayModeNotifyManagedViews(); + void updateIconState(); // Overridden methods virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ); diff --git a/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.cpp b/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.cpp index 83eb1d161f..b7e111928f 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.cpp @@ -23,7 +23,7 @@ #include "RimEclipseCellColors.h" #include "RimEclipseResultDefinition.h" #include "RimEclipseView.h" -#include "RimProject.h" +#include "RimViewLink.h" #include "RimViewLinker.h" #include "cafPdmUiEditorHandle.h" @@ -41,8 +41,8 @@ RimEclipsePropertyFilterCollection::RimEclipsePropertyFilterCollection() CAF_PDM_InitFieldNoDefault(&propertyFilters, "PropertyFilters", "Property Filters", "", "", ""); propertyFilters.uiCapability()->setUiHidden(true); - CAF_PDM_InitField(&active, "Active", true, "Active", "", "", ""); - active.uiCapability()->setUiHidden(true); + CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", ""); + isActive.uiCapability()->setUiHidden(true); } //-------------------------------------------------------------------------------------------------- @@ -69,7 +69,7 @@ RimEclipseView* RimEclipsePropertyFilterCollection::reservoirView() //-------------------------------------------------------------------------------------------------- void RimEclipsePropertyFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { - this->updateUiIconFromToggleField(); + updateIconState(); updateDisplayModelNotifyManagedViews(); } @@ -91,7 +91,7 @@ void RimEclipsePropertyFilterCollection::loadAndInitializePropertyFilters() //-------------------------------------------------------------------------------------------------- void RimEclipsePropertyFilterCollection::initAfterRead() { - this->updateUiIconFromToggleField(); + updateIconState(); } //-------------------------------------------------------------------------------------------------- @@ -99,7 +99,7 @@ void RimEclipsePropertyFilterCollection::initAfterRead() //-------------------------------------------------------------------------------------------------- bool RimEclipsePropertyFilterCollection::hasActiveFilters() const { - if (!active) return false; + if (!isActive) return false; for (size_t i = 0; i < propertyFilters.size(); i++) { @@ -115,7 +115,7 @@ bool RimEclipsePropertyFilterCollection::hasActiveFilters() const //-------------------------------------------------------------------------------------------------- bool RimEclipsePropertyFilterCollection::hasActiveDynamicFilters() const { - if (!active) return false; + if (!isActive) return false; for (size_t i = 0; i < propertyFilters.size(); i++) { @@ -131,7 +131,7 @@ bool RimEclipsePropertyFilterCollection::hasActiveDynamicFilters() const //-------------------------------------------------------------------------------------------------- caf::PdmFieldHandle* RimEclipsePropertyFilterCollection::objectToggleField() { - return &active; + return &isActive; } //-------------------------------------------------------------------------------------------------- @@ -145,15 +145,29 @@ void RimEclipsePropertyFilterCollection::updateDisplayModelNotifyManagedViews() view->scheduleGeometryRegen(PROPERTY_FILTERED); view->scheduleCreateDisplayModelAndRedraw(); - - RimProject* proj = NULL; - view->firstAnchestorOrThisOfType(proj); - - /* - RimViewLinker* viewLinker = proj->findViewLinkerFromView(view); - if (viewLinker) - { - viewLinker->updatePropertyFilters(); - } - */ +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEclipsePropertyFilterCollection::updateIconState() +{ + bool activeIcon = true; + + RimEclipseView* view = NULL; + this->firstAnchestorOrThisOfType(view); + RimViewLink* viewLink = RimViewLinker::viewLinkForView(view); + if (viewLink && viewLink->syncPropertyFilters()) + { + activeIcon = false; + } + + if (!isActive) + { + activeIcon = false; + } + + updateUiIconFromState(activeIcon); + + uiCapability()->updateConnectedEditors(); } diff --git a/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.h b/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.h index e89c89a197..1da0ae9e7b 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.h +++ b/ApplicationCode/ProjectDataModel/RimEclipsePropertyFilterCollection.h @@ -34,7 +34,7 @@ public: virtual ~RimEclipsePropertyFilterCollection(); // Fields: - caf::PdmField active; + caf::PdmField isActive; caf::PdmChildArrayField propertyFilters; // Methods @@ -46,6 +46,7 @@ public: void loadAndInitializePropertyFilters(); void updateDisplayModelNotifyManagedViews(); + void updateIconState(); // Overridden methods diff --git a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp index f0907611ca..8633e0f522 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseView.cpp @@ -1604,3 +1604,13 @@ void RimEclipseView::calculateCurrentTotalCellVisibility(cvf::UByteArray* totalV } } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEclipseView::updateIconStateForFilterCollections() +{ + // NB - notice that it is the filter collection managed by this view that the icon update applies to + m_rangeFilterCollection()->updateIconState(); + m_propertyFilterCollection()->updateIconState(); +} diff --git a/ApplicationCode/ProjectDataModel/RimEclipseView.h b/ApplicationCode/ProjectDataModel/RimEclipseView.h index 0eeca82b2e..6326861df2 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseView.h +++ b/ApplicationCode/ProjectDataModel/RimEclipseView.h @@ -129,6 +129,8 @@ public: // Overridden PDM methods: virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); + void updateIconStateForFilterCollections(); + protected: virtual void initAfterRead(); virtual void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ); diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.cpp b/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.cpp index 25a3cc176f..cb754f6798 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.cpp @@ -22,7 +22,7 @@ #include "RimGeoMechCellColors.h" #include "RimGeoMechPropertyFilter.h" #include "RimGeoMechView.h" -#include "RimProject.h" +#include "RimViewLink.h" #include "RimViewLinker.h" #include "cvfAssert.h" @@ -40,8 +40,8 @@ RimGeoMechPropertyFilterCollection::RimGeoMechPropertyFilterCollection() CAF_PDM_InitFieldNoDefault(&propertyFilters, "PropertyFilters", "Property Filters", "", "", ""); propertyFilters.uiCapability()->setUiHidden(true); - CAF_PDM_InitField(&active, "Active", true, "Active", "", "", ""); - active.uiCapability()->setUiHidden(true); + CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", ""); + isActive.uiCapability()->setUiHidden(true); } //-------------------------------------------------------------------------------------------------- @@ -68,7 +68,7 @@ RimGeoMechView* RimGeoMechPropertyFilterCollection::reservoirView() //-------------------------------------------------------------------------------------------------- void RimGeoMechPropertyFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { - this->updateUiIconFromToggleField(); + updateIconState(); updateDisplayModelNotifyManagedViews(); } @@ -101,7 +101,7 @@ void RimGeoMechPropertyFilterCollection::initAfterRead() propertyFilter->updateIconState(); } - this->updateUiIconFromToggleField(); + updateIconState(); } //-------------------------------------------------------------------------------------------------- @@ -109,7 +109,7 @@ void RimGeoMechPropertyFilterCollection::initAfterRead() //-------------------------------------------------------------------------------------------------- bool RimGeoMechPropertyFilterCollection::hasActiveFilters() const { - if (!active) return false; + if (!isActive) return false; for (size_t i = 0; i < propertyFilters.size(); i++) { @@ -133,7 +133,7 @@ bool RimGeoMechPropertyFilterCollection::hasActiveDynamicFilters() const //-------------------------------------------------------------------------------------------------- caf::PdmFieldHandle* RimGeoMechPropertyFilterCollection::objectToggleField() { - return &active; + return &isActive; } //-------------------------------------------------------------------------------------------------- @@ -147,15 +147,29 @@ void RimGeoMechPropertyFilterCollection::updateDisplayModelNotifyManagedViews() view->scheduleGeometryRegen(PROPERTY_FILTERED); view->scheduleCreateDisplayModelAndRedraw(); - - RimProject* proj = NULL; - view->firstAnchestorOrThisOfType(proj); - - /* - RimViewLinker* viewLinker = proj->findViewLinkerFromView(view); - if (viewLinker) - { - viewLinker->updatePropertyFilters(); - } - */ +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimGeoMechPropertyFilterCollection::updateIconState() +{ + bool activeIcon = true; + + RimGeoMechView* view = NULL; + this->firstAnchestorOrThisOfType(view); + RimViewLink* viewLink = RimViewLinker::viewLinkForView(view); + if (viewLink && viewLink->syncPropertyFilters()) + { + activeIcon = false; + } + + if (!isActive) + { + activeIcon = false; + } + + updateUiIconFromState(activeIcon); + + uiCapability()->updateConnectedEditors(); } diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.h b/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.h index 9761647329..0d997426ec 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.h +++ b/ApplicationCode/ProjectDataModel/RimGeoMechPropertyFilterCollection.h @@ -41,7 +41,7 @@ public: RimGeoMechView* reservoirView(); // Fields: - caf::PdmField active; + caf::PdmField isActive; caf::PdmChildArrayField propertyFilters; // Methods @@ -50,6 +50,7 @@ public: void loadAndInitializePropertyFilters(); void updateDisplayModelNotifyManagedViews(); + void updateIconState(); protected: // Overridden methods diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechView.cpp b/ApplicationCode/ProjectDataModel/RimGeoMechView.cpp index 2744c65282..f1887a5291 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechView.cpp +++ b/ApplicationCode/ProjectDataModel/RimGeoMechView.cpp @@ -554,3 +554,13 @@ void RimGeoMechView::calculateCurrentTotalCellVisibility(cvf::UByteArray* totalV m_vizLogic->calculateCurrentTotalCellVisibility(totalVisibility, m_currentTimeStep); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimGeoMechView::updateIconStateForFilterCollections() +{ + // NB - notice that it is the filter collection managed by this view that the icon update applies to + m_rangeFilterCollection()->updateIconState(); + m_propertyFilterCollection()->updateIconState(); +} + diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechView.h b/ApplicationCode/ProjectDataModel/RimGeoMechView.h index 3ab6a96ffc..d686003f39 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechView.h +++ b/ApplicationCode/ProjectDataModel/RimGeoMechView.h @@ -72,6 +72,7 @@ public: virtual cvf::Transform* scaleTransform(); virtual void scheduleGeometryRegen(RivCellSetEnum geometryType); + void updateIconStateForFilterCollections(); private: virtual void createDisplayModel(); diff --git a/ApplicationCode/ProjectDataModel/RimViewLink.cpp b/ApplicationCode/ProjectDataModel/RimViewLink.cpp index f12a985abb..d8cea72508 100644 --- a/ApplicationCode/ProjectDataModel/RimViewLink.cpp +++ b/ApplicationCode/ProjectDataModel/RimViewLink.cpp @@ -296,6 +296,16 @@ void RimViewLink::configureOverrides() RimEclipseView* manEclView = managedEclipseView(); RimGeoMechView* manGeoView = managedGeoView(); + if (manGeoView) + { + manGeoView->updateIconStateForFilterCollections(); + } + + if (manEclView) + { + manEclView->updateIconStateForFilterCollections(); + } + if (!isActive) { m_managedView->setOverrideRangeFilterCollection(NULL);