Interface colors: Let the user restore only one color to default

This commit is contained in:
Laurent Monin
2024-05-21 11:52:28 +02:00
parent 205037081e
commit baf73f0825
2 changed files with 21 additions and 6 deletions

View File

@@ -122,8 +122,11 @@ class InterfaceColors:
def set_default_colors(self):
self._colors = dict()
for color_key in self.default_colors:
color_value = self.default_colors[color_key].value
self.set_color(color_key, color_value)
self.set_default_color(color_key)
def set_default_color(self, color_key):
color_value = self.default_colors[color_key].value
self.set_color(color_key, color_value)
def set_colors(self, colors_dict):
for color_key in self.default_colors:

View File

@@ -34,6 +34,7 @@ from picard.i18n import (
N_,
gettext as _,
)
from picard.util import icontheme
from picard.ui.colors import interface_colors
from picard.ui.forms.ui_options_interface_colors import (
@@ -60,7 +61,9 @@ class ColorButton(QtWidgets.QPushButton):
self.clicked.connect(self.open_color_dialog)
self.update_color()
def update_color(self):
def update_color(self, qcolor=None):
if qcolor is not None:
self.color = qcolor
self.setStyleSheet("QPushButton { background-color: %s; }" % self.color.name())
def open_color_dialog(self):
@@ -114,6 +117,10 @@ class InterfaceColorsOptionsPage(OptionsPage):
def color_changed(color_key, color_value):
interface_colors.set_color(color_key, color_value)
def restore_default_color(color_key, color_button):
interface_colors.set_default_color(color_key)
color_button.update_color(interface_colors.get_qcolor(color_key))
for color_key, color_value in interface_colors.get_colors().items():
widget = QtWidgets.QWidget()
@@ -124,9 +131,14 @@ class InterfaceColorsOptionsPage(OptionsPage):
label.setSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
hlayout.addWidget(label)
button = ColorButton(color_value)
button.color_changed.connect(partial(color_changed, color_key))
hlayout.addWidget(button, 0, QtCore.Qt.AlignmentFlag.AlignRight)
color_button = ColorButton(color_value)
color_button.color_changed.connect(partial(color_changed, color_key))
hlayout.addWidget(color_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)
refresh_button = QtWidgets.QPushButton(icontheme.lookup('view-refresh'), "")
refresh_button.setToolTip(_("Restore default color"))
refresh_button.clicked.connect(partial(restore_default_color, color_key, color_button))
hlayout.addWidget(refresh_button, 0, QtCore.Qt.AlignmentFlag.AlignRight)
widget.setLayout(hlayout)
self.colors_list.addWidget(widget)