mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-24 22:27:55 -05:00
Migrate more classes to dynamic buttons
This commit is contained in:
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>
|
||||
|
||||
Reference in new issue
Block a user