diff --git a/bcm/devices/ophyd/stxm_sample_mtr.py b/bcm/devices/ophyd/stxm_sample_mtr.py index 49ddbc11..14516c12 100644 --- a/bcm/devices/ophyd/stxm_sample_mtr.py +++ b/bcm/devices/ophyd/stxm_sample_mtr.py @@ -99,6 +99,12 @@ def __init__(self, signal_name, **kwargs): # self._coarse_scanable_range = coarse # self._fine_scanable_range = fine + def stop(self): + """Stop both coarse and fine motors""" + if self._coarse_mtr is not None: + self._coarse_mtr.stop() + if self._fine_mtr is not None: + self._fine_mtr.stop() @property def max_fine_range(self) -> float: diff --git a/bcm/devices/sim/energy_dev.py b/bcm/devices/sim/energy_dev.py index 58ad3bbf..3608cb1e 100644 --- a/bcm/devices/sim/energy_dev.py +++ b/bcm/devices/sim/energy_dev.py @@ -183,7 +183,7 @@ def __init__(self, prefix, name, energy_dev_dict=None): self.calcd_zpz_dev = energy_dev_dict['calcd_zpz_dev'] self.zp_focus_mode_dev = energy_dev_dict["zp_focus_mode_dev"] - self._enable_fl_change_on_energy_change = True + self._enable_fl_change_on_energy_change = False self.focus_mode = 'OSA' # or 'SAMPLE' self.FLMode_0 = 0.0 self.FLMode_1 = 0.0 @@ -450,28 +450,30 @@ def move_to_osa_focussed(self, energy_sp=None): """ Move the zpz positioner to the calculated position for OSA focused mode. """ - if energy_sp is not None: - energy_val = energy_sp - else: - energy_val = self.energy_posner.get() + if self._enable_fl_change_on_energy_change: + if energy_sp is not None: + energy_val = energy_sp + else: + energy_val = self.energy_posner.get() - new_zpz = self.calc_new_zpz_for_osa_focussed(energy_val) - # print(f"Moving ZPZ to OSA focused position: {new_zpz:.2f}\n") - #self.zpz_posner.put("user_setpoint", new_zpz) - self.zpz_posner.call_emit_move(new_zpz, wait=False) + new_zpz = self.calc_new_zpz_for_osa_focussed(energy_val) + # print(f"Moving ZPZ to OSA focused position: {new_zpz:.2f}\n") + #self.zpz_posner.put("user_setpoint", new_zpz) + self.zpz_posner.call_emit_move(new_zpz, wait=False) def move_to_sample_focussed(self, energy_sp=None): """ Move the zpz positioner to the calculated position for Sample focused mode. """ - if energy_sp is not None: - energy_val = energy_sp - else: - energy_val = self.energy_posner.get() - new_zpz = self.calc_new_zoneplate_z_pos_for_focus(energy_val) - # print(f"Moving ZPZ to Sample focused position: {new_zpz:.2f}\n") - # self.zpz_posner.put("user_setpoint", new_zpz) - self.zpz_posner.call_emit_move(new_zpz, wait=False) + if self._enable_fl_change_on_energy_change: + if energy_sp is not None: + energy_val = energy_sp + else: + energy_val = self.energy_posner.get() + new_zpz = self.calc_new_zoneplate_z_pos_for_focus(energy_val) + # print(f"Moving ZPZ to Sample focused position: {new_zpz:.2f}\n") + # self.zpz_posner.put("user_setpoint", new_zpz) + self.zpz_posner.call_emit_move(new_zpz, wait=False) def move(self, val: float, wait=True): # print("EnergyDevice [move] called with val: ", val) @@ -506,10 +508,27 @@ def set(self, val): st.set_finished() return st - def stop(self, *, success): + def stop(self): # self.close() # self.is_open = False - pass + if hasattr(self.a0_dev, "stop"): + self.a0_dev.stop() + if hasattr(self.delta_a0_dev, "stop"): + self.delta_a0_dev.stop() + if hasattr(self.zpz_adjust_dev, "stop"): + self.zpz_adjust_dev.stop() + if hasattr(self.defocus_beam_dev, "stop"): + self.defocus_beam_dev.stop() + if hasattr(self.focal_len_dev, "stop"): + self.focal_len_dev.stop() + if hasattr(self.zp_a1_dev, "stop"): + self.zp_a1_dev.stop() + if hasattr(self.a0_max_dev, "stop"): + self.a0_max_dev.stop() + if hasattr(self.calcd_zpz_dev, "stop"): + self.calcd_zpz_dev.stop() + if hasattr(self.zp_focus_mode_dev, "stop"): + self.zp_focus_mode_dev.stop() diff --git a/cls/applications/pyStxm/stxmMain.py b/cls/applications/pyStxm/stxmMain.py index 694a1935..73226550 100644 --- a/cls/applications/pyStxm/stxmMain.py +++ b/cls/applications/pyStxm/stxmMain.py @@ -1194,10 +1194,11 @@ def setup_main_gui(self): fbk_dev=self.ev_en_dev, off_str="Disabled", on_str="Enabled", + toggle=True, cb=self.on_enable_fl_change_with_energy ) - # set checked and text to True values - btn.make_checked(True) + # set checked and text to True values, startup it should be disabled + btn.make_checked(False) fcs_mode_dev = MAIN_OBJ.device('DNM_FOCUS_MODE', do_warn=False) if fcs_mode_dev: diff --git a/cls/devWidgets/ophydPushBtn.py b/cls/devWidgets/ophydPushBtn.py index fbb9629c..6d37c509 100644 --- a/cls/devWidgets/ophydPushBtn.py +++ b/cls/devWidgets/ophydPushBtn.py @@ -292,7 +292,7 @@ def __init__( self.btn.setChecked(False) self.btn_state = False self.btn.blockSignals(False) - self.change_btn_color(val) + # self.change_btn_color(val) else: self.fdevice.changed.connect(self._dev_fbk_changed) @@ -421,26 +421,21 @@ def on_val_change(self, dct): # txt_str = val self.btn.setText(txt_str) - # if(val.find(self.on_str) > -1): - # self.make_checked(True) - # else: - # self.make_checked(False) - self.btn.blockSignals(False) - self.change_btn_color(dct["value"]) - - def change_btn_color(self, val): - - if val == 0: - # in=0 - s = format_btn(title_color="white", bgcolor=master_colors["app_medgray"]["rgb_str"]) - elif val == 1: - # out =1 - s = format_btn(title_color="white", bgcolor=master_colors["app_ltblue"]["rgb_str"]) - else: - # moving - s = format_btn(title_color="black", bgcolor=master_colors["fbk_moving_ylw"]["rgb_str"]) - self.btn.setStyleSheet(s) + # self.change_btn_color(dct["value"]) + + # def change_btn_color(self, val): + # pass + # # if val == 0: + # # # in=0 + # # s = format_btn(title_color="white", bgcolor=master_colors["app_medgray"]["rgb_str"]) + # # elif val == 1: + # # # out =1 + # # s = format_btn(title_color="white", bgcolor=master_colors["app_ltblue"]["rgb_str"]) + # # else: + # # # moving + # # s = format_btn(title_color="black", bgcolor=master_colors["fbk_moving_ylw"]["rgb_str"]) + # # self.btn.setStyleSheet(s) def on_released(self): pass diff --git a/cls/plotWidgets/imageWidget.py b/cls/plotWidgets/imageWidget.py index 930a5009..f4644faa 100644 --- a/cls/plotWidgets/imageWidget.py +++ b/cls/plotWidgets/imageWidget.py @@ -14,8 +14,7 @@ import timeit from typing import Dict, Optional -from PyQt5 import QtGui -from PyQt5 import QtCore +from PyQt5 import QtGui, QtWidgets, QtCore from PyQt5.QtCore import pyqtSignal, QObject, QTimer, QPointF, QRectF, Qt from PyQt5 import uic diff --git a/cls/stylesheets/dark_linux_hires_disp/QPushButton.qss b/cls/stylesheets/dark_linux_hires_disp/QPushButton.qss index 6b5ca85f..f6bd65f1 100644 --- a/cls/stylesheets/dark_linux_hires_disp/QPushButton.qss +++ b/cls/stylesheets/dark_linux_hires_disp/QPushButton.qss @@ -2,7 +2,7 @@ /*----------------------------------------------------------------------------*/ QWidget .QPushButton{ /*background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(90, 90, 90), stop:1 rgb(60, 60, 60));*/ - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(90, 90, 90), stop:1 rgb(60, 60, 60)); + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(90, 90, 90), stop:1 rgb(40, 40, 40)); border: 1px solid black; color:rgb(220,220,220); font: bold master_font_size "MS Shell Dlg 2"; @@ -13,9 +13,9 @@ QPushButton::hover{ color:rgb(255,255,255); } -QPushButton::checked{ - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(94, 128, 220), stop:1 rgb(72, 99, 174)); - border: 2px solid black; +QPushButton:checked{ + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 rgb(101, 112, 210), stop:1 rgb(62, 72, 255)); + border: 2px solid rgb(30,30,30); color:rgb(255,255,255); }