diff --git a/triggerwidget.cpp b/triggerwidget.cpp index 6143e0e..efa6627 100644 --- a/triggerwidget.cpp +++ b/triggerwidget.cpp @@ -3,11 +3,11 @@ #include "triggerwidget.h" #include #include +#include TriggerWidget::TriggerWidget(uint16_t deviceSerial, uint16_t triggerNumber, std::shared_ptr multiplexer, - QWidget *parent) - : + QWidget *parent): QWidget(parent), deviceSerial(deviceSerial), triggerNumber(triggerNumber), @@ -20,6 +20,9 @@ TriggerWidget::TriggerWidget(uint16_t deviceSerial, uint16_t triggerNumber, hlayout.addLayout(&labellayout); vlayout.addLayout(&hlayout); + inputCheckbox.setChecked(true); + levelCheckbox.setEnabled(false); + labellayout.addWidget(&devicelabel); labellayout.addWidget(&triggerlabel); @@ -59,41 +62,28 @@ uint16_t TriggerWidget::getTriggerNumber() const void TriggerWidget::onInputToggled(bool checked) { - if (checked) { - // Set to input mode - if (eismultiplexer_set_trigger_state(multiplexer.get(), triggerNumber, TRIGGER_INPUT) < 0) { - QMessageBox::warning(this, tr("Trigger Configuration Failed"), - tr("Failed to set trigger %1 on device %2 to input mode").arg(triggerNumber).arg(deviceSerial)); - qWarning() << "Failed to set trigger" << triggerNumber << "on device" << deviceSerial << "to input mode"; - inputCheckbox.blockSignals(true); - inputCheckbox.setChecked(false); - inputCheckbox.blockSignals(false); - } else { - // When input is checked, level should be unchecked and disabled - levelCheckbox.blockSignals(true); - levelCheckbox.setChecked(false); - levelCheckbox.setEnabled(false); - levelCheckbox.blockSignals(false); - } - } else { - // Update the trigger state based on level checkbox - updateTriggerState(); - } + updateTriggerState(); } void TriggerWidget::onLevelToggled(bool checked) { - if (!inputCheckbox.isChecked()) { - // Only update if not in input mode - updateTriggerState(); - } + updateTriggerState(); } void TriggerWidget::updateTriggerState() { - trigger_state_t state = TRIGGER_LOW; - if (!inputCheckbox.isChecked() && levelCheckbox.isChecked()) { - state = TRIGGER_HIGH; + trigger_state_t state; + if(inputCheckbox.isChecked()) + { + levelCheckbox.blockSignals(true); + levelCheckbox.setChecked(false); + levelCheckbox.setEnabled(false); + levelCheckbox.blockSignals(false); + } + else + { + levelCheckbox.setEnabled(true); + state = levelCheckbox.isChecked() ? TRIGGER_HIGH : TRIGGER_LOW; } if (eismultiplexer_set_trigger_state(multiplexer.get(), triggerNumber, state) < 0) {