From d2f29410d6c60a6d5be5650e7a8c8fc254bafea5 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <svechnikovmv@gmail.com>
Date: Thu, 5 Oct 2023 17:16:32 +0200
Subject: [PATCH] block distributions in gui

---
 GUI/View/Instrument/AlphaScanEditor.cpp            | 6 +++---
 GUI/View/Instrument/AlphaScanEditor.h              | 2 +-
 GUI/View/Instrument/DepthprobeInstrumentEditor.cpp | 2 +-
 GUI/View/Instrument/DistributionEditor.cpp         | 7 ++++---
 GUI/View/Instrument/DistributionEditor.h           | 4 ++--
 GUI/View/Instrument/OffspecInstrumentEditor.cpp    | 2 +-
 GUI/View/Instrument/ScanEditor.cpp                 | 6 +++---
 GUI/View/Instrument/ScanEditor.h                   | 2 +-
 8 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/GUI/View/Instrument/AlphaScanEditor.cpp b/GUI/View/Instrument/AlphaScanEditor.cpp
index d0758f7d62d..4f7891d3dc6 100644
--- a/GUI/View/Instrument/AlphaScanEditor.cpp
+++ b/GUI/View/Instrument/AlphaScanEditor.cpp
@@ -20,7 +20,7 @@
 #include "GUI/View/Instrument/DistributionEditor.h"
 #include "GUI/View/Instrument/DistributionPlot.h"
 
-AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item)
+AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item, bool allow_distr)
     : QGroupBox("Grazing angles", parent)
     , m_item(item)
 {
@@ -43,8 +43,8 @@ AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item)
     connect(m_form, &SphericalAxisForm::dataChanged, this, &AlphaScanEditor::dataChanged);
 
     //... beam distribution
-    m_selector =
-        new DistributionSelector(std::nullopt, GUI::ID::Distributions::Symmetric, this, m_item);
+    m_selector = new DistributionSelector(std::nullopt, GUI::ID::Distributions::Symmetric, this,
+                                          m_item, allow_distr);
     connect(m_selector, &DistributionSelector::distributionChanged, this,
             &AlphaScanEditor::dataChanged);
     connect(m_selector, &DistributionSelector::distributionChanged, this,
diff --git a/GUI/View/Instrument/AlphaScanEditor.h b/GUI/View/Instrument/AlphaScanEditor.h
index ad9578f52af..e0ec0327b2c 100644
--- a/GUI/View/Instrument/AlphaScanEditor.h
+++ b/GUI/View/Instrument/AlphaScanEditor.h
@@ -27,7 +27,7 @@ class SphericalAxisForm;
 class AlphaScanEditor : public QGroupBox {
     Q_OBJECT
 public:
-    AlphaScanEditor(QWidget* parent, GrazingScanItem* item);
+    AlphaScanEditor(QWidget* parent, GrazingScanItem* item, bool allow_distr);
 
     void updateIndicators();
 
diff --git a/GUI/View/Instrument/DepthprobeInstrumentEditor.cpp b/GUI/View/Instrument/DepthprobeInstrumentEditor.cpp
index 86e4007ef32..861579edad8 100644
--- a/GUI/View/Instrument/DepthprobeInstrumentEditor.cpp
+++ b/GUI/View/Instrument/DepthprobeInstrumentEditor.cpp
@@ -29,7 +29,7 @@ DepthprobeInstrumentEditor::DepthprobeInstrumentEditor(QWidget* parent,
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
 
-    auto* scanEditor = new ScanEditor(this, instrument->scanItem(), &m_ec);
+    auto* scanEditor = new ScanEditor(this, instrument->scanItem(), &m_ec, false);
     layout->addWidget(scanEditor);
 
     auto* depthAxisEditor = new AxisPropertyForm(this, "Depth axis", &instrument->zAxis(),
diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp
index 1cbd1471458..fc627405f5a 100644
--- a/GUI/View/Instrument/DistributionEditor.cpp
+++ b/GUI/View/Instrument/DistributionEditor.cpp
@@ -29,7 +29,7 @@
 
 DistributionSelector::DistributionSelector(std::optional<MeanConfig> mean_config,
                                            GUI::ID::Distributions distributions, QWidget* parent,
-                                           BeamDistributionItem* item)
+                                           BeamDistributionItem* item, bool allow_distr)
     : QWidget(parent)
     , m_item(item)
     , m_meanConfig(std::move(mean_config))
@@ -44,6 +44,7 @@ DistributionSelector::DistributionSelector(std::optional<MeanConfig> mean_config
             createDistributionWidgets();
             emit distributionChanged();
         });
+    m_distributionCombo->setEnabled(allow_distr);
     m_formLayout->addRow("Distribution:", m_distributionCombo);
 
     createDistributionWidgets();
@@ -161,11 +162,11 @@ void DistributionSelector::refresh()
 DistributionEditor::DistributionEditor(const QString& title,
                                        const std::optional<MeanConfig>& mean_config,
                                        GUI::ID::Distributions distributions, QWidget* parent,
-                                       BeamDistributionItem* item)
+                                       BeamDistributionItem* item, bool allow_distr)
     : QGroupBox(title, parent)
 {
     auto* hLayout = new QHBoxLayout(this);
-    m_selector = new DistributionSelector(mean_config, distributions, this, item);
+    m_selector = new DistributionSelector(mean_config, distributions, this, item, allow_distr);
     hLayout->addWidget(m_selector);
     hLayout->setSpacing(50);
 
diff --git a/GUI/View/Instrument/DistributionEditor.h b/GUI/View/Instrument/DistributionEditor.h
index 0af4652af23..3ac7d646638 100644
--- a/GUI/View/Instrument/DistributionEditor.h
+++ b/GUI/View/Instrument/DistributionEditor.h
@@ -52,7 +52,7 @@ public:
     ///       supported)
     DistributionSelector(std::optional<MeanConfig> mean_config,
                          GUI::ID::Distributions distributions, QWidget* parent,
-                         BeamDistributionItem* item);
+                         BeamDistributionItem* item, bool allow_distr);
 
     BeamDistributionItem* item() const;
     GUI::ID::Distributions distributions() const;
@@ -85,7 +85,7 @@ class DistributionEditor : public QGroupBox {
 public:
     DistributionEditor(const QString& title, const std::optional<MeanConfig>& mean_config,
                        GUI::ID::Distributions distributions, QWidget* parent,
-                       BeamDistributionItem* item);
+                       BeamDistributionItem* item, bool allow_distr = true);
 
     //! Update UI from data
     void updateData();
diff --git a/GUI/View/Instrument/OffspecInstrumentEditor.cpp b/GUI/View/Instrument/OffspecInstrumentEditor.cpp
index 7377cd4bbaf..8cd5b7b9485 100644
--- a/GUI/View/Instrument/OffspecInstrumentEditor.cpp
+++ b/GUI/View/Instrument/OffspecInstrumentEditor.cpp
@@ -29,7 +29,7 @@ OffspecInstrumentEditor::OffspecInstrumentEditor(QWidget* parent, OffspecInstrum
     auto* layout = new QVBoxLayout(this);
     layout->setContentsMargins(0, 0, 0, 0);
 
-    auto* scanEditor = new ScanEditor(this, instrument->scanItem(), &m_ec);
+    auto* scanEditor = new ScanEditor(this, instrument->scanItem(), &m_ec, false);
     layout->addWidget(scanEditor);
 
     auto* detectorEditor = new OffspecDetectorEditor(this, instrument);
diff --git a/GUI/View/Instrument/ScanEditor.cpp b/GUI/View/Instrument/ScanEditor.cpp
index 9cca6169801..16aaabaf469 100644
--- a/GUI/View/Instrument/ScanEditor.cpp
+++ b/GUI/View/Instrument/ScanEditor.cpp
@@ -25,7 +25,7 @@
 #include <QFormLayout>
 #include <QLineEdit>
 
-ScanEditor::ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec)
+ScanEditor::ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec, bool allow_distr)
     : QGroupBox("Beam and scan parameters", parent)
 {
     ASSERT(item);
@@ -45,10 +45,10 @@ ScanEditor::ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec)
 
     auto* wavelengthEditor =
         new DistributionEditor("Wavelength", MeanConfig{true}, GUI::ID::Distributions::Symmetric,
-                               this, item->wavelengthItem());
+                               this, item->wavelengthItem(), allow_distr);
     vLayout->addWidget(wavelengthEditor);
 
-    auto* inclinationEditor = new AlphaScanEditor(this, item->grazingScanItem());
+    auto* inclinationEditor = new AlphaScanEditor(this, item->grazingScanItem(), allow_distr);
     vLayout->addWidget(inclinationEditor);
 
     auto* footprintEditor = new FootprintForm(this, item);
diff --git a/GUI/View/Instrument/ScanEditor.h b/GUI/View/Instrument/ScanEditor.h
index d542a467c0d..faa8ae07e1b 100644
--- a/GUI/View/Instrument/ScanEditor.h
+++ b/GUI/View/Instrument/ScanEditor.h
@@ -26,7 +26,7 @@ class ScanEditor : public QGroupBox {
     Q_OBJECT
 
 public:
-    ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec);
+    ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec, bool allow_distr = true);
 
 signals:
     void dataChanged();
-- 
GitLab