diff --git a/bec_widgets/cli/client.py b/bec_widgets/cli/client.py index 22d29abf..c2908318 100644 --- a/bec_widgets/cli/client.py +++ b/bec_widgets/cli/client.py @@ -69,140 +69,6 @@ class BECColorMapWidget(RPCBase): """ -class BECCurve(RPCBase): - @rpc_call - def remove(self): - """ - Remove the curve from the plot. - """ - - @property - @rpc_call - def dap_params(self): - """ - None - """ - - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @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): - """ - Set the properties of the curve. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - color: str - - symbol: str - - symbol_color: str - - symbol_size: int - - pen_width: int - - pen_style: Literal["solid", "dash", "dot", "dashdot"] - """ - - @rpc_call - def set_data(self, x, y): - """ - None - """ - - @rpc_call - def set_color(self, color: "str", symbol_color: "Optional[str]" = None): - """ - Change the color of the curve. - - Args: - color(str): Color of the curve. - symbol_color(str, optional): Color of the symbol. Defaults to None. - """ - - @rpc_call - def set_color_map_z(self, colormap: "str"): - """ - Set the colormap for the scatter plot z gradient. - - Args: - colormap(str): Colormap for the scatter plot. - """ - - @rpc_call - def set_symbol(self, symbol: "str"): - """ - Change the symbol of the curve. - - Args: - symbol(str): Symbol of the curve. - """ - - @rpc_call - def set_symbol_color(self, symbol_color: "str"): - """ - Change the symbol color of the curve. - - Args: - symbol_color(str): Color of the symbol. - """ - - @rpc_call - def set_symbol_size(self, symbol_size: "int"): - """ - Change the symbol size of the curve. - - Args: - symbol_size(int): Size of the symbol. - """ - - @rpc_call - def set_pen_width(self, pen_width: "int"): - """ - Change the pen width of the curve. - - Args: - pen_width(int): Width of the pen. - """ - - @rpc_call - def set_pen_style(self, pen_style: "Literal['solid', 'dash', 'dot', 'dashdot']"): - """ - Change the pen style of the curve. - - Args: - pen_style(Literal["solid", "dash", "dot", "dashdot"]): Style of the pen. - """ - - @rpc_call - def get_data(self) -> "tuple[np.ndarray, np.ndarray]": - """ - Get the data of the curve. - Returns: - tuple[np.ndarray,np.ndarray]: X and Y data of the curve. - """ - - @property - @rpc_call - def dap_params(self): - """ - None - """ - - class BECDock(RPCBase): @property @rpc_call @@ -335,6 +201,29 @@ class BECDock(RPCBase): class BECDockArea(RPCBase): + @property + @rpc_call + def _rpc_id(self) -> "str": + """ + Get the RPC ID of the widget. + """ + + @property + @rpc_call + def _config_dict(self) -> "dict": + """ + Get the configuration of the widget. + + Returns: + dict: The configuration of the widget. + """ + + @rpc_call + def _get_all_rpc(self) -> "dict": + """ + Get all registered RPC objects. + """ + @rpc_call def new( self, @@ -469,733 +358,6 @@ class BECDockArea(RPCBase): """ -class BECFigure(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @property - @rpc_call - def _config_dict(self) -> "dict": - """ - Get the configuration of the widget. - - Returns: - dict: The configuration of the widget. - """ - - @rpc_call - def _get_all_rpc(self) -> "dict": - """ - Get all registered RPC objects. - """ - - @rpc_call - def axes(self, row: "int", col: "int") -> "BECPlotBase": - """ - Get widget by its coordinates in the figure. - - Args: - row(int): the row coordinate - col(int): the column coordinate - - Returns: - BECPlotBase: the widget at the given coordinates - """ - - @property - @rpc_call - def widgets(self) -> "dict": - """ - All widgets within the figure with gui ids as keys. - Returns: - dict: All widgets within the figure. - """ - - @rpc_call - def plot( - self, - arg1: "list | np.ndarray | str | None" = None, - y: "list | np.ndarray | None" = None, - x: "list | np.ndarray | None" = None, - x_name: "str | None" = None, - y_name: "str | None" = None, - z_name: "str | None" = None, - x_entry: "str | None" = None, - y_entry: "str | None" = None, - z_entry: "str | None" = None, - color: "str | None" = None, - color_map_z: "str | None" = "magma", - label: "str | None" = None, - validate: "bool" = True, - new: "bool" = False, - row: "int | None" = None, - col: "int | None" = None, - dap: "str | None" = None, - config: "dict | None" = None, - **axis_kwargs, - ) -> "BECWaveform": - """ - Add a 1D waveform plot to the figure. Always access the first waveform widget in the figure. - - Args: - arg1(list | np.ndarray | str | None): First argument which can be x data, y data, or y_name. - y(list | np.ndarray): Custom y data to plot. - x(list | np.ndarray): Custom x data to plot. - x_name(str): The name of the device for the x-axis. - y_name(str): The name of the device for the y-axis. - z_name(str): The name of the device for the z-axis. - x_entry(str): The name of the entry for the x-axis. - y_entry(str): The name of the entry for the y-axis. - z_entry(str): The name of the entry for the z-axis. - color(str): The color of the curve. - color_map_z(str): The color map to use for the z-axis. - label(str): The label of the curve. - validate(bool): If True, validate the device names and entries. - new(bool): If True, create a new plot instead of using the first plot. - row(int): The row coordinate of the widget in the figure. If not provided, the next empty row will be used. - col(int): The column coordinate of the widget in the figure. If not provided, the next empty column will be used. - dap(str): The DAP model to use for the curve. - config(dict): Recreates the whole BECWaveform widget from provided configuration. - **axis_kwargs: Additional axis properties to set on the widget after creation. - - Returns: - BECWaveform: The waveform plot widget. - """ - - @rpc_call - def image( - self, - monitor: "str" = None, - monitor_type: "Literal['1d', '2d']" = "2d", - color_bar: "Literal['simple', 'full']" = "full", - color_map: "str" = "magma", - data: "np.ndarray" = None, - vrange: "tuple[float, float]" = None, - new: "bool" = False, - row: "int | None" = None, - col: "int | None" = None, - config: "dict | None" = None, - **axis_kwargs, - ) -> "BECImageShow": - """ - Add an image to the figure. Always access the first image widget in the figure. - - Args: - monitor(str): The name of the monitor to display. - color_bar(Literal["simple","full"]): The type of color bar to display. - color_map(str): The color map to use for the image. - data(np.ndarray): Custom data to display. - vrange(tuple[float, float]): The range of values to display. - new(bool): If True, create a new plot instead of using the first plot. - row(int): The row coordinate of the widget in the figure. If not provided, the next empty row will be used. - col(int): The column coordinate of the widget in the figure. If not provided, the next empty column will be used. - config(dict): Recreates the whole BECImageShow widget from provided configuration. - **axis_kwargs: Additional axis properties to set on the widget after creation. - - Returns: - BECImageShow: The image widget. - """ - - @rpc_call - def motor_map( - self, - motor_x: "str" = None, - motor_y: "str" = None, - new: "bool" = False, - row: "int | None" = None, - col: "int | None" = None, - config: "dict | None" = None, - **axis_kwargs, - ) -> "BECMotorMap": - """ - Add a motor map to the figure. Always access the first motor map widget in the figure. - - Args: - motor_x(str): The name of the motor for the X axis. - motor_y(str): The name of the motor for the Y axis. - new(bool): If True, create a new plot instead of using the first plot. - row(int): The row coordinate of the widget in the figure. If not provided, the next empty row will be used. - col(int): The column coordinate of the widget in the figure. If not provided, the next empty column will be used. - config(dict): Recreates the whole BECImageShow widget from provided configuration. - **axis_kwargs: Additional axis properties to set on the widget after creation. - - Returns: - BECMotorMap: The motor map widget. - """ - - @rpc_call - def remove( - self, - row: "int" = None, - col: "int" = None, - widget_id: "str" = None, - coordinates: "tuple[int, int]" = None, - ) -> "None": - """ - Remove a widget from the figure. Can be removed by its unique identifier or by its coordinates. - - Args: - row(int): The row coordinate of the widget to remove. - col(int): The column coordinate of the widget to remove. - widget_id(str): The unique identifier of the widget to remove. - coordinates(tuple[int, int], optional): The coordinates of the widget to remove. - """ - - @rpc_call - def change_layout(self, max_columns=None, max_rows=None): - """ - Reshuffle the layout of the figure to adjust to a new number of max_columns or max_rows. - If both max_columns and max_rows are provided, max_rows is ignored. - - Args: - max_columns (Optional[int]): The new maximum number of columns in the figure. - max_rows (Optional[int]): The new maximum number of rows in the figure. - """ - - @rpc_call - def change_theme(self, theme: "Literal['dark', 'light']") -> "None": - """ - Change the theme of the figure widget. - - Args: - theme(Literal["dark","light"]): The theme to set for the figure widget. - """ - - @rpc_call - def export(self): - """ - Export the plot widget. - """ - - @rpc_call - def clear_all(self): - """ - Clear all widgets from the figure and reset to default state - """ - - @property - @rpc_call - def widget_list(self) -> "list[BECPlotBase]": - """ - Access all widget in BECFigure as a list - Returns: - list[BECPlotBase]: List of all widgets in the figure. - """ - - -class BECImageItem(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @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): - """ - Set the properties of the image. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - downsample - - color_map - - monitor - - opacity - - vrange - - fft - - log - - rot - - transpose - - autorange_mode - """ - - @rpc_call - def set_fft(self, enable: "bool" = False): - """ - Set the FFT of the image. - - Args: - enable(bool): Whether to perform FFT on the monitor data. - """ - - @rpc_call - def set_log(self, enable: "bool" = False): - """ - Set the log of the image. - - Args: - enable(bool): Whether to perform log on the monitor data. - """ - - @rpc_call - def set_rotation(self, deg_90: "int" = 0): - """ - Set the rotation of the image. - - Args: - deg_90(int): The rotation angle of the monitor data before displaying. - """ - - @rpc_call - def set_transpose(self, enable: "bool" = False): - """ - Set the transpose of the image. - - Args: - enable(bool): Whether to transpose the image. - """ - - @rpc_call - def set_opacity(self, opacity: "float" = 1.0): - """ - Set the opacity of the image. - - Args: - opacity(float): The opacity of the image. - """ - - @rpc_call - def set_autorange(self, autorange: "bool" = False): - """ - Set the autorange of the color bar. - - Args: - autorange(bool): Whether to autorange the color bar. - """ - - @rpc_call - def set_autorange_mode(self, mode: "Literal['max', 'mean']" = "mean"): - """ - Set the autorange mode to scale the vrange of the color bar. Choose between min/max or mean +/- std. - - Args: - mode(Literal["max","mean"]): Max for min/max or mean for mean +/- std. - """ - - @rpc_call - def set_color_map(self, cmap: "str" = "magma"): - """ - Set the color map of the image. - - Args: - cmap(str): The color map of the image. - """ - - @rpc_call - def set_auto_downsample(self, auto: "bool" = True): - """ - Set the auto downsample of the image. - - Args: - auto(bool): Whether to downsample the image. - """ - - @rpc_call - def set_monitor(self, monitor: "str"): - """ - Set the monitor of the image. - - Args: - monitor(str): The name of the monitor. - """ - - @rpc_call - def set_vrange( - self, - vmin: "float" = None, - vmax: "float" = None, - vrange: "tuple[float, float]" = None, - change_autorange: "bool" = True, - ): - """ - Set the range of the color bar. - - Args: - vmin(float): Minimum value of the color bar. - vmax(float): Maximum value of the color bar. - """ - - @rpc_call - def get_data(self) -> "np.ndarray": - """ - Get the data of the image. - Returns: - np.ndarray: The data of the image. - """ - - -class BECImageShow(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @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": - """ - Add an image to the widget by configuration. - - Args: - config(ImageItemConfig|dict): The configuration of the image. - - Returns: - BECImageItem: The image object. - """ - - @rpc_call - def image( - self, - monitor: "str", - monitor_type: "Literal['1d', '2d']" = "2d", - color_map: "Optional[str]" = "magma", - color_bar: "Optional[Literal['simple', 'full']]" = "full", - downsample: "Optional[bool]" = True, - opacity: "Optional[float]" = 1.0, - vrange: "Optional[tuple[int, int]]" = None, - **kwargs, - ) -> "BECImageItem": - """ - Add an image to the figure. Always access the first image widget in the figure. - - Args: - monitor(str): The name of the monitor to display. - monitor_type(Literal["1d","2d"]): The type of monitor to display. - color_bar(Literal["simple","full"]): The type of color bar to display. - color_map(str): The color map to use for the image. - data(np.ndarray): Custom data to display. - vrange(tuple[float, float]): The range of values to display. - - Returns: - BECImageItem: The image item. - """ - - @rpc_call - def add_custom_image( - self, - name: "str", - data: "Optional[np.ndarray]" = None, - color_map: "Optional[str]" = "magma", - color_bar: "Optional[Literal['simple', 'full']]" = "full", - downsample: "Optional[bool]" = True, - opacity: "Optional[float]" = 1.0, - vrange: "Optional[tuple[int, int]]" = None, - **kwargs, - ): - """ - None - """ - - @rpc_call - def set_vrange(self, vmin: "float", vmax: "float", name: "str" = None): - """ - Set the range of the color bar. - If name is not specified, then set vrange for all images. - - Args: - vmin(float): Minimum value of the color bar. - vmax(float): Maximum value of the color bar. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_color_map(self, cmap: "str", name: "str" = None): - """ - Set the color map of the image. - If name is not specified, then set color map for all images. - - Args: - cmap(str): The color map of the image. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_autorange(self, enable: "bool" = False, name: "str" = None): - """ - Set the autoscale of the image. - - Args: - enable(bool): Whether to autoscale the color bar. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_autorange_mode(self, mode: "Literal['max', 'mean']", name: "str" = None): - """ - Set the autoscale mode of the image, that decides how the vrange of the color bar is scaled. - Choose betwen 'max' -> min/max of the data, 'mean' -> mean +/- fudge_factor*std of the data (fudge_factor~2). - - Args: - mode(str): The autoscale mode of the image. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_monitor(self, monitor: "str", name: "str" = None): - """ - Set the monitor of the image. - If name is not specified, then set monitor for all images. - - Args: - monitor(str): The name of the monitor. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_processing(self, name: "str" = None, **kwargs): - """ - Set the post processing of the image. - If name is not specified, then set post processing for all images. - - Args: - name(str): The name of the image. If None, apply to all images. - **kwargs: Keyword arguments for the properties to be set. - Possible properties: - - fft: bool - - log: bool - - rot: int - - transpose: bool - """ - - @rpc_call - def set_image_properties(self, name: "str" = None, **kwargs): - """ - Set the properties of the image. - - Args: - name(str): The name of the image. If None, apply to all images. - **kwargs: Keyword arguments for the properties to be set. - Possible properties: - - downsample: bool - - color_map: str - - monitor: str - - opacity: float - - vrange: tuple[int,int] - - fft: bool - - log: bool - - rot: int - - transpose: bool - """ - - @rpc_call - def set_fft(self, enable: "bool" = False, name: "str" = None): - """ - Set the FFT of the image. - If name is not specified, then set FFT for all images. - - Args: - enable(bool): Whether to perform FFT on the monitor data. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_log(self, enable: "bool" = False, name: "str" = None): - """ - Set the log of the image. - If name is not specified, then set log for all images. - - Args: - enable(bool): Whether to perform log on the monitor data. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_rotation(self, deg_90: "int" = 0, name: "str" = None): - """ - Set the rotation of the image. - If name is not specified, then set rotation for all images. - - Args: - deg_90(int): The rotation angle of the monitor data before displaying. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set_transpose(self, enable: "bool" = False, name: "str" = None): - """ - Set the transpose of the image. - If name is not specified, then set transpose for all images. - - Args: - enable(bool): Whether to transpose the monitor data before displaying. - name(str): The name of the image. If None, apply to all images. - """ - - @rpc_call - def set(self, **kwargs) -> "None": - """ - Set the properties of the plot widget. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - title: str - - x_label: str - - y_label: str - - x_scale: Literal["linear", "log"] - - y_scale: Literal["linear", "log"] - - x_lim: tuple - - y_lim: tuple - - legend_label_size: int - """ - - @rpc_call - def set_title(self, title: "str", size: "int" = None): - """ - Set the title of the plot widget. - - Args: - title(str): Title of the plot widget. - size(int): Font size of the title. - """ - - @rpc_call - def set_x_label(self, label: "str", size: "int" = None): - """ - Set the label of the x-axis. - - Args: - label(str): Label of the x-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_y_label(self, label: "str", size: "int" = None): - """ - Set the label of the y-axis. - - Args: - label(str): Label of the y-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_x_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the x-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the x-axis. - """ - - @rpc_call - def set_y_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the y-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the y-axis. - """ - - @rpc_call - def set_x_lim(self, *args) -> "None": - """ - Set the limits of the x-axis. This method can accept either two separate arguments - for the minimum and maximum x-axis values, or a single tuple containing both limits. - - Usage: - set_x_lim(x_min, x_max) - set_x_lim((x_min, x_max)) - - Args: - *args: A variable number of arguments. Can be two integers (x_min and x_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_y_lim(self, *args) -> "None": - """ - Set the limits of the y-axis. This method can accept either two separate arguments - for the minimum and maximum y-axis values, or a single tuple containing both limits. - - Usage: - set_y_lim(y_min, y_max) - set_y_lim((y_min, y_max)) - - Args: - *args: A variable number of arguments. Can be two integers (y_min and y_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_grid(self, x: "bool" = False, y: "bool" = False): - """ - Set the grid of the plot widget. - - Args: - x(bool): Show grid on the x-axis. - y(bool): Show grid on the y-axis. - """ - - @rpc_call - def enable_fps_monitor(self, enable: "bool" = True): - """ - Enable the FPS monitor. - - Args: - enable(bool): True to enable, False to disable. - """ - - @rpc_call - def lock_aspect_ratio(self, lock): - """ - Lock aspect ratio. - - Args: - lock(bool): True to lock, False to unlock. - """ - - @rpc_call - def export(self): - """ - Show the Export Dialog of the plot widget. - """ - - @rpc_call - def remove(self): - """ - Remove the plot widget from the figure. - """ - - @property - @rpc_call - def images(self) -> "list[BECImageItem]": - """ - Get the list of images. - Returns: - list[BECImageItem]: The list of images. - """ - - class BECMainWindow(RPCBase): @rpc_call def remove(self): @@ -1204,515 +366,6 @@ class BECMainWindow(RPCBase): """ -class BECMotorMap(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @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, - motor_x: "str", - motor_y: "str", - motor_x_entry: "str" = None, - motor_y_entry: "str" = None, - validate_bec: "bool" = True, - ) -> "None": - """ - Change the active motors for the plot. - - Args: - motor_x(str): Motor name for the X axis. - motor_y(str): Motor name for the Y axis. - motor_x_entry(str): Motor entry for the X axis. - motor_y_entry(str): Motor entry for the Y axis. - validate_bec(bool, optional): If True, validate the signal with BEC. Defaults to True. - """ - - @rpc_call - def set_max_points(self, max_points: "int") -> "None": - """ - Set the maximum number of points to display. - - Args: - max_points(int): Maximum number of points to display. - """ - - @rpc_call - def set_precision(self, precision: "int") -> "None": - """ - Set the decimal precision of the motor position. - - Args: - precision(int): Decimal precision of the motor position. - """ - - @rpc_call - def set_num_dim_points(self, num_dim_points: "int") -> "None": - """ - Set the number of dim points for the motor map. - - Args: - num_dim_points(int): Number of dim points. - """ - - @rpc_call - def set_background_value(self, background_value: "int") -> "None": - """ - Set the background value of the motor map. - - Args: - background_value(int): Background value of the motor map. - """ - - @rpc_call - def set_scatter_size(self, scatter_size: "int") -> "None": - """ - Set the scatter size of the motor map plot. - - Args: - scatter_size(int): Size of the scatter points. - """ - - @rpc_call - def get_data(self) -> "dict": - """ - Get the data of the motor map. - - Returns: - dict: Data of the motor map. - """ - - @rpc_call - def export(self): - """ - Show the Export Dialog of the plot widget. - """ - - @rpc_call - def remove(self): - """ - Remove the plot widget from the figure. - """ - - @rpc_call - def reset_history(self): - """ - Reset the history of the motor map. - """ - - -class BECMultiWaveform(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @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 curves(self) -> collections.deque: - """ - Get the curves of the plot widget as a deque. - Returns: - deque: Deque of curves. - """ - - @rpc_call - def set_monitor(self, monitor: str): - """ - Set the monitor for the plot widget. - Args: - monitor (str): The monitor to set. - """ - - @rpc_call - def set_opacity(self, opacity: int): - """ - Set the opacity of the curve on the plot. - - Args: - opacity(int): The opacity of the curve. 0-100. - """ - - @rpc_call - def set_curve_limit(self, max_trace: int, flush_buffer: bool = False): - """ - Set the maximum number of traces to display on the plot. - - Args: - max_trace (int): The maximum number of traces to display. - flush_buffer (bool): Flush the buffer. - """ - - @rpc_call - def set_curve_highlight(self, index: int): - """ - Set the curve highlight based on visible curves. - - Args: - index (int): The index of the curve to highlight among visible curves. - """ - - @rpc_call - def set_colormap(self, colormap: str): - """ - Set the colormap for the curves. - - Args: - colormap(str): Colormap for the curves. - """ - - @rpc_call - def set(self, **kwargs) -> "None": - """ - Set the properties of the plot widget. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - title: str - - x_label: str - - y_label: str - - x_scale: Literal["linear", "log"] - - y_scale: Literal["linear", "log"] - - x_lim: tuple - - y_lim: tuple - - legend_label_size: int - """ - - @rpc_call - def set_title(self, title: "str", size: "int" = None): - """ - Set the title of the plot widget. - - Args: - title(str): Title of the plot widget. - size(int): Font size of the title. - """ - - @rpc_call - def set_x_label(self, label: "str", size: "int" = None): - """ - Set the label of the x-axis. - - Args: - label(str): Label of the x-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_y_label(self, label: "str", size: "int" = None): - """ - Set the label of the y-axis. - - Args: - label(str): Label of the y-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_x_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the x-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the x-axis. - """ - - @rpc_call - def set_y_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the y-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the y-axis. - """ - - @rpc_call - def set_x_lim(self, *args) -> "None": - """ - Set the limits of the x-axis. This method can accept either two separate arguments - for the minimum and maximum x-axis values, or a single tuple containing both limits. - - Usage: - set_x_lim(x_min, x_max) - set_x_lim((x_min, x_max)) - - Args: - *args: A variable number of arguments. Can be two integers (x_min and x_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_y_lim(self, *args) -> "None": - """ - Set the limits of the y-axis. This method can accept either two separate arguments - for the minimum and maximum y-axis values, or a single tuple containing both limits. - - Usage: - set_y_lim(y_min, y_max) - set_y_lim((y_min, y_max)) - - Args: - *args: A variable number of arguments. Can be two integers (y_min and y_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_grid(self, x: "bool" = False, y: "bool" = False): - """ - Set the grid of the plot widget. - - Args: - x(bool): Show grid on the x-axis. - y(bool): Show grid on the y-axis. - """ - - @rpc_call - def set_colormap(self, colormap: str): - """ - Set the colormap for the curves. - - Args: - colormap(str): Colormap for the curves. - """ - - @rpc_call - def enable_fps_monitor(self, enable: "bool" = True): - """ - Enable the FPS monitor. - - Args: - enable(bool): True to enable, False to disable. - """ - - @rpc_call - def lock_aspect_ratio(self, lock): - """ - Lock aspect ratio. - - Args: - lock(bool): True to lock, False to unlock. - """ - - @rpc_call - def export(self): - """ - Show the Export Dialog of the plot widget. - """ - - @rpc_call - def get_all_data(self, output: Literal["dict", "pandas"] = "dict") -> dict: - """ - Extract all curve data into a dictionary or a pandas DataFrame. - - Args: - output (Literal["dict", "pandas"]): Format of the output data. - - Returns: - dict | pd.DataFrame: Data of all curves in the specified format. - """ - - @rpc_call - def remove(self): - """ - Remove the plot widget from the figure. - """ - - -class BECPlotBase(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) -> "None": - """ - Set the properties of the plot widget. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - title: str - - x_label: str - - y_label: str - - x_scale: Literal["linear", "log"] - - y_scale: Literal["linear", "log"] - - x_lim: tuple - - y_lim: tuple - - legend_label_size: int - """ - - @rpc_call - def set_title(self, title: "str", size: "int" = None): - """ - Set the title of the plot widget. - - Args: - title(str): Title of the plot widget. - size(int): Font size of the title. - """ - - @rpc_call - def set_x_label(self, label: "str", size: "int" = None): - """ - Set the label of the x-axis. - - Args: - label(str): Label of the x-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_y_label(self, label: "str", size: "int" = None): - """ - Set the label of the y-axis. - - Args: - label(str): Label of the y-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_x_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the x-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the x-axis. - """ - - @rpc_call - def set_y_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the y-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the y-axis. - """ - - @rpc_call - def set_x_lim(self, *args) -> "None": - """ - Set the limits of the x-axis. This method can accept either two separate arguments - for the minimum and maximum x-axis values, or a single tuple containing both limits. - - Usage: - set_x_lim(x_min, x_max) - set_x_lim((x_min, x_max)) - - Args: - *args: A variable number of arguments. Can be two integers (x_min and x_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_y_lim(self, *args) -> "None": - """ - Set the limits of the y-axis. This method can accept either two separate arguments - for the minimum and maximum y-axis values, or a single tuple containing both limits. - - Usage: - set_y_lim(y_min, y_max) - set_y_lim((y_min, y_max)) - - Args: - *args: A variable number of arguments. Can be two integers (y_min and y_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_grid(self, x: "bool" = False, y: "bool" = False): - """ - Set the grid of the plot widget. - - Args: - x(bool): Show grid on the x-axis. - y(bool): Show grid on the y-axis. - """ - - @rpc_call - def set_outer_axes(self, show: "bool" = True): - """ - Set the outer axes of the plot widget. - - Args: - show(bool): Show the outer axes. - """ - - @rpc_call - def enable_fps_monitor(self, enable: "bool" = True): - """ - Enable the FPS monitor. - - Args: - enable(bool): True to enable, False to disable. - """ - - @rpc_call - def lock_aspect_ratio(self, lock): - """ - Lock aspect ratio. - - Args: - lock(bool): True to lock, False to unlock. - """ - - @rpc_call - def export(self): - """ - Show the Export Dialog of the plot widget. - """ - - @rpc_call - def remove(self): - """ - Remove the plot widget from the figure. - """ - - @rpc_call - def set_legend_label_size(self, size: "int" = None): - """ - Set the font size of the legend. - - Args: - size(int): Font size of the legend. - """ - - class BECProgressBar(RPCBase): """A custom progress bar with smooth transitions. The displayed text can be customized using a template.""" @@ -1786,365 +439,6 @@ class BECStatusBox(RPCBase): """ -class BECWaveform(RPCBase): - @property - @rpc_call - def _rpc_id(self) -> "str": - """ - Get the RPC ID of the widget. - """ - - @property - @rpc_call - def _config_dict(self) -> "dict": - """ - Get the configuration of the widget. - - Returns: - dict: The configuration of the widget. - """ - - @rpc_call - def plot( - self, - arg1: "list | np.ndarray | str | None" = None, - y: "list | np.ndarray | None" = None, - x: "list | np.ndarray | None" = None, - x_name: "str | None" = None, - y_name: "str | None" = None, - z_name: "str | None" = None, - x_entry: "str | None" = None, - y_entry: "str | None" = None, - z_entry: "str | None" = None, - color: "str | None" = None, - color_map_z: "str | None" = "magma", - label: "str | None" = None, - validate: "bool" = True, - dap: "str | None" = None, - **kwargs, - ) -> "BECCurve": - """ - Plot a curve to the plot widget. - - Args: - arg1(list | np.ndarray | str | None): First argument which can be x data, y data, or y_name. - y(list | np.ndarray): Custom y data to plot. - x(list | np.ndarray): Custom y data to plot. - x_name(str): Name of the x signal. - - "best_effort": Use the best effort signal. - - "timestamp": Use the timestamp signal. - - "index": Use the index signal. - - Custom signal name of device from BEC. - y_name(str): The name of the device for the y-axis. - z_name(str): The name of the device for the z-axis. - x_entry(str): The name of the entry for the x-axis. - y_entry(str): The name of the entry for the y-axis. - z_entry(str): The name of the entry for the z-axis. - color(str): The color of the curve. - color_map_z(str): The color map to use for the z-axis. - label(str): The label of the curve. - validate(bool): If True, validate the device names and entries. - dap(str): The dap model to use for the curve, only available for sync devices. If not specified, none will be added. - - Returns: - BECCurve: The curve object. - """ - - @rpc_call - def add_dap( - self, - x_name: "str | None" = None, - y_name: "str | None" = None, - x_entry: "Optional[str]" = None, - y_entry: "Optional[str]" = None, - color: "Optional[str]" = None, - dap: "str" = "GaussianModel", - validate_bec: "bool" = True, - **kwargs, - ) -> "BECCurve": - """ - Add LMFIT dap model curve to the plot widget. - - Args: - x_name(str): Name of the x signal. - x_entry(str): Entry of the x signal. - y_name(str): Name of the y signal. - y_entry(str): Entry of the y signal. - color(str, optional): Color of the curve. Defaults to None. - dap(str): The dap model to use for the curve. - validate_bec(bool, optional): If True, validate the signal with BEC. Defaults to True. - **kwargs: Additional keyword arguments for the curve configuration. - - Returns: - BECCurve: The curve object. - """ - - @rpc_call - def get_dap_params(self) -> "dict": - """ - Get the DAP parameters of all DAP curves. - - Returns: - dict: DAP parameters of all DAP curves. - """ - - @rpc_call - def set_x(self, x_name: "str", x_entry: "str | None" = None): - """ - Change the x axis of the plot widget. - - Args: - x_name(str): Name of the x signal. - - "best_effort": Use the best effort signal. - - "timestamp": Use the timestamp signal. - - "index": Use the index signal. - - Custom signal name of device from BEC. - x_entry(str): Entry of the x signal. - """ - - @rpc_call - def remove_curve(self, *identifiers): - """ - Remove a curve from the plot widget. - - Args: - *identifiers: Identifier of the curve to be removed. Can be either an integer (index) or a string (curve_id). - """ - - @rpc_call - def scan_history(self, scan_index: "int" = None, scan_id: "str" = None): - """ - Update the scan curves with the data from the scan storage. - Provide only one of scan_id or scan_index. - - Args: - scan_id(str, optional): ScanID of the scan to be updated. Defaults to None. - scan_index(int, optional): Index of the scan to be updated. Defaults to None. - """ - - @property - @rpc_call - def curves(self) -> "list[BECCurve]": - """ - Get the curves of the plot widget as a list - Returns: - list: List of curves. - """ - - @rpc_call - def get_curve(self, identifier) -> "BECCurve": - """ - Get the curve by its index or ID. - - Args: - identifier(int|str): Identifier of the curve. Can be either an integer (index) or a string (curve_id). - - Returns: - BECCurve: The curve object. - """ - - @rpc_call - def get_all_data(self, output: "Literal['dict', 'pandas']" = "dict") -> "dict": - """ - Extract all curve data into a dictionary or a pandas DataFrame. - - Args: - output (Literal["dict", "pandas"]): Format of the output data. - - Returns: - dict | pd.DataFrame: Data of all curves in the specified format. - """ - - @rpc_call - def set(self, **kwargs) -> "None": - """ - Set the properties of the plot widget. - - Args: - **kwargs: Keyword arguments for the properties to be set. - - Possible properties: - - title: str - - x_label: str - - y_label: str - - x_scale: Literal["linear", "log"] - - y_scale: Literal["linear", "log"] - - x_lim: tuple - - y_lim: tuple - - legend_label_size: int - """ - - @rpc_call - def set_title(self, title: "str", size: "int" = None): - """ - Set the title of the plot widget. - - Args: - title(str): Title of the plot widget. - size(int): Font size of the title. - """ - - @rpc_call - def set_x_label(self, label: "str", size: "int" = None): - """ - Set the label of the x-axis. - - Args: - label(str): Label of the x-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_y_label(self, label: "str", size: "int" = None): - """ - Set the label of the y-axis. - - Args: - label(str): Label of the y-axis. - size(int): Font size of the label. - """ - - @rpc_call - def set_x_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the x-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the x-axis. - """ - - @rpc_call - def set_y_scale(self, scale: "Literal['linear', 'log']" = "linear"): - """ - Set the scale of the y-axis. - - Args: - scale(Literal["linear", "log"]): Scale of the y-axis. - """ - - @rpc_call - def set_x_lim(self, *args) -> "None": - """ - Set the limits of the x-axis. This method can accept either two separate arguments - for the minimum and maximum x-axis values, or a single tuple containing both limits. - - Usage: - set_x_lim(x_min, x_max) - set_x_lim((x_min, x_max)) - - Args: - *args: A variable number of arguments. Can be two integers (x_min and x_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_y_lim(self, *args) -> "None": - """ - Set the limits of the y-axis. This method can accept either two separate arguments - for the minimum and maximum y-axis values, or a single tuple containing both limits. - - Usage: - set_y_lim(y_min, y_max) - set_y_lim((y_min, y_max)) - - Args: - *args: A variable number of arguments. Can be two integers (y_min and y_max) - or a single tuple with two integers. - """ - - @rpc_call - def set_grid(self, x: "bool" = False, y: "bool" = False): - """ - Set the grid of the plot widget. - - Args: - x(bool): Show grid on the x-axis. - y(bool): Show grid on the y-axis. - """ - - @rpc_call - def set_colormap(self, colormap: "str | None" = None): - """ - Set the colormap of the plot widget. - - Args: - colormap(str, optional): Scale the colors of curves to colormap. If None, use the default color palette. - """ - - @rpc_call - def enable_scatter(self, enable: "bool"): - """ - Enable/Disable scatter plot on all curves. - - Args: - enable(bool): If True, enable scatter markers; if False, disable them. - """ - - @rpc_call - def enable_fps_monitor(self, enable: "bool" = True): - """ - Enable the FPS monitor. - - Args: - enable(bool): True to enable, False to disable. - """ - - @rpc_call - def lock_aspect_ratio(self, lock): - """ - Lock aspect ratio. - - Args: - lock(bool): True to lock, False to unlock. - """ - - @rpc_call - def export(self): - """ - Show the Export Dialog of the plot widget. - """ - - @rpc_call - def remove(self): - """ - Remove the plot widget from the figure. - """ - - @rpc_call - def clear_all(self): - """ - None - """ - - @rpc_call - def set_legend_label_size(self, size: "int" = None): - """ - Set the font size of the legend. - - Args: - size(int): Font size of the legend. - """ - - @rpc_call - def toggle_roi(self, toggled: "bool") -> "None": - """ - Toggle the linear region selector on the plot. - - Args: - toggled(bool): If True, enable the linear region selector. - """ - - @rpc_call - def select_roi(self, region: "tuple[float, float]"): - """ - Set the fit region of the plot widget. At the moment only a single region is supported. - To remove the roi region again, use toggle_roi_region - - Args: - region(tuple[float, float]): The fit region. - """ - - class Curve(RPCBase): @rpc_call def remove(self): @@ -2970,14 +1264,14 @@ class ImageItem(RPCBase): @property @rpc_call - def autorange_mode(self) -> "Literal['max', 'mean']": + def autorange_mode(self) -> "str": """ None """ @autorange_mode.setter @rpc_call - def autorange_mode(self) -> "Literal['max', 'mean']": + def autorange_mode(self) -> "str": """ None """ @@ -4710,6 +3004,16 @@ class VSCodeEditor(RPCBase): class Waveform(RPCBase): + @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 enable_toolbar(self) -> "bool": diff --git a/bec_widgets/widgets/containers/dock/dock_area.py b/bec_widgets/widgets/containers/dock/dock_area.py index f9a279c6..97f31fc6 100644 --- a/bec_widgets/widgets/containers/dock/dock_area.py +++ b/bec_widgets/widgets/containers/dock/dock_area.py @@ -49,6 +49,9 @@ class DockAreaConfig(ConnectionConfig): class BECDockArea(BECWidget, QWidget): PLUGIN = True USER_ACCESS = [ + "_rpc_id", + "_config_dict", + "_get_all_rpc", "new", "show", "hide", diff --git a/bec_widgets/widgets/plots_next_gen/image/image_item.py b/bec_widgets/widgets/plots_next_gen/image/image_item.py index 18473a1f..c8605c93 100644 --- a/bec_widgets/widgets/plots_next_gen/image/image_item.py +++ b/bec_widgets/widgets/plots_next_gen/image/image_item.py @@ -166,11 +166,11 @@ class ImageItem(BECConnector, pg.ImageItem): self.apply_autorange() @property - def autorange_mode(self) -> Literal["max", "mean"]: + def autorange_mode(self) -> str: return self.config.autorange_mode @autorange_mode.setter - def autorange_mode(self, mode: Literal["max", "mean"]): + def autorange_mode(self, mode: str): self.config.autorange_mode = mode if self.autorange: self.apply_autorange() diff --git a/bec_widgets/widgets/plots_next_gen/waveform/waveform.py b/bec_widgets/widgets/plots_next_gen/waveform/waveform.py index 1d35e794..066bc7fa 100644 --- a/bec_widgets/widgets/plots_next_gen/waveform/waveform.py +++ b/bec_widgets/widgets/plots_next_gen/waveform/waveform.py @@ -45,6 +45,7 @@ class Waveform(PlotBase): ICON_NAME = "show_chart" USER_ACCESS = [ # General PlotBase Settings + "_config_dict", "enable_toolbar", "enable_toolbar.setter", "enable_side_panel",