mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Propagate variable changed signal to RicUserDefinedCalculatorUi
- ensure that the UI is updated - if the grid size is different, set destination case equal to the input variable case
This commit is contained in:
@@ -25,7 +25,6 @@
|
|||||||
#include "cafPdmUiListEditor.h"
|
#include "cafPdmUiListEditor.h"
|
||||||
#include "cafPdmUiObjectEditorHandle.h"
|
#include "cafPdmUiObjectEditorHandle.h"
|
||||||
#include "cafPdmUiPushButtonEditor.h"
|
#include "cafPdmUiPushButtonEditor.h"
|
||||||
#include "cafPdmUiTreeSelectionEditor.h"
|
|
||||||
|
|
||||||
CAF_PDM_ABSTRACT_SOURCE_INIT( RicUserDefinedCalculatorUi, "RicUserDefinedCalculator" );
|
CAF_PDM_ABSTRACT_SOURCE_INIT( RicUserDefinedCalculatorUi, "RicUserDefinedCalculator" );
|
||||||
|
|
||||||
@@ -38,7 +37,6 @@ RicUserDefinedCalculatorUi::RicUserDefinedCalculatorUi()
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_currentCalculation, "CurrentCalculation", "" );
|
CAF_PDM_InitFieldNoDefault( &m_currentCalculation, "CurrentCalculation", "" );
|
||||||
m_currentCalculation.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
m_currentCalculation.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||||
// m_currentCalculation.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
|
||||||
m_currentCalculation.uiCapability()->setUiEditorTypeName( caf::PdmUiListEditor::uiEditorTypeName() );
|
m_currentCalculation.uiCapability()->setUiEditorTypeName( caf::PdmUiListEditor::uiEditorTypeName() );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_newCalculation, "NewCalculation", "New Calculation" );
|
CAF_PDM_InitFieldNoDefault( &m_newCalculation, "NewCalculation", "New Calculation" );
|
||||||
@@ -47,7 +45,7 @@ RicUserDefinedCalculatorUi::RicUserDefinedCalculatorUi()
|
|||||||
CAF_PDM_InitFieldNoDefault( &m_deleteCalculation, "DeleteCalculation", "Delete Calculation" );
|
CAF_PDM_InitFieldNoDefault( &m_deleteCalculation, "DeleteCalculation", "Delete Calculation" );
|
||||||
RicUserDefinedCalculatorUi::assignPushButtonEditor( &m_deleteCalculation );
|
RicUserDefinedCalculatorUi::assignPushButtonEditor( &m_deleteCalculation );
|
||||||
|
|
||||||
m_calcContextMenuMgr = std::unique_ptr<RiuCalculationsContextMenuManager>( new RiuCalculationsContextMenuManager() );
|
m_calcContextMenuMgr = std::make_unique<RiuCalculationsContextMenuManager>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -64,6 +62,8 @@ RimUserDefinedCalculation* RicUserDefinedCalculatorUi::currentCalculation() cons
|
|||||||
void RicUserDefinedCalculatorUi::setCurrentCalculation( RimUserDefinedCalculation* calculation )
|
void RicUserDefinedCalculatorUi::setCurrentCalculation( RimUserDefinedCalculation* calculation )
|
||||||
{
|
{
|
||||||
m_currentCalculation = calculation;
|
m_currentCalculation = calculation;
|
||||||
|
|
||||||
|
connectSignals( m_currentCalculation() );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -101,6 +101,7 @@ void RicUserDefinedCalculatorUi::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
|||||||
m_newCalculation = false;
|
m_newCalculation = false;
|
||||||
|
|
||||||
m_currentCalculation = calculationCollection()->addCalculation();
|
m_currentCalculation = calculationCollection()->addCalculation();
|
||||||
|
connectSignals( m_currentCalculation );
|
||||||
|
|
||||||
updateConnectedEditors();
|
updateConnectedEditors();
|
||||||
}
|
}
|
||||||
@@ -117,6 +118,10 @@ void RicUserDefinedCalculatorUi::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
|||||||
caf::PdmUiObjectEditorHandle::updateUiAllObjectEditors();
|
caf::PdmUiObjectEditorHandle::updateUiAllObjectEditors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( changedField == &m_currentCalculation && m_currentCalculation() )
|
||||||
|
{
|
||||||
|
connectSignals( m_currentCalculation() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -126,7 +131,7 @@ void RicUserDefinedCalculatorUi::defineUiOrdering( QString uiConfigName, caf::Pd
|
|||||||
{
|
{
|
||||||
if ( !m_currentCalculation() && !calculationCollection()->calculations().empty() )
|
if ( !m_currentCalculation() && !calculationCollection()->calculations().empty() )
|
||||||
{
|
{
|
||||||
m_currentCalculation = calculationCollection()->calculations()[0];
|
setCurrentCalculation( calculationCollection()->calculations()[0] );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -182,7 +187,7 @@ void RicUserDefinedCalculatorUi::assignPushButtonEditor( caf::PdmFieldHandle* fi
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RicUserDefinedCalculatorUi::assignPushButtonEditorText( caf::PdmUiEditorAttribute* attribute, const QString& text )
|
void RicUserDefinedCalculatorUi::assignPushButtonEditorText( caf::PdmUiEditorAttribute* attribute, const QString& text )
|
||||||
{
|
{
|
||||||
caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
|
auto* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
|
||||||
if ( attrib )
|
if ( attrib )
|
||||||
{
|
{
|
||||||
attrib->m_buttonText = text;
|
attrib->m_buttonText = text;
|
||||||
@@ -252,7 +257,7 @@ void RicUserDefinedCalculatorUi::onEditorWidgetsCreated()
|
|||||||
|
|
||||||
for ( const auto& e : m_currentCalculation.uiCapability()->connectedEditors() )
|
for ( const auto& e : m_currentCalculation.uiCapability()->connectedEditors() )
|
||||||
{
|
{
|
||||||
caf::PdmUiListEditor* listEditor = dynamic_cast<caf::PdmUiListEditor*>( e );
|
auto* listEditor = dynamic_cast<caf::PdmUiListEditor*>( e );
|
||||||
if ( !listEditor ) continue;
|
if ( !listEditor ) continue;
|
||||||
|
|
||||||
QWidget* widget = listEditor->editorWidget();
|
QWidget* widget = listEditor->editorWidget();
|
||||||
@@ -261,3 +266,22 @@ void RicUserDefinedCalculatorUi::onEditorWidgetsCreated()
|
|||||||
m_calcContextMenuMgr->attachWidget( widget, this );
|
m_calcContextMenuMgr->attachWidget( widget, this );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicUserDefinedCalculatorUi::onVariableUpdated( const SignalEmitter* emitter )
|
||||||
|
{
|
||||||
|
updateConnectedEditors();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RicUserDefinedCalculatorUi::connectSignals( RimUserDefinedCalculation* calculation )
|
||||||
|
{
|
||||||
|
if ( calculation )
|
||||||
|
{
|
||||||
|
calculation->variableUpdated.connect( this, &RicUserDefinedCalculatorUi::onVariableUpdated );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,9 +19,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "RiuCalculationsContextMenuManager.h"
|
#include "RiuCalculationsContextMenuManager.h"
|
||||||
|
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
#include "cafPdmPtrField.h"
|
#include "cafPdmPtrField.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class RimUserDefinedCalculationCollection;
|
class RimUserDefinedCalculationCollection;
|
||||||
@@ -52,14 +54,16 @@ protected:
|
|||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
|
void defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
|
||||||
|
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||||
|
void onEditorWidgetsCreated() override;
|
||||||
|
|
||||||
// TODO : Move to a common caf helper class
|
// TODO : Move to a common caf helper class
|
||||||
static void assignPushButtonEditor( caf::PdmFieldHandle* fieldHandle );
|
static void assignPushButtonEditor( caf::PdmFieldHandle* fieldHandle );
|
||||||
static void assignPushButtonEditorText( caf::PdmUiEditorAttribute* attribute, const QString& text );
|
static void assignPushButtonEditorText( caf::PdmUiEditorAttribute* attribute, const QString& text );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
void onVariableUpdated( const SignalEmitter* emitter );
|
||||||
void onEditorWidgetsCreated() override;
|
void connectSignals( RimUserDefinedCalculation* calculation );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPtrField<RimUserDefinedCalculation*> m_currentCalculation;
|
caf::PdmPtrField<RimUserDefinedCalculation*> m_currentCalculation;
|
||||||
|
|||||||
@@ -295,16 +295,20 @@ void RimGridCalculation::initAfterRead()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimGridCalculation::onVariableUpdated( const SignalEmitter* emitter )
|
void RimGridCalculation::onVariableUpdated( const SignalEmitter* emitter )
|
||||||
{
|
{
|
||||||
if ( m_destinationCase == nullptr )
|
if ( auto variable = dynamic_cast<const RimGridCalculationVariable*>( emitter ) )
|
||||||
{
|
{
|
||||||
auto variable = dynamic_cast<const RimGridCalculationVariable*>( emitter );
|
if ( auto variableCase = variable->eclipseCase() )
|
||||||
if ( variable && variable->eclipseCase() )
|
|
||||||
{
|
{
|
||||||
m_destinationCase = variable->eclipseCase();
|
if ( !m_destinationCase || !m_destinationCase->isGridSizeEqualTo( variableCase ) )
|
||||||
|
{
|
||||||
|
m_destinationCase = variableCase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateConnectedEditors();
|
updateConnectedEditors();
|
||||||
}
|
|
||||||
}
|
variableUpdated.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimUserDefinedCalculation, "RimUserDefinedCalc
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimUserDefinedCalculation::RimUserDefinedCalculation()
|
RimUserDefinedCalculation::RimUserDefinedCalculation()
|
||||||
|
: variableUpdated( this )
|
||||||
{
|
{
|
||||||
CAF_PDM_InitObject( "RimUserDefinedCalculation", ":/octave.png", "Calculation", "" );
|
CAF_PDM_InitObject( "RimUserDefinedCalculation", ":/octave.png", "Calculation", "" );
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ class RimUserDefinedCalculation : public caf::PdmObject
|
|||||||
{
|
{
|
||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
caf::Signal<> variableUpdated;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RimUserDefinedCalculation();
|
RimUserDefinedCalculation();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user