0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

fix: add support for additional keyword arguments in widget constructors

This commit is contained in:
2025-03-06 15:39:16 +01:00
parent 31c3337300
commit 66c6c7fa50
38 changed files with 94 additions and 54 deletions

View File

@ -24,6 +24,7 @@ class BECWidget(BECConnector):
config: ConnectionConfig = None, config: ConnectionConfig = None,
gui_id: str = None, gui_id: str = None,
theme_update: bool = False, 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.: 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): if not isinstance(self, QWidget):
raise RuntimeError(f"{repr(self)} is not a subclass of 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 # Set the theme to auto if it is not set yet
app = QApplication.instance() app = QApplication.instance()

View File

@ -162,13 +162,14 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
config: Optional[FigureConfig] = None, config: Optional[FigureConfig] = None,
client=None, client=None,
gui_id: Optional[str] = None, gui_id: Optional[str] = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = FigureConfig(widget_class=self.__class__.__name__) config = FigureConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = FigureConfig(**config) 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) pg.GraphicsLayoutWidget.__init__(self, parent)
self.widget_handler = WidgetHandler() self.widget_handler = WidgetHandler()
@ -573,10 +574,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
config=config, config=config,
**axis_kwargs, **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.set_gui_id(widget_id)
widget.config.row = row widget.config.row = row
widget.config.col = col widget.config.col = col
@ -588,6 +586,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
self.config.num_cols = max(self.config.num_cols, col + 1) self.config.num_cols = max(self.config.num_cols, col + 1)
# Saving config for future referencing # Saving config for future referencing
self.config.widgets[widget_id] = widget.config self.config.widgets[widget_id] = widget.config
self._widgets[widget_id] = widget self._widgets[widget_id] = widget

View File

@ -72,7 +72,7 @@ class BECImageItem(BECConnector, pg.ImageItem):
self.config = config self.config = config
else: else:
self.config = config self.config = config
super().__init__(config=config, gui_id=gui_id) super().__init__(config=config, gui_id=gui_id, **kwargs)
pg.ImageItem.__init__(self) pg.ImageItem.__init__(self)
self.parent_image = parent_image self.parent_image = parent_image

View File

@ -98,10 +98,11 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
config: Optional[SubplotConfig] = None, config: Optional[SubplotConfig] = None,
client=None, client=None,
gui_id: Optional[str] = None, gui_id: Optional[str] = None,
**kwargs,
): ):
if config is None: if config is None:
config = SubplotConfig(widget_class=self.__class__.__name__) 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) pg.GraphicsLayout.__init__(self, parent)
self.figure = parent_figure self.figure = parent_figure

View File

@ -99,11 +99,17 @@ class BECWaveform(BECPlotBase):
config: Optional[Waveform1DConfig] = None, config: Optional[Waveform1DConfig] = None,
client=None, client=None,
gui_id: Optional[str] = None, gui_id: Optional[str] = None,
**kwargs,
): ):
if config is None: if config is None:
config = Waveform1DConfig(widget_class=self.__class__.__name__) config = Waveform1DConfig(widget_class=self.__class__.__name__)
super().__init__( 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) self._curves_data = defaultdict(dict)

View File

@ -97,7 +97,7 @@ class BECCurve(BECConnector, pg.PlotDataItem):
else: else:
self.config = config self.config = config
# config.widget_class = self.__class__.__name__ # 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) pg.PlotDataItem.__init__(self, name=name)
self.parent_item = parent_item self.parent_item = parent_item

View File

@ -13,9 +13,16 @@ class AbortButton(BECWidget, QWidget):
ICON_NAME = "cancel" ICON_NAME = "cancel"
def __init__( 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) QWidget.__init__(self, parent=parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -12,8 +12,8 @@ class ResetButton(BECWidget, QWidget):
PLUGIN = True PLUGIN = True
ICON_NAME = "restart_alt" ICON_NAME = "restart_alt"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): 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) super().__init__(client=client, config=config, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent=parent) QWidget.__init__(self, parent=parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -12,8 +12,8 @@ class ResumeButton(BECWidget, QWidget):
PLUGIN = True PLUGIN = True
ICON_NAME = "resume" ICON_NAME = "resume"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): 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) super().__init__(client=client, config=config, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent=parent) QWidget.__init__(self, parent=parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -12,8 +12,8 @@ class StopButton(BECWidget, QWidget):
PLUGIN = True PLUGIN = True
ICON_NAME = "dangerous" ICON_NAME = "dangerous"
def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False): 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) super().__init__(client=client, config=config, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent=parent) QWidget.__init__(self, parent=parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -12,8 +12,8 @@ class PositionIndicator(BECWidget, QWidget):
PLUGIN = True PLUGIN = True
ICON_NAME = "horizontal_distribute" ICON_NAME = "horizontal_distribute"
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):
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) QWidget.__init__(self, parent=parent)
self.position = 50 self.position = 50
self.min_value = 0 self.min_value = 0

View File

@ -59,7 +59,7 @@ class DeviceInputBase(BECWidget):
ReadoutPriority.ON_REQUEST: "readout_on_request", 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: if config is None:
config = DeviceInputConfig(widget_class=self.__class__.__name__) config = DeviceInputConfig(widget_class=self.__class__.__name__)
@ -67,7 +67,7 @@ class DeviceInputBase(BECWidget):
if isinstance(config, dict): if isinstance(config, dict):
config = DeviceInputConfig(**config) config = DeviceInputConfig(**config)
self.config = 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.get_bec_shortcuts()
self._device_filter = [] self._device_filter = []
self._readout_filter = [] self._readout_filter = []

View File

@ -35,14 +35,14 @@ class DeviceSignalInputBase(BECWidget):
Kind.config: "include_config_signals", 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: if config is None:
config = DeviceSignalInputBaseConfig(widget_class=self.__class__.__name__) config = DeviceSignalInputBaseConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = DeviceSignalInputBaseConfig(**config) config = DeviceSignalInputBaseConfig(**config)
self.config = 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._device = None
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -45,8 +45,9 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
available_devices: list[str] | None = None, available_devices: list[str] | None = None,
default: str | None = None, default: str | None = None,
arg_name: 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) QComboBox.__init__(self, parent=parent)
if arg_name is not None: if arg_name is not None:
self.config.arg_name = arg_name self.config.arg_name = arg_name

View File

@ -48,11 +48,12 @@ class DeviceLineEdit(DeviceInputBase, QLineEdit):
available_devices: list[str] | None = None, available_devices: list[str] | None = None,
default: str | None = None, default: str | None = None,
arg_name: str | None = None, arg_name: str | None = None,
**kwargs,
): ):
self._callback_id = None self._callback_id = None
self._is_valid_input = False self._is_valid_input = False
self._accent_colors = get_accent_colors() 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) QLineEdit.__init__(self, parent=parent)
self.completer = QCompleter(self) self.completer = QCompleter(self)
self.setCompleter(self.completer) self.setCompleter(self.completer)

View File

@ -38,8 +38,9 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
signal_filter: str | list[str] | None = None, signal_filter: str | list[str] | None = None,
default: str | None = None, default: str | None = None,
arg_name: 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) QComboBox.__init__(self, parent=parent)
if arg_name is not None: if arg_name is not None:
self.config.arg_name = arg_name self.config.arg_name = arg_name

View File

@ -39,9 +39,10 @@ class SignalLineEdit(DeviceSignalInputBase, QLineEdit):
signal_filter: str | list[str] | None = None, signal_filter: str | list[str] | None = None,
default: str | None = None, default: str | None = None,
arg_name: str | None = None, arg_name: str | None = None,
**kwargs,
): ):
self._is_valid_input = False 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) QLineEdit.__init__(self, parent=parent)
self._accent_colors = get_accent_colors() self._accent_colors = get_accent_colors()
self.completer = QCompleter(self) self.completer = QCompleter(self)

View File

@ -58,13 +58,14 @@ class ScanControl(BECWidget, QWidget):
gui_id: str | None = None, gui_id: str | None = None,
allowed_scans: list | None = None, allowed_scans: list | None = None,
default_scan: str | None = None, default_scan: str | None = None,
**kwargs,
): ):
if config is None: if config is None:
config = ScanControlConfig( config = ScanControlConfig(
widget_class=self.__class__.__name__, allowed_scans=allowed_scans 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) QWidget.__init__(self, parent=parent)
self._hide_add_remove_buttons = False self._hide_add_remove_buttons = False

View File

@ -37,9 +37,14 @@ class DapComboBox(BECWidget, QWidget):
fit_model_updated = Signal(str) fit_model_updated = Signal(str)
def __init__( 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) QWidget.__init__(self, parent=parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)
self.fit_model_combobox = QComboBox(self) self.fit_model_combobox = QComboBox(self)

View File

@ -30,6 +30,7 @@ class LMFitDialog(BECWidget, QWidget):
target_widget=None, target_widget=None,
gui_id: str | None = None, gui_id: str | None = None,
ui_file="lmfit_dialog_vertical.ui", ui_file="lmfit_dialog_vertical.ui",
**kwargs,
): ):
""" """
Initialises the LMFitDialog widget. Initialises the LMFitDialog widget.
@ -42,7 +43,7 @@ class LMFitDialog(BECWidget, QWidget):
gui_id (str): GUI ID. gui_id (str): GUI ID.
ui_file (str): The UI file to be loaded. 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) QWidget.__init__(self, parent=parent)
self.setProperty("skip_settings", True) self.setProperty("skip_settings", True)
self.setObjectName("LMFitDialog") self.setObjectName("LMFitDialog")

View File

@ -49,8 +49,9 @@ class ScanMetadata(BECWidget, QWidget):
client=None, client=None,
scan_name: str | None = None, scan_name: str | None = None,
initial_extras: list[list[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) QWidget.__init__(self, parent=parent)
self.set_schema(scan_name) self.set_schema(scan_name)

View File

@ -42,14 +42,14 @@ class TextBox(BECWidget, QWidget):
USER_ACCESS = ["set_plain_text", "set_html_text"] USER_ACCESS = ["set_plain_text", "set_html_text"]
ICON_NAME = "chat" 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: if config is None:
config = TextBoxConfig(widget_class=self.__class__.__name__) config = TextBoxConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = TextBoxConfig(**config) config = TextBoxConfig(**config)
self.config = 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) QWidget.__init__(self, parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)
self.text_box_text_edit = QTextEdit(parent=self) self.text_box_text_edit = QTextEdit(parent=self)

View File

@ -45,12 +45,12 @@ class VSCodeEditor(WebsiteWidget):
USER_ACCESS = [] USER_ACCESS = []
ICON_NAME = "developer_mode_tv" 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.process = None
self.port = get_free_port() self.port = get_free_port()
self._url = f"http://{self.host}:{self.port}?tkn={self.token}" 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.start_server()
self.bec_dispatcher.connect_slot(self.on_vscode_event, f"vscode-events/{self.gui_id}") self.bec_dispatcher.connect_slot(self.on_vscode_event, f"vscode-events/{self.gui_id}")

View File

@ -23,8 +23,10 @@ class WebsiteWidget(BECWidget, QWidget):
ICON_NAME = "travel_explore" ICON_NAME = "travel_explore"
USER_ACCESS = ["set_url", "get_url", "reload", "back", "forward"] USER_ACCESS = ["set_url", "get_url", "reload", "back", "forward"]
def __init__(self, parent=None, url: str = None, config=None, client=None, gui_id=None): def __init__(
super().__init__(client=client, config=config, gui_id=gui_id) 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) QWidget.__init__(self, parent=parent)
layout = QVBoxLayout() layout = QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0) layout.setContentsMargins(0, 0, 0, 0)

View File

@ -54,13 +54,14 @@ class BECImageWidget(BECWidget, QWidget):
config: ImageConfig | dict = None, config: ImageConfig | dict = None,
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = ImageConfig(widget_class=self.__class__.__name__) config = ImageConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = ImageConfig(**config) config = ImageConfig(**config)
super().__init__(client=client, gui_id=gui_id) super().__init__(client=client, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)
self.layout.setSpacing(0) self.layout.setSpacing(0)

View File

@ -35,13 +35,14 @@ class BECMotorMapWidget(BECWidget, QWidget):
config: MotorMapConfig | None = None, config: MotorMapConfig | None = None,
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = MotorMapConfig(widget_class=self.__class__.__name__) config = MotorMapConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = MotorMapConfig(**config) config = MotorMapConfig(**config)
super().__init__(client=client, gui_id=gui_id) super().__init__(client=client, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)

View File

@ -63,13 +63,14 @@ class BECMultiWaveformWidget(BECWidget, QWidget):
config: BECMultiWaveformConfig | dict = None, config: BECMultiWaveformConfig | dict = None,
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = BECMultiWaveformConfig(widget_class=self.__class__.__name__) config = BECMultiWaveformConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = BECMultiWaveformConfig(**config) config = BECMultiWaveformConfig(**config)
super().__init__(client=client, gui_id=gui_id) super().__init__(client=client, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)

View File

@ -86,13 +86,14 @@ class BECWaveformWidget(BECWidget, QWidget):
config: Waveform1DConfig | dict = None, config: Waveform1DConfig | dict = None,
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = Waveform1DConfig(widget_class=self.__class__.__name__) config = Waveform1DConfig(widget_class=self.__class__.__name__)
else: else:
if isinstance(config, dict): if isinstance(config, dict):
config = Waveform1DConfig(**config) config = Waveform1DConfig(**config)
super().__init__(client=client, gui_id=gui_id) super().__init__(client=client, gui_id=gui_id, **kwargs)
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.layout = QVBoxLayout(self) self.layout = QVBoxLayout(self)

View File

@ -69,10 +69,11 @@ class PlotBase(BECWidget, QWidget):
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
popups: bool = False, popups: bool = False,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = ConnectionConfig(widget_class=self.__class__.__name__) 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) QWidget.__init__(self, parent=parent)
# For PropertyManager identification # For PropertyManager identification

View File

@ -24,8 +24,8 @@ class BECProgressBar(BECWidget, QWidget):
] ]
ICON_NAME = "page_control" ICON_NAME = "page_control"
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):
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) QWidget.__init__(self, parent=parent)
accent_colors = get_accent_colors() accent_colors = get_accent_colors()

View File

@ -99,6 +99,7 @@ class Ring(BECConnector):
config: RingConfig | dict | None = None, config: RingConfig | dict | None = None,
client=None, client=None,
gui_id: Optional[str] = None, gui_id: Optional[str] = None,
**kwargs,
): ):
if config is None: if config is None:
config = RingConfig(widget_class=self.__class__.__name__) config = RingConfig(widget_class=self.__class__.__name__)
@ -107,7 +108,7 @@ class Ring(BECConnector):
if isinstance(config, dict): if isinstance(config, dict):
config = RingConfig(**config) config = RingConfig(**config)
self.config = 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.parent_progress_widget = parent_progress_widget
self.color = None self.color = None

View File

@ -101,6 +101,7 @@ class RingProgressBar(BECWidget, QWidget):
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
num_bars: int | None = None, num_bars: int | None = None,
**kwargs,
): ):
if config is None: if config is None:
config = RingProgressBarConfig(widget_class=self.__class__.__name__) config = RingProgressBarConfig(widget_class=self.__class__.__name__)
@ -109,7 +110,7 @@ class RingProgressBar(BECWidget, QWidget):
if isinstance(config, dict): if isinstance(config, dict):
config = RingProgressBarConfig(**config, widget_class=self.__class__.__name__) config = RingProgressBarConfig(**config, widget_class=self.__class__.__name__)
self.config = 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=parent) QWidget.__init__(self, parent=parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -42,8 +42,9 @@ class BECQueue(BECWidget, CompactPopupWidget):
config: ConnectionConfig = None, config: ConnectionConfig = None,
gui_id: str = None, gui_id: str = None,
refresh_upon_start: bool = True, 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) CompactPopupWidget.__init__(self, parent=parent, layout=QVBoxLayout)
self.layout.setSpacing(0) self.layout.setSpacing(0)
self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setContentsMargins(0, 0, 0, 0)

View File

@ -87,8 +87,9 @@ class BECStatusBox(BECWidget, CompactPopupWidget):
client: BECClient = None, client: BECClient = None,
bec_service_status_mixin: BECServiceStatusMixin = None, bec_service_status_mixin: BECServiceStatusMixin = None,
gui_id: str = 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) CompactPopupWidget.__init__(self, parent=parent, layout=QHBoxLayout)
self.box_name = box_name self.box_name = box_name

View File

@ -23,8 +23,9 @@ class DeviceBrowser(BECWidget, QWidget):
config=None, config=None,
client=None, client=None,
gui_id: Optional[str] = None, gui_id: Optional[str] = None,
**kwargs,
) -> None: ) -> 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) QWidget.__init__(self, parent)
self.get_bec_shortcuts() self.get_bec_shortcuts()

View File

@ -26,10 +26,11 @@ class BECSpinBox(BECWidget, QDoubleSpinBox):
config: ConnectionConfig | None = None, config: ConnectionConfig | None = None,
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
**kwargs,
) -> None: ) -> None:
if config is None: if config is None:
config = ConnectionConfig(widget_class=self.__class__.__name__) 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) QDoubleSpinBox.__init__(self, parent=parent)
self.setObjectName("BECSpinBox") self.setObjectName("BECSpinBox")

View File

@ -12,8 +12,8 @@ class BECColorMapWidget(BECWidget, QWidget):
USER_ACCESS = ["colormap"] USER_ACCESS = ["colormap"]
PLUGIN = True PLUGIN = True
def __init__(self, parent=None, cmap: str = "magma"): def __init__(self, parent=None, cmap: str = "magma", **kwargs):
super().__init__() super().__init__(**kwargs)
QWidget.__init__(self, parent=parent) QWidget.__init__(self, parent=parent)
# Create the ColorMapButton # Create the ColorMapButton

View File

@ -20,8 +20,9 @@ class DarkModeButton(BECWidget, QWidget):
client=None, client=None,
gui_id: str | None = None, gui_id: str | None = None,
toolbar: bool = False, toolbar: bool = False,
**kwargs,
) -> None: ) -> 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) QWidget.__init__(self, parent)
self._dark_mode_enabled = False self._dark_mode_enabled = False