diff --git a/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py b/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py
index 449ae7e3..24e4b2c0 100644
--- a/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py
+++ b/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py
@@ -40,6 +40,7 @@ class DeviceUpdateUIComponents(TypedDict):
stop: QPushButton
tweak_increase: QPushButton
tweak_decrease: QPushButton
+ units: QLabel
class PositionerBoxBase(BECWidget, CompactPopupWidget):
@@ -84,16 +85,33 @@ class PositionerBoxBase(BECWidget, CompactPopupWidget):
limit_update: Callable[[tuple[float, float]], None],
):
"""Init the device view and readback"""
- if self._check_device_is_valid(device):
- data = self.dev[device].read()
- self._on_device_readback(
- device,
- self._device_ui_components(device),
- {"signals": data},
- {},
- position_emit,
- limit_update,
- )
+ if not self._check_device_is_valid(device):
+ return
+
+ data = self.dev[device].read()
+ self._on_device_readback(
+ device,
+ self._device_ui_components(device),
+ {"signals": data},
+ {},
+ position_emit,
+ limit_update,
+ )
+
+ ui = self._device_ui_components(device)
+ if not ui.get("units"):
+ return
+
+ try:
+ egu = f"[{self.dev[device].egu()}]"
+ except Exception:
+ egu = ""
+
+ if egu:
+ ui["units"].setVisible(True)
+ ui["units"].setText(egu)
+ else:
+ ui["units"].setVisible(False)
def _stop_device(self, device: str):
"""Stop call"""
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 5fba5316..430badde 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
@@ -170,6 +170,7 @@ class PositionerBox(PositionerBoxBase):
"stop": self.ui.stop,
"tweak_increase": self.ui.tweak_right,
"tweak_decrease": self.ui.tweak_left,
+ "units": self.ui.units,
}
@SafeSlot(dict, dict)
diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui
index e69cc225..347df23f 100644
--- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui
+++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui
@@ -135,6 +135,29 @@
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Motor units
+
+
+
+
+
+
-
@@ -203,16 +226,16 @@
-
- SpinnerWidget
- QWidget
-
-
PositionIndicator
QWidget
+
+ SpinnerWidget
+ QWidget
+
+
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 6c063fda..589a6c22 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
@@ -1,4 +1,4 @@
-""" Module for a PositionerBox2D widget to control two positioner devices."""
+"""Module for a PositionerBox2D widget to control two positioner devices."""
from __future__ import annotations
@@ -312,6 +312,7 @@ class PositionerBox2D(PositionerBoxBase):
"stop": self.ui.stop_button,
"tweak_increase": self.ui.tweak_increase_hor,
"tweak_decrease": self.ui.tweak_decrease_hor,
+ "units": self.ui.units_hor,
}
elif device == "vertical":
return {
@@ -324,6 +325,7 @@ class PositionerBox2D(PositionerBoxBase):
"stop": self.ui.stop_button,
"tweak_increase": self.ui.tweak_increase_ver,
"tweak_decrease": self.ui.tweak_decrease_ver,
+ "units": self.ui.units_ver,
}
else:
raise ValueError(f"Device {device} is not represented by this UI")
diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui
index 9dfdc786..691bef2b 100644
--- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui
+++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui
@@ -6,8 +6,8 @@
0
0
- 326
- 323
+ 402
+ 394
@@ -23,7 +23,7 @@
No positioner selected
-
+
0
@@ -40,15 +40,38 @@
-
-
-
- Position
+
+
+ Qt::Orientation::Horizontal
-
- Qt::AlignmentFlag::AlignCenter
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
-
@@ -67,20 +90,7 @@
- -
-
-
- false
-
-
- Qt::FocusPolicy::StrongFocus
-
-
- Qt::AlignmentFlag::AlignCenter
-
-
-
- -
+
-
-
@@ -94,6 +104,29 @@
+ -
+
+
+ false
+
+
+ Qt::FocusPolicy::StrongFocus
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
+ -
+
+
+ Position
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
@@ -132,15 +165,38 @@
-
-
-
- Position
+
+
+ Qt::Orientation::Horizontal
-
- Qt::AlignmentFlag::AlignCenter
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ -
+
+
+ Qt::Orientation::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
-
@@ -173,6 +229,16 @@
+ -
+
+
+ Position
+
+
+ Qt::AlignmentFlag::AlignCenter
+
+
+
@@ -525,16 +591,16 @@
-
- StopButton
- QWidget
-
-
PositionIndicator
QWidget
+
+ StopButton
+ QWidget
+
+
SpinnerWidget
QWidget
diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui b/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui
index 62f43bd9..bf2ffb62 100644
--- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui
+++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui
@@ -116,6 +116,13 @@
+ -
+
+
+ TextLabel
+
+
+
-
@@ -218,16 +225,16 @@
-
- SpinnerWidget
- QWidget
-
-
PositionIndicator
QWidget
+
+ SpinnerWidget
+ QWidget
+
+