Merge remote-tracking branch 'origin/dev' into summary-text-edit-in-toolbar

This commit is contained in:
Magne Sjaastad
2019-10-28 20:45:00 +01:00
244 changed files with 8089 additions and 4802 deletions

View File

@@ -186,10 +186,10 @@ RimEnsembleCurveSet::~RimEnsembleCurveSet()
RimSummaryPlot* parentPlot;
firstAncestorOrThisOfType( parentPlot );
if ( parentPlot && parentPlot->qwtPlot() )
if ( parentPlot && parentPlot->viewer() )
{
m_qwtPlotCurveForLegendText->detach();
parentPlot->qwtPlot()->removeEnsembleCurveSetLegend( this );
parentPlot->removeEnsembleCurveSetLegend( this );
}
delete m_qwtPlotCurveForLegendText;
@@ -272,7 +272,7 @@ void RimEnsembleCurveSet::reattachQwtCurves()
firstAncestorOrThisOfType( plot );
if ( plot )
{
m_qwtPlotCurveForLegendText->attach( plot->qwtPlot() );
m_qwtPlotCurveForLegendText->attach( plot->viewer() );
}
}
@@ -285,7 +285,7 @@ void RimEnsembleCurveSet::addCurve( RimSummaryCurve* curve )
{
RimSummaryPlot* plot;
firstAncestorOrThisOfType( plot );
if ( plot ) curve->setParentQwtPlotNoReplot( plot->qwtPlot() );
if ( plot ) curve->setParentQwtPlotNoReplot( plot->viewer() );
curve->setColor( m_color );
m_curves.push_back( curve );
@@ -635,7 +635,7 @@ void RimEnsembleCurveSet::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup( "Summary Vector Y" );
curveDataGroup->add( &m_yValuesSummaryCaseCollection );
curveDataGroup->add( &m_yValuesSummaryAddressUiField );
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, {false, 1, 0} );
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, { false, 1, 0 } );
curveDataGroup->add( &m_plotAxis );
}
@@ -946,18 +946,18 @@ void RimEnsembleCurveSet::updateCurveColors()
RimSummaryPlot* plot;
firstAncestorOrThisOfType( plot );
if ( plot && plot->qwtPlot() )
if ( plot && plot->viewer() )
{
if ( m_yValuesSummaryCaseCollection() && isCurvesVisible() && m_colorMode == BY_ENSEMBLE_PARAM &&
m_legendConfig->showLegend() )
{
plot->qwtPlot()->addOrUpdateEnsembleCurveSetLegend( this );
plot->addOrUpdateEnsembleCurveSetLegend( this );
}
else
{
plot->qwtPlot()->removeEnsembleCurveSetLegend( this );
plot->removeEnsembleCurveSetLegend( this );
}
plot->qwtPlot()->replot();
plot->viewer()->scheduleReplot();
}
}
@@ -1011,13 +1011,13 @@ void RimEnsembleCurveSet::updateEnsembleCurves( const std::vector<RimSummaryCase
}
}
if ( plot->qwtPlot() ) m_qwtPlotCurveForLegendText->attach( plot->qwtPlot() );
if ( plot->viewer() ) m_qwtPlotCurveForLegendText->attach( plot->viewer() );
}
if ( plot->qwtPlot() )
if ( plot->viewer() )
{
plot->qwtPlot()->updateLegend();
plot->qwtPlot()->replot();
plot->viewer()->updateLegend();
plot->viewer()->scheduleReplot();
plot->updateAxes();
plot->updatePlotInfoLabel();
}
@@ -1079,7 +1079,7 @@ void RimEnsembleCurveSet::updateStatisticsCurves( const std::vector<RimSummaryCa
for ( auto address : addresses )
{
auto curve = new RimSummaryCurve();
curve->setParentQwtPlotNoReplot( plot->qwtPlot() );
curve->setParentQwtPlotNoReplot( plot->viewer() );
m_curves.push_back( curve );
curve->setColor( m_statistics->color() );
curve->setColor( m_statistics->color() );
@@ -1103,9 +1103,9 @@ void RimEnsembleCurveSet::updateStatisticsCurves( const std::vector<RimSummaryCa
curve->updateQwtPlotAxis();
}
if ( plot->qwtPlot() )
if ( plot->viewer() )
{
plot->qwtPlot()->updateLegend();
plot->viewer()->updateLegend();
plot->updateAxes();
}
}
@@ -1163,7 +1163,7 @@ void RimEnsembleCurveSet::updateAllTextInPlot()
RimSummaryPlot* summaryPlot = nullptr;
this->firstAncestorOrThisOfTypeAsserted( summaryPlot );
if ( summaryPlot->qwtPlot() )
if ( summaryPlot->viewer() )
{
summaryPlot->updatePlotTitle();
}

View File

@@ -89,7 +89,6 @@ RimSummaryPlot* RimSummaryCrossPlotCollection::createSummaryPlot()
{
RimSummaryPlot* plot = new RimSummaryCrossPlot();
plot->setAsPlotMdiWindow();
RiaApplication::instance()->project()->assignViewIdToView( plot );
plot->setDescription( QString( "Summary Cross Plot %1" ).arg( m_summaryCrossPlots.size() ) );

View File

@@ -637,10 +637,10 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering
QString curveDataGroupName = "Summary Vector";
if ( isCrossPlotCurve() ) curveDataGroupName += " Y";
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroupWithKeyword( curveDataGroupName, "Summary Vector Y" );
curveDataGroup->add( &m_yValuesSummaryCase, {true, 3, 1} );
curveDataGroup->add( &m_yValuesSummaryAddressUiField, {true, 2, 1} );
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, {false, 1, 0} );
curveDataGroup->add( &m_plotAxis, {true, 3, 1} );
curveDataGroup->add( &m_yValuesSummaryCase, { true, 3, 1 } );
curveDataGroup->add( &m_yValuesSummaryAddressUiField, { true, 2, 1 } );
curveDataGroup->add( &m_yPushButtonSelectSummaryAddress, { false, 1, 0 } );
curveDataGroup->add( &m_plotAxis, { true, 3, 1 } );
if ( isCrossPlotCurve() )
m_showErrorBars = false;
@@ -651,9 +651,9 @@ void RimSummaryCurve::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering
if ( isCrossPlotCurve() )
{
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup( "Summary Vector X" );
curveDataGroup->add( &m_xValuesSummaryCase, {true, 3, 1} );
curveDataGroup->add( &m_xValuesSummaryAddressUiField, {true, 2, 1} );
curveDataGroup->add( &m_xPushButtonSelectSummaryAddress, {false, 1, 0} );
curveDataGroup->add( &m_xValuesSummaryCase, { true, 3, 1 } );
curveDataGroup->add( &m_xValuesSummaryAddressUiField, { true, 2, 1 } );
curveDataGroup->add( &m_xPushButtonSelectSummaryAddress, { false, 1, 0 } );
}
caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup( "Appearance" );

View File

@@ -63,60 +63,33 @@ RimSummaryCurveAutoName::RimSummaryCurveAutoName()
QString RimSummaryCurveAutoName::curveNameY( const RifEclipseSummaryAddress& summaryAddress,
const RimSummaryPlotNameHelper* nameHelper ) const
{
std::string text;
RimSummaryCurve* summaryCurve = nullptr;
this->firstAncestorOrThisOfType( summaryCurve );
if ( m_vectorName )
std::string unitNameY;
if ( summaryCurve )
{
bool skipSubString = nameHelper && nameHelper->isPlotDisplayingSingleQuantity();
if ( !skipSubString )
{
text += summaryAddress.quantityName();
if ( summaryAddress.category() == RifEclipseSummaryAddress::SUMMARY_ENSEMBLE_STATISTICS )
{
text = RiaStatisticsTools::replacePercentileByPValueText( QString::fromStdString( text ) ).toStdString();
}
if ( m_unit && summaryCurve && !summaryCurve->unitNameY().empty() )
{
text += "[" + summaryCurve->unitNameY() + "]";
}
}
unitNameY = summaryCurve->unitNameY();
}
appendAddressDetails( text, summaryAddress, nameHelper );
QString caseName;
std::string caseNameY;
if ( caseNameY.empty() && summaryCurve && summaryCurve->summaryCaseY() )
{
caseNameY = summaryCurve->summaryCaseY()->caseName().toStdString();
}
{
RimEnsembleCurveSet* ensembleCurveSet = nullptr;
this->firstAncestorOrThisOfType( ensembleCurveSet );
if ( ensembleCurveSet && ensembleCurveSet->summaryCaseCollection() )
{
caseName = ensembleCurveSet->summaryCaseCollection()->name();
caseNameY = ensembleCurveSet->summaryCaseCollection()->name().toStdString();
}
}
if ( caseName.isEmpty() && summaryCurve && summaryCurve->summaryCaseY() )
{
caseName = summaryCurve->summaryCaseY()->caseName();
}
QString curveName = buildCurveName( summaryAddress, nameHelper, unitNameY, caseNameY );
if ( !caseName.isEmpty() )
{
bool skipSubString = nameHelper && nameHelper->isCaseInTitle();
if ( m_caseName && !skipSubString )
{
if ( !text.empty() ) text += ", ";
text += caseName.toStdString();
}
}
return QString::fromStdString( text );
return curveName;
}
//--------------------------------------------------------------------------------------------------
@@ -125,41 +98,33 @@ QString RimSummaryCurveAutoName::curveNameY( const RifEclipseSummaryAddress& sum
QString RimSummaryCurveAutoName::curveNameX( const RifEclipseSummaryAddress& summaryAddress,
const RimSummaryPlotNameHelper* nameHelper ) const
{
std::string text;
RimSummaryCurve* summaryCurve = nullptr;
this->firstAncestorOrThisOfType( summaryCurve );
if ( m_vectorName )
std::string unitNameX;
if ( summaryCurve )
{
bool skipSubString = nameHelper && nameHelper->isPlotDisplayingSingleQuantity();
if ( !skipSubString )
{
text += summaryAddress.quantityName();
unitNameX = summaryCurve->unitNameX();
}
if ( m_unit && summaryCurve && !summaryCurve->unitNameX().empty() )
{
text += "[" + summaryCurve->unitNameX() + "]";
}
std::string caseNameX;
if ( caseNameX.empty() && summaryCurve && summaryCurve->summaryCaseX() )
{
caseNameX = summaryCurve->summaryCaseX()->caseName().toStdString();
}
{
RimEnsembleCurveSet* ensembleCurveSet = nullptr;
this->firstAncestorOrThisOfType( ensembleCurveSet );
if ( ensembleCurveSet && ensembleCurveSet->summaryCaseCollection() )
{
caseNameX = ensembleCurveSet->summaryCaseCollection()->name().toStdString();
}
}
appendAddressDetails( text, summaryAddress, nameHelper );
QString curveName = buildCurveName( summaryAddress, nameHelper, unitNameX, caseNameX );
if ( summaryCurve && summaryCurve->summaryCaseX() )
{
bool skipSubString = nameHelper && nameHelper->isCaseInTitle();
if ( m_caseName && !skipSubString )
{
QString caseName = summaryCurve->summaryCaseX()->caseName();
if ( !text.empty() ) text += ", ";
text += caseName.toStdString();
}
}
return QString::fromStdString( text );
return curveName;
}
//--------------------------------------------------------------------------------------------------
@@ -208,6 +173,53 @@ void RimSummaryCurveAutoName::appendLgrName( std::string& text, const RifEclipse
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimSummaryCurveAutoName::buildCurveName( const RifEclipseSummaryAddress& summaryAddress,
const RimSummaryPlotNameHelper* nameHelper,
const std::string& unitText,
const std::string& caseName ) const
{
std::string text; // Using std::string locally to avoid a lot of conversion when building the curve name
if ( m_vectorName )
{
bool skipSubString = nameHelper && nameHelper->isPlotDisplayingSingleQuantity();
if ( !skipSubString )
{
text = summaryAddress.quantityName();
}
if ( summaryAddress.category() == RifEclipseSummaryAddress::SUMMARY_ENSEMBLE_STATISTICS )
{
text = RiaStatisticsTools::replacePercentileByPValueText(
QString::fromStdString( summaryAddress.quantityName() ) )
.toStdString();
}
if ( m_unit && !unitText.empty() )
{
text += "[" + unitText + "]";
}
}
appendAddressDetails( text, summaryAddress, nameHelper );
if ( !caseName.empty() )
{
bool skipSubString = nameHelper && nameHelper->isCaseInTitle();
if ( m_caseName && !skipSubString )
{
if ( !text.empty() ) text += ", ";
text += caseName;
}
}
return QString::fromStdString( text );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -52,6 +52,11 @@ private:
const RimSummaryPlotNameHelper* nameHelper ) const;
void appendLgrName( std::string& text, const RifEclipseSummaryAddress& summaryAddress ) const;
QString buildCurveName( const RifEclipseSummaryAddress& summaryAddress,
const RimSummaryPlotNameHelper* nameHelper,
const std::string& unitText,
const std::string& caseName ) const;
private:
caf::PdmField<bool> m_vectorName;
caf::PdmField<bool> m_unit;

View File

@@ -21,6 +21,8 @@
#include "RiaApplication.h"
#include "RiaStdStringTools.h"
#include "SummaryPlotCommands/RicEditSummaryPlotFeature.h"
#include "RifReaderEclipseSummary.h"
#include "RimProject.h"
@@ -33,6 +35,7 @@
#include "RiuQwtPlotCurve.h"
#include "RiuSummaryQwtPlot.h"
#include "cafPdmUiPushButtonEditor.h"
#include "cafPdmUiTreeViewEditor.h"
#include "qwt_plot.h"
@@ -55,6 +58,10 @@ RimSummaryCurveCollection::RimSummaryCurveCollection()
CAF_PDM_InitField( &m_showCurves, "IsActive", true, "Show Curves", "", "", "" );
m_showCurves.uiCapability()->setUiHidden( true );
CAF_PDM_InitField( &m_editPlot, "EditPlot", false, "", "", "", "" );
m_editPlot.xmlCapability()->disableIO();
m_editPlot.uiCapability()->setUiEditorTypeName( caf::PdmUiPushButtonEditor::uiEditorTypeName() );
CAF_PDM_InitFieldNoDefault( &m_ySourceStepping, "YSourceStepping", "", "", "", "" );
m_ySourceStepping = new RimSummaryPlotSourceStepping;
m_ySourceStepping->setSourceSteppingType( RimSummaryPlotSourceStepping::Y_AXIS );
@@ -309,7 +316,7 @@ void RimSummaryCurveCollection::updateCaseNameHasChanged()
firstAncestorOrThisOfTypeAsserted( parentPlot );
parentPlot->updatePlotTitle();
if ( parentPlot->qwtPlot() ) parentPlot->qwtPlot()->updateLegend();
if ( parentPlot->viewer() ) parentPlot->viewer()->updateLegend();
}
//--------------------------------------------------------------------------------------------------
@@ -407,6 +414,33 @@ void RimSummaryCurveCollection::fieldChangedByUi( const caf::PdmFieldHandle* cha
{
loadDataAndUpdate( true );
}
else if ( changedField == &m_editPlot )
{
RimSummaryPlot* plot = nullptr;
this->firstAncestorOrThisOfType( plot );
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";
}
}
}
//--------------------------------------------------------------------------------------------------

View File

@@ -85,9 +85,14 @@ private:
const QVariant& oldValue,
const QVariant& newValue ) override;
void defineEditorAttribute( const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute ) override;
private:
caf::PdmField<bool> m_showCurves;
caf::PdmChildArrayField<RimSummaryCurve*> m_curves;
caf::PdmField<bool> m_editPlot;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_ySourceStepping;
caf::PdmChildField<RimSummaryPlotSourceStepping*> m_xSourceStepping;

File diff suppressed because it is too large Load Diff

View File

@@ -24,8 +24,8 @@
#include "RifEclipseSummaryAddress.h"
#include "RimPlot.h"
#include "RimRiuQwtPlotOwnerInterface.h"
#include "RimPlotInterface.h"
#include "RimPlotWindow.h"
#include "qwt_plot_textlabel.h"
@@ -64,7 +64,7 @@ class QKeyEvent;
///
///
//==================================================================================================
class RimSummaryPlot : public RimPlot, public RimRiuQwtPlotOwnerInterface
class RimSummaryPlot : public RimPlotWindow, public RimPlotInterface
{
CAF_PDM_HEADER_INIT;
@@ -74,6 +74,7 @@ public:
void setDescription( const QString& description );
QString description() const;
bool isChecked() const override;
void enableShowPlotTitle( bool enable );
void enableAutoPlotTitle( bool enable );
@@ -103,30 +104,27 @@ public:
void reattachAllCurves();
void updateCaseNameHasChanged();
void updateAxes();
void zoomAll() override;
void updateZoomInQwt();
void updateAxes() override;
bool isLogarithmicScaleEnabled( RiaDefines::PlotAxis plotAxis ) const;
RimSummaryTimeAxisProperties* timeAxisProperties();
time_t firstTimeStepOfFirstCurve();
QWidget* viewWidget() override;
QWidget* viewWidget() override;
RiuQwtPlotWidget* viewer() override;
QString asciiDataForPlotExport( DateTimePeriod resamplingPeriod, bool showTimeAsLongString ) const;
QString asciiDataForSummaryPlotExport( DateTimePeriod resamplingPeriod, bool showTimeAsLongString ) const;
std::vector<RimSummaryCurve*> summaryAndEnsembleCurves() const;
std::set<RiaSummaryCurveDefinition> summaryAndEnsembleCurveDefinitions() const;
std::vector<RimSummaryCurve*> summaryCurves() const;
void deleteAllSummaryCurves();
RimSummaryCurveCollection* summaryCurveCollection() const;
RiuSummaryQwtPlot* qwtPlot() const;
std::vector<RimEnsembleCurveSet*> curveSets() const;
void updatePlotTitle();
void updatePlotTitle() override;
const RimSummaryPlotNameHelper* activePlotTitleHelperAllCurves() const;
void updateCurveNames();
@@ -134,6 +132,8 @@ public:
void copyAxisPropertiesFromOther( const RimSummaryPlot& sourceSummaryPlot );
void updateLayout() override;
void updateAll();
void updateAllLegendItems();
@@ -163,14 +163,21 @@ public:
virtual RimSummaryPlotSourceStepping* sourceSteppingObjectForKeyEventHandling() const;
virtual std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
public:
// Rim2dPlotInterface overrides
void updateAxisScaling() override;
void updateAxisDisplay() override;
void updateZoomWindowFromQwt() override;
void selectAxisInPropertyEditor( int axis ) override;
void setAutoZoomForAllAxes( bool enableAutoZoom ) override;
caf::PdmObject* findRimPlotObjectFromQwtCurve( const QwtPlotCurve* curve ) const override;
void setAutoScaleXEnabled( bool enabled ) override;
void setAutoScaleYEnabled( bool enabled ) override;
void zoomAll() override;
void updateZoomInQwt() override;
void updateZoomFromQwt() override;
void createPlotWidget() override;
caf::PdmObject* findPdmObjectFromQwtCurve( const QwtPlotCurve* curve ) const override;
void onAxisSelected( int axis, bool toggle ) override;
void loadDataAndUpdate();
void addOrUpdateEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet );
void removeEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet );
public:
// RimViewWindow overrides
@@ -208,15 +215,13 @@ private:
bool hasVisibleCurvesForAxis( RiaDefines::PlotAxis plotAxis ) const;
RimPlotAxisProperties* yAxisPropertiesLeftOrRight( RiaDefines::PlotAxis leftOrRightPlotAxis ) const;
void updateAxis( RiaDefines::PlotAxis plotAxis );
void updateYAxis( RiaDefines::PlotAxis plotAxis );
void updateZoomForAxis( RiaDefines::PlotAxis plotAxis );
void updateTimeAxis();
void updateBottomXAxis();
void updateAxisRangesFromQwt();
std::set<RimPlotAxisPropertiesInterface*> allPlotAxes() const;
private:
@@ -226,8 +231,7 @@ private:
caf::PdmField<int> m_legendFontSize;
caf::PdmField<bool> m_useAutoPlotTitle;
caf::PdmField<QString> m_userDefinedPlotTitle;
caf::PdmField<bool> m_useAutoPlotTitle;
caf::PdmChildArrayField<RimGridTimeHistoryCurve*> m_gridTimeHistoryCurves;
caf::PdmChildField<RimSummaryCurveCollection*> m_summaryCurveCollection;
@@ -245,7 +249,7 @@ private:
caf::PdmChildField<RimSummaryPlotFilterTextCurveSetEditor*> m_textCurveSetEditor;
QPointer<RiuSummaryQwtPlot> m_qwtPlot;
QPointer<RiuSummaryQwtPlot> m_plotWidget;
std::unique_ptr<QwtPlotTextLabel> m_plotInfoLabel;
bool m_isCrossPlot;

View File

@@ -50,7 +50,6 @@ RimSummaryPlot* RimSummaryPlotCollection::createSummaryPlotWithAutoTitle()
{
RimSummaryPlot* plot = new RimSummaryPlot();
plot->setAsPlotMdiWindow();
RiaApplication::instance()->project()->assignViewIdToView( plot );
plot->enableAutoPlotTitle( true );
summaryPlots.push_back( plot );
@@ -65,7 +64,6 @@ RimSummaryPlot* RimSummaryPlotCollection::createNamedSummaryPlot( const QString&
{
RimSummaryPlot* plot = new RimSummaryPlot();
plot->setAsPlotMdiWindow();
RiaApplication::instance()->project()->assignViewIdToView( plot );
summaryPlots.push_back( plot );
plot->setDescription( name );

View File

@@ -71,7 +71,7 @@ RimSummaryPlotFilterTextCurveSetEditor::RimSummaryPlotFilterTextCurveSetEditor()
CAF_PDM_InitObject( "Curve Set Filter Text", "", "", "" );
// clang-format off
QString filterTextHeading = "Text to Create Summary Vectors";
QString filterTextHeading = "Create Summary Curves from Text";
QString filterTextShortcut = " (Ctrl + F)";
QString filterTextToolTip =