// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "NumberLineEdit.h" NumberLineEdit::NumberLineEdit(float minVal, float maxVal, float def_value, int decimals, const QString &units, QWidget* parent) : QDoubleSpinBox(parent) , decimalCount(decimals) , savedValue(def_value) { setStyleSheet("background-color: rgb(255, 255, 255);"); setRange(minVal, maxVal); setDecimals(decimalCount); setButtonSymbols(QAbstractSpinBox::ButtonSymbols::NoButtons); if (!units.isEmpty()) setSuffix(" " + units); setAlignment(Qt::AlignRight); setToolTip(QString("Minimum: %1\nMaximum: %2") .arg(toString(minVal)) .arg(toString(maxVal))); connect(this, &QDoubleSpinBox::editingFinished, this, &NumberLineEdit::onEditingFinished); setValue(def_value); } QString NumberLineEdit::toString(float value) const { return QString::number(value, 'f', decimalCount); } void NumberLineEdit::onEditingFinished() { float val = value(); emit newValue(val); savedValue = val; } void NumberLineEdit::updateValue(float val) { if (qAbs(val - savedValue) > 0.001) { savedValue = val; setValue(val); } }