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:
parent
917fd9b3b5
commit
fb890300c5
@ -25,7 +25,6 @@
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiObjectEditorHandle.h"
|
||||
#include "cafPdmUiPushButtonEditor.h"
|
||||
#include "cafPdmUiTreeSelectionEditor.h"
|
||||
|
||||
CAF_PDM_ABSTRACT_SOURCE_INIT( RicUserDefinedCalculatorUi, "RicUserDefinedCalculator" );
|
||||
|
||||
@ -38,7 +37,6 @@ RicUserDefinedCalculatorUi::RicUserDefinedCalculatorUi()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_currentCalculation, "CurrentCalculation", "" );
|
||||
m_currentCalculation.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||
// m_currentCalculation.uiCapability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName());
|
||||
m_currentCalculation.uiCapability()->setUiEditorTypeName( caf::PdmUiListEditor::uiEditorTypeName() );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_newCalculation, "NewCalculation", "New Calculation" );
|
||||
@ -47,7 +45,7 @@ RicUserDefinedCalculatorUi::RicUserDefinedCalculatorUi()
|
||||
CAF_PDM_InitFieldNoDefault( &m_deleteCalculation, "DeleteCalculation", "Delete Calculation" );
|
||||
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 )
|
||||
{
|
||||
m_currentCalculation = calculation;
|
||||
|
||||
connectSignals( m_currentCalculation() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -101,6 +101,7 @@ void RicUserDefinedCalculatorUi::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
||||
m_newCalculation = false;
|
||||
|
||||
m_currentCalculation = calculationCollection()->addCalculation();
|
||||
connectSignals( m_currentCalculation );
|
||||
|
||||
updateConnectedEditors();
|
||||
}
|
||||
@ -117,6 +118,10 @@ void RicUserDefinedCalculatorUi::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
||||
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() )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
|
||||
auto* attrib = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
|
||||
if ( attrib )
|
||||
{
|
||||
attrib->m_buttonText = text;
|
||||
@ -252,7 +257,7 @@ void RicUserDefinedCalculatorUi::onEditorWidgetsCreated()
|
||||
|
||||
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;
|
||||
|
||||
QWidget* widget = listEditor->editorWidget();
|
||||
@ -261,3 +266,22 @@ void RicUserDefinedCalculatorUi::onEditorWidgetsCreated()
|
||||
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
|
||||
|
||||
#include "RiuCalculationsContextMenuManager.h"
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
class RimUserDefinedCalculationCollection;
|
||||
@ -52,14 +54,16 @@ protected:
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) 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;
|
||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||
void onEditorWidgetsCreated() override;
|
||||
|
||||
// TODO : Move to a common caf helper class
|
||||
static void assignPushButtonEditor( caf::PdmFieldHandle* fieldHandle );
|
||||
static void assignPushButtonEditorText( caf::PdmUiEditorAttribute* attribute, const QString& text );
|
||||
|
||||
private:
|
||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||
void onEditorWidgetsCreated() override;
|
||||
void onVariableUpdated( const SignalEmitter* emitter );
|
||||
void connectSignals( RimUserDefinedCalculation* calculation );
|
||||
|
||||
private:
|
||||
caf::PdmPtrField<RimUserDefinedCalculation*> m_currentCalculation;
|
||||
|
@ -295,16 +295,20 @@ void RimGridCalculation::initAfterRead()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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 ( variable && variable->eclipseCase() )
|
||||
if ( auto variableCase = variable->eclipseCase() )
|
||||
{
|
||||
m_destinationCase = variable->eclipseCase();
|
||||
|
||||
updateConnectedEditors();
|
||||
if ( !m_destinationCase || !m_destinationCase->isGridSizeEqualTo( variableCase ) )
|
||||
{
|
||||
m_destinationCase = variableCase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateConnectedEditors();
|
||||
|
||||
variableUpdated.send();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -42,6 +42,7 @@ CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimUserDefinedCalculation, "RimUserDefinedCalc
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimUserDefinedCalculation::RimUserDefinedCalculation()
|
||||
: variableUpdated( this )
|
||||
{
|
||||
CAF_PDM_InitObject( "RimUserDefinedCalculation", ":/octave.png", "Calculation", "" );
|
||||
|
||||
|
@ -36,6 +36,9 @@ class RimUserDefinedCalculation : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
caf::Signal<> variableUpdated;
|
||||
|
||||
public:
|
||||
RimUserDefinedCalculation();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user