From 0f72f290b474cd15e25f8b22da0292d38dcc33f2 Mon Sep 17 00:00:00 2001 From: x01da Date: Wed, 28 Oct 2026 08:55:54 +0100 Subject: [PATCH] wip(temperature_controller) --- .../temperature_controller/qt_widgets.py | 9 ++++- .../temperature_controller.py | 34 +++++++++++++------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/debye_bec/bec_widgets/widgets/temperature_controller/qt_widgets.py b/debye_bec/bec_widgets/widgets/temperature_controller/qt_widgets.py index f4252c2..f5ad06f 100644 --- a/debye_bec/bec_widgets/widgets/temperature_controller/qt_widgets.py +++ b/debye_bec/bec_widgets/widgets/temperature_controller/qt_widgets.py @@ -209,9 +209,9 @@ class Button(QWidget): self.label.setFixedWidth(LABEL_WIDTH) layout.addWidget(self.label) self.button = QPushButton(label_button) + self.color = color self.setEnabled(enabled) layout.addWidget(self.button) - self.color = color def clicked_connect(self, func): """Connect a function to the button press.""" @@ -252,6 +252,7 @@ class TextIndicator(QWidget): self.text = QLabel("-") self.text.setAlignment(Qt.AlignTop) # type: ignore layout.addWidget(self.text) + self.color = "default" def setLabel(self, label) -> None: self.label.setText(label) @@ -260,4 +261,10 @@ class TextIndicator(QWidget): self.text.setText(text) def setColor(self, color: str): + self.color = color + self.apply_theme() + + def apply_theme(self): + colors = get_accent_colors() + color = getattr(colors, self.color).name() self.text.setStyleSheet(f"QLabel {{color:{color}}}") diff --git a/debye_bec/bec_widgets/widgets/temperature_controller/temperature_controller.py b/debye_bec/bec_widgets/widgets/temperature_controller/temperature_controller.py index 23a0f2c..e65a277 100644 --- a/debye_bec/bec_widgets/widgets/temperature_controller/temperature_controller.py +++ b/debye_bec/bec_widgets/widgets/temperature_controller/temperature_controller.py @@ -12,7 +12,7 @@ from bec_lib import bec_logger from bec_lib.endpoints import MessageEndpoints from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.bec_widget import BECWidget -from bec_widgets.utils.colors import apply_theme, get_accent_colors +from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.widgets.plots.waveform.waveform import Waveform @@ -145,6 +145,7 @@ class TemperatureController(BECWidget, QWidget): waveform_layout.addWidget(self.waveform, stretch=1) + waveform_settings_layout = QHBoxLayout() self.user_window_s = InputNumberField( "", "Plot range", @@ -155,13 +156,15 @@ class TemperatureController(BECWidget, QWidget): ll=1, hl=MAX_WINDOW_S, ) + waveform_settings_layout.addWidget(self.user_window_s) + waveform_settings_layout.addStretch() - waveform_layout.addWidget(self.user_window_s) + waveform_layout.addLayout(waveform_settings_layout) root_layout.addLayout(waveform_layout, stretch=1) self.waveform.set(title="", x_label="Time") - self.waveform.enable_toolbar = False + self.waveform.enable_toolbar = True self.waveform.enable_side_panel = False self.waveform.plot_item.setAxisItems({"bottom": pg.DateAxisItem(orientation="bottom")}) @@ -197,6 +200,15 @@ class TemperatureController(BECWidget, QWidget): self.plot_init = True + @SafeSlot() + def apply_theme(self, theme): + self.sensor_break.apply_theme() + self.operating_mode.apply_theme() + self.heater_sensor_break.apply_theme() + self.autotune_status.apply_theme() + self.autotune.apply_theme() + return super().apply_theme(theme) + @SafeSlot() def _on_value_changed(self, *_, **kwargs): if "index" in kwargs.keys(): @@ -231,20 +243,20 @@ class TemperatureController(BECWidget, QWidget): match value: case UnivTempContSensorBreak.GOOD: self.sensor_break.setText("OK") - self.sensor_break.setColor(get_accent_colors().success.name()) + self.sensor_break.setColor("success") case UnivTempContSensorBreak.SENSOR_BREAK: self.sensor_break.setText("FAULT") - self.sensor_break.setColor(get_accent_colors().emergency.name()) + self.sensor_break.setColor("emergency") case _: raise TemperatureControllerError(f"Not implemented sensor_break value {value}") value = signals[DEVICE_NAME + "_" + "heater_tc_fault"]["value"] match value: case UnivTempContHeaterTcFault.NO_FAULT: self.heater_sensor_break.setText("OK") - self.heater_sensor_break.setColor(get_accent_colors().success.name()) + self.heater_sensor_break.setColor("success") case UnivTempContHeaterTcFault.TC_OPEN_FAULT: self.heater_sensor_break.setText("OPEN") - self.heater_sensor_break.setColor(get_accent_colors().warning.name()) + self.heater_sensor_break.setColor("warning") case ( UnivTempContHeaterTcFault.OVER_UNDERVOLTAGE_FAULT | UnivTempContHeaterTcFault.TC_LOW_FAULT @@ -255,7 +267,7 @@ class TemperatureController(BECWidget, QWidget): | UnivTempContHeaterTcFault.COLD_JUNC_RNG_FAULT ): self.heater_sensor_break.setText("FAULT") - self.heater_sensor_break.setColor(get_accent_colors().emergency.name()) + self.heater_sensor_break.setColor("emergency") case _: raise TemperatureControllerError( f"Not implemented heater_sensor_break value {value}" @@ -264,13 +276,13 @@ class TemperatureController(BECWidget, QWidget): match value: case UnivTempContOpMode.AUTO: self.operating_mode.setText("AUTO") - self.operating_mode.setColor(get_accent_colors().success.name()) + self.operating_mode.setColor("success") case UnivTempContOpMode.MANUAL: self.operating_mode.setText("MANUAL") - self.operating_mode.setColor(get_accent_colors().warning.name()) + self.operating_mode.setColor("warning") case UnivTempContOpMode.STANDBY: self.operating_mode.setText("STANDBY") - self.operating_mode.setColor(get_accent_colors().default.name()) + self.operating_mode.setColor("default") case _: raise TemperatureControllerError(f"Not implemented op_mode value {value}") index = signals[DEVICE_NAME + "_" + "power"]["value"]