0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

fix(cli): fix cli connector.send to set_and_publish for gui_instruction_response

This commit is contained in:
wyzula-jan
2024-03-10 17:50:35 +01:00
parent a21bfec3d9
commit 4076698530
5 changed files with 58 additions and 5 deletions

View File

@ -540,3 +540,46 @@ class BECConnector(RPCBase):
Returns: Returns:
dict: The configuration of the plot widget. dict: The configuration of the plot widget.
""" """
class BECImageItem(RPCBase):
@rpc_call
def set(self, **kwargs):
"""
None
"""
@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[int, int]" = None
):
"""
Set the range of the color bar.
Args:
vmin(float): Minimum value of the color bar.
vmax(float): Maximum value of the color bar.
"""

View File

@ -132,7 +132,8 @@ class RPCBase:
print(f"RPCBase: {rpc_msg}") print(f"RPCBase: {rpc_msg}")
# pylint: disable=protected-access # pylint: disable=protected-access
receiver = self._root._gui_id receiver = self._root._gui_id
self._client.connector.send(MessageEndpoints.gui_instructions(receiver), rpc_msg) # self._client.connector.send(MessageEndpoints.gui_instructions(receiver), rpc_msg)
self._client.connector.set_and_publish(MessageEndpoints.gui_instructions(receiver), rpc_msg)
if not wait_for_rpc_response: if not wait_for_rpc_response:
return None return None

View File

@ -107,13 +107,22 @@ if __name__ == "__main__": # pragma: no cover
import os import os
from bec_widgets.widgets.figure import BECFigure from bec_widgets.widgets.figure import BECFigure
from bec_widgets.widgets.plots import BECPlotBase, BECWaveform1D, BECImageShow # ,BECCurve from bec_widgets.widgets.plots import BECPlotBase, BECWaveform1D, BECImageShow
from bec_widgets.widgets.plots.waveform1d import BECCurve from bec_widgets.widgets.plots.waveform1d import BECCurve
from bec_widgets.widgets.plots.image import BECImageItem
from bec_widgets.utils import BECConnector from bec_widgets.utils import BECConnector
current_path = os.path.dirname(__file__) current_path = os.path.dirname(__file__)
client_path = os.path.join(current_path, "client.py") client_path = os.path.join(current_path, "client.py")
clss = [BECPlotBase, BECWaveform1D, BECFigure, BECCurve, BECImageShow, BECConnector] clss = [
BECPlotBase,
BECWaveform1D,
BECFigure,
BECCurve,
BECImageShow,
BECConnector,
BECImageItem,
]
generator = ClientGenerator() generator = ClientGenerator()
generator.generate_client(clss) generator.generate_client(clss)
generator.write(client_path) generator.write(client_path)

View File

@ -42,7 +42,7 @@ class BECWidgetsCLIServer:
self.send_response(request_id, True, {"result": res}) self.send_response(request_id, True, {"result": res})
def send_response(self, request_id: str, accepted: bool, msg: dict): def send_response(self, request_id: str, accepted: bool, msg: dict):
self.client.connector.set( self.client.connector.set_and_publish(
MessageEndpoints.gui_instruction_response(request_id), MessageEndpoints.gui_instruction_response(request_id),
messages.RequestResponseMessage(accepted=accepted, message=msg), messages.RequestResponseMessage(accepted=accepted, message=msg),
expire=60, expire=60,

View File

@ -53,7 +53,7 @@ class ImageConfig(WidgetConfig):
) )
class BECImageItem(BECConnector, pg.ImageItem): # TODO decide how complex it should be class BECImageItem(BECConnector, pg.ImageItem):
USER_ACCESS = ["set", "set_color_map", "set_auto_downsample", "set_monitor", "set_vrange"] USER_ACCESS = ["set", "set_color_map", "set_auto_downsample", "set_monitor", "set_vrange"]
def __init__( def __init__(