From f9a081eb87bb4fc6290e530395f6cd9487478dbb Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 31 Mar 2026 10:52:29 +0200 Subject: [PATCH] Migrate more classes to dynamic buttons --- .../Histogram/RimHistogramMultiPlot.cpp | 11 - .../Histogram/RimHistogramMultiPlot.h | 1 - .../Polygons/RimPolygonInView.cpp | 63 ++-- .../Polygons/RimPolygonInView.h | 3 +- .../Summary/RimSummaryCurve.cpp | 284 +++++++++--------- .../Summary/RimSummaryCurve.h | 6 +- .../Summary/RimSummaryCurveCollection.cpp | 36 +-- .../Summary/RimSummaryCurveCollection.h | 3 - .../Summary/RimSummaryMultiPlot.cpp | 28 +- .../Summary/RimSummaryMultiPlot.h | 1 - .../Summary/RimSummaryPlotManager.cpp | 78 ++--- .../Summary/RimSummaryPlotManager.h | 5 - .../PdmObjects/DemoPdmObject.cpp | 63 ++-- .../PdmObjects/DemoPdmObject.h | 6 +- .../PdmObjects/LineEditAndPushButtons.cpp | 58 +--- .../PdmObjects/LineEditAndPushButtons.h | 6 - .../cafPdmUiToolBarEditor.cpp | 1 - 17 files changed, 246 insertions(+), 407 deletions(-) diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.cpp index 063132a2f7..b4777779bf 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.cpp @@ -31,7 +31,6 @@ #include "RiuQwtPlotWidget.h" #include "cafPdmUiCheckBoxEditor.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeOrdering.h" #include "qwt_scale_engine.h" @@ -54,15 +53,10 @@ RimHistogramMultiPlot::RimHistogramMultiPlot() CAF_PDM_InitField( &m_autoSubPlotTitle, "AutoSubPlotTitle", true, "Auto Sub Plot Title" ); CAF_PDM_InitField( &m_disableWheelZoom, "DisableWheelZoom", true, "", "", "Disable Mouse Wheel Zooming in Multi Histogram Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_disableWheelZoom ); - m_disableWheelZoom.uiCapability()->setUiIconFromResourceString( ":/DisableZoom.png" ); CAF_PDM_InitField( &m_autoAdjustAppearance, "AutoAdjustAppearance", true, "Auto Plot Settings" ); caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_autoAdjustAppearance ); - CAF_PDM_InitField( &m_hidePlotsWithValuesBelow, "HidePlotsWithValuesBelow", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_hidePlotsWithValuesBelow ); - setBottomMargin( 40 ); } @@ -179,11 +173,6 @@ void RimHistogramMultiPlot::fieldChangedByUi( const caf::PdmFieldHandle* changed onLoadDataAndUpdate(); updateLayout(); } - else if ( changedField == &m_hidePlotsWithValuesBelow ) - { - m_hidePlotsWithValuesBelow = false; - updatePlotVisibility(); - } else if ( changedField == &m_autoAdjustAppearance ) { analyzePlotsAndAdjustAppearanceSettings(); diff --git a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.h b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.h index d02a8bfb40..5e7966a06f 100644 --- a/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Histogram/RimHistogramMultiPlot.h @@ -99,7 +99,6 @@ private: caf::PdmField m_autoSubPlotTitle; caf::PdmField m_disableWheelZoom; caf::PdmField m_autoAdjustAppearance; - caf::PdmField m_hidePlotsWithValuesBelow; std::map> m_gridLayoutInfo; }; diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp index beedbe5755..af4e390e37 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.cpp @@ -39,7 +39,7 @@ #include "cafCmdFeatureMenuBuilder.h" #include "cafDisplayCoordTransform.h" -#include "cafPdmUiPushButtonEditor.h" +#include "cafPdmUiButton.h" #include "cafPdmUiTableViewEditor.h" #include "cafPdmUiTreeAttributes.h" @@ -60,12 +60,6 @@ RimPolygonInView::RimPolygonInView() nameField()->uiCapability()->setUiReadOnly( true ); - CAF_PDM_InitField( &m_enablePicking, "EnablePicking", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_enablePicking ); - - CAF_PDM_InitField( &m_selectPolygon, "SelectPolygon", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_selectPolygon ); - CAF_PDM_InitField( &m_showLabel, "ShowLabel", false, "Show Label" ); CAF_PDM_InitField( &m_handleScalingFactor, "HandleScalingFactor", 2.0, "Handle Scaling Factor" ); @@ -193,7 +187,7 @@ std::vector RimPolygonInView::activeTargets() const //-------------------------------------------------------------------------------------------------- bool RimPolygonInView::pickingEnabled() const { - return m_enablePicking(); + return m_enablePicking; } //-------------------------------------------------------------------------------------------------- @@ -303,7 +297,13 @@ void RimPolygonInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin if ( enableEdit ) { - uiOrdering.add( &m_enablePicking ); + uiOrdering.addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", + [this]() + { + m_enablePicking = !m_enablePicking; + updateConnectedEditors(); + updateVisualization(); + } ); uiOrdering.add( &m_targets ); uiOrdering.add( &m_handleScalingFactor ); } @@ -312,7 +312,7 @@ void RimPolygonInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin if ( m_polygon() ) { - uiOrdering.add( &m_selectPolygon ); + uiOrdering.addNewButton( "Go to Polygon", [this]() { Riu3DMainWindowTools::selectAsCurrentItem( m_polygon() ); } ); } uiOrdering.skipRemainingFields(); @@ -323,16 +323,6 @@ void RimPolygonInView::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin //-------------------------------------------------------------------------------------------------- void RimPolygonInView::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) { - if ( changedField == &m_enablePicking ) - { - updateConnectedEditors(); - } - - if ( changedField == &m_selectPolygon && m_polygon() ) - { - Riu3DMainWindowTools::selectAsCurrentItem( m_polygon() ); - } - updateVisualization(); } @@ -388,7 +378,13 @@ void RimPolygonInView::defineObjectEditorAttribute( QString uiConfigName, caf::P //-------------------------------------------------------------------------------------------------- void RimPolygonInView::uiOrderingForLocalPolygon( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { - uiOrdering.add( &m_enablePicking ); + uiOrdering.addNewButton( m_enablePicking ? "Stop Picking Points" : "Start Picking Points", + [this]() + { + m_enablePicking = !m_enablePicking; + updateConnectedEditors(); + updateVisualization(); + } ); uiOrdering.add( &m_targets ); uiOrdering.add( &m_handleScalingFactor ); } @@ -463,31 +459,6 @@ double RimPolygonInView::scalingFactorForTarget() const //-------------------------------------------------------------------------------------------------- void RimPolygonInView::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) { - if ( field == &m_enablePicking ) - { - auto* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - if ( !m_enablePicking ) - { - pbAttribute->m_buttonText = "Start Picking Points"; - } - else - { - pbAttribute->m_buttonText = "Stop Picking Points"; - } - } - } - - if ( field == &m_selectPolygon ) - { - auto* pbAttribute = dynamic_cast( attribute ); - if ( pbAttribute ) - { - pbAttribute->m_buttonText = "Go to Polygon"; - } - } - if ( field == &m_targets ) { if ( auto tvAttribute = dynamic_cast( attribute ) ) diff --git a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h index d204e42dbf..64738607fa 100644 --- a/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h +++ b/ApplicationLibCode/ProjectDataModel/Polygons/RimPolygonInView.h @@ -97,8 +97,7 @@ private: private: caf::PdmPtrField m_polygon; - caf::PdmField m_selectPolygon; - caf::PdmField m_enablePicking; + bool m_enablePicking = false; caf::PdmField m_handleScalingFactor; caf::PdmChildArrayField m_targets; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp index 363b2865e2..1d8e008b4f 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.cpp @@ -53,9 +53,9 @@ #include "RiuSummaryVectorSelectionDialog.h" #include "cafAssert.h" +#include "cafPdmUiButton.h" #include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiLineEditor.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeOrdering.h" CAF_PDM_SOURCE_INIT( RimSummaryCurve, "SummaryCurve" ); @@ -79,10 +79,6 @@ RimSummaryCurve::RimSummaryCurve() CAF_PDM_InitFieldNoDefault( &m_yValuesSummaryAddress, "SummaryAddress", "Summary Address" ); m_yValuesSummaryAddress.uiCapability()->setUiTreeChildrenHidden( true ); - CAF_PDM_InitFieldNoDefault( &m_yPushButtonSelectSummaryAddress, "SelectAddress", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_yPushButtonSelectSummaryAddress ); - m_yPushButtonSelectSummaryAddress = false; - m_yValuesSummaryAddress = new RimSummaryAddress; CAF_PDM_InitFieldNoDefault( &m_yValuesResampling, "Resampling", "Resampling" ); @@ -108,10 +104,6 @@ RimSummaryCurve::RimSummaryCurve() CAF_PDM_InitFieldNoDefault( &m_xValuesSummaryAddress, "SummaryAddressX", "Summary Address" ); m_xValuesSummaryAddress.uiCapability()->setUiTreeChildrenHidden( true ); - CAF_PDM_InitFieldNoDefault( &m_xPushButtonSelectSummaryAddress, "SelectAddressX", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_xPushButtonSelectSummaryAddress ); - m_xPushButtonSelectSummaryAddress = false; - m_xValuesSummaryAddress = new RimSummaryAddress; CAF_PDM_InitFieldNoDefault( &m_plotAxis_OBSOLETE, "PlotAxis", "Axis" ); @@ -847,14 +839,6 @@ double RimSummaryCurve::computeCurveZValue() //-------------------------------------------------------------------------------------------------- void RimSummaryCurve::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) { - if ( &m_yPushButtonSelectSummaryAddress == field || &m_xPushButtonSelectSummaryAddress == field ) - { - caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->m_buttonText = "..."; - } - } } //-------------------------------------------------------------------------------------------------- @@ -877,7 +861,6 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering m_xValuesSummaryCase.uiCapability()->setUiHidden( isSummaryXHidden ); m_xValuesSummaryAddress.uiCapability()->setUiHidden( isSummaryXHidden ); m_xValuesSummaryAddressUiField.uiCapability()->setUiHidden( isSummaryXHidden ); - m_xPushButtonSelectSummaryAddress.uiCapability()->setUiHidden( isSummaryXHidden ); m_xPlotAxisProperties.uiCapability()->setUiHidden( isSummaryXHidden ); { @@ -885,7 +868,9 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword( curveDataGroupName, "curveDataGroupName" ); curveDataGroup->add( &m_yValuesSummaryCase, { .newRow = true, .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); curveDataGroup->add( &m_yValuesSummaryAddressUiField, { .newRow = true, .totalColumnSpan = 2, .leftLabelColumnSpan = 1 } ); - curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, { .newRow = false, .totalColumnSpan = 1, .leftLabelColumnSpan = 0 } ); + curveDataGroup->addNewButton( "...", + [this]() { selectYSummaryAddress(); }, + { .newRow = false, .totalColumnSpan = 1, .leftLabelColumnSpan = 0 } ); curveDataGroup->add( &m_yPlotAxisProperties, { .newRow = true, .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); caf::PdmUiGroup* detailGroup = curveDataGroup->addNewGroup( "Advanced Properties" ); @@ -903,7 +888,10 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering curveDataGroup->add( &m_xAxisType, { .newRow = true, .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); curveDataGroup->add( &m_xValuesSummaryCase, { .newRow = true, .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); curveDataGroup->add( &m_xValuesSummaryAddressUiField, { .newRow = true, .totalColumnSpan = 2, .leftLabelColumnSpan = 1 } ); - curveDataGroup->add( &m_xPushButtonSelectSummaryAddress, { .newRow = false, .totalColumnSpan = 1, .leftLabelColumnSpan = 0 } ); + auto* xButton = curveDataGroup->addNewButton( "...", + [this]() { selectXSummaryAddress(); }, + { .newRow = false, .totalColumnSpan = 1, .leftLabelColumnSpan = 0 } ); + xButton->setUiHidden( isSummaryXHidden ); curveDataGroup->add( &m_xPlotAxisProperties, { .newRow = true, .totalColumnSpan = 3, .leftLabelColumnSpan = 1 } ); } @@ -1100,8 +1088,7 @@ void RimSummaryCurve::fieldChangedByUi( const caf::PdmFieldHandle* changedField, auto plot = firstAncestorOrThisOfTypeAsserted(); - bool loadAndUpdate = false; - bool crossPlotTestForMatchingTimeSteps = false; + bool loadAndUpdate = false; if ( changedField == &m_yValuesSummaryAddressUiField ) { @@ -1176,140 +1163,147 @@ void RimSummaryCurve::fieldChangedByUi( const caf::PdmFieldHandle* changedField, onLoadDataAndUpdate( true ); dataChanged.send(); } - else if ( changedField == &m_yPushButtonSelectSummaryAddress ) - { - RiuSummaryVectorSelectionDialog dlg( RiaGuiApplication::widgetToUseAsParent() ); - RimSummaryCase* candidateCase = m_yValuesSummaryCase(); - RifEclipseSummaryAddress candicateAddress = m_yValuesSummaryAddress->address(); - - if ( candidateCase == nullptr ) - { - candidateCase = m_xValuesSummaryCase(); - } - - if ( !candicateAddress.isValid() ) - { - candicateAddress = m_xValuesSummaryAddress->address(); - } - - dlg.hideEnsembles(); - dlg.setCaseAndAddress( candidateCase, candicateAddress ); - - if ( dlg.exec() == QDialog::Accepted ) - { - auto curveSelection = dlg.curveSelection(); - if ( !curveSelection.empty() ) - { - m_yValuesSummaryCase = curveSelection[0].summaryCaseY(); - m_yValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); - - crossPlotTestForMatchingTimeSteps = true; - loadAndUpdate = true; - } - } - - m_yPushButtonSelectSummaryAddress = false; - } - else if ( changedField == &m_xPushButtonSelectSummaryAddress ) - { - RiuSummaryVectorSelectionDialog dlg( RiaGuiApplication::widgetToUseAsParent() ); - RimSummaryCase* candidateCase = m_xValuesSummaryCase(); - RifEclipseSummaryAddress candicateAddress = m_xValuesSummaryAddress->address(); - - if ( candidateCase == nullptr ) - { - candidateCase = m_yValuesSummaryCase(); - } - - if ( !candicateAddress.isValid() ) - { - candicateAddress = m_yValuesSummaryAddress->address(); - } - - dlg.hideEnsembles(); - dlg.setCaseAndAddress( candidateCase, candicateAddress ); - - if ( dlg.exec() == QDialog::Accepted ) - { - auto curveSelection = dlg.curveSelection(); - if ( !curveSelection.empty() ) - { - m_xValuesSummaryCase = curveSelection[0].summaryCaseY(); - m_xValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); - - crossPlotTestForMatchingTimeSteps = true; - loadAndUpdate = true; - } - } - - m_xPushButtonSelectSummaryAddress = false; - } else if ( changedField == &m_yCurveTypeMode || changedField == &m_yCurveType ) { calculateCurveInterpolationFromAddress(); } - if ( crossPlotTestForMatchingTimeSteps ) - { - auto curveValuesX = valuesX(); - auto curveTimeStepsX = timeStepsX(); - - auto curveValuesY = valuesY(); - auto curveTimeStepsY = timeStepsY(); - - if ( !curveValuesX.empty() && !curveValuesY.empty() ) - { - RiaTimeHistoryCurveMerger curveMerger( RiaCurveDefines::InterpolationMethod::LINEAR ); - curveMerger.addCurveData( curveTimeStepsX, curveValuesX ); - curveMerger.addCurveData( curveTimeStepsY, curveValuesY ); - - bool includeValuesFromPartialCurves = true; - curveMerger.computeInterpolatedValues( includeValuesFromPartialCurves ); - - if ( curveMerger.validIntervalsForAllXValues().empty() ) - { - QString description; - - { - QDateTime first = QDateTime::fromSecsSinceEpoch( curveTimeStepsX.front() ); - QDateTime last = QDateTime::fromSecsSinceEpoch( curveTimeStepsX.back() ); - - std::vector timeSteps; - timeSteps.push_back( first ); - timeSteps.push_back( last ); - - QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( timeSteps ); - - description += - QString( "Time step range for X : '%1' - '%2'" ).arg( first.toString( formatString ) ).arg( last.toString( formatString ) ); - } - - { - QDateTime first = QDateTime::fromSecsSinceEpoch( curveTimeStepsY.front() ); - QDateTime last = QDateTime::fromSecsSinceEpoch( curveTimeStepsY.back() ); - - std::vector timeSteps; - timeSteps.push_back( first ); - timeSteps.push_back( last ); - - QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( timeSteps ); - - description += "\n"; - description += - QString( "Time step range for Y : '%1' - '%2'" ).arg( first.toString( formatString ) ).arg( last.toString( formatString ) ); - } - - RiaLogging::errorInMessageBox( nullptr, "Detected no overlapping time steps", description ); - } - } - } - if ( loadAndUpdate ) { loadAndUpdateDataAndPlot(); } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurve::selectYSummaryAddress() +{ + RiuSummaryVectorSelectionDialog dlg( RiaGuiApplication::widgetToUseAsParent() ); + RimSummaryCase* candidateCase = m_yValuesSummaryCase(); + RifEclipseSummaryAddress candicateAddress = m_yValuesSummaryAddress->address(); + + if ( candidateCase == nullptr ) + { + candidateCase = m_xValuesSummaryCase(); + } + + if ( !candicateAddress.isValid() ) + { + candicateAddress = m_xValuesSummaryAddress->address(); + } + + dlg.hideEnsembles(); + dlg.setCaseAndAddress( candidateCase, candicateAddress ); + + if ( dlg.exec() == QDialog::Accepted ) + { + auto curveSelection = dlg.curveSelection(); + if ( !curveSelection.empty() ) + { + m_yValuesSummaryCase = curveSelection[0].summaryCaseY(); + m_yValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); + + checkForMatchingCrossPlotTimeSteps(); + loadAndUpdateDataAndPlot(); + } + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurve::selectXSummaryAddress() +{ + RiuSummaryVectorSelectionDialog dlg( RiaGuiApplication::widgetToUseAsParent() ); + RimSummaryCase* candidateCase = m_xValuesSummaryCase(); + RifEclipseSummaryAddress candicateAddress = m_xValuesSummaryAddress->address(); + + if ( candidateCase == nullptr ) + { + candidateCase = m_yValuesSummaryCase(); + } + + if ( !candicateAddress.isValid() ) + { + candicateAddress = m_yValuesSummaryAddress->address(); + } + + dlg.hideEnsembles(); + dlg.setCaseAndAddress( candidateCase, candicateAddress ); + + if ( dlg.exec() == QDialog::Accepted ) + { + auto curveSelection = dlg.curveSelection(); + if ( !curveSelection.empty() ) + { + m_xValuesSummaryCase = curveSelection[0].summaryCaseY(); + m_xValuesSummaryAddress->setAddress( curveSelection[0].summaryAddressY() ); + + checkForMatchingCrossPlotTimeSteps(); + loadAndUpdateDataAndPlot(); + } + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimSummaryCurve::checkForMatchingCrossPlotTimeSteps() +{ + auto curveValuesX = valuesX(); + auto curveTimeStepsX = timeStepsX(); + + auto curveValuesY = valuesY(); + auto curveTimeStepsY = timeStepsY(); + + if ( !curveValuesX.empty() && !curveValuesY.empty() ) + { + RiaTimeHistoryCurveMerger curveMerger( RiaCurveDefines::InterpolationMethod::LINEAR ); + curveMerger.addCurveData( curveTimeStepsX, curveValuesX ); + curveMerger.addCurveData( curveTimeStepsY, curveValuesY ); + + bool includeValuesFromPartialCurves = true; + curveMerger.computeInterpolatedValues( includeValuesFromPartialCurves ); + + if ( curveMerger.validIntervalsForAllXValues().empty() ) + { + QString description; + + { + QDateTime first = QDateTime::fromSecsSinceEpoch( curveTimeStepsX.front() ); + QDateTime last = QDateTime::fromSecsSinceEpoch( curveTimeStepsX.back() ); + + std::vector timeSteps; + timeSteps.push_back( first ); + timeSteps.push_back( last ); + + QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( timeSteps ); + + description += + QString( "Time step range for X : '%1' - '%2'" ).arg( first.toString( formatString ) ).arg( last.toString( formatString ) ); + } + + { + QDateTime first = QDateTime::fromSecsSinceEpoch( curveTimeStepsY.front() ); + QDateTime last = QDateTime::fromSecsSinceEpoch( curveTimeStepsY.back() ); + + std::vector timeSteps; + timeSteps.push_back( first ); + timeSteps.push_back( last ); + + QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( timeSteps ); + + description += "\n"; + description += + QString( "Time step range for Y : '%1' - '%2'" ).arg( first.toString( formatString ) ).arg( last.toString( formatString ) ); + } + + RiaLogging::errorInMessageBox( nullptr, "Detected no overlapping time steps", description ); + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h index 9a533d8a3d..13ef31016a 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurve.h @@ -135,6 +135,10 @@ protected: void hideXAxisGroup(); + void selectYSummaryAddress(); + void selectXSummaryAddress(); + void checkForMatchingCrossPlotTimeSteps(); + private: RifSummaryReaderInterface* valuesSummaryReaderX() const; RifSummaryReaderInterface* valuesSummaryReaderY() const; @@ -149,7 +153,6 @@ private: caf::PdmPtrField m_yValuesSummaryCase; caf::PdmChildField m_yValuesSummaryAddress; caf::PdmField m_yValuesSummaryAddressUiField; - caf::PdmField m_yPushButtonSelectSummaryAddress; caf::PdmPtrField m_yPlotAxisProperties; caf::PdmField m_yValuesResampling; @@ -161,7 +164,6 @@ private: caf::PdmPtrField m_xValuesSummaryCase; caf::PdmChildField m_xValuesSummaryAddress; caf::PdmField m_xValuesSummaryAddressUiField; - caf::PdmField m_xPushButtonSelectSummaryAddress; caf::PdmPtrField m_xPlotAxisProperties; caf::PdmChildField m_curveNameConfig; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp index e9af288277..bf1954bcc7 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.cpp @@ -32,7 +32,7 @@ #include "RiuSummaryQwtPlot.h" #include "cafPdmFieldReorderCapability.h" -#include "cafPdmUiPushButtonEditor.h" +#include "cafPdmUiButton.h" #include "cafPdmUiTreeAttributes.h" #include "cafPdmUiTreeViewEditor.h" @@ -56,9 +56,6 @@ RimSummaryCurveCollection::RimSummaryCurveCollection() CAF_PDM_InitField( &m_showCurves, "IsActive", true, "Show Curves" ); m_showCurves.uiCapability()->setUiHidden( true ); - CAF_PDM_InitField( &m_editPlot, "EditPlot", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_editPlot ); - CAF_PDM_InitFieldNoDefault( &m_ySourceStepping, "YSourceStepping", "" ); m_ySourceStepping = new RimSummaryPlotSourceStepping; m_ySourceStepping.uiCapability()->setUiTreeChildrenHidden( true ); @@ -364,30 +361,6 @@ void RimSummaryCurveCollection::fieldChangedByUi( const caf::PdmFieldHandle* cha { loadDataAndUpdate( true ); } - else if ( changedField == &m_editPlot ) - { - auto plot = firstAncestorOrThisOfType(); - if ( plot ) - { - RicEditSummaryPlotFeature::editSummaryPlot( plot ); - } - m_editPlot = false; - } -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimSummaryCurveCollection::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) -{ - if ( &m_editPlot == field ) - { - caf::PdmUiPushButtonEditorAttribute* attrib = dynamic_cast( attribute ); - if ( attrib ) - { - attrib->m_buttonText = "Edit Plot"; - } - } } //-------------------------------------------------------------------------------------------------- @@ -412,6 +385,13 @@ void RimSummaryCurveCollection::onChildDeleted( caf::PdmChildArrayFieldHandle* c //-------------------------------------------------------------------------------------------------- void RimSummaryCurveCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { + uiOrdering.addNewButton( "Edit Plot", + [this]() + { + auto plot = firstAncestorOrThisOfType(); + if ( plot ) RicEditSummaryPlotFeature::editSummaryPlot( plot ); + } ); + uiOrdering.skipRemainingFields(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h index 1190f1902e..391f7f734d 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCurveCollection.h @@ -91,8 +91,6 @@ private: 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 onCurvesReordered( const SignalEmitter* emitter ); void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray, std::vector& referringObjects ) override; @@ -103,7 +101,6 @@ private: caf::PdmField m_showCurves; caf::PdmChildArrayField m_curves; - caf::PdmField m_editPlot; caf::PdmChildField m_ySourceStepping; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp index 34af9548e6..11092f7b0c 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.cpp @@ -61,11 +61,11 @@ #include "RiuSummaryMultiPlotBook.h" #include "RiuSummaryVectorSelectionUi.h" +#include "cafPdmUiButton.h" #include "cafPdmUiCheckBoxEditor.h" #include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiLabelEditor.h" #include "cafPdmUiNumberFormat.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeOrdering.h" #include "cafPdmUiTreeSelectionEditor.h" #include "cafSelectionManager.h" @@ -120,27 +120,21 @@ RimSummaryMultiPlot::RimSummaryMultiPlot() CAF_PDM_InitField( &m_autoSubPlotTitle, "AutoSubPlotTitle", true, "Auto Sub Plot Title" ); CAF_PDM_InitField( &m_createPlotDuplicate, "DuplicatePlot", false, "", "", "Duplicate Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_createPlotDuplicate ); m_createPlotDuplicate.uiCapability()->setUiIconFromResourceString( ":/Copy.svg" ); CAF_PDM_InitField( &m_disableWheelZoom, "DisableWheelZoom", true, "", "", "Disable Mouse Wheel Zooming in Multi Summary Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_disableWheelZoom ); m_disableWheelZoom.uiCapability()->setUiIconFromResourceString( ":/DisableZoom.png" ); CAF_PDM_InitField( &m_appendNextPlot, "AppendNextPlot", false, "", "", "Step Next and Add to New Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_appendNextPlot ); m_appendNextPlot.uiCapability()->setUiIconFromResourceString( ":/AppendNext.png" ); CAF_PDM_InitField( &m_appendPrevPlot, "AppendPrevPlot", false, "", "", "Step Previous and Add to New Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_appendPrevPlot ); m_appendPrevPlot.uiCapability()->setUiIconFromResourceString( ":/AppendPrev.png" ); CAF_PDM_InitField( &m_appendNextCurve, "AppendNextCurve", false, "", "", "Step Next and Add Curve to Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_appendNextCurve ); m_appendNextCurve.uiCapability()->setUiIconFromResourceString( ":/AppendNextCurve.png" ); CAF_PDM_InitField( &m_appendPrevCurve, "AppendPrevCurve", false, "", "", "Step Previous and Add Curve to Plot" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_appendPrevCurve ); m_appendPrevCurve.uiCapability()->setUiIconFromResourceString( ":/AppendPrevCurve.png" ); CAF_PDM_InitField( &m_linkSubPlotAxes, "LinkSubPlotAxes", false, "Link Y Axes" ); @@ -162,9 +156,6 @@ RimSummaryMultiPlot::RimSummaryMultiPlot() CAF_PDM_InitFieldNoDefault( &m_axisRangeAggregation, "AxisRangeAggregation", "Y Axis Range" ); - CAF_PDM_InitField( &m_hidePlotsWithValuesBelow, "HidePlotsWithValuesBelow", false, "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_hidePlotsWithValuesBelow ); - CAF_PDM_InitField( &m_plotFilterYAxisThreshold, "PlotFilterYAxisThreshold", 0.0, "Y-Axis Filter Threshold" ); CAF_PDM_InitFieldNoDefault( &m_sourceStepping, "SourceStepping", "" ); @@ -413,7 +404,7 @@ void RimSummaryMultiPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde auto plotVisibilityFilterGroup = uiOrdering.addNewGroup( "Plot Visibility Filter" ); plotVisibilityFilterGroup->add( &m_plotFilterYAxisThreshold ); - plotVisibilityFilterGroup->add( &m_hidePlotsWithValuesBelow, { .newRow = false } ); + plotVisibilityFilterGroup->addNewButton( "Apply Filter", [this]() { updatePlotVisibility(); }, { .newRow = false } ); auto dataSourceGroup = uiOrdering.addNewGroup( "Data Source" ); dataSourceGroup->setCollapsedByDefault(); @@ -483,11 +474,6 @@ void RimSummaryMultiPlot::fieldChangedByUi( const caf::PdmFieldHandle* changedFi analyzePlotsAndAdjustAppearanceSettings(); zoomAll(); } - else if ( changedField == &m_hidePlotsWithValuesBelow ) - { - m_hidePlotsWithValuesBelow = false; - updatePlotVisibility(); - } else if ( changedField == &m_createPlotDuplicate ) { m_createPlotDuplicate = false; @@ -552,14 +538,7 @@ void RimSummaryMultiPlot::childFieldChangedByUi( const caf::PdmFieldHandle* chan //-------------------------------------------------------------------------------------------------- void RimSummaryMultiPlot::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) { - if ( &m_hidePlotsWithValuesBelow == field ) - { - if ( auto attrib = dynamic_cast( attribute ) ) - { - attrib->m_buttonText = "Apply Filter"; - } - } - else if ( field == &m_goToCommonSettings ) + if ( field == &m_goToCommonSettings ) { if ( auto labelEditorAttribute = dynamic_cast( attribute ) ) { @@ -1256,6 +1235,7 @@ void RimSummaryMultiPlot::updatePlotVisibility() } updateLayout(); + updateConnectedEditors(); if ( !m_viewer.isNull() ) m_viewer->scheduleUpdate(); } diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h index 53dafd5d29..003a464ef1 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryMultiPlot.h @@ -171,7 +171,6 @@ private: caf::PdmChildField m_readOutSettings; caf::PdmField m_goToCommonSettings; - caf::PdmField m_hidePlotsWithValuesBelow; caf::PdmField m_plotFilterYAxisThreshold; caf::PdmField m_appendNextPlot; diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.cpp index a2ca62acae..45a45f22a6 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.cpp @@ -46,11 +46,11 @@ #include "RiuPlotMainWindowTools.h" #include "cafPdmObjectHandle.h" +#include "cafPdmUiButton.h" #include "cafPdmUiCheckBoxEditor.h" #include "cafPdmUiComboBoxEditor.h" #include "cafPdmUiLabelEditor.h" #include "cafPdmUiLineEditor.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTextEditor.h" #include "cafPdmUiTreeSelectionEditor.h" #include "cafSelectionManager.h" @@ -93,20 +93,6 @@ RimSummaryPlotManager::RimSummaryPlotManager() "" ); m_includeDiffCurves.uiCapability()->setUiEditorTypeName( caf::PdmUiNativeCheckBoxEditor::uiEditorTypeName() ); - CAF_PDM_InitFieldNoDefault( &m_pushButtonReplace, "PushButtonReplace", "Replace (CTRL + Enter)" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonReplace ); - - CAF_PDM_InitFieldNoDefault( &m_pushButtonNewPlot, "PushButtonNewPlot", "New (Alt + Enter)" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonNewPlot ); - - CAF_PDM_InitFieldNoDefault( &m_pushButtonAppend, "PushButtonAppend", "Append (Shift + Enter)" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonAppend ); - - CAF_PDM_InitFieldNoDefault( &m_labelA, "LabelA", "" ); - m_labelA.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() ); - m_labelA.xmlCapability()->disableIO(); - m_labelA.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::LabelPosition::HIDDEN ); - CAF_PDM_InitFieldNoDefault( &m_labelB, "LabelB", "" ); m_labelB.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() ); m_labelB.xmlCapability()->disableIO(); @@ -159,24 +145,6 @@ void RimSummaryPlotManager::fieldChangedByUi( const caf::PdmFieldHandle* changed updateSelectionFromUiChange(); updateCurveCandidates(); } - else if ( changedField == &m_pushButtonReplace ) - { - replaceCurves(); - m_pushButtonReplace = false; - updateFilterTextHistory(); - } - else if ( changedField == &m_pushButtonNewPlot ) - { - createNewPlot(); - m_pushButtonNewPlot = false; - updateFilterTextHistory(); - } - else if ( changedField == &m_pushButtonAppend ) - { - appendCurves(); - m_pushButtonAppend = false; - updateFilterTextHistory(); - } } //-------------------------------------------------------------------------------------------------- @@ -299,25 +267,6 @@ std::vector RimSummaryPlotManager::dataSourceDisplayNames() const //-------------------------------------------------------------------------------------------------- void RimSummaryPlotManager::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) { - { - auto attr = dynamic_cast( attribute ); - if ( attr ) - { - if ( field == &m_pushButtonReplace ) - { - attr->m_buttonText = "Replace Curves \n(Ctrl + Enter)"; - } - if ( field == &m_pushButtonNewPlot ) - { - attr->m_buttonText = "Create New Plot \n(Enter)"; - } - if ( field == &m_pushButtonAppend ) - { - attr->m_buttonText = "Append Curves \n(Shift + Enter)"; - } - } - } - if ( field == &m_filterText ) { auto attr = dynamic_cast( attribute ); @@ -349,10 +298,27 @@ void RimSummaryPlotManager::defineUiOrdering( QString uiConfigName, caf::PdmUiOr uiOrdering.add( &m_individualPlotPerObject ); uiOrdering.appendToRow( &m_createMultiPlot ); - uiOrdering.add( &m_pushButtonAppend ); - uiOrdering.appendToRow( &m_pushButtonReplace ); - uiOrdering.appendToRow( &m_labelB ); - uiOrdering.appendToRow( &m_pushButtonNewPlot ); + uiOrdering.addNewButton( "Append Curves \n(Shift + Enter)", + [this]() + { + appendCurves(); + updateFilterTextHistory(); + } ); + uiOrdering.addNewButton( "Replace Curves \n(Ctrl + Enter)", + [this]() + { + replaceCurves(); + updateFilterTextHistory(); + }, + { .newRow = false } ); + uiOrdering.add( &m_labelB, { .newRow = false } ); + uiOrdering.addNewButton( "Create New Plot \n(Enter)", + [this]() + { + createNewPlot(); + updateFilterTextHistory(); + }, + { .newRow = false } ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.h b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.h index c01e7aabef..e267d6ce13 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.h +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryPlotManager.h @@ -91,16 +91,11 @@ private: caf::PdmField m_includeDiffCurves; - caf::PdmField m_pushButtonReplace; - caf::PdmField m_pushButtonNewPlot; - caf::PdmField m_pushButtonAppend; - caf::PdmField m_individualPlotPerVector; caf::PdmField m_individualPlotPerDataSource; caf::PdmField m_individualPlotPerObject; caf::PdmField m_createMultiPlot; - caf::PdmField m_labelA; caf::PdmField m_labelB; QStringList m_previousDataSourceText; diff --git a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.cpp b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.cpp index 5a1db1c8cf..f35a0b1119 100644 --- a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.cpp +++ b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.cpp @@ -4,9 +4,9 @@ #include "SmallDemoPdmObject.h" +#include "cafPdmUiButton.h" #include "cafPdmUiFilePathEditor.h" #include "cafPdmUiOrdering.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTableView.h" #include "cafPdmUiTableViewEditor.h" #include "cafPdmUiTextEditor.h" @@ -23,15 +23,6 @@ DemoPdmObject::DemoPdmObject() CAF_PDM_InitField( &m_toggleField, "Toggle", false, "Toggle Field", "", "Toggle Field tooltip", " Toggle Field whatsthis" ); - CAF_PDM_InitField( &m_applyAutoOnChildObjectFields, "ApplyAutoValue", false, "Apply Auto Values" ); - m_applyAutoOnChildObjectFields.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() ); - m_applyAutoOnChildObjectFields.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, - "Apply Auto Values" ); - - CAF_PDM_InitField( &m_updateAutoValues, "UpdateAutoValue", false, "Update Auto Values" ); - m_updateAutoValues.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() ); - m_updateAutoValues.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, "Update Auto Values" ); - CAF_PDM_InitField( &m_doubleField, "BigNumber", 0.0, @@ -130,8 +121,8 @@ void DemoPdmObject::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& { uiOrdering.add( &m_sizeField ); - uiOrdering.add( &m_applyAutoOnChildObjectFields ); - uiOrdering.add( &m_updateAutoValues ); + uiOrdering.addNewButton( "Apply Auto Values", [this]() { applyAutoValues(); } ); + uiOrdering.addNewButton( "Update Auto Values", [this]() { updateAutoValues(); } ); uiOrdering.add( &m_minMaxSlider ); @@ -187,37 +178,45 @@ void DemoPdmObject::fieldChangedByUi( const caf::PdmFieldHandle* changedField, { std::cout << "Toggle Field changed" << std::endl; } +} +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void DemoPdmObject::applyAutoValues() +{ static int counter = 0; counter++; double doubleValue = 1.23456 + counter; int intValue = -1213141516 + counter; auto enumValue = SmallDemoPdmObjectA::TestEnumType::T2; - if ( changedField == &m_applyAutoOnChildObjectFields ) + auto objs = descendantsIncludingThisOfType(); + for ( auto obj : objs ) { - auto objs = descendantsIncludingThisOfType(); - for ( auto obj : objs ) - { - obj->enableAutoValueForDouble( doubleValue ); - obj->enableAutoValueForInt( intValue ); - obj->enableAutoValueForTestEnum( enumValue ); - } - - m_applyAutoOnChildObjectFields = false; + obj->enableAutoValueForDouble( doubleValue ); + obj->enableAutoValueForInt( intValue ); + obj->enableAutoValueForTestEnum( enumValue ); } +} - if ( changedField == &m_updateAutoValues ) +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void DemoPdmObject::updateAutoValues() +{ + static int counter = 0; + counter++; + double doubleValue = 1.23456 + counter; + int intValue = -1213141516 + counter; + auto enumValue = SmallDemoPdmObjectA::TestEnumType::T2; + + auto objs = descendantsIncludingThisOfType(); + for ( auto obj : objs ) { - auto objs = descendantsIncludingThisOfType(); - for ( auto obj : objs ) - { - obj->setAutoValueForDouble( doubleValue ); - obj->setAutoValueForInt( intValue ); - obj->setAutoValueForTestEnum( enumValue ); - } - - m_updateAutoValues = false; + obj->setAutoValueForDouble( doubleValue ); + obj->setAutoValueForInt( intValue ); + obj->setAutoValueForTestEnum( enumValue ); } } diff --git a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.h b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.h index f69a6fab63..0da4e1e48d 100644 --- a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.h +++ b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/DemoPdmObject.h @@ -31,6 +31,10 @@ public: protected: void defineCustomContextMenu( const caf::PdmFieldHandle* fieldNeedingMenu, QMenu* menu, QWidget* fieldEditorWidget ) override; +private: + void applyAutoValues(); + void updateAutoValues(); + private: caf::PdmField m_boolField; caf::PdmField m_doubleField; @@ -50,8 +54,6 @@ private: caf::PdmPtrField m_ptrField; caf::PdmField m_toggleField; - caf::PdmField m_applyAutoOnChildObjectFields; - caf::PdmField m_updateAutoValues; MenuItemProducer* m_menuItemProducer; }; diff --git a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.cpp b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.cpp index afc7961602..52449eed63 100644 --- a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.cpp +++ b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.cpp @@ -1,9 +1,9 @@ #include "LineEditAndPushButtons.h" +#include "cafPdmUiButton.h" #include "cafPdmUiLabelEditor.h" #include "cafPdmUiLineEditor.h" #include "cafPdmUiListEditor.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiTreeSelectionEditor.h" #include @@ -40,24 +40,6 @@ LineEditAndPushButtons::LineEditAndPushButtons() m_textListField.uiCapability()->setUiEditorTypeName( caf::PdmUiListEditor::uiEditorTypeName() ); m_textListField.uiCapability()->setAttribute( caf::PdmUiListEditor::Keys::HEIGHT_HINT, 150 ); - CAF_PDM_InitFieldNoDefault( &m_pushButton_a, "PushButtonA", "Rotate", "", "", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButton_a ); - m_pushButton_a.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, "&Push Me" ); - - CAF_PDM_InitFieldNoDefault( &m_pushButtonReplace, "PushButtonB", "Replace (CTRL + Enter)", "", "", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonReplace ); - m_pushButtonReplace.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, - "Replace (Ctrl + Enter)" ); - - CAF_PDM_InitFieldNoDefault( &m_pushButtonClear, "PushButtonC", "Clear (Alt + Enter)", "", "", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonClear ); - m_pushButtonClear.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, "Clear (Alt + Enter)" ); - - CAF_PDM_InitFieldNoDefault( &m_pushButtonAppend, "PushButtonD", "Append (Shift + Enter)", "", "", "" ); - caf::PdmUiPushButtonEditor::configureEditorLabelHidden( &m_pushButtonAppend ); - m_pushButtonAppend.uiCapability()->setAttribute( caf::PdmUiPushButtonEditor::Keys::BUTTON_TEXT, - "Append (Shift + Enter)" ); - std::vector items; items.push_back( "sldkfj" ); items.push_back( "annet sldkfj" ); @@ -75,11 +57,6 @@ void LineEditAndPushButtons::fieldChangedByUi( const caf::PdmFieldHandle* change const QVariant& oldValue, const QVariant& newValue ) { - if ( changedField == &m_pushButton_a ) - { - rotateContent(); - } - if ( changedField == &m_textField ) { auto mods = QGuiApplication::keyboardModifiers(); @@ -97,24 +74,6 @@ void LineEditAndPushButtons::fieldChangedByUi( const caf::PdmFieldHandle* change m_statusTextField = m_textField; } } - - if ( changedField == &m_pushButtonReplace ) - { - replaceText(); - } - if ( changedField == &m_pushButtonClear ) - { - clearText(); - } - if ( changedField == &m_pushButtonAppend ) - { - appendText(); - } - - m_pushButton_a = false; - m_pushButtonReplace = false; - m_pushButtonClear = false; - m_pushButtonAppend = false; } //-------------------------------------------------------------------------------------------------- @@ -122,6 +81,15 @@ void LineEditAndPushButtons::fieldChangedByUi( const caf::PdmFieldHandle* change //-------------------------------------------------------------------------------------------------- void LineEditAndPushButtons::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) { + uiOrdering.add( &m_statusTextField ); + uiOrdering.add( &m_textField ); + uiOrdering.add( &m_labelField ); + uiOrdering.add( &m_labelLongTextField ); + uiOrdering.add( &m_textListField ); + uiOrdering.addNewButton( "&Push Me", [this]() { rotateContent(); } ); + uiOrdering.addNewButton( "Replace (Ctrl + Enter)", [this]() { replaceText(); } ); + uiOrdering.addNewButton( "Clear (Alt + Enter)", [this]() { clearText(); } ); + uiOrdering.addNewButton( "Append (Shift + Enter)", [this]() { appendText(); } ); } //-------------------------------------------------------------------------------------------------- @@ -150,6 +118,8 @@ void LineEditAndPushButtons::rotateContent() tmp.insert( tmp.begin(), newContent.begin(), newContent.end() ); m_textListField = tmp; + + updateConnectedEditors(); } //-------------------------------------------------------------------------------------------------- @@ -161,6 +131,8 @@ void LineEditAndPushButtons::appendText() original.push_back( m_textField ); m_textListField = original; + + updateConnectedEditors(); } //-------------------------------------------------------------------------------------------------- @@ -178,4 +150,6 @@ void LineEditAndPushButtons::replaceText() void LineEditAndPushButtons::clearText() { m_textListField = std::vector(); + + updateConnectedEditors(); } diff --git a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.h b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.h index 37bc303052..a0389c7dd1 100644 --- a/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.h +++ b/Fwk/AppFwk/cafTests/cafTestApplication/PdmObjects/LineEditAndPushButtons.h @@ -29,10 +29,4 @@ private: caf::PdmField m_labelLongTextField; caf::PdmField> m_textListField; - - caf::PdmField m_pushButton_a; - - caf::PdmField m_pushButtonReplace; - caf::PdmField m_pushButtonClear; - caf::PdmField m_pushButtonAppend; }; diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp index ad8ee18965..35c26f277f 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiToolBarEditor.cpp @@ -45,7 +45,6 @@ #include "cafPdmUiLineEditor.h" #include "cafPdmUiObjectHandle.h" #include "cafPdmUiOrdering.h" -#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiToolButtonEditor.h" #include