From 2f06059dab2074b3515349ff661d8e01a08b0b6b Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 11 Apr 2025 16:30:44 +0200 Subject: [PATCH] fix: RPC access enabled for certain widgets. --- bec_widgets/cli/client.py | 111 +++++++++++++++++- .../buttons/button_abort/button_abort.py | 2 +- .../buttons/button_reset/button_reset.py | 2 +- .../buttons/button_resume/button_resume.py | 2 +- .../buttons/stop_button/stop_button.py | 2 +- .../positioner_box/positioner_box.py | 1 + .../positioner_box_2d/positioner_box_2d.py | 1 + bec_widgets/widgets/games/minesweeper.py | 2 +- .../dark_mode_button/dark_mode_button.py | 2 +- 9 files changed, 118 insertions(+), 7 deletions(-) diff --git a/bec_widgets/cli/client.py b/bec_widgets/cli/client.py index 49ee5592..e940baec 100644 --- a/bec_widgets/cli/client.py +++ b/bec_widgets/cli/client.py @@ -10,7 +10,8 @@ from typing import Literal, Optional from bec_lib.logger import bec_logger from bec_widgets.cli.rpc.rpc_base import RPCBase, rpc_call -from bec_widgets.utils.bec_plugin_helper import get_all_plugin_widgets, get_plugin_client_module +from bec_widgets.utils.bec_plugin_helper import (get_all_plugin_widgets, + get_plugin_client_module) logger = bec_logger.logger @@ -24,22 +25,31 @@ class _WidgetsEnumType(str, enum.Enum): _Widgets = { + "AbortButton": "AbortButton", "BECDockArea": "BECDockArea", "BECProgressBar": "BECProgressBar", "BECQueue": "BECQueue", "BECStatusBox": "BECStatusBox", "DapComboBox": "DapComboBox", + "DarkModeButton": "DarkModeButton", "DeviceBrowser": "DeviceBrowser", "DeviceComboBox": "DeviceComboBox", "DeviceLineEdit": "DeviceLineEdit", "Image": "Image", "LogPanel": "LogPanel", + "Minesweeper": "Minesweeper", "MotorMap": "MotorMap", "MultiWaveform": "MultiWaveform", "PositionIndicator": "PositionIndicator", + "PositionerBox": "PositionerBox", + "PositionerBox2D": "PositionerBox2D", + "PositionerControlLine": "PositionerControlLine", + "ResetButton": "ResetButton", + "ResumeButton": "ResumeButton", "RingProgressBar": "RingProgressBar", "ScanControl": "ScanControl", "ScatterWaveform": "ScatterWaveform", + "StopButton": "StopButton", "TextBox": "TextBox", "VSCodeEditor": "VSCodeEditor", "Waveform": "Waveform", @@ -72,6 +82,16 @@ for plugin_name, plugin_class in inspect.getmembers(plugin_client, inspect.iscla globals()[plugin_name] = plugin_class +class AbortButton(RPCBase): + """A button that abort the scan.""" + + @rpc_call + def remove(self): + """ + Cleanup the BECConnector + """ + + class AutoUpdates(RPCBase): @property @rpc_call @@ -661,6 +681,14 @@ class DapComboBox(RPCBase): """ +class DarkModeButton(RPCBase): + @rpc_call + def remove(self): + """ + Cleanup the BECConnector + """ + + class DeviceBrowser(RPCBase): """DeviceBrowser is a widget that displays all available devices in the current BEC session.""" @@ -1384,6 +1412,9 @@ class LogPanel(RPCBase): """ +class Minesweeper(RPCBase): ... + + class MotorMap(RPCBase): """Motor map widget for plotting motor positions in 2D including a trace of the last points.""" @@ -2227,6 +2258,54 @@ class PositionIndicator(RPCBase): """ +class PositionerBox(RPCBase): + """Simple Widget to control a positioner in box form""" + + @rpc_call + def set_positioner(self, positioner: "str | Positioner"): + """ + Set the device + + Args: + positioner (Positioner | str) : Positioner to set, accepts str or the device + """ + + +class PositionerBox2D(RPCBase): + """Simple Widget to control two positioners in box form""" + + @rpc_call + def set_positioner_hor(self, positioner: "str | Positioner"): + """ + Set the device + + Args: + positioner (Positioner | str) : Positioner to set, accepts str or the device + """ + + @rpc_call + def set_positioner_ver(self, positioner: "str | Positioner"): + """ + Set the device + + Args: + positioner (Positioner | str) : Positioner to set, accepts str or the device + """ + + +class PositionerControlLine(RPCBase): + """A widget that controls a single device.""" + + @rpc_call + def set_positioner(self, positioner: "str | Positioner"): + """ + Set the device + + Args: + positioner (Positioner | str) : Positioner to set, accepts str or the device + """ + + class PositionerGroup(RPCBase): """Simple Widget to control a positioner in box form""" @@ -2239,6 +2318,26 @@ class PositionerGroup(RPCBase): """ +class ResetButton(RPCBase): + """A button that resets the scan queue.""" + + @rpc_call + def remove(self): + """ + Cleanup the BECConnector + """ + + +class ResumeButton(RPCBase): + """A button that continue scan queue.""" + + @rpc_call + def remove(self): + """ + Cleanup the BECConnector + """ + + class Ring(RPCBase): @rpc_call def _get_all_rpc(self) -> "dict": @@ -2883,6 +2982,16 @@ class ScatterWaveform(RPCBase): """ +class StopButton(RPCBase): + """A button that stops the current scan.""" + + @rpc_call + def remove(self): + """ + Cleanup the BECConnector + """ + + class TextBox(RPCBase): """A widget that displays text in plain and HTML format""" 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 dfae2de7..c14bb062 100644 --- a/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +++ b/bec_widgets/widgets/control/buttons/button_abort/button_abort.py @@ -11,7 +11,7 @@ class AbortButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "cancel" - RPC = False + RPC = True def __init__( self, 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 dc468a31..caea1cc7 100644 --- a/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +++ b/bec_widgets/widgets/control/buttons/button_reset/button_reset.py @@ -11,7 +11,7 @@ class ResetButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "restart_alt" - RPC = False + RPC = True def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): super().__init__(parent=parent, client=client, gui_id=gui_id, config=config, **kwargs) 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 c27369ed..33f694ff 100644 --- a/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +++ b/bec_widgets/widgets/control/buttons/button_resume/button_resume.py @@ -11,7 +11,7 @@ class ResumeButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "resume" - RPC = False + RPC = True def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): super().__init__(parent=parent, client=client, gui_id=gui_id, config=config, **kwargs) 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 201a108a..ec9732ab 100644 --- a/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +++ b/bec_widgets/widgets/control/buttons/stop_button/stop_button.py @@ -11,7 +11,7 @@ class StopButton(BECWidget, QWidget): PLUGIN = True ICON_NAME = "dangerous" - RPC = False + RPC = True def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False, **kwargs): super().__init__(parent=parent, client=client, gui_id=gui_id, config=config, **kwargs) diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py index 430badde..64b4b3f5 100644 --- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py @@ -31,6 +31,7 @@ class PositionerBox(PositionerBoxBase): dimensions = (234, 224) PLUGIN = True + RPC = True USER_ACCESS = ["set_positioner"] device_changed = Signal(str, str) diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py index 589a6c22..9c7dd32d 100644 --- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py @@ -33,6 +33,7 @@ class PositionerBox2D(PositionerBoxBase): ui_file = "positioner_box_2d.ui" PLUGIN = True + RPC = True USER_ACCESS = ["set_positioner_hor", "set_positioner_ver"] device_changed_hor = Signal(str, str) diff --git a/bec_widgets/widgets/games/minesweeper.py b/bec_widgets/widgets/games/minesweeper.py index e730ad10..607cde57 100644 --- a/bec_widgets/widgets/games/minesweeper.py +++ b/bec_widgets/widgets/games/minesweeper.py @@ -144,7 +144,7 @@ class Minesweeper(BECWidget, QWidget): PLUGIN = True ICON_NAME = "videogame_asset" USER_ACCESS = [] - RPC = False + RPC = True def __init__(self, parent=None, *args, **kwargs): super().__init__(parent=parent, *args, **kwargs) 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 28baa73c..72a9e9bd 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 @@ -12,7 +12,7 @@ class DarkModeButton(BECWidget, QWidget): ICON_NAME = "dark_mode" PLUGIN = True - RPC = False + RPC = True def __init__( self,