wip
CI for debye_bec / test (push) Successful in 54s
CI for debye_bec / test (pull_request) Successful in 59s

This commit is contained in:
x01da
2026-09-02 16:14:35 +02:00
parent d54f247007
commit bc89079048
@@ -36,6 +36,7 @@ from qtpy.QtWidgets import (
QGroupBox,
QHBoxLayout,
QLabel,
QLineEdit,
QListWidget,
QListWidgetItem,
QMessageBox,
@@ -249,6 +250,16 @@ class Scheduler(BECWidget, QWidget):
schedule_group = QGroupBox("Schedule")
schedule_layout = QVBoxLayout(schedule_group)
schedule_name_layout = QHBoxLayout()
name_label = QLabel("Name")
self.schedule_name_input = QLineEdit()
schedule_name_layout.addWidget(name_label)
schedule_name_layout.addWidget(self.schedule_name_input)
schedule_name_layout.addStretch()
schedule_layout.addLayout(schedule_name_layout)
self.schedule_name_input.editingFinished.connect(self._on_schedule_name_change)
edit_row = QHBoxLayout()
self.add_btn = MyButton("Add", "default")
self.edit_btn = MyButton("Edit", "default")
@@ -270,8 +281,6 @@ class Scheduler(BECWidget, QWidget):
edit_row.addStretch()
schedule_layout.addLayout(edit_row)
schedule_layout.addWidget(QLabel(f"Schedule: {self.schedule_name}"))
self.list_widget = MyListWidget()
self.list_widget.currentRowChanged.connect(self._on_selection_changed)
self.list_widget.deletePressed.connect(self._on_delete_clicked)
@@ -486,9 +495,12 @@ class Scheduler(BECWidget, QWidget):
@SafeSlot()
def _refresh_ui(self):
with self._lock:
schedule_name = self.schedule.schedule_name
items = list(self.schedule.items)
notes = self.schedule.notes
self.schedule_name_input.setText(schedule_name)
self.list_widget.blockSignals(True)
self.list_widget.clear()
selected_row = None
@@ -574,6 +586,13 @@ class Scheduler(BECWidget, QWidget):
list_item = self.list_widget.item(row)
list_item.setIcon(icon)
@SafeSlot()
def _on_schedule_name_change(self):
name = self.schedule_name_input.text()
with self._lock:
self.schedule.schedule_name = name
self._persist_locked()
@SafeSlot()
def _on_selection_changed(self, row: int):
item = self.list_widget.item(row) if row >= 0 else None
@@ -606,7 +625,15 @@ class Scheduler(BECWidget, QWidget):
def _on_save_to_file_clicked(self):
with self._lock:
data = self.schedule.model_dump(mode="json")
default_name = f"{self.schedule_name}.json"
default_name = "schedule.json"
hostname = self.client._hostname
start = hostname.find("x")
if start != -1:
beamline = hostname[start : start + 5]
active_account = self.client.active_account
default_name = f"/sls/{beamline}/data/{active_account}/raw/{default_name}"
path, _ = QFileDialog.getSaveFileName(
self, "Save schedule to file", default_name, "JSON files (*.json);;All files (*)"
)
@@ -631,8 +658,16 @@ class Scheduler(BECWidget, QWidget):
)
return
start_folder = ""
hostname = self.client._hostname
start = hostname.find("x")
if start != -1:
beamline = hostname[start : start + 5]
active_account = self.client.active_account
start_folder = f"/sls/{beamline}/data/{active_account}/raw"
path, _ = QFileDialog.getOpenFileName(
self, "Load schedule from file", "", "JSON files (*.json);;All files (*)"
self, "Load schedule from file", start_folder, "JSON files (*.json);;All files (*)"
)
if not path:
return
@@ -688,6 +723,7 @@ class Scheduler(BECWidget, QWidget):
self, "Cannot load", "The schedule started running while the dialog was open."
)
return
self.schedule.schedule_name = loaded.schedule_name
self.schedule.items = new_items
self.schedule.notes = loaded.notes
self.schedule.guard = loaded.guard