From 135ca97ba45c13b422528f268281a05798636cb7 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Thu, 1 Oct 2020 10:35:57 +0200 Subject: [PATCH] #6663, #6673 Fix black text in Ensemble legend frame and wrong PDF-rendering --- .../Application/RiaApplication.cpp | 3 +++ ApplicationCode/Application/RiaDefines.h | 3 ++- .../RicSnapshotViewToFileFeature.cpp | 5 ++++ .../UserInterface/RiuAbstractLegendFrame.cpp | 11 ++++++-- ApplicationCode/UserInterface/RiuGuiTheme.cpp | 26 ++++++++++++------- ApplicationCode/UserInterface/RiuGuiTheme.h | 10 ++++--- 6 files changed, 43 insertions(+), 15 deletions(-) diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index 7e1da9a71a..c1b0d18906 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -101,6 +101,7 @@ #include "RimWellRftPlot.h" #include "Riu3DMainWindowTools.h" +#include "RiuGuiTheme.h" #include "RiuViewer.h" #include "RiuViewerCommands.h" @@ -1223,6 +1224,8 @@ void RiaApplication::applyPreferences() m_defaultAnnotationFont = RiaFontCache::getFont( fontSizes[RiaDefines::FontSettingType::ANNOTATION_FONT] ); m_defaultWellLabelFont = RiaFontCache::getFont( fontSizes[RiaDefines::FontSettingType::WELL_LABEL_FONT] ); + RiuGuiTheme::updateGuiTheme( m_preferences->guiTheme() ); + if ( this->project() ) { this->project()->setScriptDirectories( m_preferences->scriptDirectories() ); diff --git a/ApplicationCode/Application/RiaDefines.h b/ApplicationCode/Application/RiaDefines.h index ae08414083..06c6707da9 100644 --- a/ApplicationCode/Application/RiaDefines.h +++ b/ApplicationCode/Application/RiaDefines.h @@ -219,7 +219,8 @@ enum class ThemeEnum { DEFAULT, DARK, - LIGHT + LIGHT, + UNDEFINED }; }; // namespace RiaDefines diff --git a/ApplicationCode/Commands/ExportCommands/RicSnapshotViewToFileFeature.cpp b/ApplicationCode/Commands/ExportCommands/RicSnapshotViewToFileFeature.cpp index 992e132698..0c9f628f28 100644 --- a/ApplicationCode/Commands/ExportCommands/RicSnapshotViewToFileFeature.cpp +++ b/ApplicationCode/Commands/ExportCommands/RicSnapshotViewToFileFeature.cpp @@ -29,6 +29,7 @@ #include "RimViewWindow.h" #include "RiuFileDialogTools.h" +#include "RiuGuiTheme.h" #include "RiuPlotMainWindow.h" #include "RicSnapshotFilenameGenerator.h" @@ -86,6 +87,9 @@ void RicSnapshotViewToFileFeature::saveSnapshotAs( const QString& fileName, cons //-------------------------------------------------------------------------------------------------- void RicSnapshotViewToFileFeature::savePlotPdfReportAs( const QString& fileName, RimPlotWindow* plot ) { + auto currentTheme = RiuGuiTheme::currentGuiTheme(); + + RiuGuiTheme::updateGuiTheme( RiaDefines::ThemeEnum::LIGHT ); RiaPlotWindowRedrawScheduler::instance()->performScheduledUpdatesAndReplots(); QCoreApplication::processEvents(); QFile pdfFile( fileName ); @@ -132,6 +136,7 @@ void RicSnapshotViewToFileFeature::savePlotPdfReportAs( const QString& fileName, { RiaLogging::error( QString( "Could not write PDF to %1" ).arg( fileName ) ); } + RiuGuiTheme::updateGuiTheme( currentTheme ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/UserInterface/RiuAbstractLegendFrame.cpp b/ApplicationCode/UserInterface/RiuAbstractLegendFrame.cpp index 0fb9600ac2..04c1a874d5 100644 --- a/ApplicationCode/UserInterface/RiuAbstractLegendFrame.cpp +++ b/ApplicationCode/UserInterface/RiuAbstractLegendFrame.cpp @@ -21,6 +21,8 @@ #include "RiaFontCache.h" #include "RiaPreferences.h" +#include "RiuGuiTheme.h" + #include #include #include @@ -108,20 +110,24 @@ void RiuAbstractLegendFrame::renderTo( QPainter* painter, const QRect& targetRec caf::FontTools::pointSizeToPixelSize( RiaApplication::instance()->preferences()->defaultPlotFontSize() ) ); this->setFont( font ); + QColor textColor = RiuGuiTheme::getColorByVariableName( "textColor" ); + LayoutInfo layout( QSize( targetRect.width(), targetRect.height() ) ); layoutInfo( &layout ); painter->save(); + painter->setFont( this->font() ); painter->translate( targetRect.topLeft() ); QPoint titlePos( layout.margins.left(), layout.margins.top() ); { painter->save(); painter->translate( QPoint( layout.margins.left(), layout.margins.top() ) ); + painter->setPen( QPen( textColor ) ); QTextDocument td; td.setDocumentMargin( 0.0 ); td.setDefaultFont( this->font() ); - td.setPlainText( m_title ); + td.setHtml( QString( "%2" ).arg( textColor.name() ).arg( m_title ) ); td.drawContents( painter ); painter->restore(); } @@ -131,10 +137,11 @@ void RiuAbstractLegendFrame::renderTo( QPainter* painter, const QRect& targetRec { painter->save(); painter->translate( tickLabel.first.topLeft() ); + painter->setPen( QPen( textColor ) ); QTextDocument td; td.setDocumentMargin( 0.0 ); td.setDefaultFont( this->font() ); - td.setPlainText( tickLabel.second ); + td.setHtml( QString( "%2" ).arg( textColor.name() ).arg( tickLabel.second ) ); td.drawContents( painter ); painter->restore(); } diff --git a/ApplicationCode/UserInterface/RiuGuiTheme.cpp b/ApplicationCode/UserInterface/RiuGuiTheme.cpp index 9c388e3bf8..2d73ed008f 100644 --- a/ApplicationCode/UserInterface/RiuGuiTheme.cpp +++ b/ApplicationCode/UserInterface/RiuGuiTheme.cpp @@ -20,7 +20,6 @@ #include "RiaApplication.h" #include "RiaGuiApplication.h" -#include "RiaPreferences.h" #include "RiuThemesDirectory.h" #include "cafAppEnum.h" @@ -47,6 +46,8 @@ #include "qwt_plot_marker.h" #include "qwt_symbol.h" +RiaDefines::ThemeEnum RiuGuiTheme::s_currentTheme = RiaDefines::ThemeEnum::DEFAULT; + QMap> RiuGuiTheme::s_variableValueMap = {}; QMap> RiuGuiTheme::s_variableGuiTextMap = {}; QMap>>> RiuGuiTheme::s_qwtPlotItemPropertiesMap = {}; @@ -352,12 +353,22 @@ QMap RiuGuiTheme: } }}}; +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RiaDefines::ThemeEnum RiuGuiTheme::currentGuiTheme() +{ + return s_currentTheme; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuGuiTheme::updateGuiTheme( RiaDefines::ThemeEnum theme ) { + s_currentTheme = theme; s_qwtPlotItemPropertiesMap.clear(); + applyStyleSheet( theme ); const QWidgetList allWidgets = RiaGuiApplication::instance()->allWidgets(); for ( QWidget* widget : allWidgets ) @@ -564,16 +575,13 @@ QAbstractItemModel* RiuGuiTheme::getQssCompletionModel( QCompleter* completer ) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -QColor RiuGuiTheme::getColorByVariableName( const QString& variable, int theme /*= -1 */ ) +QColor RiuGuiTheme::getColorByVariableName( const QString& variable, RiaDefines::ThemeEnum theme /*= UNDEFINED */ ) { - RiaDefines::ThemeEnum eTheme = RiaDefines::ThemeEnum::DEFAULT; - if ( dynamic_cast( RiaApplication::instance() ) ) + RiaDefines::ThemeEnum eTheme = s_currentTheme; + + if ( theme != RiaDefines::ThemeEnum::UNDEFINED ) { - eTheme = RiaGuiApplication::instance()->preferences()->guiTheme(); - } - if ( theme >= 0 && theme < static_cast( caf::AppEnum().size() ) ) - { - eTheme = static_cast( theme ); + eTheme = theme; } if ( s_variableValueMap.keys().contains( eTheme ) && s_variableValueMap[eTheme].keys().contains( "$" + variable ) ) diff --git a/ApplicationCode/UserInterface/RiuGuiTheme.h b/ApplicationCode/UserInterface/RiuGuiTheme.h index ff7e019dcd..96275e2b29 100644 --- a/ApplicationCode/UserInterface/RiuGuiTheme.h +++ b/ApplicationCode/UserInterface/RiuGuiTheme.h @@ -43,8 +43,9 @@ typedef std::function CustomStyleSheetApplicat class RiuGuiTheme { public: - static void updateGuiTheme( RiaDefines::ThemeEnum theme ); - static bool applyStyleSheet( RiaDefines::ThemeEnum theme ); + static RiaDefines::ThemeEnum currentGuiTheme(); + static void updateGuiTheme( RiaDefines::ThemeEnum theme ); + static bool applyStyleSheet( RiaDefines::ThemeEnum theme ); static void changeVariableValue( RiaDefines::ThemeEnum theme, const QString& variableName, const QString& newValue ); static QMap getVariableValueMap( RiaDefines::ThemeEnum theme ); static QMap getVariableGuiTextMap( RiaDefines::ThemeEnum theme ); @@ -52,7 +53,8 @@ public: static bool writeStyleSheetToFile( RiaDefines::ThemeEnum theme, const QString& styleSheet ); static QString loadStyleSheet( RiaDefines::ThemeEnum theme ); static QAbstractItemModel* getQssCompletionModel( QCompleter* completer ); - static QColor getColorByVariableName( const QString& variable, int theme = -1 ); + static QColor getColorByVariableName( const QString& variable, + RiaDefines::ThemeEnum theme = RiaDefines::ThemeEnum::UNDEFINED ); static QString getQwtStyleSheetProperty( QString plotName, const QString& itemType, QString itemName, const QString& propertyName ); static void styleQwtItem( QwtPlotItem* item ); @@ -72,6 +74,8 @@ private: static void formatStyleSheetForWriting( QString& styleSheet ); private: + static RiaDefines::ThemeEnum s_currentTheme; + static QMap> s_variableValueMap; static QMap> s_variableGuiTextMap; static QMap>>> s_qwtPlotItemPropertiesMap;