(#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);
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);

View File

@ -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();
}
}
}

View File

@ -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<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly);
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "");

View File

@ -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<caf::PdmOptionItemInfo> RimManagedViewConfig::calculateValueOptions(const
{
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();
}
name = displayNameForView(managedView);
name = RimLinkedViews::displayNameForView(managedView);
}
PdmObjectHandle* prevValue = oldValue.value<caf::PdmPointer<PdmObjectHandle> >().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<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)
{
name = displayNameForView(managedView);
name = RimLinkedViews::displayNameForView(managedView);
}
else
{

View File

@ -44,12 +44,13 @@ public:
caf::PdmPtrField<RimView*> managedView;
caf::PdmField<bool> syncCamera;
caf::PdmField<bool> syncCellResult;
caf::PdmField<bool> syncTimeStep;
caf::PdmField<bool> syncCellResult;
caf::PdmField<bool> syncRangeFilters;
caf::PdmField<bool> 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);
};