Fault result: Moved fault result up one level in tree view

This commit is contained in:
Magne Sjaastad 2014-08-01 12:55:43 +02:00
parent 86b74e383e
commit 79fbe65686
8 changed files with 92 additions and 51 deletions

View File

@ -650,9 +650,6 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
riv->cellResult()->setResultVariable(RimDefines::undefinedResultName());
}
riv->faultResultSettings()->updateVisibility();
RimUiTreeModelPdm* uiModel = RiuMainWindow::instance()->uiPdmModel();
uiModel->updateUiSubTree(analysisModels);

View File

@ -42,7 +42,7 @@ CAF_PDM_SOURCE_INIT(RimFaultResultSettings, "RimFaultResultSlot");
//--------------------------------------------------------------------------------------------------
RimFaultResultSettings::RimFaultResultSettings()
{
CAF_PDM_InitObject("Fault Result Slot", "", "", "");
CAF_PDM_InitObject("Fault Result Slot", ":/draw_style_faults_24x24.png", "", "");
CAF_PDM_InitField(&showCustomFaultResult, "ShowCustomFaultResult", false, "Show Custom Fault Result", "", "", "");
showCustomFaultResult.setUiHidden(true);
@ -52,8 +52,15 @@ RimFaultResultSettings::RimFaultResultSettings()
CAF_PDM_InitFieldNoDefault(&m_customFaultResult, "CustomResultSlot", "Custom Fault Result", ":/CellResult.png", "", "");
m_customFaultResult = new RimResultSlot();
m_customFaultResult.setOwnerObject(this);
m_customFaultResult.setUiHidden(true);
updateVisibility();
// Take ownership of the fields in RimResultDefinition to be able to trap fieldChangedByUi in this class
m_customFaultResult->m_resultTypeUiField.setOwnerObject(this);
m_customFaultResult->m_porosityModelUiField.setOwnerObject(this);
m_customFaultResult->m_resultVariableUiField.setOwnerObject(this);
updateFieldVisibility();
}
//--------------------------------------------------------------------------------------------------
@ -77,18 +84,20 @@ void RimFaultResultSettings::setReservoirView(RimReservoirView* ownerReservoirVi
//--------------------------------------------------------------------------------------------------
void RimFaultResultSettings::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
if (&showCustomFaultResult == changedField)
{
this->updateUiIconFromState(showCustomFaultResult);
}
this->updateUiIconFromState(showCustomFaultResult);
m_customFaultResult->fieldChangedByUi(changedField, oldValue, newValue);
if (changedField == &visualizationMode)
{
updateVisibility();
updateFieldVisibility();
RiuMainWindow::instance()->uiPdmModel()->updateUiSubTree(this);
}
RiuMainWindow::instance()->setExpanded(this, true);
if (changedField == &m_customFaultResult->m_resultVariableUiField)
{
RiuMainWindow::instance()->uiPdmModel()->updateUiSubTree(this);
}
if (m_reservoirView) m_reservoirView->scheduleCreateDisplayModelAndRedraw();
@ -99,24 +108,18 @@ void RimFaultResultSettings::fieldChangedByUi(const caf::PdmFieldHandle* changed
//--------------------------------------------------------------------------------------------------
void RimFaultResultSettings::initAfterRead()
{
updateVisibility();
m_customFaultResult->initAfterRead();
updateFieldVisibility();
this->updateUiIconFromState(showCustomFaultResult);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFaultResultSettings::updateVisibility()
void RimFaultResultSettings::updateFieldVisibility()
{
if (this->visualizationMode() == FAULT_COLOR)
{
this->m_customFaultResult.setUiHidden(true);
this->m_customFaultResult.setUiChildrenHidden(true);
}
else
{
this->m_customFaultResult.setUiHidden(false);
this->m_customFaultResult.setUiChildrenHidden(false);
}
m_customFaultResult->updateFieldVisibility();
}
//--------------------------------------------------------------------------------------------------
@ -140,3 +143,28 @@ caf::PdmFieldHandle* RimFaultResultSettings::objectToggleField()
return &showCustomFaultResult;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFaultResultSettings::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
uiOrdering.add(&visualizationMode);
uiOrdering.add(&showNNCs);
if (visualizationMode == CUSTOM_RESULT_MAPPING)
{
caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Result");
group1->add(&(m_customFaultResult->m_resultTypeUiField));
group1->add(&(m_customFaultResult->m_porosityModelUiField));
group1->add(&(m_customFaultResult->m_resultVariableUiField));
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> RimFaultResultSettings::calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
{
return m_customFaultResult->calculateValueOptions(fieldNeedingOptions, useOptionsOnly);
}

View File

@ -51,12 +51,15 @@ public:
RimResultSlot* customFaultResult();
void updateVisibility();
void updateFieldVisibility();
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly );
protected:
virtual void initAfterRead();
virtual caf::PdmFieldHandle* objectToggleField();
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) ;
private:
caf::PdmField<RimResultSlot*> m_customFaultResult;

View File

@ -103,7 +103,7 @@ RimReservoirView::RimReservoirView()
CAF_PDM_InitFieldNoDefault(&cellEdgeResult, "GridCellEdgeResult", "Cell Edge Result", ":/EdgeResult_1.png", "", "");
cellEdgeResult = new RimCellEdgeResultSlot();
CAF_PDM_InitFieldNoDefault(&faultResultSettings, "FaultResultSettings", "Fault Result Settings", ":/draw_style_faults_24x24.png", "", "");
CAF_PDM_InitFieldNoDefault(&faultResultSettings, "FaultResultSettings", "Fault Result Settings", "", "", "");
faultResultSettings = new RimFaultResultSettings();
CAF_PDM_InitFieldNoDefault(&overlayInfoConfig, "OverlayInfoConfig", "Info Box", "", "", "");
@ -933,14 +933,15 @@ void RimReservoirView::loadDataAndUpdate()
CVF_ASSERT(this->cellResult() != NULL);
this->cellResult()->loadResult();
if (m_reservoir->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0)
{
this->cellResult->setPorosityModelUiFieldHidden(true);
}
CVF_ASSERT(this->cellEdgeResult() != NULL);
this->cellEdgeResult()->loadResult();
if (this->faultResultSettings()->customFaultResult())
{
this->faultResultSettings()->customFaultResult()->loadResult();
}
this->faultResultSettings()->updateFieldVisibility();
updateViewerWidget();
this->propertyFilterCollection()->loadAndInitializePropertyFilters();

View File

@ -38,7 +38,7 @@ RimResultDefinition::RimResultDefinition()
CAF_PDM_InitFieldNoDefault(&m_resultType, "ResultType", "Type", "", "", "");
m_resultType.setUiHidden(true);
CAF_PDM_InitFieldNoDefault(&m_porosityModel, "PorosityModelType", "Type", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_porosityModel, "PorosityModelType", "Porosity", "", "", "");
m_porosityModel.setUiHidden(true);
CAF_PDM_InitField(&m_resultVariable, "ResultVariable", RimDefines::undefinedResultName(), "Variable", "", "", "" );
m_resultVariable.setUiHidden(true);
@ -46,7 +46,7 @@ RimResultDefinition::RimResultDefinition()
CAF_PDM_InitFieldNoDefault(&m_resultTypeUiField, "MResultType", "Type", "", "", "");
m_resultTypeUiField.setIOReadable(false);
m_resultTypeUiField.setIOWritable(false);
CAF_PDM_InitFieldNoDefault(&m_porosityModelUiField, "MPorosityModelType", "Type", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_porosityModelUiField, "MPorosityModelType", "Porosity", "", "", "");
m_porosityModelUiField.setIOReadable(false);
m_porosityModelUiField.setIOWritable(false);
CAF_PDM_InitField(&m_resultVariableUiField, "MResultVariable", RimDefines::undefinedResultName(), "Result property", "", "", "" );
@ -72,16 +72,7 @@ void RimResultDefinition::setReservoirView(RimReservoirView* ownerReservoirView)
{
m_reservoirView = ownerReservoirView;
// TODO: This code is executed before reservoir is read, and then porosity model is never set to zero
if (m_reservoirView->eclipseCase() &&
m_reservoirView->eclipseCase()->reservoirData() &&
m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS) )
{
if (m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0)
{
m_porosityModelUiField.setUiHidden(true);
}
}
updateFieldVisibility();
}
QStringList RimResultDefinition::getResultVariableListForCurrentUIFieldSettings()
@ -220,6 +211,8 @@ void RimResultDefinition::loadResult()
gridCellResults->findOrLoadScalarResult(m_resultType(), m_resultVariable);
}
}
updateFieldVisibility();
}
@ -329,14 +322,6 @@ void RimResultDefinition::setResultVariable(const QString& val)
m_resultVariableUiField = val;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::setPorosityModelUiFieldHidden(bool hide)
{
m_porosityModelUiField.setUiHidden(true);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -347,3 +332,24 @@ bool RimResultDefinition::isTernarySaturationSelected() const
return isTernary;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimResultDefinition::updateFieldVisibility()
{
if (m_reservoirView &&
m_reservoirView->eclipseCase() &&
m_reservoirView->eclipseCase()->reservoirData() &&
m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS) )
{
if (m_reservoirView->eclipseCase()->reservoirData()->activeCellInfo(RifReaderInterface::FRACTURE_RESULTS)->globalActiveCellCount() == 0)
{
m_porosityModelUiField.setUiHidden(true);
}
else
{
m_porosityModelUiField.setUiHidden(false);
}
}
}

View File

@ -49,7 +49,6 @@ public:
void setPorosityModel(RimDefines::PorosityModelType val);
QString resultVariable() const { return m_resultVariable(); }
virtual void setResultVariable(const QString& val);
void setPorosityModelUiFieldHidden(bool hide);
void loadResult();
size_t gridScalarIndex() const;
@ -71,6 +70,7 @@ protected:
caf::PdmField<QString> m_resultVariable;
friend class RimCellPropertyFilter;
friend class RimFaultResultSettings;
// User interface only fields, to support "filtering"-like behaviour etc.
caf::PdmField< caf::AppEnum< RimDefines::ResultCatType > > m_resultTypeUiField;
caf::PdmField< caf::AppEnum< RimDefines::PorosityModelType > > m_porosityModelUiField;
@ -81,6 +81,9 @@ protected:
caf::PdmPointer<RimReservoirView> m_reservoirView;
protected:
void updateFieldVisibility();
private:
QStringList getResultVariableListForCurrentUIFieldSettings();
};

View File

@ -154,6 +154,8 @@ void RimResultSlot::initAfterRead()
//--------------------------------------------------------------------------------------------------
void RimResultSlot::setReservoirView(RimReservoirView* ownerReservoirView)
{
RimResultDefinition::setReservoirView(ownerReservoirView);
m_reservoirView = ownerReservoirView;
this->legendConfig()->setReservoirView(ownerReservoirView);
std::list<caf::PdmPointer<RimLegendConfig> >::iterator it;

View File

@ -44,6 +44,7 @@ public:
virtual void setResultVariable(const QString& resultName);
protected:
friend class RimFaultResultSettings;
virtual void initAfterRead();
private: