mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-13 19:21:50 +02:00
fix(bar): docstrings extended
This commit is contained in:
@ -1861,43 +1861,66 @@ class Ring(RPCBase):
|
|||||||
@rpc_call
|
@rpc_call
|
||||||
def set_value(self, value: "int | float"):
|
def set_value(self, value: "int | float"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the value for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
value(int | float): Value for the ring widget
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_color(self, color: "str | tuple"):
|
def set_color(self, color: "str | tuple"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the color for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_background(self, color: "str | tuple"):
|
def set_background(self, color: "str | tuple"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the background color for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
color(str | tuple): Background color for the ring widget. Can be HEX code or tuple (R, G, B, A).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_line_width(self, width: "int"):
|
def set_line_width(self, width: "int"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the line width for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
width(int): Line width for the ring widget
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_min_max_values(self, min_value: "int | float", max_value: "int | float"):
|
def set_min_max_values(self, min_value: "int | float", max_value: "int | float"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the min and max values for the ring widget.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
min_value(int | float): Minimum value for the ring widget
|
||||||
|
max_value(int | float): Maximum value for the ring widget
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_start_angle(self, start_angle: "int"):
|
def set_start_angle(self, start_angle: "int"):
|
||||||
"""
|
"""
|
||||||
None
|
Set the start angle for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
start_angle(int): Start angle for the ring widget in degrees
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@rpc_call
|
@rpc_call
|
||||||
def set_update(self, mode: "Literal['manual', 'scan', 'device']", device: "str" = None):
|
def set_update(self, mode: "Literal['manual', 'scan', 'device']", device: "str" = None):
|
||||||
"""
|
"""
|
||||||
Set the update mode for the ring widget
|
Set the update mode for the ring widget.
|
||||||
|
Modes:
|
||||||
|
- "manual": Manual update mode, the value is set by the user.
|
||||||
|
- "scan": Update mode for the scan progress. The value is updated by the current scan progress.
|
||||||
|
- "device": Update mode for the device readback. The value is updated by the device readback. Take into account that user has to set the device name and limits.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
|
mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
|
||||||
@ -1907,5 +1930,5 @@ class Ring(RPCBase):
|
|||||||
@rpc_call
|
@rpc_call
|
||||||
def reset_connection(self):
|
def reset_connection(self):
|
||||||
"""
|
"""
|
||||||
None
|
Reset the connections for the ring widget. Disconnect the current slot and endpoint.
|
||||||
"""
|
"""
|
||||||
|
@ -114,32 +114,75 @@ class Ring(BECConnector):
|
|||||||
self.set_connections(self.config.connections.slot, self.config.connections.endpoint)
|
self.set_connections(self.config.connections.slot, self.config.connections.endpoint)
|
||||||
|
|
||||||
def set_value(self, value: int | float):
|
def set_value(self, value: int | float):
|
||||||
|
"""
|
||||||
|
Set the value for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
value(int | float): Value for the ring widget
|
||||||
|
"""
|
||||||
self.config.value = round(
|
self.config.value = round(
|
||||||
float(max(self.config.min_value, min(self.config.max_value, value))),
|
float(max(self.config.min_value, min(self.config.max_value, value))),
|
||||||
self.config.precision,
|
self.config.precision,
|
||||||
)
|
)
|
||||||
|
|
||||||
def set_color(self, color: str | tuple):
|
def set_color(self, color: str | tuple):
|
||||||
|
"""
|
||||||
|
Set the color for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
|
||||||
|
"""
|
||||||
self.config.color = color
|
self.config.color = color
|
||||||
self.color = self.convert_color(color)
|
self.color = self.convert_color(color)
|
||||||
|
|
||||||
def set_background(self, color: str | tuple):
|
def set_background(self, color: str | tuple):
|
||||||
|
"""
|
||||||
|
Set the background color for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
color(str | tuple): Background color for the ring widget. Can be HEX code or tuple (R, G, B, A).
|
||||||
|
"""
|
||||||
self.config.background_color = color
|
self.config.background_color = color
|
||||||
self.color = self.convert_color(color)
|
self.color = self.convert_color(color)
|
||||||
|
|
||||||
def set_line_width(self, width: int):
|
def set_line_width(self, width: int):
|
||||||
|
"""
|
||||||
|
Set the line width for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
width(int): Line width for the ring widget
|
||||||
|
"""
|
||||||
self.config.line_width = width
|
self.config.line_width = width
|
||||||
|
|
||||||
def set_min_max_values(self, min_value: int | float, max_value: int | float):
|
def set_min_max_values(self, min_value: int | float, max_value: int | float):
|
||||||
|
"""
|
||||||
|
Set the min and max values for the ring widget.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
min_value(int | float): Minimum value for the ring widget
|
||||||
|
max_value(int | float): Maximum value for the ring widget
|
||||||
|
"""
|
||||||
self.config.min_value = min_value
|
self.config.min_value = min_value
|
||||||
self.config.max_value = max_value
|
self.config.max_value = max_value
|
||||||
|
|
||||||
def set_start_angle(self, start_angle: int):
|
def set_start_angle(self, start_angle: int):
|
||||||
|
"""
|
||||||
|
Set the start angle for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
start_angle(int): Start angle for the ring widget in degrees
|
||||||
|
"""
|
||||||
self.config.start_position = start_angle
|
self.config.start_position = start_angle
|
||||||
self.start_position = start_angle * 16
|
self.start_position = start_angle * 16
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def convert_color(color):
|
def convert_color(color):
|
||||||
|
"""
|
||||||
|
Convert the color to QColor
|
||||||
|
|
||||||
|
Args:
|
||||||
|
color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
|
||||||
|
"""
|
||||||
converted_color = None
|
converted_color = None
|
||||||
if isinstance(color, str):
|
if isinstance(color, str):
|
||||||
converted_color = QtGui.QColor(color)
|
converted_color = QtGui.QColor(color)
|
||||||
@ -149,7 +192,11 @@ class Ring(BECConnector):
|
|||||||
|
|
||||||
def set_update(self, mode: Literal["manual", "scan", "device"], device: str = None):
|
def set_update(self, mode: Literal["manual", "scan", "device"], device: str = None):
|
||||||
"""
|
"""
|
||||||
Set the update mode for the ring widget
|
Set the update mode for the ring widget.
|
||||||
|
Modes:
|
||||||
|
- "manual": Manual update mode, the value is set by the user.
|
||||||
|
- "scan": Update mode for the scan progress. The value is updated by the current scan progress.
|
||||||
|
- "device": Update mode for the device readback. The value is updated by the device readback. Take into account that user has to set the device name and limits.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
|
mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
|
||||||
@ -169,6 +216,13 @@ class Ring(BECConnector):
|
|||||||
self.parent_progress_widget.enable_auto_updates(False)
|
self.parent_progress_widget.enable_auto_updates(False)
|
||||||
|
|
||||||
def set_connections(self, slot: str, endpoint: str | EndpointInfo):
|
def set_connections(self, slot: str, endpoint: str | EndpointInfo):
|
||||||
|
"""
|
||||||
|
Set the connections for the ring widget
|
||||||
|
|
||||||
|
Args:
|
||||||
|
slot(str): Slot for the ring widget update. Can be "on_scan_progress" or "on_device_readback".
|
||||||
|
endpoint(str | EndpointInfo): Endpoint for the ring widget update. Endpoint has to match the slot type.
|
||||||
|
"""
|
||||||
if self.config.connections.endpoint == endpoint and self.config.connections.slot == slot:
|
if self.config.connections.endpoint == endpoint and self.config.connections.slot == slot:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
@ -179,12 +233,22 @@ class Ring(BECConnector):
|
|||||||
self.bec_dispatcher.connect_slot(getattr(self, slot), endpoint)
|
self.bec_dispatcher.connect_slot(getattr(self, slot), endpoint)
|
||||||
|
|
||||||
def reset_connection(self):
|
def reset_connection(self):
|
||||||
|
"""
|
||||||
|
Reset the connections for the ring widget. Disconnect the current slot and endpoint.
|
||||||
|
"""
|
||||||
self.bec_dispatcher.disconnect_slot(
|
self.bec_dispatcher.disconnect_slot(
|
||||||
self.config.connections.slot, self.config.connections.endpoint
|
self.config.connections.slot, self.config.connections.endpoint
|
||||||
)
|
)
|
||||||
self.config.connections = RingConnections()
|
self.config.connections = RingConnections()
|
||||||
|
|
||||||
def on_scan_progress(self, msg, meta):
|
def on_scan_progress(self, msg, meta):
|
||||||
|
"""
|
||||||
|
Update the ring widget with the scan progress.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg(dict): Message with the scan progress
|
||||||
|
meta(dict): Metadata for the message
|
||||||
|
"""
|
||||||
current_RID = meta.get("RID", None)
|
current_RID = meta.get("RID", None)
|
||||||
if current_RID != self.RID:
|
if current_RID != self.RID:
|
||||||
self.set_min_max_values(0, msg.get("max_value", 100))
|
self.set_min_max_values(0, msg.get("max_value", 100))
|
||||||
@ -192,6 +256,13 @@ class Ring(BECConnector):
|
|||||||
self.parent_progress_widget.update()
|
self.parent_progress_widget.update()
|
||||||
|
|
||||||
def on_device_readback(self, msg, meta):
|
def on_device_readback(self, msg, meta):
|
||||||
|
"""
|
||||||
|
Update the ring widget with the device readback.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg(dict): Message with the device readback
|
||||||
|
meta(dict): Metadata for the message
|
||||||
|
"""
|
||||||
if isinstance(self.config.connections.endpoint, EndpointInfo):
|
if isinstance(self.config.connections.endpoint, EndpointInfo):
|
||||||
endpoint = self.config.connections.endpoint.endpoint
|
endpoint = self.config.connections.endpoint.endpoint
|
||||||
else:
|
else:
|
||||||
|
@ -464,6 +464,13 @@ class SpiralProgressBar(BECConnector, QWidget):
|
|||||||
|
|
||||||
@Slot(dict, dict)
|
@Slot(dict, dict)
|
||||||
def on_scan_queue_status(self, msg, meta):
|
def on_scan_queue_status(self, msg, meta):
|
||||||
|
"""
|
||||||
|
Slot to handle scan queue status messages. Decides what update to perform based on the scan queue status.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
msg(dict): Message from the BEC.
|
||||||
|
meta(dict): Metadata from the BEC.
|
||||||
|
"""
|
||||||
primary_queue = msg.get("queue").get("primary")
|
primary_queue = msg.get("queue").get("primary")
|
||||||
info = primary_queue.get("info", None)
|
info = primary_queue.get("info", None)
|
||||||
|
|
||||||
@ -490,6 +497,12 @@ class SpiralProgressBar(BECConnector, QWidget):
|
|||||||
# print("hook device_progress")
|
# print("hook device_progress")
|
||||||
|
|
||||||
def _hook_scan_progress(self, ring_index: int = None):
|
def _hook_scan_progress(self, ring_index: int = None):
|
||||||
|
"""
|
||||||
|
Hook the scan progress to the progress bars.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
ring_index(int): Index of the progress bar to hook the scan progress to.
|
||||||
|
"""
|
||||||
if ring_index is not None:
|
if ring_index is not None:
|
||||||
ring = self._find_ring_by_index(ring_index)
|
ring = self._find_ring_by_index(ring_index)
|
||||||
else:
|
else:
|
||||||
@ -501,6 +514,15 @@ class SpiralProgressBar(BECConnector, QWidget):
|
|||||||
ring.set_connections("on_scan_progress", MessageEndpoints.scan_progress())
|
ring.set_connections("on_scan_progress", MessageEndpoints.scan_progress())
|
||||||
|
|
||||||
def _hook_readback(self, bar_index: int, device: str, min: float | int, max: float | int):
|
def _hook_readback(self, bar_index: int, device: str, min: float | int, max: float | int):
|
||||||
|
"""
|
||||||
|
Hook the readback values to the progress bars.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
bar_index(int): Index of the progress bar to hook the readback values to.
|
||||||
|
device(str): Device to readback values from.
|
||||||
|
min(float|int): Minimum value for the progress bar.
|
||||||
|
max(float|int): Maximum value for the progress bar.
|
||||||
|
"""
|
||||||
ring = self._find_ring_by_index(bar_index)
|
ring = self._find_ring_by_index(bar_index)
|
||||||
ring.set_min_max_values(min, max)
|
ring.set_min_max_values(min, max)
|
||||||
endpoint = MessageEndpoints.device_readback(device)
|
endpoint = MessageEndpoints.device_readback(device)
|
||||||
|
Reference in New Issue
Block a user