diff --git a/bec_widgets/examples/modular_app/modular_app.py b/bec_widgets/examples/modular_app/modular_app.py index e64fef5f..1e2c0a61 100644 --- a/bec_widgets/examples/modular_app/modular_app.py +++ b/bec_widgets/examples/modular_app/modular_app.py @@ -3,7 +3,7 @@ import os from PyQt5 import uic from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout -from bec_widgets.widgets.monitor import BECDeviceMonitor, ConfigDialog +from bec_widgets.widgets.monitor import BECDeviceMonitor config_1 = { "plot_settings": { @@ -81,6 +81,7 @@ config_2 = { }, ], } + config_scan_mode = config = { "plot_settings": { "background_color": "white", @@ -185,36 +186,27 @@ class ModularApp(QMainWindow): def _init_plots(self): self.glw_1_layout = QVBoxLayout(self.glw_1) # Create a new QVBoxLayout self.bec_device_monitor_1 = BECDeviceMonitor(parent=self, config=config_1) - self.config_dialog_1 = ConfigDialog() self.glw_1_layout.addWidget(self.bec_device_monitor_1) # Add BECDeviceMonitor to the layout self.pushButton_setting_1.clicked.connect( - lambda: self.show_config_dialog(self.bec_device_monitor_1, self.config_dialog_1) + lambda: self.bec_device_monitor_1.show_config_dialog() ) self.glw_2_layout = QVBoxLayout(self.glw_2) # Create a new QVBoxLayout self.bec_device_monitor_2 = BECDeviceMonitor(parent=self, config=config_2) - self.config_dialog_2 = ConfigDialog() self.glw_2_layout.addWidget(self.bec_device_monitor_2) # Add BECDeviceMonitor to the layout self.pushButton_setting_2.clicked.connect( - lambda: self.show_config_dialog(self.bec_device_monitor_2, self.config_dialog_2) + lambda: self.bec_device_monitor_2.show_config_dialog() ) self.glw_3_layout = QVBoxLayout(self.glw_3) # Create a new QVBoxLayout self.bec_device_monitor_3 = BECDeviceMonitor(parent=self, config=config_scan_mode) - self.config_dialog_3 = ConfigDialog() self.glw_3_layout.addWidget(self.bec_device_monitor_3) # Add BECDeviceMonitor to the layout self.pushButton_setting_3.clicked.connect( - lambda: self.show_config_dialog(self.bec_device_monitor_3, self.config_dialog_3) + lambda: self.bec_device_monitor_3.show_config_dialog() ) - def show_config_dialog(self, monitor, config_dialog): - config = monitor.get_config() - - config_dialog.load_config(config) # Load the configuration into the dialog - config_dialog.config_updated.connect( - monitor.update_config - ) # Connect the signal to the monitor's slot - config_dialog.show() # Show the dialog + def show_config_dialog(self, monitor): + monitor.show_config_dialog() if __name__ == "__main__": diff --git a/bec_widgets/widgets/monitor/config_dialog.py b/bec_widgets/widgets/monitor/config_dialog.py index 425592ab..abb9c70d 100644 --- a/bec_widgets/widgets/monitor/config_dialog.py +++ b/bec_widgets/widgets/monitor/config_dialog.py @@ -25,8 +25,8 @@ Tab_Ui_Form, Tab_BaseClass = uic.loadUiType(os.path.join(current_path, "tab_temp class ConfigDialog(QWidget, Ui_Form): config_updated = pyqtSignal(dict) - def __init__(self): - super().__init__() + def __init__(self, default_config=None): + super(ConfigDialog, self).__init__() self.setupUi(self) self.signal_count = 1 # TODO decide if useful @@ -43,6 +43,9 @@ class ConfigDialog(QWidget, Ui_Form): self.add_new_plot() # add initial first plot tab + if default_config is not None: + self.load_config(default_config) + def add_new_plot(self): # Set tabs new_tab_widget = QWidget() diff --git a/bec_widgets/widgets/monitor/device_monitor.py b/bec_widgets/widgets/monitor/device_monitor.py index b9407d4a..6f15ccef 100644 --- a/bec_widgets/widgets/monitor/device_monitor.py +++ b/bec_widgets/widgets/monitor/device_monitor.py @@ -1,12 +1,14 @@ +import os + import pyqtgraph as pg from bec_lib.core import MessageEndpoints from PyQt5 import QtCore from PyQt5.QtCore import pyqtSignal, pyqtSlot -from PyQt5.QtWidgets import QApplication +from PyQt5.QtWidgets import QApplication, QTableWidgetItem, QWidget from pyqtgraph import mkPen, mkBrush +from PyQt5 import uic from bec_widgets.bec_dispatcher import bec_dispatcher - from bec_widgets.qt_utils import Crosshair, Colors config_simple = { @@ -231,6 +233,13 @@ class BECDeviceMonitor(pg.GraphicsLayoutWidget): def get_config(self): return self.config + def show_config_dialog(self): + from .config_dialog import ConfigDialog + + dialog = ConfigDialog(default_config=self.config) + dialog.config_updated.connect(self.update_config) + dialog.show() + @pyqtSlot(dict) def update_config(self, config): self.config = config