mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
(#540) Override range filter update system improved
Rename of forgotten viewLink ->viewController Remember to update group of linked views before adding a new dependent view.
This commit is contained in:
parent
4fc0553451
commit
8b894d8515
@ -71,9 +71,10 @@ void RicSetMasterViewFeature::onActionTriggered(bool isChecked)
|
||||
RimView* previousMasterView = viewLinker->masterView();
|
||||
|
||||
viewLinker->setMasterView(activeView);
|
||||
viewLinker->updateDependentViews();
|
||||
|
||||
viewLinker->addDependentView(previousMasterView);
|
||||
|
||||
viewLinker->updateDependentViews();
|
||||
|
||||
proj->viewLinkerCollection.uiCapability()->updateConnectedEditors();
|
||||
proj->updateConnectedEditors();
|
||||
|
@ -105,7 +105,6 @@ RimView::RimView(void)
|
||||
windowGeometry.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_rangeFilterCollection, "RangeFilters", "Range Filters", "", "", "");
|
||||
m_rangeFilterCollection = new RimCellRangeFilterCollection();
|
||||
m_rangeFilterCollection.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_overrideRangeFilterCollection, "RangeFiltersControlled", "Range Filters (controlled)", "", "", "");
|
||||
@ -566,6 +565,7 @@ RimCellRangeFilterCollection* RimView::rangeFilterCollection()
|
||||
{
|
||||
if (this->viewController() && this->viewController()->isRangeFiltersControlled())
|
||||
{
|
||||
CVF_ASSERT(m_overrideRangeFilterCollection());
|
||||
return m_overrideRangeFilterCollection;
|
||||
}
|
||||
else
|
||||
@ -581,6 +581,7 @@ const RimCellRangeFilterCollection* RimView::rangeFilterCollection() const
|
||||
{
|
||||
if (this->viewController() && this->viewController()->isRangeFiltersControlled())
|
||||
{
|
||||
CVF_ASSERT(m_overrideRangeFilterCollection());
|
||||
return m_overrideRangeFilterCollection;
|
||||
}
|
||||
else
|
||||
@ -594,6 +595,8 @@ const RimCellRangeFilterCollection* RimView::rangeFilterCollection() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimView::setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc)
|
||||
{
|
||||
if (m_overrideRangeFilterCollection()) delete m_overrideRangeFilterCollection();
|
||||
|
||||
m_overrideRangeFilterCollection = rfc;
|
||||
this->scheduleGeometryRegen(RANGE_FILTERED);
|
||||
this->scheduleGeometryRegen(RANGE_FILTERED_INACTIVE);
|
||||
@ -697,7 +700,7 @@ bool RimView::isMasterView() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimCellRangeFilterCollection* RimView::rangeFilterCollectionCopy()
|
||||
RimCellRangeFilterCollection* RimView::overrideRangeFilterCollection()
|
||||
{
|
||||
return m_overrideRangeFilterCollection();
|
||||
}
|
||||
|
@ -79,7 +79,8 @@ public:
|
||||
RimCellRangeFilterCollection* rangeFilterCollection();
|
||||
const RimCellRangeFilterCollection* rangeFilterCollection() const;
|
||||
|
||||
RimCellRangeFilterCollection* rangeFilterCollectionCopy();
|
||||
RimCellRangeFilterCollection* overrideRangeFilterCollection();
|
||||
void setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc);
|
||||
|
||||
caf::PdmField< std::vector<int> > windowGeometry;
|
||||
|
||||
@ -182,7 +183,6 @@ protected:
|
||||
|
||||
private:
|
||||
RimViewLinker* viewLinkerIfMasterView() const;
|
||||
void setOverrideRangeFilterCollection(RimCellRangeFilterCollection* rfc);
|
||||
|
||||
private:
|
||||
bool m_previousGridModeMeshLinesWasFaults;
|
||||
|
@ -147,11 +147,11 @@ void RimViewController::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
||||
{
|
||||
if (changedField == &m_isActive)
|
||||
{
|
||||
updateCameraLink();
|
||||
updateTimeStepLink();
|
||||
updateResultColorsControl();
|
||||
updateOverrides();
|
||||
updateResultColorsControl();
|
||||
updateCameraLink();
|
||||
updateDisplayNameAndIcon();
|
||||
updateTimeStepLink();
|
||||
}
|
||||
else if (changedField == &m_syncCamera)
|
||||
{
|
||||
@ -175,7 +175,7 @@ void RimViewController::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
||||
}
|
||||
else if (changedField == &m_syncRangeFilters)
|
||||
{
|
||||
updateRangeFiltersControl();
|
||||
updateOverrides();
|
||||
}
|
||||
else if (changedField == &m_syncPropertyFilters)
|
||||
{
|
||||
@ -203,9 +203,9 @@ void RimViewController::fieldChangedByUi(const caf::PdmFieldHandle* changedField
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::initAfterRead()
|
||||
{
|
||||
updateOptionSensitivity();
|
||||
updateOverrides();
|
||||
updateDisplayNameAndIcon();
|
||||
updateOptionSensitivity();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -287,6 +287,8 @@ void RimViewController::updateOverrides()
|
||||
}
|
||||
}
|
||||
|
||||
this->updateRangeFilterOverrides(NULL);
|
||||
|
||||
if (manGeoView)
|
||||
{
|
||||
manGeoView->updateIconStateForFilterCollections();
|
||||
@ -318,6 +320,8 @@ void RimViewController::removeOverrides(RimView* view)
|
||||
|
||||
if (manEclView) manEclView->setOverridePropertyFilterCollection(NULL);
|
||||
if (manGeoView) manGeoView->setOverridePropertyFilterCollection(NULL);
|
||||
|
||||
view->setOverrideRangeFilterCollection(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ -386,12 +390,13 @@ RimView* RimViewController::managedView()
|
||||
void RimViewController::setManagedView(RimView* view)
|
||||
{
|
||||
m_managedView = view;
|
||||
updateCameraLink();
|
||||
updateTimeStepLink();
|
||||
updateResultColorsControl();
|
||||
updateOverrides();
|
||||
|
||||
updateOptionSensitivity();
|
||||
updateOverrides();
|
||||
updateResultColorsControl();
|
||||
updateCameraLink();
|
||||
updateDisplayNameAndIcon();
|
||||
updateTimeStepLink();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -465,17 +470,6 @@ void RimViewController::updateResultColorsControl()
|
||||
viewLinker->updateCellResult();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::updateRangeFiltersControl()
|
||||
{
|
||||
if (!this->isRangeFiltersControlled()) return;
|
||||
|
||||
RimViewLinker* viewLinker = ownerViewLinker();
|
||||
viewLinker->updateRangeFilters(NULL);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -758,57 +752,24 @@ bool RimViewController::isPropertyFilterOveridden()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::updateRangeFilterCollectionOverride(RimView* sourceView, RimCellRangeFilter* changedRangeFilter)
|
||||
void RimViewController::updateRangeFilterOverrides(RimCellRangeFilter* changedRangeFilter)
|
||||
{
|
||||
RimCellRangeFilterCollection* filterCollectionCopy = managedView()->rangeFilterCollectionCopy();
|
||||
|
||||
if (!sourceView)
|
||||
if (!isRangeFiltersControlled())
|
||||
{
|
||||
filterCollectionCopy->rangeFilters.deleteAllChildObjects();
|
||||
|
||||
managedView()->rangeFilterCollection()->uiCapability()->updateConnectedEditors();
|
||||
managedView()->setOverrideRangeFilterCollection(NULL);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
RimCellRangeFilterCollection* sourceFilterCollection = sourceView->rangeFilterCollection();
|
||||
RimCellRangeFilterCollection* sourceFilterCollection = masterView()->rangeFilterCollection();
|
||||
QString xmlRangeFilterCollCopy = sourceFilterCollection->writeObjectToXmlString();
|
||||
|
||||
PdmObjectHandle* objectCopy = PdmXmlObjectHandle::readUnknownObjectFromXmlString(xmlRangeFilterCollCopy, caf::PdmDefaultObjectFactory::instance());
|
||||
|
||||
RimCellRangeFilterCollection* overrideRangeFilter = dynamic_cast<RimCellRangeFilterCollection*>(objectCopy);
|
||||
managedView()->setOverrideRangeFilterCollection(overrideRangeFilter);
|
||||
|
||||
// TODO: Convert ijk values in source to correct ijk values in our range filter collection
|
||||
|
||||
filterCollectionCopy->rangeFilters.deleteAllChildObjects();
|
||||
|
||||
// Filter copy if ijk-ranges are identical
|
||||
for (size_t i = 0; i < sourceFilterCollection->rangeFilters.size(); i++)
|
||||
{
|
||||
RimCellRangeFilter* sourceFilter = sourceFilterCollection->rangeFilters[i];
|
||||
|
||||
RimCellRangeFilter* filter = new RimCellRangeFilter;
|
||||
filter->startIndexI = sourceFilter->startIndexI;
|
||||
filter->startIndexJ = sourceFilter->startIndexJ;
|
||||
filter->startIndexK = sourceFilter->startIndexK;
|
||||
|
||||
filter->cellCountI = sourceFilter->cellCountI;
|
||||
filter->cellCountJ = sourceFilter->cellCountJ;
|
||||
filter->cellCountK = sourceFilter->cellCountK;
|
||||
|
||||
filterCollectionCopy->rangeFilters.push_back(filter);
|
||||
}
|
||||
|
||||
managedView()->rangeFilterCollection()->uiCapability()->updateConnectedEditors();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewController::updateRangeFilterOverrides(RimCellRangeFilter* changedRangeFilter)
|
||||
{
|
||||
if (isRangeFiltersControlled())
|
||||
{
|
||||
updateRangeFilterCollectionOverride(masterView(), changedRangeFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
updateRangeFilterCollectionOverride(NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -90,14 +90,10 @@ private:
|
||||
void updateCameraLink();
|
||||
void updateTimeStepLink();
|
||||
void updateResultColorsControl();
|
||||
void updateRangeFiltersControl();
|
||||
|
||||
bool isMasterAndDepViewDifferentType();
|
||||
bool isRangeFilterControlPossible();
|
||||
|
||||
void updateRangeFilterCollectionOverride(RimView* sourceView, RimCellRangeFilter* changedRangeFilter);
|
||||
|
||||
|
||||
RimEclipseView* managedEclipseView();
|
||||
RimGeoMechView* managedGeoView();
|
||||
static void removeOverrides(RimView* view);
|
||||
|
@ -64,9 +64,9 @@ RimViewLinker::RimViewLinker(void)
|
||||
m_masterView.uiCapability()->setUiChildrenHidden(true);
|
||||
m_masterView.uiCapability()->setUiHidden(true);
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&viewLinks, "ManagedViews", "Managed Views", "", "", "");
|
||||
viewLinks.uiCapability()->setUiHidden(true);
|
||||
viewLinks.uiCapability()->setUiChildrenHidden(true);
|
||||
CAF_PDM_InitFieldNoDefault(&m_viewControllers, "ManagedViews", "Managed Views", "", "", "");
|
||||
m_viewControllers.uiCapability()->setUiHidden(true);
|
||||
m_viewControllers.uiCapability()->setUiChildrenHidden(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -76,7 +76,7 @@ RimViewLinker::~RimViewLinker(void)
|
||||
{
|
||||
removeOverrides();
|
||||
|
||||
viewLinks.deleteAllChildObjects();
|
||||
m_viewControllers.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -105,9 +105,9 @@ void RimViewLinker::updateTimeStep(RimView* sourceView, int timeStep)
|
||||
m_masterView->viewer()->animationControl()->setCurrentFrameOnly(timeStep);
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
RimViewController* viewLink = viewLinks[i];
|
||||
RimViewController* viewLink = m_viewControllers[i];
|
||||
|
||||
if (!viewLink->isTimeStepLinked()) continue;
|
||||
|
||||
@ -132,9 +132,9 @@ void RimViewLinker::updateCellResult()
|
||||
{
|
||||
RimEclipseResultDefinition* eclipseCellResultDefinition = masterEclipseView->cellResult();
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
RimViewController* viewLink = viewLinks[i];
|
||||
RimViewController* viewLink = m_viewControllers[i];
|
||||
|
||||
if (viewLink->managedView())
|
||||
{
|
||||
@ -161,9 +161,9 @@ void RimViewLinker::updateCellResult()
|
||||
{
|
||||
RimGeoMechResultDefinition* geoMechResultDefinition = masterGeoView->cellResult();
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
RimViewController* viewLink = viewLinks[i];
|
||||
RimViewController* viewLink = m_viewControllers[i];
|
||||
|
||||
if (viewLink->managedView())
|
||||
{
|
||||
@ -189,9 +189,9 @@ void RimViewLinker::updateCellResult()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateRangeFilters(RimCellRangeFilter* changedRangeFilter)
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
RimViewController* viewLink = viewLinks[i];
|
||||
RimViewController* viewLink = m_viewControllers[i];
|
||||
viewLink->updateRangeFilterOverrides(changedRangeFilter);
|
||||
}
|
||||
}
|
||||
@ -201,9 +201,9 @@ void RimViewLinker::updateRangeFilters(RimCellRangeFilter* changedRangeFilter)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::updateOverrides()
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
RimViewController* viewLink = viewLinks[i];
|
||||
RimViewController* viewLink = m_viewControllers[i];
|
||||
if (viewLink->isActive())
|
||||
{
|
||||
viewLink->updateOverrides();
|
||||
@ -220,11 +220,11 @@ void RimViewLinker::updateOverrides()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::removeOverrides()
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
if (viewLinks[i]->managedView())
|
||||
if (m_viewControllers[i]->managedView())
|
||||
{
|
||||
viewLinks[i]->removeOverrides();
|
||||
m_viewControllers[i]->removeOverrides();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -241,13 +241,13 @@ void RimViewLinker::allViewsForCameraSync(RimView* source, std::vector<RimView*>
|
||||
views.push_back(m_masterView());
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
if (viewLinks[i]->managedView() && source != viewLinks[i]->managedView())
|
||||
if (m_viewControllers[i]->managedView() && source != m_viewControllers[i]->managedView())
|
||||
{
|
||||
if (viewLinks[i]->isCameraLinked())
|
||||
if (m_viewControllers[i]->isCameraLinked())
|
||||
{
|
||||
views.push_back(viewLinks[i]->managedView());
|
||||
views.push_back(m_viewControllers[i]->managedView());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -259,13 +259,10 @@ void RimViewLinker::allViewsForCameraSync(RimView* source, std::vector<RimView*>
|
||||
void RimViewLinker::updateDependentViews()
|
||||
{
|
||||
updateOverrides();
|
||||
updateRangeFilters(NULL);
|
||||
|
||||
updateCellResult();
|
||||
updateTimeStep(m_masterView, m_masterView->currentTimeStep());
|
||||
|
||||
updateScaleZ(m_masterView, m_masterView->scaleZ());
|
||||
updateCamera(m_masterView);
|
||||
updateTimeStep(m_masterView, m_masterView->currentTimeStep());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -297,7 +294,7 @@ void RimViewLinker::setMasterView(RimView* view)
|
||||
if (previousViewController)
|
||||
{
|
||||
delete previousViewController;
|
||||
this->viewLinks.removeChildObject(NULL);
|
||||
this->m_viewControllers.removeChildObject(NULL);
|
||||
}
|
||||
|
||||
this->removeOverrides();
|
||||
@ -322,11 +319,11 @@ void RimViewLinker::allViews(std::vector<RimView*>& views)
|
||||
{
|
||||
views.push_back(m_masterView());
|
||||
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
if (viewLinks[i]->managedView())
|
||||
if (m_viewControllers[i]->managedView())
|
||||
{
|
||||
views.push_back(viewLinks[i]->managedView());
|
||||
views.push_back(m_viewControllers[i]->managedView());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -411,9 +408,9 @@ void RimViewLinker::updateUiNameAndIcon()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::scheduleGeometryRegenForDepViews(RivCellSetEnum geometryType)
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
viewLinks[i]->scheduleGeometryRegenForDepViews(geometryType);
|
||||
m_viewControllers[i]->scheduleGeometryRegenForDepViews(geometryType);
|
||||
}
|
||||
}
|
||||
|
||||
@ -422,9 +419,9 @@ void RimViewLinker::scheduleGeometryRegenForDepViews(RivCellSetEnum geometryType
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::scheduleCreateDisplayModelAndRedrawForDependentViews()
|
||||
{
|
||||
for (size_t i = 0; i < viewLinks.size(); i++)
|
||||
for (size_t i = 0; i < m_viewControllers.size(); i++)
|
||||
{
|
||||
viewLinks[i]->scheduleCreateDisplayModelAndRedrawForDependentView();
|
||||
m_viewControllers[i]->scheduleCreateDisplayModelAndRedrawForDependentView();
|
||||
}
|
||||
}
|
||||
|
||||
@ -598,10 +595,10 @@ void RimViewLinker::addDependentView(RimView* view)
|
||||
{
|
||||
CVF_ASSERT(view && view != m_masterView);
|
||||
|
||||
RimViewController* viewLink = new RimViewController;
|
||||
this->viewLinks.push_back(viewLink);
|
||||
RimViewController* viewContr = new RimViewController;
|
||||
this->m_viewControllers.push_back(viewContr);
|
||||
|
||||
viewLink->setManagedView(view);
|
||||
viewContr->setManagedView(view);
|
||||
|
||||
|
||||
}
|
||||
@ -611,9 +608,9 @@ void RimViewLinker::addDependentView(RimView* view)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimViewLinker::addViewControllers(caf::PdmUiTreeOrdering& uiTreeOrdering)
|
||||
{
|
||||
for (size_t j = 0; j < viewLinks.size(); j++)
|
||||
for (size_t j = 0; j < m_viewControllers.size(); j++)
|
||||
{
|
||||
uiTreeOrdering.add(viewLinks()[j]);
|
||||
uiTreeOrdering.add(m_viewControllers()[j]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ private:
|
||||
static bool isBoundingBoxesOverlappingOrClose(const cvf::BoundingBox& sourceBB, const cvf::BoundingBox& destBB);
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimViewController*> viewLinks;
|
||||
caf::PdmChildArrayField<RimViewController*> m_viewControllers;
|
||||
caf::PdmPtrField<RimView*> m_masterView;
|
||||
caf::PdmField<QString> m_name;
|
||||
QIcon m_originalIcon;
|
||||
|
Loading…
Reference in New Issue
Block a user