mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactored ensemble parameter legends
This commit is contained in:
parent
c4951a5a03
commit
f56a34843a
@ -495,7 +495,8 @@ void RicSummaryCurveCreator::updatePreviewCurvesFromCurveDefinitions(
|
|||||||
size_t colorIndex = std::count_if( allCurveSets.begin(),
|
size_t colorIndex = std::count_if( allCurveSets.begin(),
|
||||||
allCurveSets.end(),
|
allCurveSets.end(),
|
||||||
[]( RimEnsembleCurveSet* curveSet ) {
|
[]( RimEnsembleCurveSet* curveSet ) {
|
||||||
return curveSet->colorMode() == RimEnsembleCurveSet::SINGLE_COLOR;
|
return curveSet->colorMode() ==
|
||||||
|
RimEnsembleCurveSet::ColorMode::SINGLE_COLOR;
|
||||||
} );
|
} );
|
||||||
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex ) );
|
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex ) );
|
||||||
|
|
||||||
@ -792,7 +793,7 @@ void RicSummaryCurveCreator::applyAppearanceToAllPreviewCurves()
|
|||||||
int colorIndex = 0;
|
int colorIndex = 0;
|
||||||
for ( auto& curveSet : m_previewPlot->ensembleCurveSetCollection()->curveSets() )
|
for ( auto& curveSet : m_previewPlot->ensembleCurveSetCollection()->curveSets() )
|
||||||
{
|
{
|
||||||
if ( curveSet->colorMode() != RimEnsembleCurveSet::SINGLE_COLOR ) continue;
|
if ( curveSet->colorMode() != RimEnsembleCurveSet::ColorMode::SINGLE_COLOR ) continue;
|
||||||
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex++ ) );
|
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex++ ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -431,7 +431,7 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin
|
|||||||
|
|
||||||
if ( ensembleColoringStyle == PARAMETER || ensembleColoringStyle == LOG_PARAMETER )
|
if ( ensembleColoringStyle == PARAMETER || ensembleColoringStyle == LOG_PARAMETER )
|
||||||
{
|
{
|
||||||
curveSet->setColorMode( RimEnsembleCurveSet::BY_ENSEMBLE_PARAM );
|
curveSet->setColorMode( RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM );
|
||||||
curveSet->setEnsembleParameter( ensembleColoringParameter );
|
curveSet->setEnsembleParameter( ensembleColoringParameter );
|
||||||
|
|
||||||
if ( ensembleColoringStyle == LOG_PARAMETER )
|
if ( ensembleColoringStyle == LOG_PARAMETER )
|
||||||
@ -487,7 +487,7 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin
|
|||||||
curveSet->setSummaryAddress( addr );
|
curveSet->setSummaryAddress( addr );
|
||||||
if ( ensembleColoringStyle == PARAMETER || ensembleColoringStyle == LOG_PARAMETER )
|
if ( ensembleColoringStyle == PARAMETER || ensembleColoringStyle == LOG_PARAMETER )
|
||||||
{
|
{
|
||||||
curveSet->setColorMode( RimEnsembleCurveSet::BY_ENSEMBLE_PARAM );
|
curveSet->setColorMode( RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM );
|
||||||
curveSet->setEnsembleParameter( ensembleColoringParameter );
|
curveSet->setEnsembleParameter( ensembleColoringParameter );
|
||||||
if ( ensembleColoringStyle == LOG_PARAMETER )
|
if ( ensembleColoringStyle == LOG_PARAMETER )
|
||||||
{
|
{
|
||||||
|
@ -37,6 +37,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RimEnsembleStatisticsCase.h
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCase.h
|
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCase.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.h
|
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.h
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.h
|
${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.h
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RimEnsembleParameterColorHandlerInterface.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set (SOURCE_GROUP_SOURCE_FILES
|
set (SOURCE_GROUP_SOURCE_FILES
|
||||||
@ -77,6 +78,7 @@ ${CMAKE_CURRENT_LIST_DIR}/RimEnsembleStatisticsCase.cpp
|
|||||||
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCase.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCase.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RimDerivedEnsembleCaseCollection.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.cpp
|
${CMAKE_CURRENT_LIST_DIR}/RimSummaryPlotFilterTextCurveSetEditor.cpp
|
||||||
|
${CMAKE_CURRENT_LIST_DIR}/RimEnsembleParameterColorHandlerInterface.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND CODE_HEADER_FILES
|
list(APPEND CODE_HEADER_FILES
|
||||||
|
@ -140,8 +140,8 @@ QList<caf::PdmOptionItemInfo>
|
|||||||
auto nameParameterPairs = curveSet->ensembleParameters();
|
auto nameParameterPairs = curveSet->ensembleParameters();
|
||||||
for ( auto& nameParamPair : nameParameterPairs )
|
for ( auto& nameParamPair : nameParameterPairs )
|
||||||
{
|
{
|
||||||
options.push_back( caf::PdmOptionItemInfo( RimEnsembleCurveSet::ensembleParameterUiName( nameParamPair ),
|
options.push_back(
|
||||||
nameParamPair.first ) );
|
caf::PdmOptionItemInfo( EnsembleParameter::uiName( nameParamPair ), nameParamPair.first ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#include "RimSummaryFilter.h"
|
#include "RimSummaryFilter.h"
|
||||||
#include "RimSummaryPlot.h"
|
#include "RimSummaryPlot.h"
|
||||||
|
|
||||||
|
#include "RiuCvfOverlayItemWidget.h"
|
||||||
#include "RiuPlotMainWindow.h"
|
#include "RiuPlotMainWindow.h"
|
||||||
#include "RiuQwtPlotCurve.h"
|
#include "RiuQwtPlotCurve.h"
|
||||||
#include "RiuSummaryCurveDefSelectionDialog.h"
|
#include "RiuSummaryCurveDefSelectionDialog.h"
|
||||||
@ -56,6 +57,7 @@
|
|||||||
#include "cafPdmUiListEditor.h"
|
#include "cafPdmUiListEditor.h"
|
||||||
#include "cafPdmUiPushButtonEditor.h"
|
#include "cafPdmUiPushButtonEditor.h"
|
||||||
#include "cafPdmUiTreeOrdering.h"
|
#include "cafPdmUiTreeOrdering.h"
|
||||||
|
#include "cafTitledOverlayFrame.h"
|
||||||
|
|
||||||
#include "cvfScalarMapper.h"
|
#include "cvfScalarMapper.h"
|
||||||
|
|
||||||
@ -75,20 +77,6 @@
|
|||||||
RiuQwtSymbol::PointSymbolEnum statisticsCurveSymbolFromAddress( const RifEclipseSummaryAddress& address );
|
RiuQwtSymbol::PointSymbolEnum statisticsCurveSymbolFromAddress( const RifEclipseSummaryAddress& address );
|
||||||
int statisticsCurveSymbolSize( RiuQwtSymbol::PointSymbolEnum symbol );
|
int statisticsCurveSymbolSize( RiuQwtSymbol::PointSymbolEnum symbol );
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
namespace caf
|
|
||||||
{
|
|
||||||
template <>
|
|
||||||
void AppEnum<RimEnsembleCurveSet::ColorMode>::setUp()
|
|
||||||
{
|
|
||||||
addItem( RimEnsembleCurveSet::SINGLE_COLOR, "SINGLE_COLOR", "Single Color" );
|
|
||||||
addItem( RimEnsembleCurveSet::BY_ENSEMBLE_PARAM, "BY_ENSEMBLE_PARAM", "By Ensemble Parameter" );
|
|
||||||
setDefault( RimEnsembleCurveSet::SINGLE_COLOR );
|
|
||||||
}
|
|
||||||
} // namespace caf
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RimEnsembleCurveSet, "RimEnsembleCurveSet" );
|
CAF_PDM_SOURCE_INIT( RimEnsembleCurveSet, "RimEnsembleCurveSet" );
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -124,7 +112,13 @@ RimEnsembleCurveSet::RimEnsembleCurveSet()
|
|||||||
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
m_yPushButtonSelectSummaryAddress.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||||
m_yPushButtonSelectSummaryAddress = false;
|
m_yPushButtonSelectSummaryAddress = false;
|
||||||
|
|
||||||
CAF_PDM_InitField( &m_colorMode, "ColorMode", caf::AppEnum<ColorMode>( SINGLE_COLOR ), "Coloring Mode", "", "", "" );
|
CAF_PDM_InitField( &m_colorMode,
|
||||||
|
"ColorMode",
|
||||||
|
caf::AppEnum<ColorMode>( ColorMode::SINGLE_COLOR ),
|
||||||
|
"Coloring Mode",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"" );
|
||||||
|
|
||||||
CAF_PDM_InitField( &m_color, "Color", cvf::Color3f( cvf::Color3::BLACK ), "Color", "", "", "" );
|
CAF_PDM_InitField( &m_color, "Color", cvf::Color3f( cvf::Color3::BLACK ), "Color", "", "", "" );
|
||||||
|
|
||||||
@ -189,7 +183,12 @@ RimEnsembleCurveSet::~RimEnsembleCurveSet()
|
|||||||
if ( parentPlot && parentPlot->viewer() )
|
if ( parentPlot && parentPlot->viewer() )
|
||||||
{
|
{
|
||||||
m_qwtPlotCurveForLegendText->detach();
|
m_qwtPlotCurveForLegendText->detach();
|
||||||
parentPlot->removeEnsembleCurveSetLegend( this );
|
parentPlot->viewer()->removeOverlayFrame( m_legendOverlayFrame );
|
||||||
|
}
|
||||||
|
if ( m_legendOverlayFrame )
|
||||||
|
{
|
||||||
|
m_legendOverlayFrame->setParent( nullptr );
|
||||||
|
delete m_legendOverlayFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete m_qwtPlotCurveForLegendText;
|
delete m_qwtPlotCurveForLegendText;
|
||||||
@ -381,6 +380,14 @@ RimRegularLegendConfig* RimEnsembleCurveSet::legendConfig()
|
|||||||
return m_legendConfig;
|
return m_legendConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QFrame* RimEnsembleCurveSet::legendFrame() const
|
||||||
|
{
|
||||||
|
return m_legendOverlayFrame;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -442,7 +449,7 @@ void RimEnsembleCurveSet::setEnsembleParameter( const QString& parameterName )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
EnsembleParameter::Type RimEnsembleCurveSet::currentEnsembleParameterType() const
|
EnsembleParameter::Type RimEnsembleCurveSet::currentEnsembleParameterType() const
|
||||||
{
|
{
|
||||||
if ( m_colorMode() == BY_ENSEMBLE_PARAM )
|
if ( m_colorMode() == ColorMode::BY_ENSEMBLE_PARAM )
|
||||||
{
|
{
|
||||||
RimSummaryCaseCollection* group = m_yValuesSummaryCaseCollection();
|
RimSummaryCaseCollection* group = m_yValuesSummaryCaseCollection();
|
||||||
QString parameterName = m_ensembleParameter();
|
QString parameterName = m_ensembleParameter();
|
||||||
@ -456,29 +463,6 @@ EnsembleParameter::Type RimEnsembleCurveSet::currentEnsembleParameterType() cons
|
|||||||
return EnsembleParameter::TYPE_NONE;
|
return EnsembleParameter::TYPE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
QString RimEnsembleCurveSet::ensembleParameterUiName( const RimEnsembleCurveSet::NameParameterPair& paramPair )
|
|
||||||
{
|
|
||||||
QString stem = paramPair.first;
|
|
||||||
QString variationString;
|
|
||||||
if ( paramPair.second.isNumeric() )
|
|
||||||
{
|
|
||||||
switch ( paramPair.second.variationBin )
|
|
||||||
{
|
|
||||||
case EnsembleParameter::LOW_VARIATION:
|
|
||||||
variationString = QString( " (Low variation)" );
|
|
||||||
case EnsembleParameter::MEDIUM_VARIATION:
|
|
||||||
break;
|
|
||||||
case EnsembleParameter::HIGH_VARIATION:
|
|
||||||
variationString = QString( " (High variation)" );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QString( "%1%2" ).arg( stem ).arg( variationString );
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -669,11 +653,11 @@ void RimEnsembleCurveSet::appendColorGroup( caf::PdmUiOrdering& uiOrdering )
|
|||||||
m_colorMode.uiCapability()->setUiReadOnly( !m_yValuesSummaryCaseCollection() );
|
m_colorMode.uiCapability()->setUiReadOnly( !m_yValuesSummaryCaseCollection() );
|
||||||
colorsGroup->add( &m_colorMode );
|
colorsGroup->add( &m_colorMode );
|
||||||
|
|
||||||
if ( m_colorMode == SINGLE_COLOR )
|
if ( m_colorMode == ColorMode::SINGLE_COLOR )
|
||||||
{
|
{
|
||||||
colorsGroup->add( &m_color );
|
colorsGroup->add( &m_color );
|
||||||
}
|
}
|
||||||
else if ( m_colorMode == BY_ENSEMBLE_PARAM )
|
else if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
|
||||||
{
|
{
|
||||||
m_ensembleParameter.uiCapability()->setUiReadOnly( !m_yValuesSummaryCaseCollection() );
|
m_ensembleParameter.uiCapability()->setUiReadOnly( !m_yValuesSummaryCaseCollection() );
|
||||||
colorsGroup->add( &m_ensembleParameter );
|
colorsGroup->add( &m_ensembleParameter );
|
||||||
@ -685,7 +669,7 @@ void RimEnsembleCurveSet::appendColorGroup( caf::PdmUiOrdering& uiOrdering )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimEnsembleCurveSet::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/ )
|
void RimEnsembleCurveSet::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName /*= ""*/ )
|
||||||
{
|
{
|
||||||
if ( m_colorMode == BY_ENSEMBLE_PARAM )
|
if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
|
||||||
{
|
{
|
||||||
uiTreeOrdering.add( m_legendConfig() );
|
uiTreeOrdering.add( m_legendConfig() );
|
||||||
}
|
}
|
||||||
@ -779,21 +763,21 @@ QList<caf::PdmOptionItemInfo> RimEnsembleCurveSet::calculateValueOptions( const
|
|||||||
}
|
}
|
||||||
else if ( fieldNeedingOptions == &m_colorMode )
|
else if ( fieldNeedingOptions == &m_colorMode )
|
||||||
{
|
{
|
||||||
auto singleColorOption = caf::AppEnum<RimEnsembleCurveSet::ColorMode>( RimEnsembleCurveSet::SINGLE_COLOR );
|
auto singleColorOption = ColorModeEnum( ColorMode::SINGLE_COLOR );
|
||||||
auto byEnsParamOption = caf::AppEnum<RimEnsembleCurveSet::ColorMode>( RimEnsembleCurveSet::BY_ENSEMBLE_PARAM );
|
auto byEnsParamOption = ColorModeEnum( ColorMode::BY_ENSEMBLE_PARAM );
|
||||||
|
|
||||||
options.push_back( caf::PdmOptionItemInfo( singleColorOption.uiText(), RimEnsembleCurveSet::SINGLE_COLOR ) );
|
options.push_back( caf::PdmOptionItemInfo::fromEnumClass( singleColorOption.uiText(), ColorMode::SINGLE_COLOR ) );
|
||||||
if ( !ensembleParameters().empty() )
|
if ( !ensembleParameters().empty() )
|
||||||
{
|
{
|
||||||
options.push_back(
|
options.push_back(
|
||||||
caf::PdmOptionItemInfo( byEnsParamOption.uiText(), RimEnsembleCurveSet::BY_ENSEMBLE_PARAM ) );
|
caf::PdmOptionItemInfo::fromEnumClass( byEnsParamOption.uiText(), ColorMode::BY_ENSEMBLE_PARAM ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( fieldNeedingOptions == &m_ensembleParameter )
|
else if ( fieldNeedingOptions == &m_ensembleParameter )
|
||||||
{
|
{
|
||||||
for ( const auto& paramPair : ensembleParameters() )
|
for ( const auto& paramPair : ensembleParameters() )
|
||||||
{
|
{
|
||||||
options.push_back( caf::PdmOptionItemInfo( ensembleParameterUiName( paramPair ), paramPair.first ) );
|
options.push_back( caf::PdmOptionItemInfo( EnsembleParameter::uiName( paramPair ), paramPair.first ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( fieldNeedingOptions == &m_yValuesSummaryAddressUiField )
|
else if ( fieldNeedingOptions == &m_yValuesSummaryAddressUiField )
|
||||||
@ -841,7 +825,7 @@ void RimEnsembleCurveSet::appendOptionItemsForSummaryAddresses( QList<caf::PdmOp
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimEnsembleCurveSet::updateCurveColors()
|
void RimEnsembleCurveSet::updateCurveColors()
|
||||||
{
|
{
|
||||||
if ( m_colorMode == BY_ENSEMBLE_PARAM )
|
if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
|
||||||
{
|
{
|
||||||
RimSummaryCaseCollection* group = m_yValuesSummaryCaseCollection();
|
RimSummaryCaseCollection* group = m_yValuesSummaryCaseCollection();
|
||||||
|
|
||||||
@ -938,7 +922,7 @@ void RimEnsembleCurveSet::updateCurveColors()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( m_colorMode == SINGLE_COLOR )
|
else if ( m_colorMode == ColorMode::SINGLE_COLOR )
|
||||||
{
|
{
|
||||||
for ( auto& curve : m_curves )
|
for ( auto& curve : m_curves )
|
||||||
{
|
{
|
||||||
@ -954,14 +938,22 @@ void RimEnsembleCurveSet::updateCurveColors()
|
|||||||
firstAncestorOrThisOfType( plot );
|
firstAncestorOrThisOfType( plot );
|
||||||
if ( plot && plot->viewer() )
|
if ( plot && plot->viewer() )
|
||||||
{
|
{
|
||||||
if ( m_yValuesSummaryCaseCollection() && isCurvesVisible() && m_colorMode == BY_ENSEMBLE_PARAM &&
|
if ( m_yValuesSummaryCaseCollection() && isCurvesVisible() && m_colorMode == ColorMode::BY_ENSEMBLE_PARAM &&
|
||||||
m_legendConfig->showLegend() )
|
m_legendConfig->showLegend() )
|
||||||
{
|
{
|
||||||
plot->addOrUpdateEnsembleCurveSetLegend( this );
|
if ( !m_legendOverlayFrame )
|
||||||
|
{
|
||||||
|
m_legendOverlayFrame = new RiuCvfOverlayItemWidget( plot->viewer(), plot->viewer()->canvas() );
|
||||||
|
}
|
||||||
|
m_legendOverlayFrame->updateFromOverlayItem( m_legendConfig()->titledOverlayFrame() );
|
||||||
|
plot->viewer()->addOverlayFrame( m_legendOverlayFrame );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
plot->removeEnsembleCurveSetLegend( this );
|
if ( !m_legendOverlayFrame.isNull() )
|
||||||
|
{
|
||||||
|
plot->viewer()->removeOverlayFrame( m_legendOverlayFrame );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
plot->viewer()->scheduleReplot();
|
plot->viewer()->scheduleReplot();
|
||||||
}
|
}
|
||||||
@ -1278,7 +1270,7 @@ void RimEnsembleCurveSet::updateEnsembleLegendItem()
|
|||||||
{
|
{
|
||||||
QwtSymbol* symbol = nullptr;
|
QwtSymbol* symbol = nullptr;
|
||||||
|
|
||||||
if ( m_colorMode == SINGLE_COLOR )
|
if ( m_colorMode == ColorMode::SINGLE_COLOR )
|
||||||
{
|
{
|
||||||
symbol = new QwtSymbol( QwtSymbol::HLine );
|
symbol = new QwtSymbol( QwtSymbol::HLine );
|
||||||
|
|
||||||
@ -1289,7 +1281,7 @@ void RimEnsembleCurveSet::updateEnsembleLegendItem()
|
|||||||
symbol->setPen( curvePen );
|
symbol->setPen( curvePen );
|
||||||
symbol->setSize( 6, 6 );
|
symbol->setSize( 6, 6 );
|
||||||
}
|
}
|
||||||
else if ( m_colorMode == BY_ENSEMBLE_PARAM )
|
else if ( m_colorMode == ColorMode::BY_ENSEMBLE_PARAM )
|
||||||
{
|
{
|
||||||
QPixmap p = QPixmap( ":/Legend.png" );
|
QPixmap p = QPixmap( ":/Legend.png" );
|
||||||
|
|
||||||
|
@ -37,10 +37,11 @@
|
|||||||
#include "cafPdmPtrField.h"
|
#include "cafPdmPtrField.h"
|
||||||
|
|
||||||
#include "RifEclipseSummaryAddressQMetaType.h"
|
#include "RifEclipseSummaryAddressQMetaType.h"
|
||||||
|
#include "RimEnsembleParameterColorHandlerInterface.h"
|
||||||
#include "cafPdmProxyValueField.h"
|
#include "cafPdmProxyValueField.h"
|
||||||
|
|
||||||
class QwtPlot;
|
#include <QPointer>
|
||||||
class QwtPlotCurve;
|
|
||||||
class RimSummaryCase;
|
class RimSummaryCase;
|
||||||
class RimSummaryCaseCollection;
|
class RimSummaryCaseCollection;
|
||||||
class RimSummaryCurve;
|
class RimSummaryCurve;
|
||||||
@ -50,25 +51,21 @@ class RimSummaryPlotSourceStepping;
|
|||||||
class RimSummaryCurveAutoName;
|
class RimSummaryCurveAutoName;
|
||||||
class RimEnsembleCurveFilterCollection;
|
class RimEnsembleCurveFilterCollection;
|
||||||
class RimEnsembleStatistics;
|
class RimEnsembleStatistics;
|
||||||
class QKeyEvent;
|
|
||||||
class RimEnsembleStatisticsCase;
|
class RimEnsembleStatisticsCase;
|
||||||
|
class RiuCvfOverlayItemWidget;
|
||||||
|
|
||||||
|
class QwtPlot;
|
||||||
|
class QwtPlotCurve;
|
||||||
|
class QKeyEvent;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
class RimEnsembleCurveSet : public caf::PdmObject
|
class RimEnsembleCurveSet : public caf::PdmObject, public RimEnsembleParameterColorHandlerInterface
|
||||||
{
|
{
|
||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum ColorMode
|
|
||||||
{
|
|
||||||
SINGLE_COLOR,
|
|
||||||
BY_ENSEMBLE_PARAM
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef std::pair<QString, EnsembleParameter> NameParameterPair;
|
|
||||||
|
|
||||||
RimEnsembleCurveSet();
|
RimEnsembleCurveSet();
|
||||||
~RimEnsembleCurveSet() override;
|
~RimEnsembleCurveSet() override;
|
||||||
|
|
||||||
@ -90,20 +87,21 @@ public:
|
|||||||
void deleteEnsembleCurves();
|
void deleteEnsembleCurves();
|
||||||
void deleteStatisticsCurves();
|
void deleteStatisticsCurves();
|
||||||
|
|
||||||
RimRegularLegendConfig* legendConfig();
|
void onLegendDefinitionChanged();
|
||||||
void onLegendDefinitionChanged();
|
|
||||||
|
|
||||||
void setSummaryCaseCollection( RimSummaryCaseCollection* sumCaseCollection );
|
void setSummaryCaseCollection( RimSummaryCaseCollection* sumCaseCollection );
|
||||||
RimSummaryCaseCollection* summaryCaseCollection() const;
|
RimSummaryCaseCollection* summaryCaseCollection() const;
|
||||||
|
|
||||||
RimEnsembleCurveFilterCollection* filterCollection() const;
|
RimEnsembleCurveFilterCollection* filterCollection() const;
|
||||||
|
|
||||||
ColorMode colorMode() const;
|
ColorMode colorMode() const override;
|
||||||
void setColorMode( ColorMode mode );
|
void setColorMode( ColorMode mode ) override;
|
||||||
void setEnsembleParameter( const QString& parameterName );
|
void setEnsembleParameter( const QString& parameterName ) override;
|
||||||
void updateEnsembleLegendItem();
|
void updateEnsembleLegendItem() override;
|
||||||
|
RimRegularLegendConfig* legendConfig() override;
|
||||||
|
QFrame* legendFrame() const override;
|
||||||
|
|
||||||
EnsembleParameter::Type currentEnsembleParameterType() const;
|
EnsembleParameter::Type currentEnsembleParameterType() const;
|
||||||
static QString ensembleParameterUiName( const NameParameterPair& paramPair );
|
|
||||||
|
|
||||||
void updateAllCurves();
|
void updateAllCurves();
|
||||||
void updateStatisticsCurves();
|
void updateStatisticsCurves();
|
||||||
@ -169,9 +167,9 @@ private:
|
|||||||
caf::PdmField<RifEclipseSummaryAddress> m_yValuesSummaryAddressUiField;
|
caf::PdmField<RifEclipseSummaryAddress> m_yValuesSummaryAddressUiField;
|
||||||
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
|
caf::PdmField<bool> m_yPushButtonSelectSummaryAddress;
|
||||||
|
|
||||||
caf::PdmField<caf::AppEnum<ColorMode>> m_colorMode;
|
caf::PdmField<ColorModeEnum> m_colorMode;
|
||||||
caf::PdmField<cvf::Color3f> m_color;
|
caf::PdmField<cvf::Color3f> m_color;
|
||||||
caf::PdmField<QString> m_ensembleParameter;
|
caf::PdmField<QString> m_ensembleParameter;
|
||||||
|
|
||||||
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis;
|
caf::PdmField<caf::AppEnum<RiaDefines::PlotAxis>> m_plotAxis;
|
||||||
|
|
||||||
@ -184,7 +182,8 @@ private:
|
|||||||
caf::PdmProxyValueField<QString> m_autoGeneratedName;
|
caf::PdmProxyValueField<QString> m_autoGeneratedName;
|
||||||
caf::PdmChildField<RimSummaryCurveAutoName*> m_summaryAddressNameTools;
|
caf::PdmChildField<RimSummaryCurveAutoName*> m_summaryAddressNameTools;
|
||||||
|
|
||||||
QwtPlotCurve* m_qwtPlotCurveForLegendText;
|
QwtPlotCurve* m_qwtPlotCurveForLegendText;
|
||||||
|
QPointer<RiuCvfOverlayItemWidget> m_legendOverlayFrame;
|
||||||
|
|
||||||
std::unique_ptr<RimEnsembleStatisticsCase> m_ensembleStatCase;
|
std::unique_ptr<RimEnsembleStatisticsCase> m_ensembleStatCase;
|
||||||
|
|
||||||
|
@ -0,0 +1,17 @@
|
|||||||
|
#include "RimEnsembleParameterColorHandlerInterface.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
namespace caf
|
||||||
|
{
|
||||||
|
template <>
|
||||||
|
void AppEnum<RimEnsembleParameterColorHandlerInterface::ColorMode>::setUp()
|
||||||
|
{
|
||||||
|
addItem( RimEnsembleParameterColorHandlerInterface::ColorMode::SINGLE_COLOR, "SINGLE_COLOR", "Single Color" );
|
||||||
|
addItem( RimEnsembleParameterColorHandlerInterface::ColorMode::BY_ENSEMBLE_PARAM,
|
||||||
|
"BY_ENSEMBLE_PARAM",
|
||||||
|
"By Ensemble Parameter" );
|
||||||
|
setDefault( RimEnsembleParameterColorHandlerInterface::ColorMode::SINGLE_COLOR );
|
||||||
|
}
|
||||||
|
} // namespace caf
|
@ -0,0 +1,49 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (C) 2019- Statoil ASA
|
||||||
|
//
|
||||||
|
// ResInsight is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
//
|
||||||
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||||
|
// for more details.
|
||||||
|
//
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "RimSummaryCaseCollection.h"
|
||||||
|
#include "cafAppEnum.h"
|
||||||
|
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
class RimRegularLegendConfig;
|
||||||
|
class RiuCvfOverlayItemWidget;
|
||||||
|
|
||||||
|
class QFrame;
|
||||||
|
|
||||||
|
class RimEnsembleParameterColorHandlerInterface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum class ColorMode
|
||||||
|
{
|
||||||
|
SINGLE_COLOR,
|
||||||
|
BY_ENSEMBLE_PARAM
|
||||||
|
};
|
||||||
|
using ColorModeEnum = caf::AppEnum<ColorMode>;
|
||||||
|
using NameParameterPair = EnsembleParameter::NameParameterPair;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual ColorMode colorMode() const = 0;
|
||||||
|
virtual void setColorMode( ColorMode mode ) = 0;
|
||||||
|
virtual void setEnsembleParameter( const QString& parameterName ) = 0;
|
||||||
|
virtual void updateEnsembleLegendItem() = 0;
|
||||||
|
virtual RimRegularLegendConfig* legendConfig() = 0;
|
||||||
|
virtual QFrame* legendFrame() const = 0;
|
||||||
|
};
|
@ -127,6 +127,30 @@ void EnsembleParameter::sortByBinnedVariation( std::vector<NameParameterPair>& p
|
|||||||
return lhs.second.variationBin > rhs.second.variationBin;
|
return lhs.second.variationBin > rhs.second.variationBin;
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QString EnsembleParameter::uiName( const NameParameterPair& paramPair )
|
||||||
|
{
|
||||||
|
QString stem = paramPair.first;
|
||||||
|
QString variationString;
|
||||||
|
if ( paramPair.second.isNumeric() )
|
||||||
|
{
|
||||||
|
switch ( paramPair.second.variationBin )
|
||||||
|
{
|
||||||
|
case LOW_VARIATION:
|
||||||
|
variationString = QString( " (Low variation)" );
|
||||||
|
case MEDIUM_VARIATION:
|
||||||
|
break;
|
||||||
|
case HIGH_VARIATION:
|
||||||
|
variationString = QString( " (High variation)" );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return QString( "%1%2" ).arg( stem ).arg( variationString );
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -89,6 +89,8 @@ public:
|
|||||||
|
|
||||||
static void sortByBinnedVariation( std::vector<NameParameterPair>& parameterVector );
|
static void sortByBinnedVariation( std::vector<NameParameterPair>& parameterVector );
|
||||||
|
|
||||||
|
static QString uiName( const NameParameterPair& paramPair );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
double stdDeviation() const;
|
double stdDeviation() const;
|
||||||
};
|
};
|
||||||
|
@ -683,7 +683,7 @@ size_t RimSummaryPlot::singleColorCurveCount() const
|
|||||||
{
|
{
|
||||||
auto allCurveSets = ensembleCurveSetCollection()->curveSets();
|
auto allCurveSets = ensembleCurveSetCollection()->curveSets();
|
||||||
size_t colorIndex = std::count_if( allCurveSets.begin(), allCurveSets.end(), []( RimEnsembleCurveSet* curveSet ) {
|
size_t colorIndex = std::count_if( allCurveSets.begin(), allCurveSets.end(), []( RimEnsembleCurveSet* curveSet ) {
|
||||||
return curveSet->colorMode() == RimEnsembleCurveSet::SINGLE_COLOR;
|
return curveSet->colorMode() == RimEnsembleCurveSet::ColorMode::SINGLE_COLOR;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
colorIndex += curveCount();
|
colorIndex += curveCount();
|
||||||
@ -711,7 +711,7 @@ void RimSummaryPlot::applyDefaultCurveAppearances()
|
|||||||
int colorIndex = 0;
|
int colorIndex = 0;
|
||||||
for ( auto& curveSet : this->ensembleCurveSetCollection()->curveSets() )
|
for ( auto& curveSet : this->ensembleCurveSetCollection()->curveSets() )
|
||||||
{
|
{
|
||||||
if ( curveSet->colorMode() != RimEnsembleCurveSet::SINGLE_COLOR ) continue;
|
if ( curveSet->colorMode() != RimEnsembleCurveSet::ColorMode::SINGLE_COLOR ) continue;
|
||||||
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex++ ) );
|
curveSet->setColor( RiaColorTables::summaryCurveDefaultPaletteColors().cycledColor3f( colorIndex++ ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1227,9 +1227,10 @@ void RimSummaryPlot::deleteCurves( const std::vector<RimSummaryCurve*>& curves )
|
|||||||
curveSet->deleteCurve( curve );
|
curveSet->deleteCurve( curve );
|
||||||
if ( curveSet->curves().empty() )
|
if ( curveSet->curves().empty() )
|
||||||
{
|
{
|
||||||
if ( curveSet->colorMode() == RimEnsembleCurveSet::BY_ENSEMBLE_PARAM && m_plotWidget )
|
if ( curveSet->colorMode() == RimEnsembleCurveSet::ColorMode::BY_ENSEMBLE_PARAM &&
|
||||||
|
m_plotWidget )
|
||||||
{
|
{
|
||||||
m_plotWidget->removeEnsembleCurveSetLegend( curveSet );
|
m_plotWidget->removeOverlayFrame( curveSet->legendFrame() );
|
||||||
}
|
}
|
||||||
m_ensembleCurveSetCollection->deleteCurveSet( curveSet );
|
m_ensembleCurveSetCollection->deleteCurveSet( curveSet );
|
||||||
}
|
}
|
||||||
@ -1526,28 +1527,6 @@ void RimSummaryPlot::cleanupBeforeClose()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimSummaryPlot::addOrUpdateEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet )
|
|
||||||
{
|
|
||||||
if ( m_plotWidget )
|
|
||||||
{
|
|
||||||
m_plotWidget->addOrUpdateEnsembleCurveSetLegend( curveSet );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimSummaryPlot::removeEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet )
|
|
||||||
{
|
|
||||||
if ( m_plotWidget )
|
|
||||||
{
|
|
||||||
m_plotWidget->removeEnsembleCurveSetLegend( curveSet );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -170,9 +170,6 @@ public:
|
|||||||
|
|
||||||
void onAxisSelected( int axis, bool toggle ) override;
|
void onAxisSelected( int axis, bool toggle ) override;
|
||||||
|
|
||||||
void addOrUpdateEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet );
|
|
||||||
void removeEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSet );
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// RimViewWindow overrides
|
// RimViewWindow overrides
|
||||||
QWidget* createViewWidget( QWidget* mainWindowParent = nullptr ) override;
|
QWidget* createViewWidget( QWidget* mainWindowParent = nullptr ) override;
|
||||||
|
@ -59,6 +59,8 @@ RiuCvfOverlayItemWidget::~RiuCvfOverlayItemWidget() {}
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RiuCvfOverlayItemWidget::updateFromOverlayItem( caf::TitledOverlayFrame* item )
|
void RiuCvfOverlayItemWidget::updateFromOverlayItem( caf::TitledOverlayFrame* item )
|
||||||
{
|
{
|
||||||
|
item->setRenderSize( item->preferredSize() );
|
||||||
|
|
||||||
unsigned int width = item->renderSize().x();
|
unsigned int width = item->renderSize().x();
|
||||||
unsigned int height = item->renderSize().y();
|
unsigned int height = item->renderSize().y();
|
||||||
|
|
||||||
|
@ -429,6 +429,38 @@ void RiuQwtPlotWidget::setWidgetState( const QString& widgetState )
|
|||||||
m_plotStyleSheet.setWidgetState( this, widgetState );
|
m_plotStyleSheet.setWidgetState( this, widgetState );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
/// Adds an overlay frame. The overlay frame becomes the responsibility of the plot widget
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuQwtPlotWidget::addOverlayFrame( QFrame* overlayFrame )
|
||||||
|
{
|
||||||
|
if ( std::find( m_overlayFrames.begin(), m_overlayFrames.end(), overlayFrame ) == m_overlayFrames.end() )
|
||||||
|
{
|
||||||
|
overlayFrame->setParent( this );
|
||||||
|
m_overlayFrames.push_back( overlayFrame );
|
||||||
|
updateLayout();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
/// Remove the overlay widget. The frame becomes the responsibility of the caller
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuQwtPlotWidget::removeOverlayFrame( QFrame* overlayFrame )
|
||||||
|
{
|
||||||
|
overlayFrame->hide();
|
||||||
|
overlayFrame->setParent( nullptr );
|
||||||
|
m_overlayFrames.removeOne( overlayFrame );
|
||||||
|
};
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuQwtPlotWidget::updateLayout()
|
||||||
|
{
|
||||||
|
QwtPlot::updateLayout();
|
||||||
|
updateOverlayFrameLayout();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -642,6 +674,36 @@ caf::UiStyleSheet RiuQwtPlotWidget::createCanvasStyleSheet() const
|
|||||||
return styleSheet;
|
return styleSheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuQwtPlotWidget::updateOverlayFrameLayout()
|
||||||
|
{
|
||||||
|
const int spacing = 5;
|
||||||
|
int startMarginX = this->canvas()->pos().x() + spacing;
|
||||||
|
int startMarginY = this->canvas()->pos().y() + spacing;
|
||||||
|
|
||||||
|
int xpos = startMarginX;
|
||||||
|
int ypos = startMarginY;
|
||||||
|
int maxColumnWidth = 0;
|
||||||
|
for ( QPointer<QFrame> frame : m_overlayFrames )
|
||||||
|
{
|
||||||
|
if ( !frame.isNull() )
|
||||||
|
{
|
||||||
|
if ( ypos + frame->height() + spacing > this->canvas()->height() )
|
||||||
|
{
|
||||||
|
xpos += spacing + maxColumnWidth;
|
||||||
|
ypos = startMarginY;
|
||||||
|
maxColumnWidth = 0;
|
||||||
|
}
|
||||||
|
frame->move( xpos, ypos );
|
||||||
|
ypos += frame->height() + spacing;
|
||||||
|
maxColumnWidth = std::max( maxColumnWidth, frame->width() );
|
||||||
|
frame->show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -100,6 +100,10 @@ public:
|
|||||||
void scheduleReplot();
|
void scheduleReplot();
|
||||||
void setWidgetState( const QString& widgetState );
|
void setWidgetState( const QString& widgetState );
|
||||||
|
|
||||||
|
void addOverlayFrame( QFrame* overlayWidget );
|
||||||
|
void removeOverlayFrame( QFrame* overlayWidget );
|
||||||
|
void updateLayout() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QSize sizeHint() const override;
|
QSize sizeHint() const override;
|
||||||
QSize minimumSizeHint() const override;
|
QSize minimumSizeHint() const override;
|
||||||
@ -128,6 +132,8 @@ private:
|
|||||||
caf::UiStyleSheet createPlotStyleSheet() const;
|
caf::UiStyleSheet createPlotStyleSheet() const;
|
||||||
caf::UiStyleSheet createCanvasStyleSheet() const;
|
caf::UiStyleSheet createCanvasStyleSheet() const;
|
||||||
|
|
||||||
|
void updateOverlayFrameLayout();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmPointer<RimPlot> m_plotDefinition;
|
caf::PdmPointer<RimPlot> m_plotDefinition;
|
||||||
QPoint m_clickPosition;
|
QPoint m_clickPosition;
|
||||||
@ -136,6 +142,8 @@ private:
|
|||||||
QPointer<QwtPlotPicker> m_plotPicker;
|
QPointer<QwtPlotPicker> m_plotPicker;
|
||||||
bool m_draggable;
|
bool m_draggable;
|
||||||
|
|
||||||
|
QList<QPointer<QFrame>> m_overlayFrames;
|
||||||
|
|
||||||
struct CurveColors
|
struct CurveColors
|
||||||
{
|
{
|
||||||
QColor lineColor;
|
QColor lineColor;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "RimEnsembleCurveSet.h"
|
#include "RimEnsembleCurveSet.h"
|
||||||
#include "RimEnsembleCurveSetCollection.h"
|
#include "RimEnsembleCurveSetCollection.h"
|
||||||
|
#include "RimEnsembleParameterColorHandlerInterface.h"
|
||||||
#include "RimMainPlotCollection.h"
|
#include "RimMainPlotCollection.h"
|
||||||
#include "RimPlot.h"
|
#include "RimPlot.h"
|
||||||
#include "RimRegularLegendConfig.h"
|
#include "RimRegularLegendConfig.h"
|
||||||
@ -156,57 +157,6 @@ void RiuSummaryQwtPlot::useTimeBasedTimeAxis()
|
|||||||
setAxisScaleDraw( QwtPlot::xBottom, new QwtScaleDraw() );
|
setAxisScaleDraw( QwtPlot::xBottom, new QwtScaleDraw() );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RiuSummaryQwtPlot::addOrUpdateEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSetToShowLegendFor )
|
|
||||||
{
|
|
||||||
RiuCvfOverlayItemWidget* overlayWidget = nullptr;
|
|
||||||
|
|
||||||
auto it = m_ensembleLegendWidgets.find( curveSetToShowLegendFor );
|
|
||||||
if ( it == m_ensembleLegendWidgets.end() || it->second == nullptr )
|
|
||||||
{
|
|
||||||
overlayWidget = new RiuCvfOverlayItemWidget( this, canvas() );
|
|
||||||
m_ensembleLegendWidgets[curveSetToShowLegendFor] = overlayWidget;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
overlayWidget = it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( overlayWidget )
|
|
||||||
{
|
|
||||||
caf::TitledOverlayFrame* overlayItem = curveSetToShowLegendFor->legendConfig()->titledOverlayFrame();
|
|
||||||
overlayItem->setRenderSize( overlayItem->preferredSize() );
|
|
||||||
|
|
||||||
overlayWidget->updateFromOverlayItem( curveSetToShowLegendFor->legendConfig()->titledOverlayFrame() );
|
|
||||||
overlayWidget->show();
|
|
||||||
}
|
|
||||||
|
|
||||||
this->updateLegendLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RiuSummaryQwtPlot::removeEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSetToShowLegendFor )
|
|
||||||
{
|
|
||||||
auto it = m_ensembleLegendWidgets.find( curveSetToShowLegendFor );
|
|
||||||
if ( it != m_ensembleLegendWidgets.end() )
|
|
||||||
{
|
|
||||||
if ( it->second != nullptr )
|
|
||||||
{
|
|
||||||
it->second->hide();
|
|
||||||
it->second->setParent( nullptr );
|
|
||||||
delete it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_ensembleLegendWidgets.erase( it );
|
|
||||||
}
|
|
||||||
|
|
||||||
this->updateLegendLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -303,15 +253,6 @@ void RiuSummaryQwtPlot::setDefaults()
|
|||||||
useDateBasedTimeAxis( dateFormat, timeFormat );
|
useDateBasedTimeAxis( dateFormat, timeFormat );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RiuSummaryQwtPlot::updateLayout()
|
|
||||||
{
|
|
||||||
QwtPlot::updateLayout();
|
|
||||||
updateLegendLayout();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -338,41 +279,3 @@ void RiuSummaryQwtPlot::onZoomedSlot()
|
|||||||
plotDefinition()->setAutoScaleYEnabled( false );
|
plotDefinition()->setAutoScaleYEnabled( false );
|
||||||
plotDefinition()->updateZoomFromQwt();
|
plotDefinition()->updateZoomFromQwt();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RiuSummaryQwtPlot::updateLegendLayout()
|
|
||||||
{
|
|
||||||
const int spacing = 5;
|
|
||||||
int startMarginX = this->canvas()->pos().x() + spacing;
|
|
||||||
int startMarginY = this->canvas()->pos().y() + spacing;
|
|
||||||
|
|
||||||
int xpos = startMarginX;
|
|
||||||
int ypos = startMarginY;
|
|
||||||
int maxColumnWidth = 0;
|
|
||||||
|
|
||||||
RimSummaryPlot* summaryPlot = dynamic_cast<RimSummaryPlot*>( plotDefinition() );
|
|
||||||
|
|
||||||
if ( !summaryPlot || !summaryPlot->ensembleCurveSetCollection() ) return;
|
|
||||||
|
|
||||||
for ( RimEnsembleCurveSet* curveSet : summaryPlot->ensembleCurveSetCollection()->curveSets() )
|
|
||||||
{
|
|
||||||
auto pairIt = m_ensembleLegendWidgets.find( curveSet );
|
|
||||||
if ( pairIt != m_ensembleLegendWidgets.end() )
|
|
||||||
{
|
|
||||||
if ( ypos + pairIt->second->height() + spacing > this->canvas()->height() )
|
|
||||||
{
|
|
||||||
xpos += spacing + maxColumnWidth;
|
|
||||||
ypos = startMarginY;
|
|
||||||
maxColumnWidth = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
RiuCvfOverlayItemWidget* overlayWidget = pairIt->second;
|
|
||||||
overlayWidget->move( xpos, ypos );
|
|
||||||
|
|
||||||
ypos += pairIt->second->height() + spacing;
|
|
||||||
maxColumnWidth = std::max( maxColumnWidth, pairIt->second->width() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
class RimEnsembleCurveSet;
|
class RimEnsembleParameterColorHandlerInterface;
|
||||||
class RiuCvfOverlayItemWidget;
|
class RiuCvfOverlayItemWidget;
|
||||||
class RiuQwtPlotZoomer;
|
class RiuQwtPlotZoomer;
|
||||||
class RiuQwtPlotWheelZoomer;
|
class RiuQwtPlotWheelZoomer;
|
||||||
@ -52,9 +52,6 @@ public:
|
|||||||
|
|
||||||
void useTimeBasedTimeAxis();
|
void useTimeBasedTimeAxis();
|
||||||
|
|
||||||
void addOrUpdateEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSetToShowLegendFor );
|
|
||||||
void removeEnsembleCurveSetLegend( RimEnsembleCurveSet* curveSetToShowLegendFor );
|
|
||||||
|
|
||||||
RimViewWindow* ownerViewWindow() const override;
|
RimViewWindow* ownerViewWindow() const override;
|
||||||
|
|
||||||
void setLegendFontSize( int fontSize );
|
void setLegendFontSize( int fontSize );
|
||||||
@ -66,7 +63,6 @@ protected:
|
|||||||
void keyPressEvent( QKeyEvent* ) override;
|
void keyPressEvent( QKeyEvent* ) override;
|
||||||
void contextMenuEvent( QContextMenuEvent* ) override;
|
void contextMenuEvent( QContextMenuEvent* ) override;
|
||||||
void setDefaults();
|
void setDefaults();
|
||||||
void updateLayout() override;
|
|
||||||
bool isZoomerActive() const override;
|
bool isZoomerActive() const override;
|
||||||
void endZoomOperations() override;
|
void endZoomOperations() override;
|
||||||
|
|
||||||
@ -74,10 +70,6 @@ private slots:
|
|||||||
void onZoomedSlot();
|
void onZoomedSlot();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateLegendLayout();
|
|
||||||
|
|
||||||
std::map<caf::PdmPointer<RimEnsembleCurveSet>, QPointer<RiuCvfOverlayItemWidget>> m_ensembleLegendWidgets;
|
|
||||||
|
|
||||||
QPointer<RiuQwtPlotZoomer> m_zoomerLeft;
|
QPointer<RiuQwtPlotZoomer> m_zoomerLeft;
|
||||||
QPointer<RiuQwtPlotZoomer> m_zoomerRight;
|
QPointer<RiuQwtPlotZoomer> m_zoomerRight;
|
||||||
QPointer<RiuQwtPlotWheelZoomer> m_wheelZoomer;
|
QPointer<RiuQwtPlotWheelZoomer> m_wheelZoomer;
|
||||||
|
Loading…
Reference in New Issue
Block a user