Files
Jungfraujoch/viewer/widgets/JFJochViewerImageROIStatistics.cpp
Filip Leonarski 95acf3aba3
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m17s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m29s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 8m52s
Build Packages / Generate python client (push) Successful in 25s
Build Packages / Build documentation (push) Successful in 49s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 8m47s
Build Packages / build:rpm (rocky8) (push) Successful in 8m49s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 7m4s
Build Packages / build:rpm (rocky9) (push) Successful in 8m52s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m11s
Build Packages / Unit tests (push) Successful in 1h14m42s
v1.0.0-rc.104 (#9)
This is an UNSTABLE release.

jfjoch_writer: Fix and improve the way grid scan geometry is saved (non-NXmx extension makes it way easier)
jfjoch_viewer: Display grid scan results in 2D (work in progress)
jfjoch_viewer: Improve auto-scaling on start of images (work in progress)
jfjoch_viewer: Add B-factor and resolution estimate to the dataset info plots

Reviewed-on: #9
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
2025-11-19 17:28:10 +01:00

92 lines
3.2 KiB
C++

// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute <filip.leonarski@psi.ch>
// SPDX-License-Identifier: GPL-3.0-only
#include "JFJochViewerImageROIStatistics.h"
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
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);
}