#6234 Add signals to propagate changes from template to fracture model.

This commit is contained in:
Kristian Bendiksen 2020-09-25 10:56:27 +02:00
parent e59bd10722
commit 46a47eb8d5
6 changed files with 92 additions and 34 deletions

View File

@ -252,6 +252,17 @@ bool RimFractureModel::useDetailedFluidLoss() const
return m_useDetailedFluidLoss();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModel::initAfterRead()
{
if ( m_fractureModelTemplate )
{
m_fractureModelTemplate->changed.connect( this, &RimFractureModel::fractureModelTemplateChanged );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -312,23 +323,12 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField
}
}
if ( changedField == &m_fractureModelTemplate )
{
RimEclipseCase* eclipseCase = nullptr;
this->firstAncestorOrThisOfType( eclipseCase );
if ( eclipseCase )
{
RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(
eclipseCase );
}
else
{
RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews();
}
RimProject::current()->scheduleCreateDisplayModelAndRedrawAllViews();
updateReferringPlots();
setFractureModelTemplate( m_fractureModelTemplate() );
}
updateViewsAndPlots();
}
//--------------------------------------------------------------------------------------------------
@ -1312,7 +1312,17 @@ int RimFractureModel::wellPenetrationLayer() const
//--------------------------------------------------------------------------------------------------
void RimFractureModel::setFractureModelTemplate( RimFractureModelTemplate* fractureModelTemplate )
{
if ( m_fractureModelTemplate )
{
m_fractureModelTemplate->changed.disconnect( this );
}
m_fractureModelTemplate = fractureModelTemplate;
if ( m_fractureModelTemplate )
{
m_fractureModelTemplate->changed.connect( this, &RimFractureModel::fractureModelTemplateChanged );
}
}
//--------------------------------------------------------------------------------------------------
@ -1322,3 +1332,32 @@ RimFractureModelTemplate* RimFractureModel::fractureModelTemplate() const
{
return m_fractureModelTemplate;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModel::fractureModelTemplateChanged( const caf::SignalEmitter* emitter )
{
updateViewsAndPlots();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModel::updateViewsAndPlots()
{
RimEclipseCase* eclipseCase = nullptr;
this->firstAncestorOrThisOfType( eclipseCase );
if ( eclipseCase )
{
RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews( eclipseCase );
}
else
{
RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews();
}
RimProject::current()->scheduleCreateDisplayModelAndRedrawAllViews();
updateReferringPlots();
}

View File

@ -125,8 +125,6 @@ public:
RimModeledWellPath* thicknessDirectionWellPath() const;
void setThicknessDirectionWellPath( RimModeledWellPath* thicknessDirectionWellPath );
// void setElasticProperties( RimElasticProperties* elasticProperties );
// RimElasticProperties* elasticProperties() const;
double getDefaultValueForProperty( RiaDefines::CurveProperty ) const;
bool hasDefaultValueForProperty( RiaDefines::CurveProperty ) const;
@ -150,6 +148,7 @@ protected:
void defineEditorAttribute( const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute ) override;
void initAfterRead() override;
private:
void updatePositionFromMeasuredDepth();
@ -179,6 +178,9 @@ private:
const cvf::Vec3d& startPosition,
const cvf::Vec3d& endPosition );
void updateViewsAndPlots();
void fractureModelTemplateChanged( const caf::SignalEmitter* emitter );
protected:
caf::PdmField<double> m_MD;
caf::PdmField<caf::AppEnum<ExtractionType>> m_extractionType;

View File

@ -73,6 +73,7 @@ CAF_PDM_SOURCE_INIT( RimFractureModelTemplate, "RimFractureModelTemplate" );
///
//--------------------------------------------------------------------------------------------------
RimFractureModelTemplate::RimFractureModelTemplate()
: changed( this )
{
CAF_PDM_InitScriptableObject( "FractureModelTemplate", "", "", "" );
@ -145,23 +146,7 @@ void RimFractureModelTemplate::fieldChangedByUi( const caf::PdmFieldHandle* chan
const QVariant& oldValue,
const QVariant& newValue )
{
// {
// RimEclipseCase* eclipseCase = nullptr;
// this->firstAncestorOrThisOfType( eclipseCase );
// if ( eclipseCase )
// {
// RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews(
// eclipseCase );
// }
// else
// {
// RiaCompletionTypeCalculationScheduler::instance()->scheduleRecalculateCompletionTypeAndRedrawAllViews();
// }
// RimProject::current()->scheduleCreateDisplayModelAndRedrawAllViews();
// updateReferringPlots();
// }
changed.send();
}
//--------------------------------------------------------------------------------------------------
@ -274,10 +259,16 @@ RimFaciesProperties* RimFractureModelTemplate::faciesProperties() const
//--------------------------------------------------------------------------------------------------
void RimFractureModelTemplate::setFaciesProperties( RimFaciesProperties* faciesProperties )
{
if ( m_faciesProperties )
{
m_faciesProperties->changed.disconnect( this );
}
m_faciesProperties = faciesProperties;
if ( m_faciesProperties )
{
m_faciesProperties->changed.connect( this, &RimFractureModelTemplate::faciesPropertiesChanged );
RimEclipseCase* eclipseCase = getEclipseCase();
if ( !eclipseCase ) return;
@ -299,6 +290,14 @@ void RimFractureModelTemplate::initAfterRead()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModelTemplate::faciesPropertiesChanged( const caf::SignalEmitter* emitter )
{
changed.send();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -46,6 +46,8 @@ public:
RimFractureModelTemplate( void );
~RimFractureModelTemplate( void ) override;
caf::Signal<> changed;
void setId( int id );
int id() const;
@ -91,6 +93,8 @@ protected:
static RimEclipseCase* getEclipseCase();
static RigEclipseCaseData* getEclipseCaseData();
void faciesPropertiesChanged( const caf::SignalEmitter* emitter );
protected:
caf::PdmField<int> m_id;
caf::PdmField<double> m_defaultPorosity;

View File

@ -38,6 +38,7 @@ CAF_PDM_SOURCE_INIT( RimFaciesProperties, "FaciesProperties" );
///
//--------------------------------------------------------------------------------------------------
RimFaciesProperties::RimFaciesProperties()
: changed( this )
{
CAF_PDM_InitScriptableObject( "RimFaciesProperties", "", "", "" );
@ -148,6 +149,16 @@ void RimFaciesProperties::defineEditorAttribute( const caf::PdmFieldHandle* fiel
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFaciesProperties::fieldChangedByUi( const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue )
{
changed.send();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -41,6 +41,8 @@ public:
RimFaciesProperties();
~RimFaciesProperties() override;
caf::Signal<> changed;
QString filePath() const;
void setFilePath( const QString& filePath );
@ -62,6 +64,7 @@ protected:
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering );
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly ) override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
private:
QString generatePropertiesTable();