Added check for valid event duration.

This commit is contained in:
jupfi 2023-07-29 16:56:08 +02:00
parent 10f7c007f9
commit e29fe81c44
2 changed files with 15 additions and 11 deletions

View file

@ -30,12 +30,17 @@ class PulseProgrammerController(ModuleController):
break break
self.module.model.events_changed.emit() self.module.model.events_changed.emit()
@pyqtSlot(str, float) @pyqtSlot(str, str)
def change_event_duration(self, event_name, duration): def change_event_duration(self, event_name, duration):
logger.debug("Changing duration of event %s to %s", event_name, duration) logger.debug("Changing duration of event %s to %s", event_name, duration)
for event in self.module.model.pulse_sequence.events: for event in self.module.model.pulse_sequence.events:
if event.name == event_name: if event.name == event_name:
event.duration = float(duration) try:
event.duration = duration
except ValueError:
logger.error("Duration must be a positive number")
# Emit signal to the nqrduck core to show an error message
self.module.nqrduck_signal.emit("notification", ["Error", "Duration must be a positive number"])
break break
self.module.model.events_changed.emit() self.module.model.events_changed.emit()

View file

@ -193,7 +193,7 @@ class EventOptionsWidget(QWidget):
""" """
delete_event = pyqtSignal(str) delete_event = pyqtSignal(str)
change_event_duration = pyqtSignal(str, float) change_event_duration = pyqtSignal(str, str)
change_event_name = pyqtSignal(str, str) change_event_name = pyqtSignal(str, str)
def __init__(self, event): def __init__(self, event):
@ -233,21 +233,20 @@ class EventOptionsWidget(QWidget):
layout.addWidget(label) layout.addWidget(label)
# Create the inputs for event name, duration # Create the inputs for event name, duration
name_layout = QHBoxLayout() event_form_layout = QFormLayout()
name_label = QLabel("Name:") name_label = QLabel("Name:")
name_lineedit = QLineEdit(self.event.name) name_lineedit = QLineEdit(self.event.name)
name_layout.addWidget(name_label) event_form_layout.addRow(name_label, name_lineedit)
name_layout.addWidget(name_lineedit)
name_layout.addStretch(1)
layout.addLayout(name_layout)
duration_layout = QHBoxLayout() duration_layout = QHBoxLayout()
duration_label = QLabel("Duration:") duration_label = QLabel("Duration:")
duration_lineedit = QLineEdit() duration_lineedit = QLineEdit()
unit_label = QLabel("µs")
duration_lineedit.setText(str(self.event.duration * 1e6)) duration_lineedit.setText(str(self.event.duration * 1e6))
duration_layout.addWidget(duration_label) duration_layout.addWidget(duration_label)
duration_layout.addWidget(duration_lineedit) duration_layout.addWidget(duration_lineedit)
duration_layout.addStretch(1) duration_layout.addWidget(unit_label)
layout.addLayout(duration_layout) event_form_layout.addRow(duration_layout)
layout.addLayout(event_form_layout)
buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel) buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
buttons.accepted.connect(dialog.accept) buttons.accepted.connect(dialog.accept)
@ -260,7 +259,7 @@ class EventOptionsWidget(QWidget):
if name_lineedit.text() != self.event.name: if name_lineedit.text() != self.event.name:
self.change_event_name.emit(self.event.name, name_lineedit.text()) self.change_event_name.emit(self.event.name, name_lineedit.text())
if duration_lineedit.text() != str(self.event.duration): if duration_lineedit.text() != str(self.event.duration):
self.change_event_duration.emit(self.event.name, float(duration_lineedit.text()) * 1e-6) self.change_event_duration.emit(self.event.name, duration_lineedit.text())
def create_delete_event_dialog(self): def create_delete_event_dialog(self):