Use modern, fieldless buttons (#13056)

* Use modern buttons
This commit is contained in:
JJ
2025-10-21 18:36:24 +02:00
committed by GitHub
parent c2c26bc7c0
commit 54a890e13f
2 changed files with 36 additions and 86 deletions
@@ -54,6 +54,7 @@
#include "Riu3DMainWindowTools.h"
#include "cafPdmUiButton.h"
#include "cafPdmUiCheckBoxEditor.h"
#include "cafPdmUiComboBoxEditor.h"
#include "cafPdmUiFilePathEditor.h"
@@ -143,22 +144,6 @@ RimOpmFlowJob::RimOpmFlowJob()
CAF_PDM_InitField( &m_numberOfNewDates, "NumberOfNewDates", 12, "Number of Dates to Append" );
CAF_PDM_InitField( &m_dateAppendType, "DateAppendType", caf::AppEnum<DateAppendType>( DateAppendType::ADD_MONTHS ), " " );
CAF_PDM_InitField( &m_runButton, "runButton", false, "" );
caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_runButton );
m_runButton.xmlCapability()->disableIO();
CAF_PDM_InitField( &m_stopButton, "stopButton", false, "" );
caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_stopButton );
m_stopButton.xmlCapability()->disableIO();
CAF_PDM_InitField( &m_resetRunIdButton, "resetRunIdButton", false, " " );
caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_resetRunIdButton );
m_resetRunIdButton.xmlCapability()->disableIO();
CAF_PDM_InitField( &m_openSelectButton, "openSelectButton", false, " " );
caf::PdmUiPushButtonEditor::configureEditorLabelLeft( &m_openSelectButton );
m_openSelectButton.xmlCapability()->disableIO();
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_addToEnsemble );
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_pauseBeforeRun );
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useRestart );
@@ -239,40 +224,6 @@ void RimOpmFlowJob::defineEditorAttribute( const caf::PdmFieldHandle* field, QSt
myAttr->m_selectDirectory = true;
}
}
else if ( field == &m_runButton )
{
auto* pbAttribute = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
if ( pbAttribute )
{
pbAttribute->m_buttonText = "Run Simulation";
pbAttribute->m_buttonIcon = QIcon( ":/Play.svg" );
}
}
else if ( field == &m_stopButton )
{
auto* pbAttribute = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
if ( pbAttribute )
{
pbAttribute->m_buttonText = "Stop";
pbAttribute->m_buttonIcon = QIcon( ":/stop.svg" );
}
}
else if ( field == &m_openSelectButton )
{
auto* pbAttribute = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
if ( pbAttribute )
{
pbAttribute->m_buttonText = "Select Open Keyword Position";
}
}
else if ( field == &m_resetRunIdButton )
{
auto* pbAttribute = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( attribute );
if ( pbAttribute )
{
pbAttribute->m_buttonText = "Reset Ensemble Run Id";
}
}
else if ( field == &m_wellGroupName )
{
auto attr = dynamic_cast<caf::PdmUiComboBoxEditorAttribute*>( attribute );
@@ -296,7 +247,9 @@ void RimOpmFlowJob::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
auto runGrp = uiOrdering.addNewGroup( "Running" );
m_workDir.uiCapability()->setUiReadOnly( true );
runGrp->add( &m_workDir );
runGrp->add( &m_stopButton );
auto stopButton = runGrp->addNewButton( "Stop", [this]() { RicStopJobFeature::stopJob( this ); } );
stopButton->setUiIconFromResourceString( ":/stop.svg" );
stopButton->setAlignment( Qt::AlignCenter );
uiOrdering.skipRemainingFields();
return;
}
@@ -337,6 +290,8 @@ void RimOpmFlowJob::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
wellGrp->add( &m_wellOpenType );
bool createOpenPostionButton = false;
if ( m_fileDeckHasDates )
{
if ( m_wellOpenType() == WellOpenType::OPEN_AT_DATE )
@@ -354,16 +309,23 @@ void RimOpmFlowJob::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
}
else if ( m_wellOpenType == WellOpenType::OPEN_BY_POSITION )
{
wellGrp->add( &m_openSelectButton );
createOpenPostionButton = true;
}
m_wellOpenType.uiCapability()->setUiReadOnly( false );
}
else
{
wellGrp->add( &m_openSelectButton );
createOpenPostionButton = true;
m_wellOpenType = WellOpenType::OPEN_BY_POSITION;
m_wellOpenType.uiCapability()->setUiReadOnly( true );
}
if ( createOpenPostionButton )
{
auto openSelectButton = wellGrp->addNewButton( "Select Open Keyword Position", [this]() { selectOpenWellPosition(); } );
openSelectButton->setAlignment( Qt::AlignRight );
}
}
}
@@ -381,7 +343,11 @@ void RimOpmFlowJob::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
}
auto opmGrp = uiOrdering.addNewGroup( "OPM Flow" );
opmGrp->add( &m_runButton );
auto runButton = opmGrp->addNewButton( "Run", [this]() { RicRunJobFeature::runJob( this ); } );
runButton->setUiIconFromResourceString( ":/Play.svg" );
runButton->setAlignment( Qt::AlignCenter );
opmGrp->add( &m_pauseBeforeRun );
if ( m_fileDeckHasDates )
{
@@ -396,7 +362,9 @@ void RimOpmFlowJob::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
{
auto advOpmGrp = opmGrp->addNewGroup( "Advanced" );
advOpmGrp->setCollapsedByDefault();
advOpmGrp->add( &m_resetRunIdButton );
auto resetRunIdButton = advOpmGrp->addNewButton( "Reset Ensemble Run Id", [this]() { resetEnsembleRunId(); } );
resetRunIdButton->setAlignment( Qt::AlignRight );
}
uiOrdering.skipRemainingFields();
@@ -507,33 +475,6 @@ void RimOpmFlowJob::fieldChangedByUi( const caf::PdmFieldHandle* changedField, c
{
m_deckName = "";
}
else if ( changedField == &m_runButton )
{
m_runButton = false;
RicRunJobFeature::runJob( this );
}
else if ( changedField == &m_stopButton )
{
m_stopButton = false;
RicStopJobFeature::stopJob( this );
}
else if ( changedField == &m_resetRunIdButton )
{
m_resetRunIdButton = false;
auto reply = QMessageBox::information( nullptr,
"Opm Flow Job",
"Do you want to reset the ensemble run ID to 0?",
QMessageBox::Yes | QMessageBox::No );
if ( reply == QMessageBox::Yes )
{
m_currentRunId = 0;
}
}
else if ( changedField == &m_openSelectButton )
{
m_openSelectButton = false;
selectOpenWellPosition();
}
else if ( changedField == &m_wellPath )
{
if ( ( m_wellPath() != nullptr ) && ( m_wellPath->completionSettings() != nullptr ) )
@@ -1200,6 +1141,18 @@ void RimOpmFlowJob::selectOpenWellPosition()
m_openWellDeckPosition = RimDeckPositionDlg::askForPosition( nullptr, kwVec, "--- Open New Well HERE ---", m_openWellDeckPosition );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimOpmFlowJob::resetEnsembleRunId()
{
if ( QMessageBox::information( nullptr, "Opm Flow Job", "Do you want to reset the ensemble run ID to 0?", QMessageBox::Yes | QMessageBox::No ) ==
QMessageBox::Yes )
{
m_currentRunId = 0;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -104,19 +104,16 @@ private:
void exportBasicWellSettings();
std::string exportMswWellSettings( int timeStep );
void selectOpenWellPosition();
void resetEnsembleRunId();
private:
caf::PdmField<caf::FilePath> m_deckFileName;
caf::PdmField<caf::FilePath> m_workDir;
caf::PdmField<bool> m_runButton;
caf::PdmField<bool> m_stopButton;
caf::PdmField<bool> m_openSelectButton;
caf::PdmField<int> m_openWellDeckPosition;
caf::PdmField<bool> m_pauseBeforeRun;
caf::PdmField<bool> m_addToEnsemble;
caf::PdmField<int> m_currentRunId;
caf::PdmField<bool> m_resetRunIdButton;
caf::PdmField<bool> m_useRestart;
caf::PdmPtrField<RimWellPath*> m_wellPath;