1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2025-03-10 05:34:36 +00:00

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
This commit is contained in:
glubsy 2020-07-21 03:52:15 +02:00
parent 298f659f6e
commit cf64565012
3 changed files with 35 additions and 6 deletions

View File

@ -49,7 +49,9 @@ class ViewerToolBar(QToolBar):
( (
"actionZoomIn", "actionZoomIn",
QKeySequence.ZoomIn, 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")), else QIcon(QPixmap(":/" + "zoom_in")),
tr("Increase zoom"), tr("Increase zoom"),
controller.zoomIn, controller.zoomIn,
@ -57,7 +59,9 @@ class ViewerToolBar(QToolBar):
( (
"actionZoomOut", "actionZoomOut",
QKeySequence.ZoomOut, 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")), else QIcon(QPixmap(":/" + "zoom_out")),
tr("Decrease zoom"), tr("Decrease zoom"),
controller.zoomOut, controller.zoomOut,
@ -65,7 +69,9 @@ class ViewerToolBar(QToolBar):
( (
"actionNormalSize", "actionNormalSize",
tr("Ctrl+/"), 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")), else QIcon(QPixmap(":/" + "zoom_original")),
tr("Normal size"), tr("Normal size"),
controller.zoomNormalSize, controller.zoomNormalSize,
@ -73,7 +79,9 @@ class ViewerToolBar(QToolBar):
( (
"actionBestFit", "actionBestFit",
tr("Ctrl+*"), 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")), else QIcon(QPixmap(":/" + "zoom_best_fit")),
tr("Best fit"), tr("Best fit"),
controller.zoomBestFit, controller.zoomBestFit,
@ -90,6 +98,7 @@ class ViewerToolBar(QToolBar):
QIcon.fromTheme('view-refresh', QIcon.fromTheme('view-refresh',
self.style().standardIcon(QStyle.SP_BrowserReload)) self.style().standardIcon(QStyle.SP_BrowserReload))
if ISLINUX if ISLINUX
and not self.parent.app.prefs.details_dialog_override_theme_icons
else QIcon(QPixmap(":/" + "exchange"))) else QIcon(QPixmap(":/" + "exchange")))
self.buttonImgSwap.setText('Swap images') self.buttonImgSwap.setText('Swap images')
self.buttonImgSwap.setToolTip('Swap images') self.buttonImgSwap.setToolTip('Swap images')

View File

@ -7,6 +7,7 @@
from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QApplication
from hscommon import trans from hscommon import trans
from hscommon.plat import ISLINUX
from core.app import AppMode from core.app import AppMode
from core.scanner import ScanType from core.scanner import ScanType
from qtlib.preferences import Preferences as PreferencesBase from qtlib.preferences import Preferences as PreferencesBase
@ -31,8 +32,14 @@ class Preferences(PreferencesBase):
self.tableFontSize = get("TableFontSize", self.tableFontSize) self.tableFontSize = get("TableFontSize", self.tableFontSize)
self.reference_bold_font = get('ReferenceBoldFont', self.reference_bold_font) 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_titlebar_enabled = get('DetailsDialogTitleBarEnabled',
self.details_dialog_vertical_titlebar = get('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar) 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( self.resultWindowIsMaximized = get(
"ResultWindowIsMaximized", self.resultWindowIsMaximized "ResultWindowIsMaximized", self.resultWindowIsMaximized
) )
@ -71,6 +78,8 @@ class Preferences(PreferencesBase):
self.reference_bold_font = True self.reference_bold_font = True
self.details_dialog_titlebar_enabled = True self.details_dialog_titlebar_enabled = True
self.details_dialog_vertical_titlebar = 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.resultWindowIsMaximized = False
self.resultWindowRect = None self.resultWindowRect = None
self.directoriesWindowRect = None self.directoriesWindowRect = None
@ -106,6 +115,7 @@ class Preferences(PreferencesBase):
set_('ReferenceBoldFont', self.reference_bold_font) set_('ReferenceBoldFont', self.reference_bold_font)
set_('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled) set_('DetailsDialogTitleBarEnabled', self.details_dialog_titlebar_enabled)
set_('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar) set_('DetailsDialogVerticalTitleBar', self.details_dialog_vertical_titlebar)
set_('DetailsDialogOverrideThemeIcons', self.details_dialog_override_theme_icons)
set_("ResultWindowIsMaximized", self.resultWindowIsMaximized) set_("ResultWindowIsMaximized", self.resultWindowIsMaximized)
self.set_rect("ResultWindowRect", self.resultWindowRect) self.set_rect("ResultWindowRect", self.resultWindowRect)
self.set_rect("DirectoriesWindowRect", self.directoriesWindowRect) self.set_rect("DirectoriesWindowRect", self.directoriesWindowRect)

View File

@ -25,6 +25,7 @@ from PyQt5.QtWidgets import (
) )
from hscommon.trans import trget from hscommon.trans import trget
from hscommon.plat import ISLINUX
from qtlib.util import horizontalWrap from qtlib.util import horizontalWrap
from qtlib.preferences import get_langnames from qtlib.preferences import get_langnames
from enum import Flag, auto from enum import Flag, auto
@ -163,6 +164,13 @@ class PreferencesDialogBase(QDialog):
self.details_dialog_titlebar_enabled.isChecked()) self.details_dialog_titlebar_enabled.isChecked())
self.details_dialog_titlebar_enabled.stateChanged.connect( self.details_dialog_titlebar_enabled.stateChanged.connect(
self.details_dialog_vertical_titlebar.setEnabled) 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.languageLabel = QLabel(tr("Language:"), self)
self.languageComboBox = QComboBox(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_titlebar_enabled , prefs.details_dialog_titlebar_enabled)
setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar) setchecked(self.details_dialog_vertical_titlebar, prefs.details_dialog_vertical_titlebar)
self.fontSizeSpinBox.setValue(prefs.tableFontSize) self.fontSizeSpinBox.setValue(prefs.tableFontSize)
setchecked(self.details_dialog_override_theme_icons, prefs.details_dialog_override_theme_icons)
try: try:
langindex = self.supportedLanguages.index(self.app.prefs.language) langindex = self.supportedLanguages.index(self.app.prefs.language)
except ValueError: except ValueError:
@ -256,6 +265,7 @@ class PreferencesDialogBase(QDialog):
prefs.reference_bold_font = ischecked(self.reference_bold_font) prefs.reference_bold_font = ischecked(self.reference_bold_font)
prefs.details_dialog_titlebar_enabled = ischecked(self.details_dialog_titlebar_enabled) 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_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.destination_type = self.copyMoveDestinationComboBox.currentIndex()
prefs.custom_command = str(self.customCommandEdit.text()) prefs.custom_command = str(self.customCommandEdit.text())
prefs.tableFontSize = self.fontSizeSpinBox.value() prefs.tableFontSize = self.fontSizeSpinBox.value()