This commit is contained in:
@@ -83,20 +83,6 @@ class XRayEye(RPCBase):
|
||||
Return the currently active ROI, or None if no ROI is active.
|
||||
"""
|
||||
|
||||
@property
|
||||
@rpc_call
|
||||
def enable_live_view(self):
|
||||
"""
|
||||
Get or set the live view enabled state.
|
||||
"""
|
||||
|
||||
@enable_live_view.setter
|
||||
@rpc_call
|
||||
def enable_live_view(self):
|
||||
"""
|
||||
Get or set the live view enabled state.
|
||||
"""
|
||||
|
||||
@property
|
||||
@rpc_call
|
||||
def user_message(self):
|
||||
@@ -139,6 +125,12 @@ class XRayEye(RPCBase):
|
||||
None
|
||||
"""
|
||||
|
||||
@rpc_call
|
||||
def switch_tab(self, tab: "str"):
|
||||
"""
|
||||
None
|
||||
"""
|
||||
|
||||
|
||||
class XRayEye2DControl(RPCBase):
|
||||
@rpc_call
|
||||
|
||||
@@ -127,8 +127,8 @@ class XRayEye2DControl(BECWidget, QWidget):
|
||||
|
||||
|
||||
class XRayEye(BECWidget, QWidget):
|
||||
USER_ACCESS = ["active_roi", "enable_live_view", "enable_live_view.setter", "user_message", "user_message.setter",
|
||||
"sample_name", "sample_name.setter", "enable_move_buttons", "enable_move_buttons.setter"]
|
||||
USER_ACCESS = ["active_roi", "user_message", "user_message.setter",
|
||||
"sample_name", "sample_name.setter", "enable_move_buttons", "enable_move_buttons.setter","switch_tab"]
|
||||
PLUGIN = True
|
||||
|
||||
def __init__(self, parent=None, **kwargs):
|
||||
@@ -259,9 +259,19 @@ class XRayEye(BECWidget, QWidget):
|
||||
|
||||
self.fit_tab = QWidget(parent=self)
|
||||
self.fit_layout = QVBoxLayout(self.fit_tab)
|
||||
self.waveform = Waveform(parent=self.fit_tab)
|
||||
self.waveform.dap_params_update.connect(self.on_dap_params)
|
||||
self.fit_layout.addWidget(self.waveform)
|
||||
self.waveform_x = Waveform(parent=self.fit_tab)
|
||||
self.waveform_x.dap_params_update.connect(self.on_dap_params)
|
||||
self.waveform_y = Waveform(parent=self.fit_tab)
|
||||
self.waveform_y.dap_params_update.connect(self.on_dap_params)
|
||||
|
||||
for wave in (self.waveform_x,self.waveform_y):
|
||||
wave.x_label = "Angle (deg)"
|
||||
wave.x_grid = True
|
||||
wave.y_grid = True
|
||||
wave.enable_toolbar = False
|
||||
|
||||
self.fit_layout.addWidget(self.waveform_x)
|
||||
self.fit_layout.addWidget(self.waveform_y)
|
||||
self.tab_widget.addTab(self.fit_tab, "Fit")
|
||||
|
||||
def _make_connections(self):
|
||||
@@ -331,6 +341,14 @@ class XRayEye(BECWidget, QWidget):
|
||||
################################################################################
|
||||
# Slots ported from the original OmnyAlignment, can be adjusted as needed
|
||||
################################################################################
|
||||
|
||||
@SafeSlot(str)
|
||||
def switch_tab(self,tab:str):
|
||||
if tab == "fit":
|
||||
self.tab_widget.setCurrentIndex(1)
|
||||
else:
|
||||
self.tab_widget.setCurrentIndex(0)
|
||||
|
||||
|
||||
@SafeSlot()
|
||||
def get_roi_coordinates(self) -> dict | None:
|
||||
@@ -417,16 +435,15 @@ class XRayEye(BECWidget, QWidget):
|
||||
|
||||
@SafeSlot(dict,dict)
|
||||
def on_dap_params(self,data,meta):
|
||||
print('on dap params')
|
||||
print(f"data: {data}")
|
||||
print(f"meta: {meta}")
|
||||
self.blockSignals(True)
|
||||
amplitude = data.get("amplitude")
|
||||
frequency = data.get("frequency")
|
||||
shift = data.get("shift")
|
||||
dev.omny_xray_gui.fit_params.put(data)
|
||||
self.waveform.blockSignals(False)
|
||||
|
||||
self.bec_dispatcher.disconnect_slot(self.device_updates, MessageEndpoints.device_readback("omny_xray_gui"))
|
||||
curve_id = meta.get("curve_id")
|
||||
if curve_id == "fit-x-SineModel":
|
||||
dev.omny_xray_gui.fit_params_x.put(data)
|
||||
else:
|
||||
dev.omny_xray_gui.fit_params_y.put(data)
|
||||
self.bec_dispatcher.connect_slot(self.device_updates, MessageEndpoints.device_readback("omny_xray_gui"))
|
||||
|
||||
@SafeSlot(bool, bool)
|
||||
def on_tomo_angle_readback(self, data: dict, meta: dict):
|
||||
@@ -453,10 +470,11 @@ class XRayEye(BECWidget, QWidget):
|
||||
self.on_motors_enable(bool(enable_x_motor), bool(enable_y_motor))
|
||||
|
||||
#TODO hook the waveform plotting logic
|
||||
fov_array = signals.get("omny_xray_gui_fov_array").get('value')
|
||||
print(f"fov_array: {fov_array}")
|
||||
self.waveform.clear_all()
|
||||
self.waveform.plot(x=fov_array[0],y=fov_array[1], label="fov_array",dap="SineModel",dap_oversample=5)
|
||||
fit_array = signals.get("omny_xray_gui_fit_array").get('value')
|
||||
self.waveform_x.clear_all()
|
||||
self.waveform_y.clear_all()
|
||||
self.waveform_x.plot(x=fit_array[0],y=fit_array[1], label="fit-x",dap="SineModel",dap_oversample=5)
|
||||
self.waveform_y.plot(x=fit_array[0],y=fit_array[2], label="fit-y",dap="SineModel",dap_oversample=5)
|
||||
|
||||
# Signals from epics gui device
|
||||
# send message
|
||||
|
||||
@@ -71,8 +71,10 @@ class OMNYXRayEpicsGUI(Device):
|
||||
mvy = Cpt(
|
||||
EpicsSignal, name="mvy", read_pv="XOMNYI-XEYE-MVY:0",auto_monitor=True
|
||||
)
|
||||
fov_array = Cpt(Signal, name="fov_array", value=np.zeros((3, 10)))#, dtype=np.float32))
|
||||
fit_params = Cpt(Signal, name="fit_params", value=np.zeros((2,3)))#, dtype=np.float32))
|
||||
|
||||
|
||||
|
||||
fit_array = Cpt(Signal, name="fit_array", value=np.zeros((3, 10)))#, dtype=np.float32))
|
||||
fit_params_x = Cpt(Signal, name="fit_params_x", value=np.zeros((2,3)))#, dtype=np.float32))
|
||||
fit_params_y = Cpt(Signal, name="fit_params_y", value=np.zeros((2,3)))#, dtype=np.float32))
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user