diff --git a/debye_bec/bec_widgets/widgets/edge_selector.py b/debye_bec/bec_widgets/widgets/edge_selector.py
index e578616..3d974d5 100644
--- a/debye_bec/bec_widgets/widgets/edge_selector.py
+++ b/debye_bec/bec_widgets/widgets/edge_selector.py
@@ -143,9 +143,9 @@ class EdgeSelector(QDialog):
super().__init__(parent)
self.setWindowTitle("Absorption Edge Selector")
self.buttons = {}
- self.active_edge = None
- self.active_element = None
- self.active_energy = None
+ self.selected_edge = None
+ self.selected_element = None
+ self.selected_energy = None
self.llim = llim
self.hlim = hlim
@@ -210,19 +210,19 @@ class EdgeSelector(QDialog):
@SafeSlot()
def _edge_changed(self, *_):
- self.active_edge = self.edge.currentText()
+ self.selected_edge = self.edge.currentText()
for element, button in self.buttons.items():
# logger.info(f"{element}")
- if "L" in self.active_edge and element in ["H", "He"]:
+ if "L" in self.selected_edge and element in ["H", "He"]:
button.setDisabled(True)
button.setChecked(False)
- elif self.active_edge in ["L2", "L3"] and element == "Li":
+ elif self.selected_edge in ["L2", "L3"] and element == "Li":
button.setDisabled(True)
button.setChecked(False)
else:
- energy = xraydb.xray_edge(element, self.active_edge, True)
- if self.active_element == element:
- self.active_energy = energy
+ energy = xraydb.xray_edge(element, self.selected_edge, True)
+ if self.selected_element == element:
+ self.selected_energy = energy
if energy is not None:
if energy < self.llim or energy > self.hlim:
button.setChecked(False)
@@ -237,25 +237,25 @@ class EdgeSelector(QDialog):
@SafeSlot()
def _element_changed(self, element: str | None = None):
if element is None:
- if self.active_element is None:
+ if self.selected_element is None:
return
- element = self.active_element
+ element = self.selected_element
# Uncheck all other buttons so only the picked one stays highlighted
for e, btn in self.buttons.items():
if e != element:
btn.setChecked(False)
self.buttons[element].setChecked(True)
- self.active_element = element
- self.active_energy = xraydb.xray_edge(element, self.active_edge, True)
+ self.selected_element = element
+ self.selected_energy = xraydb.xray_edge(element, self.selected_edge, True)
self.select_button.setEnabled(True)
self._set_select_text()
def _set_select_text(self):
- if self.active_energy is not None:
- if self.buttons[self.active_element].isChecked():
+ if self.selected_energy is not None:
+ if self.buttons[self.selected_element].isChecked():
self._enable_button(self.select_button, True)
self.select_button.setText(
- f"Selected {self.active_element}, {self.active_edge}-edge, {self.active_energy:0.1f} eV"
+ f"Selected {self.selected_element}, {self.selected_edge}-edge, {self.selected_energy:0.1f} eV"
)
else:
self._enable_button(self.select_button, False)
diff --git a/debye_bec/bec_widgets/widgets/scan_control_xas/scan_control_xas.py b/debye_bec/bec_widgets/widgets/scan_control_xas/scan_control_xas.py
index 45ad514..be3c4cf 100644
--- a/debye_bec/bec_widgets/widgets/scan_control_xas/scan_control_xas.py
+++ b/debye_bec/bec_widgets/widgets/scan_control_xas/scan_control_xas.py
@@ -61,6 +61,9 @@ class ScanControlXAS(ScanControl):
def __init__(self, *args, **kwargs):
self._motion_profile_group = QGroupBox("XAS scan helper")
+ self._motion_profile_group.setSizePolicy(
+ QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed
+ )
motion_profile_layout = QVBoxLayout(self._motion_profile_group)
self.motion_profile_widget = MotionProfileWidget(self)
motion_profile_layout.addWidget(self.motion_profile_widget)
@@ -82,7 +85,7 @@ class ScanControlXAS(ScanControl):
self.motion_profile_widget.update_plot(d_spacing=d_spacing)
def _add_metadata_form(self):
- self.layout.addWidget(self._motion_profile_group, stretch=1) # type: ignore
+ self.layout.addWidget(self._motion_profile_group) # type: ignore
super()._add_metadata_form()
self._connect_scan_parameter_signals()
@@ -142,16 +145,13 @@ class MotionProfileWidget(QWidget):
def __init__(self, parent):
super().__init__()
self._parent_widget = parent
- hostname = self.parent.client._hostname
- start = hostname.find("x")
self.beamline = ""
- if start != -1:
- self.beamline = hostname[start : start + 5]
outer_layout = QVBoxLayout(self)
outer_layout.setContentsMargins(0, 0, 0, 0)
+ self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
- edge_selector_layout = QHBoxLayout(self)
+ edge_selector_layout = QHBoxLayout()
edge_selector_label = QLabel("Absorption edge:")
self.edge_selector_button = QPushButton("Choose")
self.edge_label = QLabel("No edge selected")
@@ -160,7 +160,7 @@ class MotionProfileWidget(QWidget):
edge_selector_layout.addWidget(self.edge_selector_button)
edge_selector_layout.addStretch()
- scan_rng_layout = QHBoxLayout(self)
+ scan_rng_layout = QHBoxLayout()
self.scan_rng_ckbox = QCheckBox(self)
self.scan_rng_ckbox.setCheckState(Qt.CheckState.Checked)
scan_rng_label = QLabel("Auto adjust scan range to absorption edge")
@@ -168,35 +168,24 @@ class MotionProfileWidget(QWidget):
scan_rng_layout.addWidget(scan_rng_label)
scan_rng_layout.addStretch()
- plot_container = QWidget()
- plot_layout = QHBoxLayout(plot_container)
+ plot_layout = QHBoxLayout()
plot_layout.setContentsMargins(0, 0, 0, 0)
-
self.plot_pos = self._make_plot(left_label="Energy
[eV]", bottom_label="Time [s]")
self.plot_vel = self._make_plot(
left_label="Scan Velocity
[eV/s]", bottom_label="Energy [eV]"
)
-
- self.edge_energy = None
-
plot_layout.addWidget(self.plot_pos)
plot_layout.addWidget(self.plot_vel)
- plot_container.setMinimumHeight(
- int(np.max([self.plot_pos.minimumHeight(), self.plot_vel.minimumHeight()]))
- )
- scroll = QScrollArea()
- scroll.setWidgetResizable(True)
- scroll.setFrameShape(QFrame.Shape.NoFrame)
- scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
- scroll.setWidget(plot_container)
+ self.edge_energy = None
self.edge_selection = QHBoxLayout()
self.edge_selection.addLayout(edge_selector_layout)
self.edge_selection.addStretch(1)
+
outer_layout.addLayout(self.edge_selection)
outer_layout.addLayout(scan_rng_layout)
- outer_layout.addWidget(scroll, stretch=1)
+ outer_layout.addLayout(plot_layout)
self.scan_name = None
self.scan_parameters = None
@@ -216,8 +205,9 @@ class MotionProfileWidget(QWidget):
plot.hideButtons()
plot.getAxis("left").enableAutoSIPrefix(False)
plot.getAxis("bottom").enableAutoSIPrefix(False)
- plot.setMinimumHeight(180)
- plot.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.MinimumExpanding)
+ plot.setMinimumHeight(150)
+ plot.setMaximumHeight(150)
+ plot.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
return plot
def _add_edge_marker(self, plot, x_arr, y_arr, energy_arr, edge_marker):
@@ -246,6 +236,11 @@ class MotionProfileWidget(QWidget):
@SafeSlot()
def _update_edge(self, *_):
+ if self.beamline == "":
+ hostname = self._parent_widget.client._hostname
+ start = hostname.find("x")
+ if start != -1:
+ self.beamline = hostname[start : start + 5]
match self.beamline:
case "x01da":
dlg = EdgeSelector(self, llim=X01DA_E_MIN, hlim=X01DA_E_MAX)
@@ -254,9 +249,9 @@ class MotionProfileWidget(QWidget):
case _:
dlg = EdgeSelector(self)
if dlg.exec_():
- self.edge_energy = dlg.active_energy
+ self.edge_energy = dlg.selected_energy
self.edge_label.setText(
- f"{dlg.active_element}, {dlg.active_edge}-edge, {dlg.active_energy:0.1f} eV"
+ f"{dlg.selected_element}, {dlg.selected_edge}-edge, {dlg.selected_energy:0.1f} eV"
)
self._update_auto_scan_rng()
self.update_plot()