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

fix: extreme.py error in configuration are displayed as messagebox

This commit is contained in:
wyzula-jan
2023-10-03 13:27:23 +02:00
parent 824ce821cd
commit 9750039097

View File

@ -3,7 +3,14 @@ import os
import pyqtgraph import pyqtgraph
import pyqtgraph as pg import pyqtgraph as pg
from PyQt5.QtCore import pyqtSignal, pyqtSlot from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidgetItem, QTableWidget, QFileDialog from PyQt5.QtWidgets import (
QApplication,
QWidget,
QTableWidgetItem,
QTableWidget,
QFileDialog,
QMessageBox,
)
from pyqtgraph import ColorButton from pyqtgraph import ColorButton
from pyqtgraph import mkBrush, mkPen from pyqtgraph import mkBrush, mkPen
from pyqtgraph.Qt import QtCore, uic from pyqtgraph.Qt import QtCore, uic
@ -114,12 +121,21 @@ class PlotApp(QWidget):
# Change layout of plots when the number of columns is changed in GUI # Change layout of plots when the number of columns is changed in GUI
self.spinBox_N_columns.valueChanged.connect(lambda x: self.init_ui(x)) self.spinBox_N_columns.valueChanged.connect(lambda x: self.init_ui(x))
@staticmethod def validate_config(self, config: dict) -> None:
def validate_config(config: dict) -> None: """
Validate the configuration dictionary.
Args:
config (dict): Configuration dictionary form .yaml file.
Returns:
None
"""
required_top_level_keys = ["plot_settings", "plot_data"] required_top_level_keys = ["plot_settings", "plot_data"]
for key in required_top_level_keys: for key in required_top_level_keys:
if key not in config: if key not in config:
raise ValueError(f"Missing required key: {key}") error_message = f"Missing required key: {key}"
self.display_error(error_message)
raise ValueError(error_message)
plot_data = config.get("plot_data", []) plot_data = config.get("plot_data", [])
for i, plot_config in enumerate(plot_data): for i, plot_config in enumerate(plot_data):
@ -127,17 +143,27 @@ class PlotApp(QWidget):
axis_config = plot_config.get(axis) axis_config = plot_config.get(axis)
plot_name = plot_config.get("plot_name", "") plot_name = plot_config.get("plot_name", "")
if axis_config is None: if axis_config is None:
raise ValueError(f"Missing '{axis}' configuration in plot {i} - {plot_name}") error_message = f"Missing '{axis}' configuration in plot {i} - {plot_name}"
self.display_error(error_message)
raise ValueError(error_message)
signals_config = axis_config.get("signals") signals_config = axis_config.get("signals")
if signals_config is None: if signals_config is None:
raise ValueError( error_message = f"Missing 'signals' configuration for {axis} axis in plot {i} - '{plot_name}'"
f"Missing 'signals' configuration for {axis} axis in plot {i} - \"{plot_name}\"" self.display_error(error_message)
) raise ValueError(error_message)
elif not isinstance(signals_config, list) or len(signals_config) == 0: elif not isinstance(signals_config, list) or len(signals_config) == 0:
raise ValueError( error_message = f"'signals' configuration for {axis} axis in plot {i} must be a non-empty list"
f"'signals' configuration for {axis} axis in plot {i} must be a non-empty list" self.display_error(error_message)
) raise ValueError(error_message)
def display_error(self, error_message: str) -> None:
"""Display an error message in a QMessageBox."""
msg_box = QMessageBox()
msg_box.setIcon(QMessageBox.Critical)
msg_box.setText(error_message)
msg_box.setWindowTitle("Configuration Error")
msg_box.exec_()
def init_config(self, config: dict) -> None: def init_config(self, config: dict) -> None:
""" """