mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactored funtions used to find viewLinker and viewLink
This commit is contained in:
parent
3b98d77324
commit
c8944d8801
@ -70,7 +70,7 @@ void RicSetMasterViewFeature::onActionTriggered(bool isChecked)
|
||||
|
||||
RimView* previousMasterView = viewLinker->mainView();
|
||||
|
||||
RimViewLink* previousViewLink = viewLinker->viewLinkFromView(activeView);
|
||||
RimViewLink* previousViewLink = RimViewLinker::viewLinkForView(activeView);
|
||||
if (previousViewLink)
|
||||
{
|
||||
size_t indexToErase = cvf::UNDEFINED_SIZE_T;
|
||||
|
@ -846,7 +846,7 @@ void RimEclipseView::scheduleGeometryRegen(RivCellSetEnum geometryType)
|
||||
{
|
||||
m_reservoirGridPartManager->scheduleGeometryRegen(geometryType);
|
||||
|
||||
RimViewLinker* viewLinker = viewLinkerWithMyDepViews();
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerIfMainView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
viewLinker->scheduleGeometryRegenForDepViews(geometryType);
|
||||
|
@ -512,7 +512,7 @@ void RimGeoMechView::scheduleGeometryRegen(RivCellSetEnum geometryType)
|
||||
{
|
||||
m_vizLogic->scheduleGeometryRegen(geometryType);
|
||||
|
||||
RimViewLinker* viewLinker = viewLinkerWithMyDepViews();
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerIfMainView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
viewLinker->scheduleGeometryRegenForDepViews(geometryType);
|
||||
|
@ -987,19 +987,7 @@ void RimProject::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QS
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker* RimProject::findViewLinkerFromView(RimView* view)
|
||||
{
|
||||
if (viewLinkerCollection()->viewLinker())
|
||||
{
|
||||
RimViewLinker* group = viewLinkerCollection()->viewLinker();
|
||||
if (view == group->mainView()) return group;
|
||||
|
||||
for (size_t j = 0; j < group->viewLinks.size(); j++)
|
||||
{
|
||||
RimViewLink* viewConfig = group->viewLinks[j];
|
||||
if (viewConfig->managedView() == view) return group;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
return RimViewLinker::viewLinkerForMainOrControlledView(view);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -191,7 +191,7 @@ void RimView::updateViewerWidget()
|
||||
void RimView::scheduleCreateDisplayModelAndRedraw()
|
||||
{
|
||||
RiaApplication::instance()->scheduleDisplayModelUpdateAndRedraw(this);
|
||||
RimViewLinker* viewLinker = viewLinkerWithMyDepViews();
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerIfMainView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
viewLinker->scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||
@ -448,16 +448,10 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
|
||||
updateScaleTransform();
|
||||
createDisplayModelAndRedraw();
|
||||
|
||||
RimProject* proj = NULL;
|
||||
this->firstAnchestorOrThisOfType(proj);
|
||||
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerForMainOrControlledView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
|
||||
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncCamera()))
|
||||
{
|
||||
viewLinker->updateScaleZ(this, scaleZ);
|
||||
}
|
||||
viewLinker->updateScaleZ(this, scaleZ);
|
||||
}
|
||||
|
||||
m_viewer->navigationPolicyUpdate();
|
||||
@ -486,16 +480,10 @@ void RimView::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
|
||||
{
|
||||
m_viewer->update();
|
||||
|
||||
RimProject* proj = NULL;
|
||||
this->firstAnchestorOrThisOfType(proj);
|
||||
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerForMainOrControlledView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
|
||||
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncTimeStep()))
|
||||
{
|
||||
viewLinker->updateTimeStep(this, m_currentTimeStep);
|
||||
}
|
||||
viewLinker->updateTimeStep(this, m_currentTimeStep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -600,7 +588,7 @@ void RimView::notifyCameraHasChanged()
|
||||
RimViewLinker* viewLinker = proj->findViewLinkerFromView(this);
|
||||
if (viewLinker)
|
||||
{
|
||||
RimViewLink* viewLink = viewLinker->viewLinkFromView(this);
|
||||
RimViewLink* viewLink = viewLinker->viewLinkForView(this);
|
||||
|
||||
if (this == viewLinker->mainView() || (viewLink && viewLink->isActive() && viewLink->syncCamera()))
|
||||
{
|
||||
@ -726,42 +714,13 @@ bool RimView::isBoundingBoxesOverlappingOrClose(const cvf::BoundingBox& sourceBB
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker* RimView::viewLinkerWithMyDepViews()
|
||||
{
|
||||
RimViewLinker* viewLinker = NULL;
|
||||
std::vector<caf::PdmObjectHandle*> reffingObjs;
|
||||
|
||||
this->objectsWithReferringPtrFields(reffingObjs);
|
||||
|
||||
for (size_t i = 0; i < reffingObjs.size(); ++i)
|
||||
{
|
||||
viewLinker = dynamic_cast<RimViewLinker*>(reffingObjs[i]);
|
||||
if (viewLinker ) break;
|
||||
}
|
||||
|
||||
return viewLinker;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLink* RimView::controllingViewLink() const
|
||||
{
|
||||
RimViewLink* viewLink = NULL;
|
||||
std::vector<caf::PdmObjectHandle*> reffingObjs;
|
||||
|
||||
this->objectsWithReferringPtrFields(reffingObjs);
|
||||
for (size_t i = 0; i < reffingObjs.size(); ++i)
|
||||
{
|
||||
viewLink = dynamic_cast<RimViewLink*>(reffingObjs[i]);
|
||||
if (viewLink) break;
|
||||
}
|
||||
|
||||
return viewLink;
|
||||
return RimViewLinker::viewLinkForView(this);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -138,7 +138,6 @@ public:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &name; }
|
||||
protected:
|
||||
|
||||
RimViewLinker* viewLinkerWithMyDepViews();
|
||||
void setDefaultView();
|
||||
|
||||
void addWellPathsToModel(cvf::ModelBasicList* wellPathModelBasicList,
|
||||
|
@ -80,12 +80,19 @@ RimViewLinker::~RimViewLinker(void)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateTimeStep(RimView* sourceView, int timeStep)
|
||||
{
|
||||
CVF_ASSERT(sourceView);
|
||||
|
||||
if (!isActive()) return;
|
||||
|
||||
RimViewLink* sourceLinkedView = viewLinkFromView(sourceView);
|
||||
if (sourceLinkedView && !sourceLinkedView->syncTimeStep())
|
||||
if (mainView() != sourceView)
|
||||
{
|
||||
return;
|
||||
RimViewLink* sourceViewLink = viewLinkForView(sourceView);
|
||||
CVF_ASSERT(sourceViewLink);
|
||||
|
||||
if (!sourceViewLink->isActive() || !sourceViewLink->syncTimeStep())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_mainView && m_mainView->viewer() && sourceView != m_mainView)
|
||||
@ -182,37 +189,6 @@ void RimViewLinker::updateRangeFilters()
|
||||
this->scheduleGeometryRegenForDepViews(RANGE_FILTERED);
|
||||
this->scheduleGeometryRegenForDepViews(RANGE_FILTERED_INACTIVE);
|
||||
this->scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||
|
||||
#if 0
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
if (managedViewConfig->managedView())
|
||||
{
|
||||
if (managedViewConfig->syncRangeFilters())
|
||||
{
|
||||
RimView* rimView = managedViewConfig->managedView();
|
||||
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (eclipeView)
|
||||
{
|
||||
eclipeView->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
eclipeView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
|
||||
eclipeView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
|
||||
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
|
||||
if (geoView)
|
||||
{
|
||||
geoView->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
geoView->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
|
||||
geoView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -223,35 +199,6 @@ void RimViewLinker::updatePropertyFilters()
|
||||
if (!isActive()) return;
|
||||
this->scheduleGeometryRegenForDepViews(PROPERTY_FILTERED);
|
||||
this->scheduleCreateDisplayModelAndRedrawForDependentViews();
|
||||
|
||||
#if 0
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
RimViewLink* managedViewConfig = viewLinks[i];
|
||||
if (managedViewConfig->managedView())
|
||||
{
|
||||
if (managedViewConfig->syncPropertyFilters())
|
||||
{
|
||||
RimView* rimView = managedViewConfig->managedView();
|
||||
RimEclipseView* eclipeView = dynamic_cast<RimEclipseView*>(rimView);
|
||||
if (eclipeView)
|
||||
{
|
||||
eclipeView->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
|
||||
eclipeView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
|
||||
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
|
||||
if (geoView)
|
||||
{
|
||||
geoView->scheduleGeometryRegen(PROPERTY_FILTERED);
|
||||
|
||||
geoView->scheduleCreateDisplayModelAndRedraw();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -302,7 +249,7 @@ void RimViewLinker::applyAllOperations()
|
||||
configureOverrides();
|
||||
|
||||
updateCellResult();
|
||||
updateTimeStep(NULL, m_mainView->currentTimeStep());
|
||||
updateTimeStep(m_mainView, m_mainView->currentTimeStep());
|
||||
updateRangeFilters();
|
||||
updatePropertyFilters();
|
||||
updateScaleZ(m_mainView, m_mainView->scaleZ());
|
||||
@ -328,19 +275,6 @@ QString RimViewLinker::displayNameForView(RimView* view)
|
||||
return displayName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLink* RimViewLinker::viewLinkFromView(RimView* view)
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
{
|
||||
if (viewLinks[i]->managedView() == view) return viewLinks[i];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -388,10 +322,23 @@ void RimViewLinker::initAfterRead()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateScaleZ(RimView* source, double scaleZ)
|
||||
void RimViewLinker::updateScaleZ(RimView* sourceView, double scaleZ)
|
||||
{
|
||||
if (!isActive()) return;
|
||||
|
||||
if (mainView() != sourceView)
|
||||
{
|
||||
RimViewLink* sourceViewLink = viewLinkForView(sourceView);
|
||||
CVF_ASSERT(sourceViewLink);
|
||||
|
||||
if (!sourceViewLink->isActive() || !sourceViewLink->syncCamera())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<RimView*> views;
|
||||
allViewsForCameraSync(source, views);
|
||||
allViewsForCameraSync(sourceView, views);
|
||||
|
||||
// Make sure scale factors are identical
|
||||
for (size_t i = 0; i < views.size(); i++)
|
||||
@ -540,3 +487,58 @@ void RimViewLinker::findNameAndIconFromView(QString* name, QIcon* icon, RimView*
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLink* RimViewLinker::viewLinkForView(const RimView* view)
|
||||
{
|
||||
RimViewLink* viewLink = NULL;
|
||||
std::vector<caf::PdmObjectHandle*> reffingObjs;
|
||||
|
||||
view->objectsWithReferringPtrFields(reffingObjs);
|
||||
for (size_t i = 0; i < reffingObjs.size(); ++i)
|
||||
{
|
||||
viewLink = dynamic_cast<RimViewLink*>(reffingObjs[i]);
|
||||
if (viewLink) break;
|
||||
}
|
||||
|
||||
return viewLink;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Return view linker if view is the main view (controlling) view
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker* RimViewLinker::viewLinkerIfMainView(RimView* view)
|
||||
{
|
||||
RimViewLinker* viewLinker = NULL;
|
||||
std::vector<caf::PdmObjectHandle*> reffingObjs;
|
||||
|
||||
view->objectsWithReferringPtrFields(reffingObjs);
|
||||
|
||||
for (size_t i = 0; i < reffingObjs.size(); ++i)
|
||||
{
|
||||
viewLinker = dynamic_cast<RimViewLinker*>(reffingObjs[i]);
|
||||
if (viewLinker) break;
|
||||
}
|
||||
|
||||
return viewLinker;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimViewLinker* RimViewLinker::viewLinkerForMainOrControlledView(RimView* view)
|
||||
{
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerIfMainView(view);
|
||||
if (!viewLinker)
|
||||
{
|
||||
RimViewLink* viewLink = RimViewLinker::viewLinkForView(view);
|
||||
if (viewLink)
|
||||
{
|
||||
viewLinker = viewLink->ownerViewLinker();
|
||||
}
|
||||
}
|
||||
|
||||
return viewLinker;
|
||||
}
|
||||
|
||||
|
@ -74,7 +74,9 @@ public:
|
||||
|
||||
public:
|
||||
static QString displayNameForView(RimView* view);
|
||||
RimViewLink* viewLinkFromView(RimView* view);
|
||||
static RimViewLink* viewLinkForView(const RimView* view);
|
||||
static RimViewLinker* viewLinkerIfMainView(RimView* view);
|
||||
static RimViewLinker* viewLinkerForMainOrControlledView(RimView* view);
|
||||
|
||||
protected:
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_name; }
|
||||
|
@ -260,16 +260,10 @@ void RiuViewer::slotSetCurrentFrame(int frameIndex)
|
||||
|
||||
if (m_reservoirView)
|
||||
{
|
||||
RimProject* proj = NULL;
|
||||
m_reservoirView->firstAnchestorOrThisOfType(proj);
|
||||
RimViewLinker* viewLinker = proj->findViewLinkerFromView(m_reservoirView);
|
||||
RimViewLinker* viewLinker = RimViewLinker::viewLinkerForMainOrControlledView(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);
|
||||
}
|
||||
viewLinker->updateTimeStep(m_reservoirView, frameIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user