Added support for geo mech property filters for managed views

This commit is contained in:
Magne Sjaastad
2015-08-27 22:54:37 +02:00
parent 81ce665883
commit 5fd81b19d8
16 changed files with 155 additions and 119 deletions

View File

@@ -82,7 +82,7 @@ void RicDeleteItemExec::redo()
if (rangeFilterColl)
{
rangeFilterColl->updateUiUpdateDisplayModel();
rangeFilterColl->updateDisplayModeNotifyManagedViews();
}
RimEclipsePropertyFilterCollection* eclipsePropColl;

View File

@@ -65,7 +65,7 @@ void RicRangeFilterInsertExec::redo()
rangeFilter->setDefaultValues();
applyCommandDataOnFilter(rangeFilter);
m_cellRangeFilterCollection->updateUiUpdateDisplayModel();
m_cellRangeFilterCollection->updateDisplayModeNotifyManagedViews();
m_cellRangeFilterCollection->updateConnectedEditors();

View File

@@ -68,7 +68,7 @@ void RicRangeFilterNewExec::redo()
rangeFilter->setDefaultValues();
applyCommandDataOnFilter(rangeFilter);
m_cellRangeFilterCollection->updateUiUpdateDisplayModel();
m_cellRangeFilterCollection->updateDisplayModeNotifyManagedViews();
m_cellRangeFilterCollection->updateConnectedEditors();
@@ -85,7 +85,7 @@ void RicRangeFilterNewExec::undo()
m_cellRangeFilterCollection->rangeFilters.erase(m_cellRangeFilterCollection->rangeFilters.size() - 1);
m_cellRangeFilterCollection->updateUiUpdateDisplayModel();
m_cellRangeFilterCollection->updateDisplayModeNotifyManagedViews();
m_cellRangeFilterCollection->updateConnectedEditors();
}

View File

@@ -82,7 +82,7 @@ void RimCellRangeFilter::fieldChangedByUi(const caf::PdmFieldHandle* changedFiel
{
computeAndSetValidValues();
parentContainer()->updateUiUpdateDisplayModel();
parentContainer()->updateDisplayModeNotifyManagedViews();
}
}

View File

@@ -137,16 +137,16 @@ RigActiveCellInfo* RimCellRangeFilterCollection::activeCellInfo() const
//--------------------------------------------------------------------------------------------------
void RimCellRangeFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
updateUiUpdateDisplayModel();
this->updateUiIconFromToggleField();
updateDisplayModeNotifyManagedViews();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCellRangeFilterCollection::updateUiUpdateDisplayModel()
void RimCellRangeFilterCollection::updateDisplayModeNotifyManagedViews()
{
this->updateUiIconFromToggleField();
RimView* rimView = NULL;
firstAnchestorOrThisOfType(rimView);

View File

@@ -53,7 +53,7 @@ public:
RigActiveCellInfo* activeCellInfo() const;
void updateUiUpdateDisplayModel();
void updateDisplayModeNotifyManagedViews();
// Overridden methods
virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue );

View File

@@ -102,9 +102,10 @@ void RimEclipsePropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* chang
|| &isActive == changedField
|| &filterMode == changedField)
{
parentContainer()->fieldChangedByUi(changedField, oldValue, newValue);
updateFilterName();
this->updateIconState();
parentContainer()->updateDisplayModelNotifyManagedViews();
}
}

View File

@@ -70,7 +70,7 @@ void RimEclipsePropertyFilterCollection::fieldChangedByUi(const caf::PdmFieldHan
{
this->updateUiIconFromToggleField();
updateDisplayModel();
updateDisplayModelNotifyManagedViews();
}
//--------------------------------------------------------------------------------------------------
@@ -136,7 +136,7 @@ caf::PdmFieldHandle* RimEclipsePropertyFilterCollection::objectToggleField()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipsePropertyFilterCollection::updateDisplayModel()
void RimEclipsePropertyFilterCollection::updateDisplayModelNotifyManagedViews()
{
RimEclipseView* view = NULL;
this->firstAnchestorOrThisOfType(view);

View File

@@ -45,7 +45,7 @@ public:
void loadAndInitializePropertyFilters();
void updateDisplayModel();
void updateDisplayModelNotifyManagedViews();
// Overridden methods

View File

@@ -81,8 +81,8 @@ void RimGeoMechPropertyFilter::fieldChangedByUi(const caf::PdmFieldHandle* chang
{
this->updateIconState();
this->updateFilterName();
((RimView*)resultDefinition->reservoirView())->scheduleGeometryRegen(PROPERTY_FILTERED);
resultDefinition->reservoirView()->scheduleCreateDisplayModelAndRedraw();
parentContainer()->updateDisplayModelNotifyManagedViews();
}
}

View File

@@ -18,9 +18,11 @@
/////////////////////////////////////////////////////////////////////////////////
#include "RimGeoMechPropertyFilterCollection.h"
#include "RimGeoMechCellColors.h"
#include "RimGeoMechPropertyFilter.h"
#include "RimGeoMechView.h"
#include "RimGeoMechCellColors.h"
#include "RimManagedViewCollection.h"
#include "cvfAssert.h"
@@ -49,31 +51,17 @@ RimGeoMechPropertyFilterCollection::~RimGeoMechPropertyFilterCollection()
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechPropertyFilterCollection::setReservoirView(RimGeoMechView* reservoirView)
{
m_reservoirView = reservoirView;
for (size_t i = 0; i < propertyFilters.size(); i++)
{
RimGeoMechPropertyFilter* propertyFilter = propertyFilters[i];
propertyFilter->resultDefinition->setReservoirView(m_reservoirView.p());
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechView* RimGeoMechPropertyFilterCollection::reservoirView()
{
CVF_ASSERT(!m_reservoirView.isNull());
return m_reservoirView;
RimGeoMechView* geoMechView = NULL;
firstAnchestorOrThisOfType(geoMechView);
return geoMechView;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -81,31 +69,9 @@ void RimGeoMechPropertyFilterCollection::fieldChangedByUi(const caf::PdmFieldHan
{
this->updateUiIconFromToggleField();
((RimView*)m_reservoirView)->scheduleGeometryRegen(PROPERTY_FILTERED);
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
updateDisplayModelNotifyManagedViews();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechPropertyFilter* RimGeoMechPropertyFilterCollection::createAndAppendPropertyFilter()
{
RimGeoMechPropertyFilter* propertyFilter = new RimGeoMechPropertyFilter();
propertyFilter->resultDefinition->setReservoirView(m_reservoirView.p());
propertyFilter->setParentContainer(this);
propertyFilters.push_back(propertyFilter);
propertyFilter->resultDefinition->setResultAddress(m_reservoirView->cellResult()->resultAddress());
propertyFilter->resultDefinition->loadResult();
propertyFilter->setToDefaultValues();
propertyFilter->updateFilterName();
return propertyFilter;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -130,21 +96,13 @@ void RimGeoMechPropertyFilterCollection::initAfterRead()
RimGeoMechPropertyFilter* propertyFilter = propertyFilters[i];
propertyFilter->setParentContainer(this);
propertyFilter->resultDefinition->setReservoirView(m_reservoirView.p());
propertyFilter->resultDefinition->setReservoirView(reservoirView());
propertyFilter->updateIconState();
}
this->updateUiIconFromToggleField();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechPropertyFilterCollection::remove(RimGeoMechPropertyFilter* propertyFilter)
{
propertyFilters.removeChildObject(propertyFilter);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -169,7 +127,6 @@ bool RimGeoMechPropertyFilterCollection::hasActiveDynamicFilters() const
return hasActiveFilters();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -177,3 +134,19 @@ caf::PdmFieldHandle* RimGeoMechPropertyFilterCollection::objectToggleField()
{
return &active;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechPropertyFilterCollection::updateDisplayModelNotifyManagedViews()
{
RimGeoMechView* view = NULL;
this->firstAnchestorOrThisOfType(view);
CVF_ASSERT(view);
view->scheduleGeometryRegen(PROPERTY_FILTERED);
view->scheduleCreateDisplayModelAndRedraw();
// Notify managed views of range filter change in master view
view->managedViewCollection()->updatePropertyFilters();
}

View File

@@ -38,33 +38,22 @@ public:
RimGeoMechPropertyFilterCollection();
virtual ~RimGeoMechPropertyFilterCollection();
void setReservoirView(RimGeoMechView* reservoirView);
RimGeoMechView* reservoirView();
// Fields:
caf::PdmField<bool> active;
caf::PdmChildArrayField<RimGeoMechPropertyFilter*> propertyFilters;
// Methods
RimGeoMechPropertyFilter* createAndAppendPropertyFilter();
void remove(RimGeoMechPropertyFilter* propertyFilter);
bool hasActiveFilters() const;
bool hasActiveDynamicFilters() const;
void loadAndInitializePropertyFilters();
// Overridden methods
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual caf::PdmFieldHandle* objectToggleField();
void updateDisplayModelNotifyManagedViews();
protected:
// Overridden methods
virtual void initAfterRead();
private:
caf::PdmPointer<RimGeoMechView> m_reservoirView;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual caf::PdmFieldHandle* objectToggleField();
virtual void initAfterRead();
};

View File

@@ -19,38 +19,41 @@
#include "RimGeoMechView.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "RimGeoMechCellColors.h"
#include "RiuMainWindow.h"
#include "cafCeetronPlusNavigation.h"
#include "cafCadNavigation.h"
#include "RimLegendConfig.h"
#include "cvfOverlayScalarMapperLegend.h"
#include "RimGeoMechCase.h"
#include "cvfPart.h"
#include "cvfViewport.h"
#include "cvfModelBasicList.h"
#include "cvfScene.h"
#include "RimEclipseView.h"
#include "RiuViewer.h"
#include "RivGeoMechPartMgr.h"
#include "RigGeoMechCaseData.h"
#include "cvfqtUtils.h"
#include "RigFemPartCollection.h"
#include "cafFrameAnimationControl.h"
#include <QMessageBox>
#include "cafProgressInfo.h"
#include "RimCellRangeFilterCollection.h"
#include "RivGeoMechPartMgrCache.h"
#include "RivGeoMechVizLogic.h"
#include "RigFemPartGrid.h"
#include "RigFemPartResultsCollection.h"
#include "RimGeoMechPropertyFilterCollection.h"
#include "RigGeoMechCaseData.h"
#include "Rim3dOverlayInfoConfig.h"
#include "RimCellRangeFilterCollection.h"
#include "RimEclipseView.h"
#include "RimGeoMechCase.h"
#include "RimGeoMechCellColors.h"
#include "RimGeoMechPropertyFilterCollection.h"
#include "RimLegendConfig.h"
#include "RiuMainWindow.h"
#include "RiuViewer.h"
#include "RivGeoMechPartMgr.h"
#include "RivGeoMechPartMgrCache.h"
#include "RivGeoMechVizLogic.h"
#include "cafCadNavigation.h"
#include "cafCeetronPlusNavigation.h"
#include "cafFrameAnimationControl.h"
#include "cafProgressInfo.h"
#include "cvfModelBasicList.h"
#include "cvfOverlayScalarMapperLegend.h"
#include "cvfPart.h"
#include "cvfScene.h"
#include "cvfViewport.h"
#include "cvfqtUtils.h"
#include <QMessageBox>
@@ -74,17 +77,15 @@ RimGeoMechView::RimGeoMechView(void)
m_rangeFilterCollection = new RimCellRangeFilterCollection();
m_rangeFilterCollection.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&propertyFilterCollection, "PropertyFilters", "Property Filters", "", "", "");
propertyFilterCollection = new RimGeoMechPropertyFilterCollection();
propertyFilterCollection->setReservoirView(this);
propertyFilterCollection.uiCapability()->setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_propertyFilterCollection, "PropertyFilters", "Property Filters", "", "", "");
m_propertyFilterCollection = new RimGeoMechPropertyFilterCollection();
m_propertyFilterCollection.uiCapability()->setUiHidden(true);
this->cellResult()->setReservoirView(this);
this->cellResult()->legendConfig()->setReservoirView(this);
m_scaleTransform = new cvf::Transform();
m_vizLogic = new RivGeoMechVizLogic(this);
}
//--------------------------------------------------------------------------------------------------
@@ -514,3 +515,26 @@ void RimGeoMechView::scheduleGeometryRegen(RivCellSetEnum geometryType)
m_vizLogic->scheduleGeometryRegen(geometryType);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechView::setOverridePropertyFilterCollection(RimGeoMechPropertyFilterCollection* pfc)
{
m_overridePropertyFilterCollection = pfc;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechPropertyFilterCollection* RimGeoMechView::propertyFilterCollection()
{
if (m_overridePropertyFilterCollection)
{
return m_overridePropertyFilterCollection;
}
else
{
return m_propertyFilterCollection;
}
}

View File

@@ -63,8 +63,10 @@ public:
virtual void loadDataAndUpdate();
caf::PdmChildField<RimGeoMechCellColors*> cellResult;
caf::PdmChildField<RimGeoMechPropertyFilterCollection*> propertyFilterCollection;
caf::PdmChildField<RimGeoMechCellColors*> cellResult;
RimGeoMechPropertyFilterCollection* propertyFilterCollection();
void setOverridePropertyFilterCollection(RimGeoMechPropertyFilterCollection* pfc);
bool isTimeStepDependentDataVisible();
@@ -91,6 +93,9 @@ private:
virtual RimCase* ownerCase();
caf::PdmChildField<RimGeoMechPropertyFilterCollection*> m_propertyFilterCollection;
caf::PdmPointer<RimGeoMechPropertyFilterCollection> m_overridePropertyFilterCollection;
caf::PdmPointer<RimGeoMechCase> m_geomechCase;
cvf::ref<RivGeoMechVizLogic> m_vizLogic;
cvf::ref<cvf::Transform> m_scaleTransform;

View File

@@ -32,6 +32,8 @@
#include "RiuViewer.h"
#include "cafPdmUiTreeOrdering.h"
#include "RimGeoMechView.h"
#include "RimGeoMechPropertyFilterCollection.h"
CAF_PDM_SOURCE_INIT(RimManagedViewConfig, "RimManagedViewConfig");
@@ -154,7 +156,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
if (managedView)
{
managedView->rangeFilterCollection()->updateUiUpdateDisplayModel();
managedView->rangeFilterCollection()->updateDisplayModeNotifyManagedViews();
}
}
else if (changedField == &syncPropertyFilters)
@@ -164,7 +166,14 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
RimEclipseView* eclipseView = managedEclipseView();
if (eclipseView)
{
eclipseView->propertyFilterCollection()->updateDisplayModel();
eclipseView->propertyFilterCollection()->updateDisplayModelNotifyManagedViews();
}
RimGeoMechView* geoView = managedGeoView();
if (geoView)
{
geoView->scheduleGeometryRegen(PROPERTY_FILTERED);
geoView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (changedField == &managedView)
@@ -173,7 +182,7 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
if (managedView)
{
managedView->rangeFilterCollection()->updateUiUpdateDisplayModel();
managedView->rangeFilterCollection()->updateDisplayModeNotifyManagedViews();
if (syncCellResult())
{
@@ -189,13 +198,19 @@ void RimManagedViewConfig::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
{
RimView* rimView = dynamic_cast<RimView*>(prevValue);
rimView->setOverrideRangeFilterCollection(NULL);
rimView->rangeFilterCollection()->updateUiUpdateDisplayModel();
rimView->rangeFilterCollection()->updateDisplayModeNotifyManagedViews();
RimEclipseView* rimEclipseView = dynamic_cast<RimEclipseView*>(rimView);
if (rimEclipseView)
{
rimEclipseView->setOverridePropertyFilterCollection(NULL);
}
RimGeoMechView* geoView = dynamic_cast<RimGeoMechView*>(rimView);
if (geoView)
{
geoView->setOverridePropertyFilterCollection(NULL);
}
}
}
}
@@ -235,6 +250,23 @@ void RimManagedViewConfig::configureOverrides()
}
}
}
RimGeoMechView* masterGeoView = dynamic_cast<RimGeoMechView*>(masterView);
if (masterGeoView)
{
RimGeoMechView* geoView = managedGeoView();
if (geoView)
{
if (syncPropertyFilters)
{
geoView->setOverridePropertyFilterCollection(masterGeoView->propertyFilterCollection());
}
else
{
geoView->setOverridePropertyFilterCollection(NULL);
}
}
}
}
}
@@ -256,3 +288,13 @@ RimEclipseView* RimManagedViewConfig::managedEclipseView()
return dynamic_cast<RimEclipseView*>(rimView);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechView* RimManagedViewConfig::managedGeoView()
{
RimView* rimView = managedView;
return dynamic_cast<RimGeoMechView*>(rimView);
}

View File

@@ -25,6 +25,7 @@
class RimView;
class RimEclipseView;
class RimGeoMechView;
//==================================================================================================
///
@@ -57,4 +58,5 @@ private:
void configureOverrides();
RimEclipseView* managedEclipseView();
RimGeoMechView* managedGeoView();
};