mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Add initial dark style for use in Windows
- Other platforms can achieve this with the OS theme so not enabled for them at this time. - Adds preference in display options to use dark style, default is false.
This commit is contained in:
parent
eb57d269fc
commit
f6a0c0cc6d
41
qt/app.py
41
qt/app.py
@ -8,11 +8,11 @@ import sys
|
|||||||
import os.path as op
|
import os.path as op
|
||||||
|
|
||||||
from PyQt5.QtCore import QTimer, QObject, QUrl, pyqtSignal, Qt
|
from PyQt5.QtCore import QTimer, QObject, QUrl, pyqtSignal, Qt
|
||||||
from PyQt5.QtGui import QDesktopServices
|
from PyQt5.QtGui import QColor, QDesktopServices, QPalette
|
||||||
from PyQt5.QtWidgets import QApplication, QFileDialog, QDialog, QMessageBox
|
from PyQt5.QtWidgets import QApplication, QFileDialog, QDialog, QMessageBox, QStyleFactory, QToolTip
|
||||||
|
|
||||||
from hscommon.trans import trget
|
from hscommon.trans import trget
|
||||||
from hscommon import desktop
|
from hscommon import desktop, plat
|
||||||
|
|
||||||
from qtlib.about_box import AboutBox
|
from qtlib.about_box import AboutBox
|
||||||
from qtlib.recent import Recent
|
from qtlib.recent import Recent
|
||||||
@ -197,6 +197,8 @@ class DupeGuru(QObject):
|
|||||||
if self.details_dialog:
|
if self.details_dialog:
|
||||||
self.details_dialog.update_options()
|
self.details_dialog.update_options()
|
||||||
|
|
||||||
|
self._set_style("dark" if self.prefs.use_dark_style else "light")
|
||||||
|
|
||||||
# --- Private
|
# --- Private
|
||||||
def _get_details_dialog_class(self):
|
def _get_details_dialog_class(self):
|
||||||
if self.model.app_mode == AppMode.PICTURE:
|
if self.model.app_mode == AppMode.PICTURE:
|
||||||
@ -214,6 +216,39 @@ class DupeGuru(QObject):
|
|||||||
else:
|
else:
|
||||||
return PreferencesDialogStandard
|
return PreferencesDialogStandard
|
||||||
|
|
||||||
|
def _set_style(self, style="light"):
|
||||||
|
# Only support this feature on windows for now
|
||||||
|
if not plat.ISWINDOWS:
|
||||||
|
return
|
||||||
|
if style == "dark":
|
||||||
|
QApplication.setStyle(QStyleFactory.create("Fusion"))
|
||||||
|
palette = QApplication.style().standardPalette()
|
||||||
|
palette.setColor(QPalette.ColorRole.Window, QColor(53, 53, 53))
|
||||||
|
palette.setColor(QPalette.ColorRole.WindowText, Qt.white)
|
||||||
|
palette.setColor(QPalette.ColorRole.Base, QColor(25, 25, 25))
|
||||||
|
palette.setColor(QPalette.ColorRole.AlternateBase, QColor(53, 53, 53))
|
||||||
|
palette.setColor(QPalette.ColorRole.ToolTipBase, QColor(53, 53, 53))
|
||||||
|
palette.setColor(QPalette.ColorRole.ToolTipText, Qt.white)
|
||||||
|
palette.setColor(QPalette.ColorRole.Text, Qt.white)
|
||||||
|
palette.setColor(QPalette.ColorRole.Button, QColor(53, 53, 53))
|
||||||
|
palette.setColor(QPalette.ColorRole.ButtonText, Qt.white)
|
||||||
|
palette.setColor(QPalette.ColorRole.BrightText, Qt.red)
|
||||||
|
palette.setColor(QPalette.ColorRole.Link, QColor(42, 130, 218))
|
||||||
|
palette.setColor(QPalette.ColorRole.Highlight, QColor(42, 130, 218))
|
||||||
|
palette.setColor(QPalette.ColorRole.HighlightedText, Qt.black)
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.Text, QColor(164, 166, 168))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.WindowText, QColor(164, 166, 168))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.ButtonText, QColor(164, 166, 168))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.HighlightedText, QColor(164, 166, 168))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.Base, QColor(68, 68, 68))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.Window, QColor(68, 68, 68))
|
||||||
|
palette.setColor(QPalette.ColorGroup.Disabled, QPalette.ColorRole.Highlight, QColor(68, 68, 68))
|
||||||
|
else:
|
||||||
|
QApplication.setStyle(QStyleFactory.create("windowsvista" if plat.ISWINDOWS else "Fusion"))
|
||||||
|
palette = QApplication.style().standardPalette()
|
||||||
|
QToolTip.setPalette(palette)
|
||||||
|
QApplication.setPalette(palette)
|
||||||
|
|
||||||
# --- Public
|
# --- Public
|
||||||
def add_selected_to_ignore_list(self):
|
def add_selected_to_ignore_list(self):
|
||||||
self.model.add_selected_to_ignore_list()
|
self.model.add_selected_to_ignore_list()
|
||||||
|
@ -30,6 +30,7 @@ class Preferences(PreferencesBase):
|
|||||||
if not self.language and trans.installed_lang:
|
if not self.language and trans.installed_lang:
|
||||||
self.language = trans.installed_lang
|
self.language = trans.installed_lang
|
||||||
self.portable = get("Portable", False)
|
self.portable = get("Portable", False)
|
||||||
|
self.use_dark_style = get("UseDarkStyle", False)
|
||||||
self.use_native_dialogs = get("UseNativeDialogs", True)
|
self.use_native_dialogs = get("UseNativeDialogs", True)
|
||||||
|
|
||||||
self.tableFontSize = get("TableFontSize", self.tableFontSize)
|
self.tableFontSize = get("TableFontSize", self.tableFontSize)
|
||||||
@ -95,6 +96,7 @@ class Preferences(PreferencesBase):
|
|||||||
self.destination_type = 1
|
self.destination_type = 1
|
||||||
self.custom_command = ""
|
self.custom_command = ""
|
||||||
self.language = trans.installed_lang if trans.installed_lang else ""
|
self.language = trans.installed_lang if trans.installed_lang else ""
|
||||||
|
self.use_dark_style = False
|
||||||
self.use_native_dialogs = True
|
self.use_native_dialogs = True
|
||||||
|
|
||||||
self.tableFontSize = QApplication.font().pointSize()
|
self.tableFontSize = QApplication.font().pointSize()
|
||||||
@ -146,6 +148,7 @@ class Preferences(PreferencesBase):
|
|||||||
set_("CustomCommand", self.custom_command)
|
set_("CustomCommand", self.custom_command)
|
||||||
set_("Language", self.language)
|
set_("Language", self.language)
|
||||||
set_("Portable", self.portable)
|
set_("Portable", self.portable)
|
||||||
|
set_("UseDarkStyle", self.use_dark_style)
|
||||||
set_("UseNativeDialogs", self.use_native_dialogs)
|
set_("UseNativeDialogs", self.use_native_dialogs)
|
||||||
|
|
||||||
set_("TableFontSize", self.tableFontSize)
|
set_("TableFontSize", self.tableFontSize)
|
||||||
|
@ -29,6 +29,7 @@ from PyQt5.QtWidgets import (
|
|||||||
QFormLayout,
|
QFormLayout,
|
||||||
)
|
)
|
||||||
from PyQt5.QtGui import QPixmap, QIcon
|
from PyQt5.QtGui import QPixmap, QIcon
|
||||||
|
from hscommon import plat
|
||||||
|
|
||||||
from hscommon.trans import trget
|
from hscommon.trans import trget
|
||||||
from hscommon.plat import ISLINUX
|
from hscommon.plat import ISLINUX
|
||||||
@ -168,6 +169,9 @@ On MacOS, the tab bar will fill up the window's width instead."
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
layout.addWidget(self.use_native_dialogs)
|
layout.addWidget(self.use_native_dialogs)
|
||||||
|
if plat.ISWINDOWS:
|
||||||
|
self._setupAddCheckbox("use_dark_style", tr("Use dark style"))
|
||||||
|
layout.addWidget(self.use_dark_style)
|
||||||
self.ui_groupbox.setLayout(layout)
|
self.ui_groupbox.setLayout(layout)
|
||||||
self.displayVLayout.addWidget(self.ui_groupbox)
|
self.displayVLayout.addWidget(self.ui_groupbox)
|
||||||
|
|
||||||
@ -297,6 +301,7 @@ use the modifier key to drag the floating window around"
|
|||||||
setchecked(self.reference_bold_font, prefs.reference_bold_font)
|
setchecked(self.reference_bold_font, prefs.reference_bold_font)
|
||||||
setchecked(self.tabs_default_pos, prefs.tabs_default_pos)
|
setchecked(self.tabs_default_pos, prefs.tabs_default_pos)
|
||||||
setchecked(self.use_native_dialogs, prefs.use_native_dialogs)
|
setchecked(self.use_native_dialogs, prefs.use_native_dialogs)
|
||||||
|
setchecked(self.use_dark_style, prefs.use_dark_style)
|
||||||
setchecked(
|
setchecked(
|
||||||
self.details_dialog_titlebar_enabled,
|
self.details_dialog_titlebar_enabled,
|
||||||
prefs.details_dialog_titlebar_enabled,
|
prefs.details_dialog_titlebar_enabled,
|
||||||
@ -341,6 +346,7 @@ use the modifier key to drag the floating window around"
|
|||||||
prefs.tableFontSize = self.fontSizeSpinBox.value()
|
prefs.tableFontSize = self.fontSizeSpinBox.value()
|
||||||
prefs.tabs_default_pos = ischecked(self.tabs_default_pos)
|
prefs.tabs_default_pos = ischecked(self.tabs_default_pos)
|
||||||
prefs.use_native_dialogs = ischecked(self.use_native_dialogs)
|
prefs.use_native_dialogs = ischecked(self.use_native_dialogs)
|
||||||
|
prefs.use_dark_style = ischecked(self.use_dark_style)
|
||||||
lang = self.supportedLanguages[self.languageComboBox.currentIndex()]
|
lang = self.supportedLanguages[self.languageComboBox.currentIndex()]
|
||||||
oldlang = self.app.prefs.language
|
oldlang = self.app.prefs.language
|
||||||
if oldlang not in self.supportedLanguages:
|
if oldlang not in self.supportedLanguages:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user