(#395) Update visibility of options when main view changes

This commit is contained in:
Magne Sjaastad 2015-09-02 08:13:17 +02:00
parent a44e548f93
commit 3afa94bb3b
5 changed files with 60 additions and 18 deletions

View File

@ -60,18 +60,20 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
CVF_ASSERT(views.size() > 1); CVF_ASSERT(views.size() > 1);
RimView* masterView = views[0]; RimView* masterView = views[0];
RimLinkedViews* linkedViews = new RimLinkedViews; RimLinkedViews* linkedViews = new RimLinkedViews;
linkedViews->mainView = masterView; linkedViews->mainView = masterView;
for (size_t i = 1; i < views.size(); i++) for (size_t i = 1; i < views.size(); i++)
{ {
RimView* rimView = views[i]; RimView* rimView = views[i];
RimManagedViewConfig* viewConfig = new RimManagedViewConfig; RimManagedViewConfig* viewConfig = new RimManagedViewConfig;
viewConfig->managedView = rimView; viewConfig->managedView = rimView;
linkedViews->viewConfigs.push_back(viewConfig); linkedViews->viewConfigs.push_back(viewConfig);
viewConfig->initAfterReadRecursively(); viewConfig->initAfterReadRecursively();
viewConfig->updateViewChanged();
} }
proj->linkedViews.push_back(linkedViews); proj->linkedViews.push_back(linkedViews);

View File

@ -331,3 +331,18 @@ RimManagedViewConfig* RimLinkedViews::viewConfigForView(RimView* view)
return NULL; 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();
}
}
}

View File

@ -64,6 +64,7 @@ public:
RimManagedViewConfig* viewConfigForView(RimView* view); RimManagedViewConfig* viewConfigForView(RimView* view);
protected: protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly); virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; } virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = ""); virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");

View File

@ -52,8 +52,8 @@ RimManagedViewConfig::RimManagedViewConfig(void)
managedView.uiCapability()->setUiChildrenHidden(true); managedView.uiCapability()->setUiChildrenHidden(true);
CAF_PDM_InitField(&syncCamera, "SyncCamera", true, "Sync Camera", "", "", ""); 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(&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(&syncRangeFilters, "SyncRangeFilters", true, "Sync Range Filters", "", "", "");
CAF_PDM_InitField(&syncPropertyFilters, "SyncPropertyFilters", true,"Sync Property Filters", "", "", ""); CAF_PDM_InitField(&syncPropertyFilters, "SyncPropertyFilters", true,"Sync Property Filters", "", "", "");
} }
@ -85,7 +85,7 @@ QList<caf::PdmOptionItemInfo> RimManagedViewConfig::calculateValueOptions(const
{ {
if (views[i] != masterView) if (views[i] != masterView)
{ {
optionList.push_back(caf::PdmOptionItemInfo(displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(views[i])))); optionList.push_back(caf::PdmOptionItemInfo(RimLinkedViews::displayNameForView(views[i]), QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(views[i]))));
} }
} }
@ -151,7 +151,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
linkedViews->updateCellResult(); linkedViews->updateCellResult();
} }
name = displayNameForView(managedView); name = RimLinkedViews::displayNameForView(managedView);
} }
PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().rawPtr(); PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().rawPtr();
@ -178,7 +178,9 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
linkedViews->configureOverrides(); linkedViews->configureOverrides();
} }
updateViewChanged();
updateDisplayName(); updateDisplayName();
name.uiCapability()->updateConnectedEditors(); name.uiCapability()->updateConnectedEditors();
} }
} }
@ -189,6 +191,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
void RimManagedViewConfig::initAfterRead() void RimManagedViewConfig::initAfterRead()
{ {
configureOverrides(); configureOverrides();
updateDisplayName(); updateDisplayName();
} }
@ -297,19 +300,41 @@ void RimManagedViewConfig::configureOverrides()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimManagedViewConfig::displayNameForView(RimView* view) void RimManagedViewConfig::updateViewChanged()
{ {
return RimLinkedViews::displayNameForView(view); RimLinkedViews* linkedViews = NULL;
/* firstAnchestorOrThisOfType(linkedViews);
CVF_ASSERT(view); CVF_ASSERT(linkedViews);
RimCase* rimCase = NULL; RimView* mainView = linkedViews->mainView();
firstAnchestorOrThisOfType(rimCase); RimEclipseView* eclipseMasterView = dynamic_cast<RimEclipseView*>(mainView);
RimGeoMechView* geoMasterView = dynamic_cast<RimGeoMechView*>(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) if (managedView)
{ {
name = displayNameForView(managedView); name = RimLinkedViews::displayNameForView(managedView);
} }
else else
{ {

View File

@ -44,12 +44,13 @@ public:
caf::PdmPtrField<RimView*> managedView; caf::PdmPtrField<RimView*> managedView;
caf::PdmField<bool> syncCamera; caf::PdmField<bool> syncCamera;
caf::PdmField<bool> syncCellResult;
caf::PdmField<bool> syncTimeStep; caf::PdmField<bool> syncTimeStep;
caf::PdmField<bool> syncCellResult;
caf::PdmField<bool> syncRangeFilters; caf::PdmField<bool> syncRangeFilters;
caf::PdmField<bool> syncPropertyFilters; caf::PdmField<bool> syncPropertyFilters;
void configureOverrides(); void configureOverrides();
void updateViewChanged();
protected: protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
@ -61,10 +62,8 @@ protected:
private: private:
void configureOverridesUpdateDisplayModel(); void configureOverridesUpdateDisplayModel();
void updateDisplayName();
RimEclipseView* managedEclipseView(); RimEclipseView* managedEclipseView();
RimGeoMechView* managedGeoView(); RimGeoMechView* managedGeoView();
void updateDisplayName();
QString displayNameForView(RimView* view);
}; };