From cf645650129cab212ae01667b2969c95745035cd Mon Sep 17 00:00:00 2001 From: glubsy Date: Tue, 21 Jul 2020 03:52:15 +0200 Subject: [PATCH] Add option to use internal icons in details dialog * On Windows and MacOS, no idea how themes work so only allow Linux to use their theme icons * Internal icons are used by default on non-Linux platforms --- qt/pe/image_viewer.py | 17 +++++++++++++---- qt/preferences.py | 14 ++++++++++++-- qt/preferences_dialog.py | 10 ++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/qt/pe/image_viewer.py b/qt/pe/image_viewer.py index 08a70db8..bf71a068 100644 --- a/qt/pe/image_viewer.py +++ b/qt/pe/image_viewer.py @@ -49,7 +49,9 @@ class ViewerToolBar(QToolBar): ( "actionZoomIn", QKeySequence.ZoomIn, - QIcon.fromTheme("zoom-in") if ISLINUX + QIcon.fromTheme("zoom-in") + if ISLINUX + and not self.parent.app.prefs.details_dialog_override_theme_icons else QIcon(QPixmap(":/" + "zoom_in")), tr("Increase zoom"), controller.zoomIn, @@ -57,7 +59,9 @@ class ViewerToolBar(QToolBar): ( "actionZoomOut", QKeySequence.ZoomOut, - QIcon.fromTheme("zoom-out") if ISLINUX + QIcon.fromTheme("zoom-out") + if ISLINUX + and not self.parent.app.prefs.details_dialog_override_theme_icons else QIcon(QPixmap(":/" + "zoom_out")), tr("Decrease zoom"), controller.zoomOut, @@ -65,7 +69,9 @@ class ViewerToolBar(QToolBar): ( "actionNormalSize", tr("Ctrl+/"), - QIcon.fromTheme("zoom-original") if ISLINUX + QIcon.fromTheme("zoom-original") + if ISLINUX + and not self.parent.app.prefs.details_dialog_override_theme_icons else QIcon(QPixmap(":/" + "zoom_original")), tr("Normal size"), controller.zoomNormalSize, @@ -73,7 +79,9 @@ class ViewerToolBar(QToolBar): ( "actionBestFit", tr("Ctrl+*"), - QIcon.fromTheme("zoom-best-fit") if ISLINUX + QIcon.fromTheme("zoom-best-fit") + if ISLINUX + and not self.parent.app.prefs.details_dialog_override_theme_icons else QIcon(QPixmap(":/" + "zoom_best_fit")), tr("Best fit"), controller.zoomBestFit, @@ -90,6 +98,7 @@ class ViewerToolBar(QToolBar): QIcon.fromTheme('view-refresh', self.style().standardIcon(QStyle.SP_BrowserReload)) if ISLINUX + and not self.parent.app.prefs.details_dialog_override_theme_icons else QIcon(QPixmap(":/" + "exchange"))) self.buttonImgSwap.setText('Swap images') self.buttonImgSwap.setToolTip('Swap images') diff --git a/qt/preferences.py b/qt/preferences.py index 39e55b1e..3d00b42b 100644 --- a/qt/preferences.py +++ b/qt/preferences.py @@ -7,6 +7,7 @@ from PyQt5.QtWidgets import QApplication from hscommon import trans +from hscommon.plat import ISLINUX from core.app import AppMode from core.scanner import ScanType from qtlib.preferences import Preferences as PreferencesBase @@ -31,8 +32,14 @@ class Preferences(PreferencesBase): self.tableFontSize = get("TableFontSize", self.tableFontSize) self.reference_bold_font = get('ReferenceBoldFont', self.reference_bold_font) - self.details_dialog_titlebar_enabled = get('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled) - self.details_dialog_vertical_titlebar = get('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar) + self.details_dialog_titlebar_enabled = get('DetailsDialogTitleBarEnabled', + self.details_dialog_titlebar_enabled) + self.details_dialog_vertical_titlebar = get('DetailsDialogVerticalTitleBar', + self.details_dialog_vertical_titlebar) + # On Windows and MacOS, use internal icons by default + self.details_dialog_override_theme_icons =\ + get('DetailsDialogOverrideThemeIcons', + self.details_dialog_override_theme_icons) if ISLINUX else True self.resultWindowIsMaximized = get( "ResultWindowIsMaximized", self.resultWindowIsMaximized ) @@ -71,6 +78,8 @@ class Preferences(PreferencesBase): self.reference_bold_font = True self.details_dialog_titlebar_enabled = True self.details_dialog_vertical_titlebar = True + # By default use internal icons on platforms other than Linux for now + self.details_dialog_override_theme_icons = False if not ISLINUX else True self.resultWindowIsMaximized = False self.resultWindowRect = None self.directoriesWindowRect = None @@ -106,6 +115,7 @@ class Preferences(PreferencesBase): set_('ReferenceBoldFont', self.reference_bold_font) set_('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled) set_('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar) + set_('DetailsDialogOverrideThemeIcons', self.details_dialog_override_theme_icons) set_("ResultWindowIsMaximized", self.resultWindowIsMaximized) self.set_rect("ResultWindowRect", self.resultWindowRect) self.set_rect("DirectoriesWindowRect", self.directoriesWindowRect) diff --git a/qt/preferences_dialog.py b/qt/preferences_dialog.py index 6ade467c..f074f986 100644 --- a/qt/preferences_dialog.py +++ b/qt/preferences_dialog.py @@ -25,6 +25,7 @@ from PyQt5.QtWidgets import ( ) from hscommon.trans import trget +from hscommon.plat import ISLINUX from qtlib.util import horizontalWrap from qtlib.preferences import get_langnames from enum import Flag, auto @@ -163,6 +164,13 @@ class PreferencesDialogBase(QDialog): self.details_dialog_titlebar_enabled.isChecked()) self.details_dialog_titlebar_enabled.stateChanged.connect( self.details_dialog_vertical_titlebar.setEnabled) + self._setupAddCheckbox("details_dialog_override_theme_icons", + tr("Override theme icons")) + self.details_dialog_override_theme_icons.setToolTip( + tr("Use our own internal icons instead of those provided by theme engine")) + # Prevent changing this on platforms where themes are unpredictable + self.details_dialog_override_theme_icons.setEnabled(False if not ISLINUX else True) + self.displayVLayout.addWidget(self.details_dialog_override_theme_icons) self.languageLabel = QLabel(tr("Language:"), self) self.languageComboBox = QComboBox(self) @@ -237,6 +245,7 @@ class PreferencesDialogBase(QDialog): setchecked(self.details_dialog_titlebar_enabled , prefs.details_dialog_titlebar_enabled) setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar) self.fontSizeSpinBox.setValue(prefs.tableFontSize) + setchecked(self.details_dialog_override_theme_icons, prefs.details_dialog_override_theme_icons) try: langindex = self.supportedLanguages.index(self.app.prefs.language) except ValueError: @@ -256,6 +265,7 @@ class PreferencesDialogBase(QDialog): prefs.reference_bold_font = ischecked(self.reference_bold_font) prefs.details_dialog_titlebar_enabled = ischecked(self.details_dialog_titlebar_enabled) prefs.details_dialog_vertical_titlebar = ischecked(self.details_dialog_vertical_titlebar) + prefs.details_dialog_override_theme_icons = ischecked(self.details_dialog_override_theme_icons) prefs.destination_type = self.copyMoveDestinationComboBox.currentIndex() prefs.custom_command = str(self.customCommandEdit.text()) prefs.tableFontSize = self.fontSizeSpinBox.value()