(#449) Minor fixes related to isActive

This commit is contained in:
Magne Sjaastad 2015-09-15 10:45:39 +02:00
parent 9aeb949b06
commit 08e266c2f3
6 changed files with 94 additions and 69 deletions

View File

@ -94,7 +94,7 @@ void RicLinkVisibleViewsFeature::onActionTriggered(bool isChecked)
viewLink->initAfterReadRecursively();
viewLink->updateOptionSensitivity();
viewLink->updateUiIcon();
viewLink->updateUiIconFromActiveState();
}
proj->viewLinkerCollection()->viewLinkers().push_back(linkedViews);

View File

@ -447,8 +447,8 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
if (viewLinker)
{
RimViewLink* linkedView = viewLinker->viewLinkFromView(this);
if (!linkedView || linkedView->syncCamera())
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncCamera()))
{
viewLinker->updateScaleZ(this, scaleZ);
}
@ -484,11 +484,15 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
this->firstAnchestorOrThisOfType(proj);
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
if (viewLinker)
{
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncTimeStep()))
{
viewLinker->updateTimeStep(this, m_currentTimeStep);
}
}
}
}
else if (changedField == &backgroundColor)
{
if (viewer() != NULL)
@ -590,10 +594,9 @@ void RimView::notifyCameraHasChanged()
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
if (viewLinker)
{
RimViewLink* linkedView = viewLinker->viewLinkFromView(this);
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
// There is no view config for a master view, but all views for sync must be updated
if (!linkedView || linkedView->syncCamera())
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncCamera()))
{
viewLinker->allViewsForCameraSync(this, viewsToUpdate);
}

View File

@ -30,6 +30,7 @@
#include "RimProject.h"
#include "RimView.h"
#include "RimViewLinker.h"
#include "RimViewLinkerCollection.h"
#include "RiuViewer.h"
@ -42,7 +43,7 @@ CAF_PDM_SOURCE_INIT(RimViewLink, "RimViewLink");
//--------------------------------------------------------------------------------------------------
RimViewLink::RimViewLink(void)
{
CAF_PDM_InitObject("View Config", "", "", "");
CAF_PDM_InitObject("View Link", "", "", "");
CAF_PDM_InitField(&isActive, "Active", true, "Active", "", "", "");
isActive.uiCapability()->setUiHidden(true);
@ -138,46 +139,35 @@ void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
{
if (changedField == &isActive)
{
updateUiIcon();
updateUiIconFromActiveState();
if (syncCamera()) doSyncCamera();
if (syncTimeStep()) doSyncTimeStep();
if (syncCellResult()) doSyncCellResult();
configureOverrides();
}
else if (changedField == &syncCamera && syncCamera())
{
RimViewLinker* linkedViews = NULL;
this->firstAnchestorOrThisOfType(linkedViews);
linkedViews->updateScaleZ(linkedViews->mainView(), linkedViews->mainView()->scaleZ());
if (m_managedView && m_managedView->viewer())
{
m_managedView->viewer()->navigationPolicyUpdate();
}
doSyncCamera();
}
else if (changedField == &syncTimeStep && syncTimeStep())
{
if (m_managedView)
{
RimViewLinker* linkedViews = NULL;
this->firstAnchestorOrThisOfType(linkedViews);
linkedViews->updateTimeStep(m_managedView, m_managedView->currentTimeStep());
}
doSyncTimeStep();
}
else if (changedField == &syncCellResult && syncCellResult())
{
RimViewLinker* linkedViews = NULL;
this->firstAnchestorOrThisOfType(linkedViews);
linkedViews->updateCellResult();
doSyncCellResult();
}
else if (changedField == &syncRangeFilters)
{
configureOverridesUpdateDisplayModel();
configureOverrides();
}
else if (changedField == &syncPropertyFilters)
{
configureOverridesUpdateDisplayModel();
configureOverrides();
}
else if (changedField == &m_managedView)
{
configureOverridesUpdateDisplayModel();
configureOverrides();
if (m_managedView)
{
@ -222,14 +212,14 @@ void RimViewLink::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
updateOptionSensitivity();
updateDisplayNameAndIcon();
updateUiIcon();
updateUiIconFromActiveState();
name.uiCapability()->updateConnectedEditors();
}
else if (&syncVisibleCells == changedField)
{
updateOptionSensitivity();
configureOverridesUpdateDisplayModel();
configureOverrides();
}
}
@ -240,7 +230,7 @@ void RimViewLink::initAfterRead()
{
configureOverrides();
updateDisplayNameAndIcon();
updateUiIcon();
updateUiIconFromActiveState();
updateOptionSensitivity();
}
@ -264,40 +254,15 @@ RimGeoMechView* RimViewLink::managedGeoView()
return dynamic_cast<RimGeoMechView*>(rimView);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::configureOverridesUpdateDisplayModel()
{
configureOverrides();
// This update scheduling actually schedules update in the master view (not the managed view). Is that intentional ? JJS
/*
if (m_managedView)
{
m_managedView->rangeFilterCollection()->updateDisplayModeNotifyManagedViews();
}
RimEclipseView* eclipseView = managedEclipseView();
if (eclipseView)
{
eclipseView->propertyFilterCollection()->updateDisplayModelNotifyManagedViews();
}
RimGeoMechView* geoView = managedGeoView();
if (geoView)
{
geoView->propertyFilterCollection()->updateDisplayModelNotifyManagedViews();
}
*/
// Todo : Notify the managed view of the possible change of visualCellsOverride
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::configureOverrides()
{
RimViewLinkerCollection* viewLinkerColl = NULL;
this->firstAnchestorOrThisOfType(viewLinkerColl);
if (!viewLinkerColl->isActive()) return;
RimViewLinker* viewLinker = NULL;
this->firstAnchestorOrThisOfType(viewLinker);
@ -472,7 +437,7 @@ void RimViewLink::removeOverrides()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::updateUiIcon()
void RimViewLink::updateUiIconFromActiveState()
{
RimViewLinker::applyIconEnabledState(this, m_originalIcon, !isActive());
}
@ -485,3 +450,53 @@ void RimViewLink::updateDisplayNameAndIcon()
RimViewLinker::findNameAndIconFromView(&name.v(), &m_originalIcon, managedView());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::doSyncCamera()
{
RimViewLinkerCollection* viewLinkerColl = NULL;
this->firstAnchestorOrThisOfType(viewLinkerColl);
if (!viewLinkerColl->isActive()) return;
RimViewLinker* viewLinker = NULL;
this->firstAnchestorOrThisOfType(viewLinker);
viewLinker->updateScaleZ(viewLinker->mainView(), viewLinker->mainView()->scaleZ());
if (m_managedView && m_managedView->viewer())
{
m_managedView->viewer()->navigationPolicyUpdate();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::doSyncTimeStep()
{
RimViewLinkerCollection* viewLinkerColl = NULL;
this->firstAnchestorOrThisOfType(viewLinkerColl);
if (!viewLinkerColl->isActive()) return;
if (m_managedView)
{
RimViewLinker* linkedViews = NULL;
this->firstAnchestorOrThisOfType(linkedViews);
linkedViews->updateTimeStep(m_managedView, m_managedView->currentTimeStep());
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimViewLink::doSyncCellResult()
{
RimViewLinkerCollection* viewLinkerColl = NULL;
this->firstAnchestorOrThisOfType(viewLinkerColl);
if (!viewLinkerColl->isActive()) return;
RimViewLinker* linkedViews = NULL;
this->firstAnchestorOrThisOfType(linkedViews);
linkedViews->updateCellResult();
}

View File

@ -59,10 +59,9 @@ public:
void updateOptionSensitivity();
void removeOverrides();
void updateUiIcon();
void updateUiIconFromActiveState();
void updateDisplayNameAndIcon();
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);
@ -72,9 +71,10 @@ protected:
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering);
virtual caf::PdmFieldHandle* objectToggleField() { return &isActive; }
private:
void configureOverridesUpdateDisplayModel();
void doSyncCamera();
void doSyncTimeStep();
void doSyncCellResult();
RimEclipseView* managedEclipseView();
RimGeoMechView* managedGeoView();

View File

@ -305,6 +305,8 @@ void RimViewLinker::applyAllOperations()
updateRangeFilters();
updatePropertyFilters();
updateScaleZ(m_mainView, m_mainView->scaleZ());
m_mainView->notifyCameraHasChanged();
}
//--------------------------------------------------------------------------------------------------

View File

@ -25,6 +25,7 @@
#include "RimProject.h"
#include "RimView.h"
#include "RimViewLink.h"
#include "RimViewLinker.h"
#include "RiuCadNavigation.h"
@ -263,10 +264,14 @@ void RiuViewer::slotSetCurrentFrame(int frameIndex)
m_reservoirView->firstAnchestorOrThisOfType(proj);
RimViewLinker* viewLinker = proj->findViewLinkerFromView(m_reservoirView);
if (viewLinker)
{
RimViewLink* viewLink = viewLinker->viewLinkFromView(m_reservoirView);
if (m_reservoirView == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncTimeStep()))
{
viewLinker->updateTimeStep(m_reservoirView, frameIndex);
}
}
}
}
//--------------------------------------------------------------------------------------------------