mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6402 Reduce axis label overlap in Analysis plots
This commit is contained in:
@@ -22,7 +22,6 @@
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RiaColorTables.h"
|
||||
#include "RiaQDateTimeTools.h"
|
||||
#include "RifReaderSettings.h"
|
||||
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
@@ -863,9 +862,11 @@ const QString& RiaPreferences::timeFormat() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RiaPreferences::dateTimeFormat() const
|
||||
QString RiaPreferences::dateTimeFormat( DateFormatComponents dateComponents, TimeFormatComponents timeComponents ) const
|
||||
{
|
||||
return QString( "%1 %2" ).arg( m_dateFormat() ).arg( m_timeFormat() );
|
||||
return QString( "%1 %2" )
|
||||
.arg( RiaQDateTimeTools::dateFormatString( m_dateFormat(), dateComponents ) )
|
||||
.arg( RiaQDateTimeTools::timeFormatString( m_timeFormat(), timeComponents ) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "RiaDefines.h"
|
||||
#include "RiaFontCache.h"
|
||||
#include "RiaGuiApplication.h"
|
||||
#include "RiaQDateTimeTools.h"
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafPdmChildField.h"
|
||||
@@ -49,6 +50,9 @@ class RiaPreferences : public caf::PdmObject
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
using DateFormatComponents = RiaQDateTimeTools::DateFormatComponents;
|
||||
using TimeFormatComponents = RiaQDateTimeTools::TimeFormatComponents;
|
||||
|
||||
enum class SummaryRestartFilesImportMode
|
||||
{
|
||||
IMPORT,
|
||||
@@ -95,7 +99,8 @@ public:
|
||||
|
||||
const QString& dateFormat() const;
|
||||
const QString& timeFormat() const;
|
||||
QString dateTimeFormat() const;
|
||||
QString dateTimeFormat( DateFormatComponents dateComponents = DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY,
|
||||
TimeFormatComponents timeComponents = TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE_SECOND ) const;
|
||||
|
||||
bool searchPlotTemplateFoldersRecursively() const;
|
||||
QStringList plotTemplateFolders() const;
|
||||
|
||||
@@ -129,8 +129,12 @@ public:
|
||||
static std::vector<QString> supportedDateFormats();
|
||||
static std::vector<QString> supportedTimeFormats();
|
||||
|
||||
static QString dateFormatString( const QString& fullDateFormat, DateFormatComponents dateComponents );
|
||||
static QString timeFormatString( const QString& fullTimeFormat, TimeFormatComponents timeComponents );
|
||||
static QString
|
||||
dateFormatString( const QString& fullDateFormat,
|
||||
DateFormatComponents dateComponents = DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY );
|
||||
static QString
|
||||
timeFormatString( const QString& fullTimeFormat,
|
||||
TimeFormatComponents timeComponents = TimeFormatComponents::TIME_FORMAT_HOUR_MINUTE_SECOND );
|
||||
|
||||
static QList<caf::PdmOptionItemInfo> createOptionItems( const std::vector<time_t>& timeSteps );
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ RimAnalysisPlot::RimAnalysisPlot()
|
||||
|
||||
// Variable selection
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectedVarsUiField, "selectedVarsUiField", "Selected Variables", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_selectedVarsUiField, "selectedVarsUiField", "Selected Vectors", "", "", "" );
|
||||
m_selectedVarsUiField.xmlCapability()->disableIO();
|
||||
m_selectedVarsUiField.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||
m_selectedVarsUiField.uiCapability()->setUiReadOnly( true );
|
||||
@@ -485,6 +485,7 @@ void RimAnalysisPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering
|
||||
caf::PdmUiGroup* selVectorsGrp = uiOrdering.addNewGroup( "Selected Vectors" );
|
||||
selVectorsGrp->add( &m_selectedVarsUiField );
|
||||
selVectorsGrp->add( &m_selectVariablesButtonField, {false} );
|
||||
selVectorsGrp->add( &m_referenceCase, {true, 3, 2} );
|
||||
|
||||
QString vectorNames;
|
||||
if ( getOrCreateSelectedCurveDefAnalyser() )
|
||||
@@ -513,30 +514,27 @@ void RimAnalysisPlot::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering
|
||||
timeStepGrp->add( &m_timeStepFilter );
|
||||
timeStepGrp->add( &m_selectedTimeSteps );
|
||||
|
||||
uiOrdering.add( &m_referenceCase, {true, 3, 2} );
|
||||
|
||||
uiOrdering.add( &m_showPlotTitle );
|
||||
uiOrdering.add( &m_useAutoPlotTitle, {false} );
|
||||
uiOrdering.add( &m_description, {false} );
|
||||
caf::PdmUiGroup* titleGrp = uiOrdering.addNewGroup( "Title and Legend" );
|
||||
titleGrp->add( &m_showPlotTitle );
|
||||
titleGrp->add( &m_useAutoPlotTitle, {false} );
|
||||
titleGrp->add( &m_description, {false} );
|
||||
m_description.uiCapability()->setUiReadOnly( m_useAutoPlotTitle() );
|
||||
|
||||
uiOrdering.add( &m_barOrientation, {true, 3, 2} );
|
||||
|
||||
caf::PdmUiGroup* sortGrp = uiOrdering.addNewGroup( "Sorting, Grouping and Coloring" );
|
||||
sortGrp->add( &m_majorGroupType );
|
||||
sortGrp->add( &m_mediumGroupType );
|
||||
sortGrp->add( &m_minorGroupType );
|
||||
sortGrp->add( &m_valueSortOperation );
|
||||
sortGrp->add( &m_useTopBarsFilter );
|
||||
sortGrp->add( &m_maxBarCount, {false} );
|
||||
m_maxBarCount.uiCapability()->setUiReadOnly( !m_useTopBarsFilter() );
|
||||
sortGrp->add( &m_sortGroupForColors );
|
||||
|
||||
caf::PdmUiGroup* legendGrp = uiOrdering.addNewGroup( "Legend" );
|
||||
legendGrp->add( &m_showPlotLegends );
|
||||
legendGrp->add( &m_legendFontSize );
|
||||
titleGrp->add( &m_showPlotLegends );
|
||||
titleGrp->add( &m_legendFontSize );
|
||||
m_legendFontSize.uiCapability()->setUiReadOnly( !m_showPlotLegends() );
|
||||
|
||||
caf::PdmUiGroup* chartSettings = uiOrdering.addNewGroup( "Bar Settings" );
|
||||
chartSettings->add( &m_barOrientation, {true, 3, 2} );
|
||||
|
||||
chartSettings->add( &m_majorGroupType );
|
||||
chartSettings->add( &m_mediumGroupType );
|
||||
chartSettings->add( &m_minorGroupType );
|
||||
chartSettings->add( &m_valueSortOperation );
|
||||
chartSettings->add( &m_useTopBarsFilter );
|
||||
chartSettings->add( &m_maxBarCount, {false} );
|
||||
m_maxBarCount.uiCapability()->setUiReadOnly( !m_useTopBarsFilter() );
|
||||
chartSettings->add( &m_sortGroupForColors );
|
||||
|
||||
caf::PdmUiGroup* barLabelGrp = uiOrdering.addNewGroup( "Bar Labels" );
|
||||
barLabelGrp->add( &m_useBarText );
|
||||
barLabelGrp->add( &m_barTextFontSize );
|
||||
@@ -950,11 +948,11 @@ void RimAnalysisPlot::cleanupBeforeClose()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString assignGroupingText( RimAnalysisPlot::SortGroupType sortGroup,
|
||||
const RiaSummaryCurveDefinition dataEntry,
|
||||
const QString& timestepString )
|
||||
QString RimAnalysisPlot::assignGroupingText( RimAnalysisPlot::SortGroupType sortGroup,
|
||||
const RiaSummaryCurveDefinition dataEntry,
|
||||
const QString& timestepString ) const
|
||||
{
|
||||
QString groupingText;
|
||||
QString groupingText = "";
|
||||
|
||||
switch ( sortGroup )
|
||||
{
|
||||
@@ -1096,61 +1094,65 @@ void RimAnalysisPlot::applyFilter( const RimPlotDataFilterItem* filter,
|
||||
std::map<RimSummaryCase*, double> casesToKeepWithValue;
|
||||
std::map<RifEclipseSummaryAddress, double> sumItemsToKeepWithValue;
|
||||
|
||||
if ( filter->filterTarget() == RimPlotDataFilterItem::ENSEMBLE_CASE && !filter->ensembleParameterName().isEmpty() )
|
||||
if ( filter->filterTarget() == RimPlotDataFilterItem::ENSEMBLE_CASE )
|
||||
{
|
||||
sumItemsToKeep = ( *filteredSummaryItems ); // Not filtering items
|
||||
|
||||
EnsembleParameter eParam = this->ensembleParameter( filter->ensembleParameterName() );
|
||||
|
||||
std::set<RimSummaryCase*> casesToRemove;
|
||||
for ( auto sumCase : ( *filteredSumCases ) )
|
||||
if ( !filter->ensembleParameterName().isEmpty() )
|
||||
{
|
||||
if ( !eParam.isValid() ) continue;
|
||||
if ( !sumCase->caseRealizationParameters() ) continue;
|
||||
sumItemsToKeep = ( *filteredSummaryItems ); // Not filtering items
|
||||
|
||||
RigCaseRealizationParameters::Value crpValue =
|
||||
sumCase->caseRealizationParameters()->parameterValue( filter->ensembleParameterName() );
|
||||
EnsembleParameter eParam = this->ensembleParameter( filter->ensembleParameterName() );
|
||||
|
||||
if ( eParam.isNumeric() && crpValue.isNumeric() )
|
||||
std::set<RimSummaryCase*> casesToRemove;
|
||||
for ( auto sumCase : ( *filteredSumCases ) )
|
||||
{
|
||||
double value = crpValue.numericValue();
|
||||
if ( !eParam.isValid() ) continue;
|
||||
if ( !sumCase->caseRealizationParameters() ) continue;
|
||||
|
||||
if ( filter->filterOperation() == RimPlotDataFilterItem::RANGE )
|
||||
RigCaseRealizationParameters::Value crpValue =
|
||||
sumCase->caseRealizationParameters()->parameterValue( filter->ensembleParameterName() );
|
||||
|
||||
if ( eParam.isNumeric() && crpValue.isNumeric() )
|
||||
{
|
||||
std::pair<double, double> minMax = filter->filterRangeMinMax();
|
||||
double value = crpValue.numericValue();
|
||||
|
||||
if ( filter->useAbsoluteValues() ) value = fabs( value );
|
||||
|
||||
if ( minMax.first <= value && value <= minMax.second )
|
||||
if ( filter->filterOperation() == RimPlotDataFilterItem::RANGE )
|
||||
{
|
||||
casesToKeep.insert( sumCase );
|
||||
}
|
||||
}
|
||||
else if ( filter->filterOperation() == RimPlotDataFilterItem::TOP_N ||
|
||||
filter->filterOperation() == RimPlotDataFilterItem::BOTTOM_N )
|
||||
{
|
||||
if ( filter->useAbsoluteValues() ) value = fabs( value );
|
||||
bool useLargest = filter->filterOperation() == RimPlotDataFilterItem::TOP_N;
|
||||
std::pair<double, double> minMax = filter->filterRangeMinMax();
|
||||
|
||||
auto itIsInsertedPair = casesToKeepWithValue.insert( {sumCase, value} );
|
||||
if ( !itIsInsertedPair.second ) // Already exists in map
|
||||
{
|
||||
double& insertedValue = itIsInsertedPair.first->second;
|
||||
if ( ( useLargest && ( insertedValue < value ) ) || ( !useLargest && ( value < insertedValue ) ) )
|
||||
if ( filter->useAbsoluteValues() ) value = fabs( value );
|
||||
|
||||
if ( minMax.first <= value && value <= minMax.second )
|
||||
{
|
||||
insertedValue = value;
|
||||
casesToKeep.insert( sumCase );
|
||||
}
|
||||
}
|
||||
else if ( filter->filterOperation() == RimPlotDataFilterItem::TOP_N ||
|
||||
filter->filterOperation() == RimPlotDataFilterItem::BOTTOM_N )
|
||||
{
|
||||
if ( filter->useAbsoluteValues() ) value = fabs( value );
|
||||
bool useLargest = filter->filterOperation() == RimPlotDataFilterItem::TOP_N;
|
||||
|
||||
auto itIsInsertedPair = casesToKeepWithValue.insert( {sumCase, value} );
|
||||
if ( !itIsInsertedPair.second ) // Already exists in map
|
||||
{
|
||||
double& insertedValue = itIsInsertedPair.first->second;
|
||||
if ( ( useLargest && ( insertedValue < value ) ) ||
|
||||
( !useLargest && ( value < insertedValue ) ) )
|
||||
{
|
||||
insertedValue = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( eParam.isText() && crpValue.isText() )
|
||||
{
|
||||
const auto& filterCategories = filter->selectedEnsembleParameterCategories();
|
||||
|
||||
if ( crpValue.isText() &&
|
||||
std::count( filterCategories.begin(), filterCategories.end(), crpValue.textValue() ) == 0 )
|
||||
else if ( eParam.isText() && crpValue.isText() )
|
||||
{
|
||||
casesToKeep.insert( sumCase );
|
||||
const auto& filterCategories = filter->selectedEnsembleParameterCategories();
|
||||
|
||||
if ( crpValue.isText() &&
|
||||
std::count( filterCategories.begin(), filterCategories.end(), crpValue.textValue() ) == 0 )
|
||||
{
|
||||
casesToKeep.insert( sumCase );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1509,7 +1511,7 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
|
||||
double sortValue = std::numeric_limits<double>::infinity();
|
||||
|
||||
QDateTime dateTime = RiaQDateTimeTools::fromTime_t( timesteps[timestepIdx] );
|
||||
QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( {dateTime} );
|
||||
QString formatString = RiaQDateTimeTools::dateFormatString( RiaPreferences::current()->dateFormat() );
|
||||
|
||||
QString timestepString = dateTime.toString( formatString );
|
||||
|
||||
@@ -1531,34 +1533,36 @@ void RimAnalysisPlot::addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBui
|
||||
}
|
||||
|
||||
QString barText;
|
||||
QString separator = " ";
|
||||
QString separator = ", ";
|
||||
|
||||
if ( m_useBarText() )
|
||||
{
|
||||
QStringList barTextComponents;
|
||||
if ( m_useQuantityInBarText )
|
||||
{
|
||||
barText += QString::fromStdString( curveDef.summaryAddress().quantityName() ) + separator;
|
||||
barTextComponents += QString::fromStdString( curveDef.summaryAddress().quantityName() );
|
||||
}
|
||||
|
||||
if ( m_useSummaryItemInBarText )
|
||||
{
|
||||
barText += QString::fromStdString( curveDef.summaryAddress().itemUiText() ) + separator;
|
||||
barTextComponents += QString::fromStdString( curveDef.summaryAddress().itemUiText() );
|
||||
}
|
||||
|
||||
if ( m_useCaseInBarText && curveDef.summaryCase() )
|
||||
{
|
||||
barText += curveDef.summaryCase()->displayCaseName() + separator;
|
||||
barTextComponents += curveDef.summaryCase()->displayCaseName();
|
||||
}
|
||||
|
||||
if ( m_useEnsembleInBarText && curveDef.ensemble() )
|
||||
{
|
||||
barText += curveDef.ensemble()->name() + separator;
|
||||
barTextComponents += curveDef.ensemble()->name();
|
||||
}
|
||||
|
||||
if ( m_useTimeStepInBarText )
|
||||
{
|
||||
barText += timestepString + separator;
|
||||
barTextComponents += timestepString;
|
||||
}
|
||||
barText = barTextComponents.join( separator );
|
||||
}
|
||||
|
||||
chartBuilder.addBarEntry( majorText, medText, minText, sortValue, legendText, barText, value );
|
||||
@@ -1616,7 +1620,9 @@ void RimAnalysisPlot::updatePlotTitle()
|
||||
{
|
||||
if ( !autoTitle.isEmpty() ) autoTitle += " @ ";
|
||||
|
||||
QString formatString = RiaQDateTimeTools::createTimeFormatStringFromDates( {m_selectedTimeSteps()[0]} );
|
||||
QString formatString =
|
||||
RiaPreferences::current()->dateTimeFormat( RiaQDateTimeTools::DateFormatComponents::DATE_FORMAT_YEAR_MONTH_DAY,
|
||||
RiaQDateTimeTools::TimeFormatComponents::TIME_FORMAT_NONE );
|
||||
autoTitle += m_selectedTimeSteps()[0].toString( formatString );
|
||||
}
|
||||
|
||||
|
||||
@@ -153,6 +153,10 @@ private:
|
||||
void addDataToChartBuilder( RiuGroupedBarChartBuilder& chartBuilder );
|
||||
void updatePlotTitle();
|
||||
|
||||
QString assignGroupingText( RimAnalysisPlot::SortGroupType sortGroup,
|
||||
const RiaSummaryCurveDefinition dataEntry,
|
||||
const QString& timestepString ) const;
|
||||
|
||||
RiaSummaryCurveDefinitionAnalyser* getOrCreateSelectedCurveDefAnalyser();
|
||||
std::vector<RiaSummaryCurveDefinition> curveDefinitionsWithoutEnsembleReference() const;
|
||||
std::vector<RiaSummaryCurveDefinition> curveDefinitionsWithEmbeddedEnsembleReference();
|
||||
|
||||
@@ -117,38 +117,53 @@ public:
|
||||
this->setTickLength( QwtScaleDiv::MediumTick, 0 );
|
||||
this->setTickLength( QwtScaleDiv::MinorTick, 0 );
|
||||
|
||||
bool hasMinorTickText = false;
|
||||
bool hasMediumTickText = false;
|
||||
int minTickMaxTextSize = 0;
|
||||
int medTickMaxTextSize = 0;
|
||||
int minorTextLineCount = 0;
|
||||
int mediumTextLineCount = 0;
|
||||
int minTickMaxTextSize = 0;
|
||||
int medTickMaxTextSize = 0;
|
||||
|
||||
for ( const auto& posTickTypeText : m_posTickTypeAndTexts )
|
||||
for ( auto& posTickTypeText : m_posTickTypeAndTexts )
|
||||
{
|
||||
if ( posTickTypeText.second.tickType == QwtScaleDiv::MediumTick )
|
||||
{
|
||||
hasMediumTickText = true;
|
||||
medTickMaxTextSize = std::max( posTickTypeText.second.label.size(), medTickMaxTextSize );
|
||||
int lineCount = 1 + posTickTypeText.second.label.count( "\n" );
|
||||
mediumTextLineCount = std::max( mediumTextLineCount, lineCount );
|
||||
medTickMaxTextSize = std::max( posTickTypeText.second.label.size(), medTickMaxTextSize );
|
||||
}
|
||||
if ( posTickTypeText.second.tickType == QwtScaleDiv::MinorTick )
|
||||
else if ( posTickTypeText.second.tickType == QwtScaleDiv::MinorTick )
|
||||
{
|
||||
hasMinorTickText = true;
|
||||
int lineCount = 1 + posTickTypeText.second.label.count( "\n" );
|
||||
minorTextLineCount = std::max( minorTextLineCount, lineCount );
|
||||
minTickMaxTextSize = std::max( posTickTypeText.second.label.size(), minTickMaxTextSize );
|
||||
}
|
||||
}
|
||||
|
||||
m_medLineBreak = hasMinorTickText ? "\n" : "";
|
||||
m_majLineBreak = m_medLineBreak + ( hasMediumTickText ? QString( "\n" ) : QString( "" ) );
|
||||
m_medLineBreak = "";
|
||||
for ( int i = 0; i < minorTextLineCount; ++i )
|
||||
{
|
||||
m_medLineBreak += "\n";
|
||||
}
|
||||
|
||||
m_majLineBreak = m_medLineBreak;
|
||||
for ( int i = 0; i < mediumTextLineCount; ++i )
|
||||
{
|
||||
m_majLineBreak += "\n";
|
||||
}
|
||||
|
||||
m_medSpacing.fill( ' ', 2 * minTickMaxTextSize );
|
||||
m_majSpacing = m_medSpacing + QString().fill( ' ', 2 * medTickMaxTextSize );
|
||||
}
|
||||
|
||||
QwtText createLabelFromString( const QString& string ) const
|
||||
QwtText createLabelFromString( const QString& string, int fontSizeChange = 0 ) const
|
||||
{
|
||||
QwtText text( string );
|
||||
QFont font = text.font();
|
||||
font.setPixelSize( caf::FontTools::pointSizeToPixelSize( m_labelFontPointSize ) );
|
||||
|
||||
QFont font = text.font();
|
||||
font.setPixelSize( caf::FontTools::pointSizeToPixelSize( m_labelFontPointSize + fontSizeChange ) );
|
||||
text.setFont( font );
|
||||
|
||||
text.setPaintAttribute( QwtText::PaintUsingTextFont, true );
|
||||
|
||||
return text;
|
||||
}
|
||||
/// Override to add new lines to the labels according to the tick level
|
||||
@@ -162,31 +177,31 @@ public:
|
||||
{
|
||||
if ( posTickIt->second.tickType == QwtScaleDiv::MediumTick )
|
||||
{
|
||||
return createLabelFromString( m_medLineBreak + posTickIt->second.label );
|
||||
return createLabelFromString( m_medLineBreak + posTickIt->second.label, -1 );
|
||||
}
|
||||
else if ( posTickIt->second.tickType == QwtScaleDiv::MajorTick )
|
||||
{
|
||||
return createLabelFromString( m_majLineBreak + posTickIt->second.label );
|
||||
return createLabelFromString( m_majLineBreak + posTickIt->second.label, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
return createLabelFromString( posTickIt->second.label );
|
||||
return createLabelFromString( posTickIt->second.label, -2 );
|
||||
}
|
||||
}
|
||||
else if ( this->alignment() == LeftScale )
|
||||
{
|
||||
if ( posTickIt->second.tickType == QwtScaleDiv::MediumTick )
|
||||
{
|
||||
return createLabelFromString( posTickIt->second.label + m_medSpacing );
|
||||
return createLabelFromString( posTickIt->second.label + m_medSpacing, -1 );
|
||||
}
|
||||
else if ( posTickIt->second.tickType == QwtScaleDiv::MajorTick )
|
||||
{
|
||||
return createLabelFromString( posTickIt->second.label + m_majSpacing );
|
||||
return createLabelFromString( posTickIt->second.label + m_majSpacing, 0 );
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return createLabelFromString( posTickIt->second.label );
|
||||
return createLabelFromString( posTickIt->second.label, -2 );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -298,7 +313,7 @@ RiuGroupedBarChartBuilder::RiuGroupedBarChartBuilder( bool sortGroupsByMaxValueI
|
||||
: m_isSortingByMaxValueInGroups( sortGroupsByMaxValueInGroup )
|
||||
{
|
||||
m_labelPointSize = caf::FontTools::absolutePointSize( RiaPreferences::current()->defaultPlotFontSize(),
|
||||
caf::FontTools::RelativeSize::Small );
|
||||
caf::FontTools::RelativeSize::Medium );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user