// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include "JFJochViewerImageROIStatistics.h" #include #include #include JFJochViewerImageROIStatistics::JFJochViewerImageROIStatistics(QWidget *parent) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout(this); box_radio = new QRadioButton("Box", this); box_settings = new JFJochViewerImageROIStatistics_Box(this); QHBoxLayout *box_row = new QHBoxLayout(); box_row->addWidget(box_radio); box_row->addWidget(box_settings); layout->addLayout(box_row); circle_radio = new QRadioButton("Circle", this); circle_settings = new JFJochViewerImageROIStatistics_Circle(this); QHBoxLayout *circle_row = new QHBoxLayout(); circle_row->addWidget(circle_radio); circle_row->addWidget(circle_settings); layout->addLayout(circle_row); radio_group = new QButtonGroup(this); radio_group->addButton(box_radio, 1); radio_group->addButton(circle_radio, 2); connect(box_radio, &QRadioButton::clicked, this, &JFJochViewerImageROIStatistics::BoxButtonClicked); connect(circle_radio, &QRadioButton::clicked, this, &JFJochViewerImageROIStatistics::CircleButtonClicked); connect(box_settings, &JFJochViewerImageROIStatistics_Box::Updated, this, &JFJochViewerImageROIStatistics::BoxButtonClicked); connect(circle_settings, &JFJochViewerImageROIStatistics_Circle::Updated, this, &JFJochViewerImageROIStatistics::CircleButtonClicked); circle_settings->Disable(); box_radio->setChecked(true); roi_result = new JFJochViewerROIResult(this); layout->addWidget(roi_result); QPushButton *add_button = new QPushButton("Add ROI to user mask", this); connect(add_button, &QPushButton::clicked, [this]() { emit AddROIToUserMask(); }); QPushButton *sub_button = new QPushButton("Subtract ROI from user mask", this); connect(sub_button, &QPushButton::clicked, [this]() { emit SubtractROIFromUserMask(); }); QHBoxLayout *buttons_row = new QHBoxLayout(); buttons_row->setSpacing(12); buttons_row->addWidget(add_button); buttons_row->addWidget(sub_button); layout->addLayout(buttons_row); } void JFJochViewerImageROIStatistics::SetROIResult(ROIMessage roi) { roi_result->SetROIResult(roi); } void JFJochViewerImageROIStatistics::SetROIBox(QRect box) { box_radio->setChecked(true); box_settings->ROIBoxConfigured(box); circle_settings->Disable(); } void JFJochViewerImageROIStatistics::SetROICircle(double x, double y, double radius) { circle_radio->setChecked(true); circle_settings->SetROICircle(CircleSettings{.x = x, .y = y, .r = radius}); box_settings->Disable(); } void JFJochViewerImageROIStatistics::BoxButtonClicked() { box_radio->setChecked(true); box_settings->Enable(); circle_settings->Disable(); emit ROIBoxConfigured(box_settings->GetROIBox()); } void JFJochViewerImageROIStatistics::CircleButtonClicked() { circle_settings->Enable(); box_settings->Disable(); circle_radio->setChecked(true); auto tmp = circle_settings->GetROICircle(); emit ROICircleConfigured(tmp.x, tmp.y, tmp.r); }