From d9523dbd747710cdc6dbb1d1aa96de40817ead0c Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Fri, 30 Oct 2015 15:41:43 +0100 Subject: [PATCH] (#578) Disable menu commands in tree view when range/property is overridden --- .../RicEclipsePropertyFilterFeatureImpl.cpp | 20 +++++++++++++++++++ .../RicEclipsePropertyFilterFeatureImpl.h | 7 +++++++ .../RicEclipsePropertyFilterInsertFeature.cpp | 7 ++++++- .../RicEclipsePropertyFilterNewFeature.cpp | 7 ++++++- .../RicGeoMechPropertyFilterFeatureImpl.cpp | 10 ++++++++++ .../RicGeoMechPropertyFilterFeatureImpl.h | 7 +++++++ .../RicGeoMechPropertyFilterInsertFeature.cpp | 7 ++++++- .../RicGeoMechPropertyFilterNewFeature.cpp | 7 ++++++- .../Commands/RicRangeFilterInsertFeature.cpp | 3 +-- 9 files changed, 69 insertions(+), 6 deletions(-) diff --git a/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.cpp b/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.cpp index b021e26e5d..8864b9613a 100644 --- a/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.cpp +++ b/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.cpp @@ -24,6 +24,7 @@ #include "RimEclipseView.h" #include "RimEclipseResultDefinition.h" #include "RimEclipseCellColors.h" +#include "RimViewController.h" #include "cafSelectionManager.h" @@ -83,6 +84,25 @@ void RicEclipsePropertyFilterFeatureImpl::insertPropertyFilter(RimEclipsePropert RiuMainWindow::instance()->setCurrentObjectInTreeView(propertyFilter); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RicEclipsePropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(caf::PdmObjectHandle* object) +{ + RimView* rimView = NULL; + object->firstAnchestorOrThisOfType(rimView); + if (rimView) + { + RimViewController* vc = rimView->viewController(); + if (vc && vc->isPropertyFilterOveridden()) + { + return false; + } + } + + return true; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.h b/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.h index c8d0b1a37a..875adf1ecf 100644 --- a/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.h +++ b/ApplicationCode/Commands/RicEclipsePropertyFilterFeatureImpl.h @@ -25,6 +25,11 @@ class RimEclipsePropertyFilter; class RimEclipsePropertyFilterCollection; +namespace caf +{ + class PdmObjectHandle; +} + //================================================================================================== /// //================================================================================================== @@ -37,6 +42,8 @@ public: static void addPropertyFilter(RimEclipsePropertyFilterCollection* propertyFilterCollection); static void insertPropertyFilter(RimEclipsePropertyFilterCollection* propertyFilterCollection, size_t index); + static bool isPropertyFilterCommandAvailable(caf::PdmObjectHandle* object); + private: static void setDefaults(RimEclipsePropertyFilter* propertyFilter); }; diff --git a/ApplicationCode/Commands/RicEclipsePropertyFilterInsertFeature.cpp b/ApplicationCode/Commands/RicEclipsePropertyFilterInsertFeature.cpp index 0d6b2c3f47..cd845f2b9f 100644 --- a/ApplicationCode/Commands/RicEclipsePropertyFilterInsertFeature.cpp +++ b/ApplicationCode/Commands/RicEclipsePropertyFilterInsertFeature.cpp @@ -38,7 +38,12 @@ CAF_CMD_SOURCE_INIT(RicEclipsePropertyFilterInsertFeature, "RicEclipsePropertyFi bool RicEclipsePropertyFilterInsertFeature::isCommandEnabled() { std::vector propertyFilters = RicEclipsePropertyFilterFeatureImpl::selectedPropertyFilters(); - return propertyFilters.size() == 1; + if (propertyFilters.size() == 1) + { + return RicEclipsePropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(propertyFilters[0]); + } + + return false; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicEclipsePropertyFilterNewFeature.cpp b/ApplicationCode/Commands/RicEclipsePropertyFilterNewFeature.cpp index b18490bc16..57366ce3cc 100644 --- a/ApplicationCode/Commands/RicEclipsePropertyFilterNewFeature.cpp +++ b/ApplicationCode/Commands/RicEclipsePropertyFilterNewFeature.cpp @@ -37,7 +37,12 @@ CAF_CMD_SOURCE_INIT(RicEclipsePropertyFilterNewFeature, "RicEclipsePropertyFilte bool RicEclipsePropertyFilterNewFeature::isCommandEnabled() { std::vector filterCollections = RicEclipsePropertyFilterFeatureImpl::selectedPropertyFilterCollections(); - return filterCollections.size() == 1; + if (filterCollections.size() == 1) + { + return RicEclipsePropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(filterCollections[0]); + } + + return false; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.cpp b/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.cpp index fda61cc2ac..312b260336 100644 --- a/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.cpp +++ b/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.cpp @@ -18,6 +18,7 @@ ///////////////////////////////////////////////////////////////////////////////// #include "RicGeoMechPropertyFilterFeatureImpl.h" +#include "RicEclipsePropertyFilterFeatureImpl.h" #include "RimGeoMechPropertyFilter.h" #include "RimGeoMechPropertyFilterCollection.h" @@ -86,6 +87,15 @@ void RicGeoMechPropertyFilterFeatureImpl::insertPropertyFilter(RimGeoMechPropert } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RicGeoMechPropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(caf::PdmObjectHandle* object) +{ + // Reuse code from EclipseProperty filter, as the function is only dependent on RimView + return RicEclipsePropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(object); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.h b/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.h index 877617e6da..88ba073ad0 100644 --- a/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.h +++ b/ApplicationCode/Commands/RicGeoMechPropertyFilterFeatureImpl.h @@ -25,6 +25,11 @@ class RimGeoMechPropertyFilter; class RimGeoMechPropertyFilterCollection; +namespace caf +{ + class PdmObjectHandle; +} + //================================================================================================== /// //================================================================================================== @@ -37,6 +42,8 @@ public: static void addPropertyFilter(RimGeoMechPropertyFilterCollection* propertyFilterCollection); static void insertPropertyFilter(RimGeoMechPropertyFilterCollection* propertyFilterCollection, size_t index); + static bool isPropertyFilterCommandAvailable(caf::PdmObjectHandle* object); + private: static RimGeoMechPropertyFilter* createPropertyFilter(RimGeoMechPropertyFilterCollection* propertyFilterCollection); static void setDefaults(RimGeoMechPropertyFilter* propertyFilter); diff --git a/ApplicationCode/Commands/RicGeoMechPropertyFilterInsertFeature.cpp b/ApplicationCode/Commands/RicGeoMechPropertyFilterInsertFeature.cpp index 0a42d17d25..030d10b7ff 100644 --- a/ApplicationCode/Commands/RicGeoMechPropertyFilterInsertFeature.cpp +++ b/ApplicationCode/Commands/RicGeoMechPropertyFilterInsertFeature.cpp @@ -38,7 +38,12 @@ CAF_CMD_SOURCE_INIT(RicGeoMechPropertyFilterInsertFeature, "RicGeoMechPropertyFi bool RicGeoMechPropertyFilterInsertFeature::isCommandEnabled() { std::vector propertyFilters = RicGeoMechPropertyFilterFeatureImpl::selectedPropertyFilters(); - return propertyFilters.size() == 1; + if (propertyFilters.size() == 1) + { + return RicGeoMechPropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(propertyFilters[0]); + } + + return false; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicGeoMechPropertyFilterNewFeature.cpp b/ApplicationCode/Commands/RicGeoMechPropertyFilterNewFeature.cpp index f59cfc054a..e46b3e34e8 100644 --- a/ApplicationCode/Commands/RicGeoMechPropertyFilterNewFeature.cpp +++ b/ApplicationCode/Commands/RicGeoMechPropertyFilterNewFeature.cpp @@ -37,7 +37,12 @@ CAF_CMD_SOURCE_INIT(RicGeoMechPropertyFilterNewFeature, "RicGeoMechPropertyFilte bool RicGeoMechPropertyFilterNewFeature::isCommandEnabled() { std::vector filterCollections = RicGeoMechPropertyFilterFeatureImpl::selectedPropertyFilterCollections(); - return filterCollections.size() == 1; + if (filterCollections.size() == 1) + { + return RicGeoMechPropertyFilterFeatureImpl::isPropertyFilterCommandAvailable(filterCollections[0]); + } + + return false; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/RicRangeFilterInsertFeature.cpp b/ApplicationCode/Commands/RicRangeFilterInsertFeature.cpp index 1293bb7814..e14fe1ff33 100644 --- a/ApplicationCode/Commands/RicRangeFilterInsertFeature.cpp +++ b/ApplicationCode/Commands/RicRangeFilterInsertFeature.cpp @@ -38,8 +38,7 @@ CAF_CMD_SOURCE_INIT(RicRangeFilterInsertFeature, "RicRangeFilterInsertFeature"); //-------------------------------------------------------------------------------------------------- bool RicRangeFilterInsertFeature::isCommandEnabled() { - std::vector selection = selectedCellRangeFilters(); - return selection.size() > 0; + return RicRangeFilterFeatureImpl::isRangeFilterCommandAvailable(); } //--------------------------------------------------------------------------------------------------