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

refactor(plots/image): all rpc widgets can access config_dict as property

This commit is contained in:
2024-04-12 11:25:13 +02:00
parent 2f7317b328
commit be9847e9d2
7 changed files with 88 additions and 88 deletions

View File

@ -1,18 +1,18 @@
# This file was automatically generated by generate_cli.py
from bec_widgets.cli.client_utils import rpc_call, RPCBase, BECFigureClientMixin
from typing import Literal, Optional, overload
from bec_widgets.cli.client_utils import BECFigureClientMixin, RPCBase, rpc_call
class BECPlotBase(RPCBase):
@property
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
dict: The configuration of the widget.
"""
@rpc_call
@ -136,6 +136,15 @@ class BECPlotBase(RPCBase):
class BECWaveform(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@rpc_call
def add_curve_scan(
self,
@ -257,16 +266,6 @@ class BECWaveform(RPCBase):
dict | pd.DataFrame: Data of all curves in the specified format.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
@rpc_call
def set(self, **kwargs) -> "None":
"""
@ -388,6 +387,15 @@ class BECWaveform(RPCBase):
class BECFigure(RPCBase, BECFigureClientMixin):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@property
@rpc_call
def axes(self) -> "list[BECPlotBase]":
@ -606,18 +614,17 @@ class BECFigure(RPCBase, BECFigureClientMixin):
Clear all widgets from the figure and reset to default state
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
class BECCurve(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@rpc_call
def set(self, **kwargs):
"""
@ -704,18 +711,17 @@ class BECCurve(RPCBase):
tuple[np.ndarray,np.ndarray]: X and Y data of the curve.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
class BECImageShow(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@rpc_call
def add_image_by_config(self, config: "ImageItemConfig | dict") -> "BECImageItem":
"""
@ -747,16 +753,6 @@ class BECImageShow(RPCBase):
dict[str, dict[str, BECImageItem]]: The dictionary of images.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
@rpc_call
def add_monitor_image(
self,
@ -910,16 +906,6 @@ class BECImageShow(RPCBase):
use_threading(bool): Whether to use threading.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
@rpc_call
def set(self, **kwargs) -> "None":
"""
@ -1050,18 +1036,26 @@ class BECImageShow(RPCBase):
class BECConnector(RPCBase):
@property
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
dict: The configuration of the widget.
"""
class BECImageItem(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@rpc_call
def set(self, **kwargs):
"""
@ -1163,18 +1157,17 @@ class BECImageItem(RPCBase):
vmax(float): Maximum value of the color bar.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
class BECMotorMap(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@rpc_call
def change_motors(
self,
@ -1194,16 +1187,6 @@ class BECMotorMap(RPCBase):
validate_bec(bool, optional): If True, validate the signal with BEC. Defaults to True.
"""
@rpc_call
def get_config(self, dict_output: "bool" = True) -> "dict | BaseModel":
"""
Get the configuration of the widget.
Args:
dict_output(bool): If True, return the configuration as a dictionary. If False, return the configuration as a pydantic model.
Returns:
dict: The configuration of the plot widget.
"""
@rpc_call
def set_max_points(self, max_points: "int") -> "None":
"""

View File

@ -31,7 +31,7 @@ class ConnectionConfig(BaseModel):
class BECConnector:
"""Connection mixin class for all BEC widgets, to handle BEC client and device manager"""
USER_ACCESS = ["get_config"]
USER_ACCESS = ["config_dict"]
def __init__(self, client=None, config: ConnectionConfig = None, gui_id: str = None):
# BEC related connections
@ -54,6 +54,24 @@ class BECConnector:
else:
self.gui_id = self.config.gui_id
@property
def config_dict(self) -> dict:
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
return self.config.model_dump()
@config_dict.setter
def config_dict(self, config: BaseModel) -> None:
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
self.config = config
@pyqtSlot(str)
def set_gui_id(self, gui_id: str) -> None:
"""

View File

@ -97,6 +97,7 @@ class WidgetHandler:
class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
USER_ACCESS = [
"config_dict",
"axes",
"widgets",
"add_plot",
@ -109,7 +110,6 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
"change_layout",
"change_theme",
"clear_all",
"get_config",
]
clean_signal = pyqtSignal()

View File

@ -59,6 +59,7 @@ class ImageConfig(WidgetConfig):
class BECImageItem(BECConnector, pg.ImageItem):
USER_ACCESS = [
"config_dict",
"set",
"set_fft",
"set_log",
@ -70,7 +71,6 @@ class BECImageItem(BECConnector, pg.ImageItem):
"set_auto_downsample",
"set_monitor",
"set_vrange",
"get_config",
]
def __init__(
@ -281,10 +281,10 @@ class BECImageItem(BECConnector, pg.ImageItem):
class BECImageShow(BECPlotBase):
USER_ACCESS = [
"config_dict",
"add_image_by_config",
"get_image_config",
"get_image_dict",
"get_config",
"add_monitor_image",
"add_custom_image",
"set_vrange",
@ -298,7 +298,6 @@ class BECImageShow(BECPlotBase):
"set_rotation",
"set_transpose",
"toggle_threading",
"get_config",
"set",
"set_title",
"set_x_label",

View File

@ -36,8 +36,8 @@ class MotorMapConfig(WidgetConfig):
class BECMotorMap(BECPlotBase):
USER_ACCESS = [
"config_dict",
"change_motors",
"get_config",
"set_max_points",
"set_precision",
"set_num_dim_points",

View File

@ -37,7 +37,7 @@ class WidgetConfig(ConnectionConfig):
class BECPlotBase(BECConnector, pg.GraphicsLayout):
USER_ACCESS = [
"get_config",
"config_dict",
"set",
"set_title",
"set_x_label",

View File

@ -64,6 +64,7 @@ class Waveform1DConfig(WidgetConfig):
class BECCurve(BECConnector, pg.PlotDataItem):
USER_ACCESS = [
"config_dict",
"set",
"set_data",
"set_color",
@ -74,7 +75,6 @@ class BECCurve(BECConnector, pg.PlotDataItem):
"set_pen_width",
"set_pen_style",
"get_data",
"get_config",
]
def __init__(
@ -228,6 +228,7 @@ class BECCurve(BECConnector, pg.PlotDataItem):
class BECWaveform(BECPlotBase):
USER_ACCESS = [
"config_dict",
"add_curve_scan",
"add_curve_custom",
"remove_curve",
@ -237,7 +238,6 @@ class BECWaveform(BECPlotBase):
"get_curve_config",
"apply_config",
"get_all_data",
"get_config",
"set",
"set_title",
"set_x_label",