// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include #include #include "JFJochViewerDatasetInfo.h" JFJochViewerDatasetInfo::JFJochViewerDatasetInfo(QWidget *parent) : QWidget(parent) { setFixedHeight(200); auto layout = new QGridLayout(this); combo_box = new QComboBox(this); combo_box->addItem("Background estimate", 0); combo_box->addItem("Spot count", 1); combo_box->addItem("Spot count (indexed)", 2); combo_box->addItem("Spot count (ice rings)", 3); combo_box->addItem("Spot count (low res.)", 4); combo_box->addItem("Indexing result", 5); combo_box->addItem("Profile radius", 6); combo_box->setCurrentIndex(0); layout->addWidget(combo_box, 0, 0); auto reset_button = new QPushButton("Reset zoom", this); layout->addWidget(reset_button, 0, 1); chart_view = new JFJochChartView(this); layout->addWidget(chart_view, 1, 0, 1, 2); connect(chart_view, &JFJochChartView::imageSelected, this, &JFJochViewerDatasetInfo::imageSelectedInChart); connect(reset_button, &QPushButton::clicked, chart_view, &JFJochChartView::resetZoom); connect(combo_box, &QComboBox::currentIndexChanged, this, &JFJochViewerDatasetInfo::comboBoxSelected); setLayout(layout); } void JFJochViewerDatasetInfo::datasetLoaded(std::shared_ptr dataset) { this->dataset = dataset; if (dataset) { UpdatePlot(); } else chart_view->loadValues({}, 0); } void JFJochViewerDatasetInfo::imageLoaded(std::shared_ptr image) { this->image = image; if (image) chart_view->setImage(image->ImageData().number); } void JFJochViewerDatasetInfo::imageSelectedInChart(int64_t number) { emit imageSelected(number, 1); } void JFJochViewerDatasetInfo::UpdatePlot() { int index = combo_box->currentIndex(); int val = combo_box->itemData(index).toInt(); std::vector tmp; if (dataset) { int64_t image_number = 0; if (image) image_number = image->ImageData().number; if (val == 0) chart_view->loadValues(dataset->bkg_estimate, image_number); else if (val == 1) chart_view->loadValues(dataset->spot_count, image_number); else if (val == 2) chart_view->loadValues(dataset->spot_count_indexed, image_number); else if (val == 3) chart_view->loadValues(dataset->spot_count_ice_rings, image_number); else if (val == 4) chart_view->loadValues(dataset->spot_count_low_res, image_number); else if (val == 5) chart_view->loadValues(dataset->indexing_result, image_number); else if (val == 6) chart_view->loadValues(dataset->profile_radius, image_number); else chart_view->loadValues({}, 0); } } void JFJochViewerDatasetInfo::comboBoxSelected(int index) { UpdatePlot(); }