diff --git a/ApplicationCode/Commands/RicLinkVisibleViewsFeature.cpp b/ApplicationCode/Commands/RicLinkVisibleViewsFeature.cpp index 624cbbfae2..af17ea8119 100644 --- a/ApplicationCode/Commands/RicLinkVisibleViewsFeature.cpp +++ b/ApplicationCode/Commands/RicLinkVisibleViewsFeature.cpp @@ -60,18 +60,20 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked) CVF_ASSERT(views.size() > 1); RimView* masterView = views[0]; - RimLinkedViews* linkedViews = new RimLinkedViews; linkedViews->mainView = masterView; for (size_t i = 1; i < views.size(); i++) { RimView* rimView = views[i]; + RimManagedViewConfig* viewConfig = new RimManagedViewConfig; viewConfig->managedView = rimView; + linkedViews->viewConfigs.push_back(viewConfig); viewConfig->initAfterReadRecursively(); + viewConfig->updateViewChanged(); } proj->linkedViews.push_back(linkedViews); diff --git a/ApplicationCode/ProjectDataModel/RimLinkedViews.cpp b/ApplicationCode/ProjectDataModel/RimLinkedViews.cpp index 82e5261d5b..1a48e61c59 100644 --- a/ApplicationCode/ProjectDataModel/RimLinkedViews.cpp +++ b/ApplicationCode/ProjectDataModel/RimLinkedViews.cpp @@ -331,3 +331,18 @@ RimManagedViewConfig* RimLinkedViews::viewConfigForView(RimView* view) return NULL; } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimLinkedViews::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) +{ + if (changedField == &mainView) + { + for (size_t i = 0; i < viewConfigs.size(); i++) + { + viewConfigs[i]->updateViewChanged(); + viewConfigs[i]->updateConnectedEditors(); + } + } +} diff --git a/ApplicationCode/ProjectDataModel/RimLinkedViews.h b/ApplicationCode/ProjectDataModel/RimLinkedViews.h index fb2e601f7a..004ee23305 100644 --- a/ApplicationCode/ProjectDataModel/RimLinkedViews.h +++ b/ApplicationCode/ProjectDataModel/RimLinkedViews.h @@ -64,6 +64,7 @@ public: RimManagedViewConfig* viewConfigForView(RimView* view); protected: + virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly); virtual caf::PdmFieldHandle* userDescriptionField() { return &name; } virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = ""); diff --git a/ApplicationCode/ProjectDataModel/RimManagedViewConfig.cpp b/ApplicationCode/ProjectDataModel/RimManagedViewConfig.cpp index 6a0f6f9147..18691c955e 100644 --- a/ApplicationCode/ProjectDataModel/RimManagedViewConfig.cpp +++ b/ApplicationCode/ProjectDataModel/RimManagedViewConfig.cpp @@ -52,8 +52,8 @@ RimManagedViewConfig::RimManagedViewConfig(void) managedView.uiCapability()->setUiChildrenHidden(true); CAF_PDM_InitField(&syncCamera, "SyncCamera", true, "Sync Camera", "", "", ""); - CAF_PDM_InitField(&syncCellResult, "SyncCellResult", true, "Sync Cell Result", "", "", ""); CAF_PDM_InitField(&syncTimeStep, "SyncTimeStep", true, "Sync Time Step", "", "", ""); + CAF_PDM_InitField(&syncCellResult, "SyncCellResult", true, "Sync Cell Result", "", "", ""); CAF_PDM_InitField(&syncRangeFilters, "SyncRangeFilters", true, "Sync Range Filters", "", "", ""); CAF_PDM_InitField(&syncPropertyFilters, "SyncPropertyFilters", true,"Sync Property Filters", "", "", ""); } @@ -85,7 +85,7 @@ QList RimManagedViewConfig::calculateValueOptions(const { if (views[i] != masterView) { - optionList.push_back(caf::PdmOptionItemInfo(displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer(views[i])))); + optionList.push_back(caf::PdmOptionItemInfo(RimLinkedViews::displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer(views[i])))); } } @@ -151,7 +151,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi linkedViews->updateCellResult(); } - name = displayNameForView(managedView); + name = RimLinkedViews::displayNameForView(managedView); } PdmObjectHandle* prevValue = oldValue.value >().rawPtr(); @@ -178,7 +178,9 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi linkedViews->configureOverrides(); } + updateViewChanged(); updateDisplayName(); + name.uiCapability()->updateConnectedEditors(); } } @@ -189,6 +191,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi void RimManagedViewConfig::initAfterRead() { configureOverrides(); + updateDisplayName(); } @@ -297,19 +300,41 @@ void RimManagedViewConfig::configureOverrides() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QString RimManagedViewConfig::displayNameForView(RimView* view) +void RimManagedViewConfig::updateViewChanged() { - return RimLinkedViews::displayNameForView(view); -/* - CVF_ASSERT(view); + RimLinkedViews* linkedViews = NULL; + firstAnchestorOrThisOfType(linkedViews); + CVF_ASSERT(linkedViews); - RimCase* rimCase = NULL; - firstAnchestorOrThisOfType(rimCase); + RimView* mainView = linkedViews->mainView(); + RimEclipseView* eclipseMasterView = dynamic_cast(mainView); + RimGeoMechView* geoMasterView = dynamic_cast(mainView); - QString displayName = rimCase->caseUserDescription() + " : " + view->name; + bool hideCapabilities = false; + if (eclipseMasterView && !managedEclipseView()) + { + hideCapabilities = true; + } + if (geoMasterView && !managedGeoView()) + { + hideCapabilities = true; + } - return displayName; -*/ + if (hideCapabilities) + { + this->syncCellResult.uiCapability()->setUiReadOnly(true); + this->syncCellResult = false; + this->syncRangeFilters.uiCapability()->setUiReadOnly(true); + this->syncRangeFilters = false; + this->syncPropertyFilters.uiCapability()->setUiReadOnly(true); + this->syncPropertyFilters = false; + } + else + { + this->syncCellResult.uiCapability()->setUiReadOnly(false); + this->syncRangeFilters.uiCapability()->setUiReadOnly(false); + this->syncPropertyFilters.uiCapability()->setUiReadOnly(false); + } } //-------------------------------------------------------------------------------------------------- @@ -319,7 +344,7 @@ void RimManagedViewConfig::updateDisplayName() { if (managedView) { - name = displayNameForView(managedView); + name = RimLinkedViews::displayNameForView(managedView); } else { diff --git a/ApplicationCode/ProjectDataModel/RimManagedViewConfig.h b/ApplicationCode/ProjectDataModel/RimManagedViewConfig.h index 58e5cb9bc3..f85a84a979 100644 --- a/ApplicationCode/ProjectDataModel/RimManagedViewConfig.h +++ b/ApplicationCode/ProjectDataModel/RimManagedViewConfig.h @@ -44,12 +44,13 @@ public: caf::PdmPtrField managedView; caf::PdmField syncCamera; - caf::PdmField syncCellResult; caf::PdmField syncTimeStep; + caf::PdmField syncCellResult; caf::PdmField syncRangeFilters; caf::PdmField syncPropertyFilters; void configureOverrides(); + void updateViewChanged(); protected: virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); @@ -61,10 +62,8 @@ protected: private: void configureOverridesUpdateDisplayModel(); + void updateDisplayName(); RimEclipseView* managedEclipseView(); RimGeoMechView* managedGeoView(); - - void updateDisplayName(); - QString displayNameForView(RimView* view); };