From 66c6c7fa5075dcd5b6729fa3c2166aa821a6c51d Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 6 Mar 2025 15:39:16 +0100 Subject: [PATCH] fix: add support for additional keyword arguments in widget constructors --- bec_widgets/utils/bec_widget.py | 3 ++- bec_widgets/widgets/containers/figure/figure.py | 7 +++---- .../containers/figure/plots/image/image_item.py | 2 +- .../widgets/containers/figure/plots/plot_base.py | 3 ++- .../containers/figure/plots/waveform/waveform.py | 8 +++++++- .../figure/plots/waveform/waveform_curve.py | 2 +- .../control/buttons/button_abort/button_abort.py | 11 +++++++++-- .../control/buttons/button_reset/button_reset.py | 4 ++-- .../control/buttons/button_resume/button_resume.py | 4 ++-- .../control/buttons/stop_button/stop_button.py | 4 ++-- .../position_indicator/position_indicator.py | 4 ++-- .../device_input/base_classes/device_input_base.py | 4 ++-- .../base_classes/device_signal_input_base.py | 4 ++-- .../device_input/device_combobox/device_combobox.py | 3 ++- .../device_input/device_line_edit/device_line_edit.py | 3 ++- .../device_input/signal_combobox/signal_combobox.py | 3 ++- .../device_input/signal_line_edit/signal_line_edit.py | 3 ++- .../widgets/control/scan_control/scan_control.py | 3 ++- .../widgets/dap/dap_combo_box/dap_combo_box.py | 9 +++++++-- bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py | 3 ++- .../widgets/editors/scan_metadata/scan_metadata.py | 3 ++- bec_widgets/widgets/editors/text_box/text_box.py | 4 ++-- bec_widgets/widgets/editors/vscode/vscode.py | 4 ++-- bec_widgets/widgets/editors/website/website.py | 6 ++++-- bec_widgets/widgets/plots/image/image_widget.py | 3 ++- .../widgets/plots/motor_map/motor_map_widget.py | 3 ++- .../plots/multi_waveform/multi_waveform_widget.py | 3 ++- bec_widgets/widgets/plots/waveform/waveform_widget.py | 3 ++- bec_widgets/widgets/plots_next_gen/plot_base.py | 3 ++- .../progress/bec_progressbar/bec_progressbar.py | 4 ++-- .../widgets/progress/ring_progress_bar/ring.py | 3 ++- .../progress/ring_progress_bar/ring_progress_bar.py | 3 ++- bec_widgets/widgets/services/bec_queue/bec_queue.py | 3 ++- .../widgets/services/bec_status_box/bec_status_box.py | 3 ++- .../widgets/services/device_browser/device_browser.py | 3 ++- .../widgets/utility/spinbox/decimal_spinbox.py | 3 ++- .../utility/visual/colormap_widget/colormap_widget.py | 4 ++-- .../visual/dark_mode_button/dark_mode_button.py | 3 ++- 38 files changed, 94 insertions(+), 54 deletions(-) diff --git a/bec_widgets/utils/bec_widget.py b/bec_widgets/utils/bec_widget.py index 02f86975..7dbd8805 100644 --- a/bec_widgets/utils/bec_widget.py +++ b/bec_widgets/utils/bec_widget.py @@ -24,6 +24,7 @@ class BECWidget(BECConnector): config: ConnectionConfig = None, gui_id: str = None, theme_update: bool = False, + **kwargs, ): """ Base class for all BEC widgets. This class should be used as a mixin class for all BEC widgets, e.g.: @@ -44,7 +45,7 @@ class BECWidget(BECConnector): """ if not isinstance(self, QWidget): raise RuntimeError(f"{repr(self)} is not a subclass of QWidget") - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) # Set the theme to auto if it is not set yet app = QApplication.instance() diff --git a/bec_widgets/widgets/containers/figure/figure.py b/bec_widgets/widgets/containers/figure/figure.py index d76ccba2..c9262add 100644 --- a/bec_widgets/widgets/containers/figure/figure.py +++ b/bec_widgets/widgets/containers/figure/figure.py @@ -162,13 +162,14 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget): config: Optional[FigureConfig] = None, client=None, gui_id: Optional[str] = None, + **kwargs, ) -> None: if config is None: config = FigureConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = FigureConfig(**config) - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, config=config, **kwargs) pg.GraphicsLayoutWidget.__init__(self, parent) self.widget_handler = WidgetHandler() @@ -573,10 +574,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget): config=config, **axis_kwargs, ) - # has to be changed manually to ensure unique id, if config is copied from existing widget, the id could be - # used otherwise multiple times widget.set_gui_id(widget_id) - widget.config.row = row widget.config.col = col @@ -588,6 +586,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget): self.config.num_cols = max(self.config.num_cols, col + 1) # Saving config for future referencing + self.config.widgets[widget_id] = widget.config self._widgets[widget_id] = widget diff --git a/bec_widgets/widgets/containers/figure/plots/image/image_item.py b/bec_widgets/widgets/containers/figure/plots/image/image_item.py index c1a35f8f..2b94b31f 100644 --- a/bec_widgets/widgets/containers/figure/plots/image/image_item.py +++ b/bec_widgets/widgets/containers/figure/plots/image/image_item.py @@ -72,7 +72,7 @@ class BECImageItem(BECConnector, pg.ImageItem): self.config = config else: self.config = config - super().__init__(config=config, gui_id=gui_id) + super().__init__(config=config, gui_id=gui_id, **kwargs) pg.ImageItem.__init__(self) self.parent_image = parent_image diff --git a/bec_widgets/widgets/containers/figure/plots/plot_base.py b/bec_widgets/widgets/containers/figure/plots/plot_base.py index dcb41943..a25b4938 100644 --- a/bec_widgets/widgets/containers/figure/plots/plot_base.py +++ b/bec_widgets/widgets/containers/figure/plots/plot_base.py @@ -98,10 +98,11 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout): config: Optional[SubplotConfig] = None, client=None, gui_id: Optional[str] = None, + **kwargs, ): if config is None: config = SubplotConfig(widget_class=self.__class__.__name__) - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) pg.GraphicsLayout.__init__(self, parent) self.figure = parent_figure diff --git a/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py b/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py index 017fd7b8..b52382a6 100644 --- a/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py +++ b/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py @@ -99,11 +99,17 @@ class BECWaveform(BECPlotBase): config: Optional[Waveform1DConfig] = None, client=None, gui_id: Optional[str] = None, + **kwargs, ): if config is None: config = Waveform1DConfig(widget_class=self.__class__.__name__) super().__init__( - parent=parent, parent_figure=parent_figure, config=config, client=client, gui_id=gui_id + parent=parent, + parent_figure=parent_figure, + config=config, + client=client, + gui_id=gui_id, + **kwargs, ) self._curves_data = defaultdict(dict) diff --git a/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py b/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py index 4af35962..1b23c1dc 100644 --- a/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py +++ b/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py @@ -97,7 +97,7 @@ class BECCurve(BECConnector, pg.PlotDataItem): else: self.config = config # config.widget_class = self.__class__.__name__ - super().__init__(config=config, gui_id=gui_id) + super().__init__(config=config, gui_id=gui_id, **kwargs) pg.PlotDataItem.__init__(self, name=name) self.parent_item = parent_item diff --git a/bec_widgets/widgets/control/buttons/button_abort/button_abort.py b/bec_widgets/widgets/control/buttons/button_abort/button_abort.py index 7e454dd0..b597ec5c 100644 --- a/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +++ b/bec_widgets/widgets/control/buttons/button_abort/button_abort.py @@ -13,9 +13,16 @@ class AbortButton(BECWidget, QWidget): ICON_NAME = "cancel" def __init__( - self, parent=None, client=None, config=None, gui_id=None, toolbar=False, scan_id=None + self, + parent=None, + client=None, + config=None, + gui_id=None, + toolbar=False, + scan_id=None, + **kwargs, ): - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/control/buttons/button_reset/button_reset.py b/bec_widgets/widgets/control/buttons/button_reset/button_reset.py index c98760a6..18581005 100644 --- a/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +++ b/bec_widgets/widgets/control/buttons/button_reset/button_reset.py @@ -12,8 +12,8 @@ class ResetButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "restart_alt" - def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/control/buttons/button_resume/button_resume.py b/bec_widgets/widgets/control/buttons/button_resume/button_resume.py index d151a2f0..e1fcce5b 100644 --- a/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +++ b/bec_widgets/widgets/control/buttons/button_resume/button_resume.py @@ -12,8 +12,8 @@ class ResumeButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "resume" - def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/control/buttons/stop_button/stop_button.py b/bec_widgets/widgets/control/buttons/stop_button/stop_button.py index f7c77f39..24051a53 100644 --- a/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +++ b/bec_widgets/widgets/control/buttons/stop_button/stop_button.py @@ -12,8 +12,8 @@ class StopButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "dangerous" - def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py b/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py index a9bcedf6..fd079a12 100644 --- a/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +++ b/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py @@ -12,8 +12,8 @@ class PositionIndicator(BECWidget, QWidget): PLUGIN = True ICON_NAME = "horizontal_distribute" - def __init__(self, parent=None, client=None, config=None, gui_id=None): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__(self, parent=None, client=None, config=None, gui_id=None, **kwargs): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.position = 50 self.min_value = 0 diff --git a/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py b/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py index 37c947a8..0798a42b 100644 --- a/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +++ b/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py @@ -59,7 +59,7 @@ class DeviceInputBase(BECWidget): ReadoutPriority.ON_REQUEST: "readout_on_request", } - def __init__(self, client=None, config=None, gui_id: str = None): + def __init__(self, client=None, config=None, gui_id: str | None = None, **kwargs): if config is None: config = DeviceInputConfig(widget_class=self.__class__.__name__) @@ -67,7 +67,7 @@ class DeviceInputBase(BECWidget): if isinstance(config, dict): config = DeviceInputConfig(**config) self.config = config - super().__init__(client=client, config=config, gui_id=gui_id, theme_update=True) + super().__init__(client=client, config=config, gui_id=gui_id, theme_update=True, **kwargs) self.get_bec_shortcuts() self._device_filter = [] self._readout_filter = [] diff --git a/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py b/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py index 33ad9528..06c03544 100644 --- a/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +++ b/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py @@ -35,14 +35,14 @@ class DeviceSignalInputBase(BECWidget): Kind.config: "include_config_signals", } - def __init__(self, client=None, config=None, gui_id: str = None): + def __init__(self, client=None, config=None, gui_id: str = None, **kwargs): if config is None: config = DeviceSignalInputBaseConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = DeviceSignalInputBaseConfig(**config) self.config = config - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) self._device = None self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py b/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py index 30e093d0..94aa80ce 100644 --- a/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +++ b/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py @@ -45,8 +45,9 @@ class DeviceComboBox(DeviceInputBase, QComboBox): available_devices: list[str] | None = None, default: str | None = None, arg_name: str | None = None, + **kwargs, ): - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QComboBox.__init__(self, parent=parent) if arg_name is not None: self.config.arg_name = arg_name diff --git a/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py b/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py index 0f9aa448..42209ea3 100644 --- a/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +++ b/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py @@ -48,11 +48,12 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit): available_devices: list[str] | None = None, default: str | None = None, arg_name: str | None = None, + **kwargs, ): self._callback_id = None self._is_valid_input = False self._accent_colors = get_accent_colors() - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QLineEdit.__init__(self, parent=parent) self.completer = QCompleter(self) self.setCompleter(self.completer) diff --git a/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py b/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py index 09672eae..43ea8cc5 100644 --- a/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +++ b/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py @@ -38,8 +38,9 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox): signal_filter: str | list[str] | None = None, default: str | None = None, arg_name: str | None = None, + **kwargs, ): - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QComboBox.__init__(self, parent=parent) if arg_name is not None: self.config.arg_name = arg_name diff --git a/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py b/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py index 173a073a..5b49f454 100644 --- a/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +++ b/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py @@ -39,9 +39,10 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit): signal_filter: str | list[str] | None = None, default: str | None = None, arg_name: str | None = None, + **kwargs, ): self._is_valid_input = False - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QLineEdit.__init__(self, parent=parent) self._accent_colors = get_accent_colors() self.completer = QCompleter(self) diff --git a/bec_widgets/widgets/control/scan_control/scan_control.py b/bec_widgets/widgets/control/scan_control/scan_control.py index 89e18ad6..f9ea8b3a 100644 --- a/bec_widgets/widgets/control/scan_control/scan_control.py +++ b/bec_widgets/widgets/control/scan_control/scan_control.py @@ -58,13 +58,14 @@ class ScanControl(BECWidget, QWidget): gui_id: str | None = None, allowed_scans: list | None = None, default_scan: str | None = None, + **kwargs, ): if config is None: config = ScanControlConfig( widget_class=self.__class__.__name__, allowed_scans=allowed_scans ) - super().__init__(client=client, gui_id=gui_id, config=config) + super().__init__(client=client, gui_id=gui_id, config=config, **kwargs) QWidget.__init__(self, parent=parent) self._hide_add_remove_buttons = False diff --git a/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py b/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py index fce0ef2d..d8321185 100644 --- a/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +++ b/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py @@ -37,9 +37,14 @@ class DapComboBox(BECWidget, QWidget): fit_model_updated = Signal(str) def __init__( - self, parent=None, client=None, gui_id: str | None = None, default_fit: str | None = None + self, + parent=None, + client=None, + gui_id: str | None = None, + default_fit: str | None = None, + **kwargs, ): - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.layout = QVBoxLayout(self) self.fit_model_combobox = QComboBox(self) diff --git a/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py b/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py index 38f5e8ae..6dbffd5c 100644 --- a/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +++ b/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py @@ -30,6 +30,7 @@ class LMFitDialog(BECWidget, QWidget): target_widget=None, gui_id: str | None = None, ui_file="lmfit_dialog_vertical.ui", + **kwargs, ): """ Initialises the LMFitDialog widget. @@ -42,7 +43,7 @@ class LMFitDialog(BECWidget, QWidget): gui_id (str): GUI ID. ui_file (str): The UI file to be loaded. """ - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.setProperty("skip_settings", True) self.setObjectName("LMFitDialog") diff --git a/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py index c8d5112c..f4108eee 100644 --- a/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +++ b/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py @@ -49,8 +49,9 @@ class ScanMetadata(BECWidget, QWidget): client=None, scan_name: str | None = None, initial_extras: list[list[str]] | None = None, + **kwargs, ): - super().__init__(client=client) + super().__init__(client=client, **kwargs) QWidget.__init__(self, parent=parent) self.set_schema(scan_name) diff --git a/bec_widgets/widgets/editors/text_box/text_box.py b/bec_widgets/widgets/editors/text_box/text_box.py index 8b549acb..d8683775 100644 --- a/bec_widgets/widgets/editors/text_box/text_box.py +++ b/bec_widgets/widgets/editors/text_box/text_box.py @@ -42,14 +42,14 @@ class TextBox(BECWidget, QWidget): USER_ACCESS = ["set_plain_text", "set_html_text"] ICON_NAME = "chat" - def __init__(self, parent=None, client=None, config=None, gui_id=None): + def __init__(self, parent=None, client=None, config=None, gui_id=None, **kwargs): if config is None: config = TextBoxConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = TextBoxConfig(**config) self.config = config - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.layout = QVBoxLayout(self) self.text_box_text_edit = QTextEdit(parent=self) diff --git a/bec_widgets/widgets/editors/vscode/vscode.py b/bec_widgets/widgets/editors/vscode/vscode.py index 24ba661d..85584dd3 100644 --- a/bec_widgets/widgets/editors/vscode/vscode.py +++ b/bec_widgets/widgets/editors/vscode/vscode.py @@ -45,12 +45,12 @@ class VSCodeEditor(WebsiteWidget): USER_ACCESS = [] ICON_NAME = "developer_mode_tv" - def __init__(self, parent=None, config=None, client=None, gui_id=None): + def __init__(self, parent=None, config=None, client=None, gui_id=None, **kwargs): self.process = None self.port = get_free_port() self._url = f"http://{self.host}:{self.port}?tkn={self.token}" - super().__init__(parent=parent, config=config, client=client, gui_id=gui_id) + super().__init__(parent=parent, config=config, client=client, gui_id=gui_id, **kwargs) self.start_server() self.bec_dispatcher.connect_slot(self.on_vscode_event, f"vscode-events/{self.gui_id}") diff --git a/bec_widgets/widgets/editors/website/website.py b/bec_widgets/widgets/editors/website/website.py index 6a2444e8..a2c4a6cf 100644 --- a/bec_widgets/widgets/editors/website/website.py +++ b/bec_widgets/widgets/editors/website/website.py @@ -23,8 +23,10 @@ class WebsiteWidget(BECWidget, QWidget): ICON_NAME = "travel_explore" USER_ACCESS = ["set_url", "get_url", "reload", "back", "forward"] - def __init__(self, parent=None, url: str = None, config=None, client=None, gui_id=None): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__( + self, parent=None, url: str = None, config=None, client=None, gui_id=None, **kwargs + ): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) diff --git a/bec_widgets/widgets/plots/image/image_widget.py b/bec_widgets/widgets/plots/image/image_widget.py index 47f152c3..9945d811 100644 --- a/bec_widgets/widgets/plots/image/image_widget.py +++ b/bec_widgets/widgets/plots/image/image_widget.py @@ -54,13 +54,14 @@ class BECImageWidget(BECWidget, QWidget): config: ImageConfig | dict = None, client=None, gui_id: str | None = None, + **kwargs, ) -> None: if config is None: config = ImageConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = ImageConfig(**config) - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.layout = QVBoxLayout(self) self.layout.setSpacing(0) diff --git a/bec_widgets/widgets/plots/motor_map/motor_map_widget.py b/bec_widgets/widgets/plots/motor_map/motor_map_widget.py index c6d4f966..d8456f06 100644 --- a/bec_widgets/widgets/plots/motor_map/motor_map_widget.py +++ b/bec_widgets/widgets/plots/motor_map/motor_map_widget.py @@ -35,13 +35,14 @@ class BECMotorMapWidget(BECWidget, QWidget): config: MotorMapConfig | None = None, client=None, gui_id: str | None = None, + **kwargs, ) -> None: if config is None: config = MotorMapConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = MotorMapConfig(**config) - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.layout = QVBoxLayout(self) diff --git a/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py b/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py index fbf1c28b..99cc52de 100644 --- a/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py +++ b/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py @@ -63,13 +63,14 @@ class BECMultiWaveformWidget(BECWidget, QWidget): config: BECMultiWaveformConfig | dict = None, client=None, gui_id: str | None = None, + **kwargs, ) -> None: if config is None: config = BECMultiWaveformConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = BECMultiWaveformConfig(**config) - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.layout = QVBoxLayout(self) diff --git a/bec_widgets/widgets/plots/waveform/waveform_widget.py b/bec_widgets/widgets/plots/waveform/waveform_widget.py index 367df9d5..a5be8759 100644 --- a/bec_widgets/widgets/plots/waveform/waveform_widget.py +++ b/bec_widgets/widgets/plots/waveform/waveform_widget.py @@ -86,13 +86,14 @@ class BECWaveformWidget(BECWidget, QWidget): config: Waveform1DConfig | dict = None, client=None, gui_id: str | None = None, + **kwargs, ) -> None: if config is None: config = Waveform1DConfig(widget_class=self.__class__.__name__) else: if isinstance(config, dict): config = Waveform1DConfig(**config) - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.layout = QVBoxLayout(self) diff --git a/bec_widgets/widgets/plots_next_gen/plot_base.py b/bec_widgets/widgets/plots_next_gen/plot_base.py index 326d6d1a..f3ed0cab 100644 --- a/bec_widgets/widgets/plots_next_gen/plot_base.py +++ b/bec_widgets/widgets/plots_next_gen/plot_base.py @@ -69,10 +69,11 @@ class PlotBase(BECWidget, QWidget): client=None, gui_id: str | None = None, popups: bool = False, + **kwargs, ) -> None: if config is None: config = ConnectionConfig(widget_class=self.__class__.__name__) - super().__init__(client=client, gui_id=gui_id, config=config) + super().__init__(client=client, gui_id=gui_id, config=config, **kwargs) QWidget.__init__(self, parent=parent) # For PropertyManager identification diff --git a/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py b/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py index 11f4fbb3..c4c6ef91 100644 --- a/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +++ b/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py @@ -24,8 +24,8 @@ class BECProgressBar(BECWidget, QWidget): ] ICON_NAME = "page_control" - def __init__(self, parent=None, client=None, config=None, gui_id=None): - super().__init__(client=client, config=config, gui_id=gui_id) + def __init__(self, parent=None, client=None, config=None, gui_id=None, **kwargs): + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) accent_colors = get_accent_colors() diff --git a/bec_widgets/widgets/progress/ring_progress_bar/ring.py b/bec_widgets/widgets/progress/ring_progress_bar/ring.py index 2321b3e3..2327054d 100644 --- a/bec_widgets/widgets/progress/ring_progress_bar/ring.py +++ b/bec_widgets/widgets/progress/ring_progress_bar/ring.py @@ -99,6 +99,7 @@ class Ring(BECConnector): config: RingConfig | dict | None = None, client=None, gui_id: Optional[str] = None, + **kwargs, ): if config is None: config = RingConfig(widget_class=self.__class__.__name__) @@ -107,7 +108,7 @@ class Ring(BECConnector): if isinstance(config, dict): config = RingConfig(**config) self.config = config - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) self.parent_progress_widget = parent_progress_widget self.color = None diff --git a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py index 511e57cc..9c9789a0 100644 --- a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +++ b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py @@ -101,6 +101,7 @@ class RingProgressBar(BECWidget, QWidget): client=None, gui_id: str | None = None, num_bars: int | None = None, + **kwargs, ): if config is None: config = RingProgressBarConfig(widget_class=self.__class__.__name__) @@ -109,7 +110,7 @@ class RingProgressBar(BECWidget, QWidget): if isinstance(config, dict): config = RingProgressBarConfig(**config, widget_class=self.__class__.__name__) self.config = config - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent=parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/services/bec_queue/bec_queue.py b/bec_widgets/widgets/services/bec_queue/bec_queue.py index c234f49c..99e16453 100644 --- a/bec_widgets/widgets/services/bec_queue/bec_queue.py +++ b/bec_widgets/widgets/services/bec_queue/bec_queue.py @@ -42,8 +42,9 @@ class BECQueue(BECWidget, CompactPopupWidget): config: ConnectionConfig = None, gui_id: str = None, refresh_upon_start: bool = True, + **kwargs, ): - super().__init__(client, config, gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) CompactPopupWidget.__init__(self, parent=parent, layout=QVBoxLayout) self.layout.setSpacing(0) self.layout.setContentsMargins(0, 0, 0, 0) diff --git a/bec_widgets/widgets/services/bec_status_box/bec_status_box.py b/bec_widgets/widgets/services/bec_status_box/bec_status_box.py index 53d8a8fc..7dfa3bdb 100644 --- a/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +++ b/bec_widgets/widgets/services/bec_status_box/bec_status_box.py @@ -87,8 +87,9 @@ class BECStatusBox(BECWidget, CompactPopupWidget): client: BECClient = None, bec_service_status_mixin: BECServiceStatusMixin = None, gui_id: str = None, + **kwargs, ): - super().__init__(client=client, gui_id=gui_id) + super().__init__(client=client, gui_id=gui_id, **kwargs) CompactPopupWidget.__init__(self, parent=parent, layout=QHBoxLayout) self.box_name = box_name diff --git a/bec_widgets/widgets/services/device_browser/device_browser.py b/bec_widgets/widgets/services/device_browser/device_browser.py index 33e1872c..5f31aa5d 100644 --- a/bec_widgets/widgets/services/device_browser/device_browser.py +++ b/bec_widgets/widgets/services/device_browser/device_browser.py @@ -23,8 +23,9 @@ class DeviceBrowser(BECWidget, QWidget): config=None, client=None, gui_id: Optional[str] = None, + **kwargs, ) -> None: - super().__init__(client=client, config=config, gui_id=gui_id) + super().__init__(client=client, config=config, gui_id=gui_id, **kwargs) QWidget.__init__(self, parent) self.get_bec_shortcuts() diff --git a/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py b/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py index 9990f3cb..6bad7368 100644 --- a/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +++ b/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py @@ -26,10 +26,11 @@ class BECSpinBox(BECWidget, QDoubleSpinBox): config: ConnectionConfig | None = None, client=None, gui_id: str | None = None, + **kwargs, ) -> None: if config is None: config = ConnectionConfig(widget_class=self.__class__.__name__) - super().__init__(client=client, gui_id=gui_id, config=config) + super().__init__(client=client, gui_id=gui_id, config=config, **kwargs) QDoubleSpinBox.__init__(self, parent=parent) self.setObjectName("BECSpinBox") diff --git a/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py b/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py index 7b0329e9..15a04863 100644 --- a/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +++ b/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py @@ -12,8 +12,8 @@ class BECColorMapWidget(BECWidget, QWidget): USER_ACCESS = ["colormap"] PLUGIN = True - def __init__(self, parent=None, cmap: str = "magma"): - super().__init__() + def __init__(self, parent=None, cmap: str = "magma", **kwargs): + super().__init__(**kwargs) QWidget.__init__(self, parent=parent) # Create the ColorMapButton diff --git a/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py b/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py index d395ef5f..4336abfb 100644 --- a/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +++ b/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py @@ -20,8 +20,9 @@ class DarkModeButton(BECWidget, QWidget): client=None, gui_id: str | None = None, toolbar: bool = False, + **kwargs, ) -> None: - super().__init__(client=client, gui_id=gui_id, theme_update=True) + super().__init__(client=client, gui_id=gui_id, theme_update=True, **kwargs) QWidget.__init__(self, parent) self._dark_mode_enabled = False