#include "Visualization/ColorScaleEditor.h" #include "ui_ColorScaleEditor.h" ColorScaleEditor::ColorScaleEditor(QWidget *parent) : QDialog{parent}, ui{new Ui::ColorScaleEditor}, m_ThresholdGroup{new QButtonGroup{this}} { ui->setupUi(this); // Creates threshold group m_ThresholdGroup->addButton(ui->thresholdAutoButton); m_ThresholdGroup->addButton(ui->thresholdManualButton); // Inits min/max spinboxes' properties auto setSpinBoxProperties = [](auto &spinBox) { spinBox.setDecimals(3); spinBox.setMinimum(-std::numeric_limits::max()); spinBox.setMaximum(std::numeric_limits::max()); }; setSpinBoxProperties(*ui->minSpinBox); setSpinBoxProperties(*ui->maxSpinBox); // Inits connections connect(ui->thresholdAutoButton, SIGNAL(toggled(bool)), this, SLOT(onThresholdChanged(bool))); connect(ui->thresholdManualButton, SIGNAL(toggled(bool)), this, SLOT(onThresholdChanged(bool))); connect(ui->minSpinBox, SIGNAL(editingFinished()), this, SLOT(onMinChanged())); connect(ui->maxSpinBox, SIGNAL(editingFinished()), this, SLOT(onMaxChanged())); // First update onThresholdChanged(true); } ColorScaleEditor::~ColorScaleEditor() noexcept { delete ui; } void ColorScaleEditor::onMaxChanged() { // Ensures that max >= min auto maxValue = ui->maxSpinBox->value(); if (maxValue < ui->minSpinBox->value()) { ui->minSpinBox->setValue(maxValue); } } void ColorScaleEditor::onMinChanged() { // Ensures that min <= max auto minValue = ui->minSpinBox->value(); if (minValue > ui->maxSpinBox->value()) { ui->maxSpinBox->setValue(minValue); } } void ColorScaleEditor::onThresholdChanged(bool checked) { if (checked) { auto isAutomatic = ui->thresholdAutoButton == m_ThresholdGroup->checkedButton(); ui->minSpinBox->setEnabled(!isAutomatic); ui->maxSpinBox->setEnabled(!isAutomatic); } }