0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

fix(colors): pyqtgraph styling updated on the app level

This commit is contained in:
2025-02-12 21:45:09 +01:00
committed by wyzula_j
parent 97c0ed53df
commit ae18279685
5 changed files with 125 additions and 18 deletions

View File

@ -1,9 +1,15 @@
import pyqtgraph as pg
import pytest
from pydantic import ValidationError
from qtpy.QtGui import QColor
from qtpy.QtWidgets import QVBoxLayout, QWidget
from bec_widgets.utils import Colors
from bec_widgets.utils import Colors, ConnectionConfig
from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.colors import apply_theme
from bec_widgets.widgets.containers.figure.plots.waveform.waveform_curve import CurveConfig
from tests.unit_tests.client_mocks import mocked_client
from tests.unit_tests.conftest import create_widget
def test_color_validation_CSS():
@ -110,3 +116,55 @@ def test_golder_angle_colors(num):
assert all(color.isValid() for color in colors_qcolor)
assert all(color.startswith("#") for color in colors_hex)
##################################################
# Testing of the ExamplePlotWidget theme change
##################################################
class ExamplePlotWidget(BECWidget, QWidget):
def __init__(
self,
parent: QWidget | None = None,
config: ConnectionConfig | None = None,
client=None,
gui_id: str | None = None,
) -> None:
if config is None:
config = ConnectionConfig(widget_class=self.__class__.__name__)
super().__init__(client=client, gui_id=gui_id, config=config)
QWidget.__init__(self, parent=parent)
self.layout = QVBoxLayout(self)
self.glw = pg.GraphicsLayoutWidget()
self.pi = pg.PlotItem()
self.layout.addWidget(self.glw)
self.glw.addItem(self.pi)
self.pi.plot([1, 2, 3, 4, 5], pen="r")
def test_apply_theme(qtbot, mocked_client):
widget = create_widget(qtbot, ExamplePlotWidget, client=mocked_client)
apply_theme("dark")
# Get the default state of dark theme
dark_bg = widget.glw.backgroundBrush().color().name()
dark_axis_color = widget.pi.getAxis("left").pen().color().name()
dark_label_color = widget.pi.getAxis("left").textPen().color().name()
assert dark_bg == "#141414"
assert dark_axis_color == "#cccccc"
assert dark_label_color == "#ffffff"
apply_theme("light")
# Get the default state of light theme
light_bg = widget.glw.backgroundBrush().color().name()
light_axis_color = widget.pi.getAxis("left").pen().color().name()
light_label_color = widget.pi.getAxis("left").textPen().color().name()
assert light_bg == "#e9ecef"
assert light_axis_color == "#666666"
assert light_label_color == "#000000"

View File

@ -271,7 +271,8 @@ def test_multi_waveform_widget_theme_update(qtbot, multi_waveform_widget):
palette = get_theme_palette()
waveform_color_dark = multi_waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = multi_waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("black")
assert bg_color == QColor(20, 20, 20)
assert waveform_color_dark == palette.text().color()
# Set the theme to light
@ -279,7 +280,7 @@ def test_multi_waveform_widget_theme_update(qtbot, multi_waveform_widget):
palette = get_theme_palette()
waveform_color_light = multi_waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = multi_waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("white")
assert bg_color == QColor(233, 236, 239)
assert waveform_color_light == palette.text().color()
assert waveform_color_dark != waveform_color_light
@ -291,5 +292,5 @@ def test_multi_waveform_widget_theme_update(qtbot, multi_waveform_widget):
waveform_color = multi_waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = multi_waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("black")
assert bg_color == QColor(20, 20, 20)
assert waveform_color == waveform_color_dark

View File

@ -484,7 +484,7 @@ def test_waveform_widget_theme_update(qtbot, waveform_widget):
palette = get_theme_palette()
waveform_color_dark = waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("black")
assert bg_color == QColor(20, 20, 20)
assert waveform_color_dark == palette.text().color()
# Set the theme to light; equivalent to clicking the light mode button
@ -493,7 +493,7 @@ def test_waveform_widget_theme_update(qtbot, waveform_widget):
palette = get_theme_palette()
waveform_color_light = waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("white")
assert bg_color == QColor(233, 236, 239)
assert waveform_color_light == palette.text().color()
assert waveform_color_dark != waveform_color_light
@ -509,7 +509,7 @@ def test_waveform_widget_theme_update(qtbot, waveform_widget):
# we compare the waveform color to the dark theme color
waveform_color = waveform_widget.waveform.plot_item.getAxis("left").pen().color()
bg_color = waveform_widget.fig.backgroundBrush().color()
assert bg_color == QColor("black")
assert bg_color == QColor(20, 20, 20)
assert waveform_color == waveform_color_dark