// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "JFJochBraggIntegrationPanel.h" #include #include #include JFJochBraggIntegrationPanel::JFJochBraggIntegrationPanel(const BraggIntegrationSettings &settings, QWidget *parent) : QWidget(parent) { auto *layout = new QVBoxLayout(this); auto *group = new QGroupBox("Bragg integration", this); auto *form = new QFormLayout(group); m_r1 = new SliderPlusBox(1.0, 20.0, 0.5, 1, this); m_r1->setValue(settings.GetR1()); form->addRow("Signal box radius r1 [px]", m_r1); m_r2 = new SliderPlusBox(1.0, 25.0, 0.5, 1, this); m_r2->setValue(settings.GetR2()); form->addRow("Background inner radius r2 [px]", m_r2); m_r3 = new SliderPlusBox(1.0, 30.0, 0.5, 1, this); m_r3->setValue(settings.GetR3()); form->addRow("Background outer radius r3 [px]", m_r3); m_profileMultiplier = new SliderPlusBox(1.0, 15.0, 0.5, 1, this); m_profileMultiplier->setValue(settings.GetProfileMultiplier()); form->addRow("Profile multiplier (PixelRefine)", m_profileMultiplier); m_dMin = new SliderPlusBox(0.3, 5.0, 0.1, 1, this); m_dMin->setValue(settings.GetDMinLimit_A()); form->addRow("High-resolution limit [Å]", m_dMin); layout->addWidget(group); layout->addStretch(); for (auto *slider: {m_r1, m_r2, m_r3, m_profileMultiplier, m_dMin}) connect(slider, &SliderPlusBox::valueChanged, this, [this](double) { emitChanged(); }); } void JFJochBraggIntegrationPanel::emitChanged() { BraggIntegrationSettings s; s.R1(static_cast(m_r1->value())) .R2(static_cast(m_r2->value())) .R3(static_cast(m_r3->value())) .ProfileMultiplier(static_cast(m_profileMultiplier->value())) .DMinLimit_A(static_cast(m_dMin->value())); emit settingsChanged(s); }