Migrate more classes to dynamic buttons

This commit is contained in:
Magne Sjaastad authored and GitHub committed 2026-03-31 10:52:29 +02:00
1 parent a8ac98ce06
commit f9a081eb87
17 files changed
+246 -407

No files matched your search

@@ -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();
@@ -99,7 +99,6 @@ private:
caf::PdmField<bool> m_autoSubPlotTitle;
caf::PdmField<bool> m_disableWheelZoom;
caf::PdmField<bool> m_autoAdjustAppearance;
caf::PdmField<bool> m_hidePlotsWithValuesBelow;
std::map<RimHistogramPlot*, std::pair<int, int>> m_gridLayoutInfo;
};
@@ -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<RimPolylineTarget*> 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<caf::PdmUiPushButtonEditorAttribute*>( 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<caf::PdmUiPushButtonEditorAttribute*>( attribute );
if ( pbAttribute )
{
pbAttribute->m_buttonText = "Go to Polygon";
}
}
if ( field == &m_targets )
{
if ( auto tvAttribute = dynamic_cast<caf::PdmUiTableViewEditorAttribute*>( attribute ) )
@@ -97,8 +97,7 @@ private:
private:
caf::PdmPtrField<RimPolygon*> m_polygon;
caf::PdmField<bool> m_selectPolygon;
caf::PdmField<bool> m_enablePicking;
bool m_enablePicking = false;
caf::PdmField<double> m_handleScalingFactor;
caf::PdmChildArrayField<RimPolylineTarget*> m_targets;
@@ -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<caf::PdmUiPushButtonEditorAttribute*>( 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<RimSummaryPlot>();
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<QDateTime> 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<QDateTime> 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<QDateTime> 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<QDateTime> 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 );
}
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -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<RimSummaryCase*> m_yValuesSummaryCase;
caf::PdmChildField<RimSummaryAddress*> m_yValuesSummaryAddress;
caf::PdmField<RifEclipseSummaryAddress> m_yValuesSummaryAddressUiField;
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
caf::PdmPtrField<RimPlotAxisPropertiesInterface*> m_yPlotAxisProperties;
caf::PdmField<RiaDefines::DateTimePeriodEnum> m_yValuesResampling;
@@ -161,7 +164,6 @@ private:
caf::PdmPtrField<RimSummaryCase*> m_xValuesSummaryCase;
caf::PdmChildField<RimSummaryAddress*> m_xValuesSummaryAddress;
caf::PdmField<RifEclipseSummaryAddress> m_xValuesSummaryAddressUiField;
caf::PdmField<bool> m_xPushButtonSelectSummaryAddress;
caf::PdmPtrField<RimPlotAxisPropertiesInterface*> m_xPlotAxisProperties;
caf::PdmChildField<RimSummaryCurveAutoName*> m_curveNameConfig;
@@ -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<RimSummaryPlot>();
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<caf::PdmUiPushButtonEditorAttribute*>( 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<RimSummaryPlot>();
if ( plot ) RicEditSummaryPlotFeature::editSummaryPlot( plot );
} );
uiOrdering.skipRemainingFields();
}
//--------------------------------------------------------------------------------------------------
@@ -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<caf::PdmObjectHandle*>& referringObjects ) override;
@@ -103,7 +101,6 @@ private:
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
caf::PdmField<bool> m_editPlot;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_ySourceStepping;
@@ -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<caf::PdmUiPushButtonEditorAttribute*>( attribute ) )
{
attrib->m_buttonText = "Apply Filter";
}
}
else if ( field == &m_goToCommonSettings )
if ( field == &m_goToCommonSettings )
{
if ( auto labelEditorAttribute = dynamic_cast<caf::PdmUiLabelEditorAttribute*>( attribute ) )
{
@@ -1256,6 +1235,7 @@ void RimSummaryMultiPlot::updatePlotVisibility()
}
updateLayout();
updateConnectedEditors();
if ( !m_viewer.isNull() ) m_viewer->scheduleUpdate();
}
@@ -171,7 +171,6 @@ private:
caf::PdmChildField<RimSummaryPlotReadOut*> m_readOutSettings;
caf::PdmField<bool> m_goToCommonSettings;
caf::PdmField<bool> m_hidePlotsWithValuesBelow;
caf::PdmField<double> m_plotFilterYAxisThreshold;
caf::PdmField<bool> m_appendNextPlot;
@@ -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<QString> RimSummaryPlotManager::dataSourceDisplayNames() const
//--------------------------------------------------------------------------------------------------
void RimSummaryPlotManager::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute )
{
{
auto attr = dynamic_cast<caf::PdmUiPushButtonEditorAttribute*>( 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<caf::PdmUiComboBoxEditorAttribute*>( 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 } );
}
//--------------------------------------------------------------------------------------------------
@@ -91,16 +91,11 @@ private:
caf::PdmField<bool> m_includeDiffCurves;
caf::PdmField<bool> m_pushButtonReplace;
caf::PdmField<bool> m_pushButtonNewPlot;
caf::PdmField<bool> m_pushButtonAppend;
caf::PdmField<bool> m_individualPlotPerVector;
caf::PdmField<bool> m_individualPlotPerDataSource;
caf::PdmField<bool> m_individualPlotPerObject;
caf::PdmField<bool> m_createMultiPlot;
caf::PdmField<QString> m_labelA;
caf::PdmField<QString> m_labelB;
QStringList m_previousDataSourceText;
@@ -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<SmallDemoPdmObjectA>();
for ( auto obj : objs )
{
auto objs = descendantsIncludingThisOfType<SmallDemoPdmObjectA>();
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<SmallDemoPdmObjectA>();
for ( auto obj : objs )
{
auto objs = descendantsIncludingThisOfType<SmallDemoPdmObjectA>();
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 );
}
}
@@ -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<bool> m_boolField;
caf::PdmField<double> m_doubleField;
@@ -50,8 +54,6 @@ private:
caf::PdmPtrField<SmallDemoPdmObjectA*> m_ptrField;
caf::PdmField<bool> m_toggleField;
caf::PdmField<bool> m_applyAutoOnChildObjectFields;
caf::PdmField<bool> m_updateAutoValues;
MenuItemProducer* m_menuItemProducer;
};
@@ -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 <QGuiApplication>
@@ -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<QString> 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<QString>();
updateConnectedEditors();
}
@@ -29,10 +29,4 @@ private:
caf::PdmField<QString> m_labelLongTextField;
caf::PdmField<std::vector<QString>> m_textListField;
caf::PdmField<bool> m_pushButton_a;
caf::PdmField<bool> m_pushButtonReplace;
caf::PdmField<bool> m_pushButtonClear;
caf::PdmField<bool> m_pushButtonAppend;
};
@@ -45,7 +45,6 @@
#include "cafPdmUiLineEditor.h"
#include "cafPdmUiObjectHandle.h"
#include "cafPdmUiOrdering.h"
#include "cafPdmUiPushButtonEditor.h"
#include "cafPdmUiToolButtonEditor.h"
#include <QAction>