From 91ee2428ca35d09e7b6d82443f2e76dde0460bc0 Mon Sep 17 00:00:00 2001 From: Travis Abendshien Date: Sat, 20 Jul 2024 09:48:59 -0700 Subject: [PATCH] feat(ui): use system accent color for thumb selections --- tagstudio/src/qt/widgets/thumb_button.py | 57 +++++++++++++++++------- 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/tagstudio/src/qt/widgets/thumb_button.py b/tagstudio/src/qt/widgets/thumb_button.py index 179efaec..9924c3bd 100644 --- a/tagstudio/src/qt/widgets/thumb_button.py +++ b/tagstudio/src/qt/widgets/thumb_button.py @@ -5,7 +5,15 @@ from PySide6 import QtCore from PySide6.QtCore import QEvent -from PySide6.QtGui import QEnterEvent, QPainter, QColor, QPen, QPainterPath, QPaintEvent +from PySide6.QtGui import ( + QEnterEvent, + QPainter, + QColor, + QPen, + QPainterPath, + QPaintEvent, + QPalette, +) from PySide6.QtWidgets import QWidget from src.qt.helpers.qbutton_wrapper import QPushButtonWrapper @@ -17,7 +25,31 @@ class ThumbButton(QPushButtonWrapper): self.hovered = False self.selected = False - # self.clicked.connect(lambda checked: self.set_selected(True)) + self.select_color: QColor = QPalette.color( + self.palette(), + QPalette.ColorGroup.Active, + QPalette.ColorRole.Accent, + ) + + self.select_color_faded: QColor = QColor(self.select_color) + self.select_color_faded.setHsl( + self.select_color_faded.hslHue(), + self.select_color_faded.hslSaturation(), + max(self.select_color_faded.lightness(), 127), + 127, + ) + + self.hover_color: QColor = QPalette.color( + self.palette(), + QPalette.ColorGroup.Active, + QPalette.ColorRole.Accent, + ) + self.hover_color.setHsl( + self.hover_color.hslHue(), + self.hover_color.hslSaturation(), + min(self.hover_color.lightness() + 80, 255), + self.hover_color.alpha(), + ) def paintEvent(self, event: QPaintEvent) -> None: super().paintEvent(event) @@ -25,7 +57,6 @@ class ThumbButton(QPushButtonWrapper): painter = QPainter() painter.begin(self) painter.setRenderHint(QPainter.RenderHint.Antialiasing) - # painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source) path = QPainterPath() width = 3 radius = 6 @@ -40,27 +71,21 @@ class ThumbButton(QPushButtonWrapper): radius, ) - # color = QColor('#bb4ff0') if self.selected else QColor('#55bbf6') - # pen = QPen(color, width) - # painter.setPen(pen) - # # brush.setColor(fill) - # painter.drawPath(path) - if self.selected: painter.setCompositionMode( QPainter.CompositionMode.CompositionMode_HardLight ) - color = QColor("#bb4ff0") - color.setAlphaF(0.5) - pen = QPen(color, width) + pen = QPen(self.select_color_faded, width) painter.setPen(pen) - painter.fillPath(path, color) + painter.fillPath(path, self.select_color_faded) painter.drawPath(path) painter.setCompositionMode( QPainter.CompositionMode.CompositionMode_Source ) - color = QColor("#bb4ff0") if not self.hovered else QColor("#55bbf6") + color: QColor = ( + self.select_color if not self.hovered else self.hover_color + ) pen = QPen(color, width) painter.setPen(pen) painter.drawPath(path) @@ -68,10 +93,10 @@ class ThumbButton(QPushButtonWrapper): painter.setCompositionMode( QPainter.CompositionMode.CompositionMode_Source ) - color = QColor("#55bbf6") - pen = QPen(color, width) + pen = QPen(self.hover_color, width) painter.setPen(pen) painter.drawPath(path) + painter.end() def enterEvent(self, event: QEnterEvent) -> None: