From 62e5ab5455a542b12c0a912c6f25795f36a6f989 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Sat, 28 Oct 2023 14:22:58 +0200
Subject: [PATCH] converted several editors

---
 GUI/View/Instrument/DistributionEditor.cpp      | 16 ++++++++--------
 GUI/View/Instrument/DistributionEditor.h        |  2 +-
 GUI/View/Instrument/GISASBeamEditor.cpp         | 12 +++++-------
 .../Instrument/PolarizationAnalysisEditor.cpp   | 11 +++--------
 .../Instrument/PolarizationAnalysisEditor.h     |  2 +-
 GUI/View/Instrument/ScanEditor.cpp              | 17 +++++++----------
 GUI/View/Instrument/ScanEditor.h                |  2 +-
 7 files changed, 26 insertions(+), 36 deletions(-)

diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp
index 5010d2c5c44..5349ab84cbd 100644
--- a/GUI/View/Instrument/DistributionEditor.cpp
+++ b/GUI/View/Instrument/DistributionEditor.cpp
@@ -162,20 +162,20 @@ DistributionEditor::DistributionEditor(const QString& title,
                                        const std::optional<MeanConfig>& mean_config,
                                        GUI::ID::Distributions distributions, QWidget* parent,
                                        BeamDistributionItem* item, bool allow_distr)
-    : QGroupBox(title, parent)
+    : CollapsibleGroupBox(title, parent, item->expandGroupBox)
 {
-    auto* hLayout = new QVBoxLayout(this);
+    auto* layout = new QVBoxLayout;
+    body()->setLayout(layout);
+
     m_selector = new DistributionSelector(mean_config, distributions, this, item, allow_distr);
-    hLayout->addWidget(m_selector);
-    hLayout->setSpacing(50);
+    layout->addWidget(m_selector);
+    layout->setSpacing(50);
 
     m_plot = new DistributionPlot(this);
     m_plot->setFixedSize(280, 170);
     m_plot->setShowMouseCoords(false);
-    hLayout->addWidget(m_plot);
-    hLayout->addStretch(1);
-
-    GroupBoxCollapser::installIntoGroupBox2(this, item->expandGroupBox);
+    layout->addWidget(m_plot);
+    layout->addStretch(1);
 
     connect(m_selector, &DistributionSelector::distributionChanged, this,
             &DistributionEditor::distributionChanged);
diff --git a/GUI/View/Instrument/DistributionEditor.h b/GUI/View/Instrument/DistributionEditor.h
index 018190cd398..2ddba425638 100644
--- a/GUI/View/Instrument/DistributionEditor.h
+++ b/GUI/View/Instrument/DistributionEditor.h
@@ -78,7 +78,7 @@ private:
 /// DistributionSelector as above but contained in a GroupBox with a title and a button
 /// to open the distribution dialog
 
-class DistributionEditor : public QGroupBox {
+class DistributionEditor : public CollapsibleGroupBox {
     Q_OBJECT
 public:
     DistributionEditor(const QString& title, const std::optional<MeanConfig>& mean_config,
diff --git a/GUI/View/Instrument/GISASBeamEditor.cpp b/GUI/View/Instrument/GISASBeamEditor.cpp
index 5c5c49ea438..b7098f9773b 100644
--- a/GUI/View/Instrument/GISASBeamEditor.cpp
+++ b/GUI/View/Instrument/GISASBeamEditor.cpp
@@ -26,8 +26,8 @@
 GISASBeamEditor::GISASBeamEditor(QWidget* parent, BeamItem* item)
     : CollapsibleGroupBox("Beam parameters", parent, item->expandBeamParameters)
 {
-    auto* vLayout = new QVBoxLayout(this);
-    vLayout->setContentsMargins(30, 8, 0, 0);
+    auto* layout = new QVBoxLayout;
+    body()->setLayout(layout);
 
     // Beam intensity row
     auto* intensityEditor = new QLineEdit(this);
@@ -55,7 +55,7 @@ GISASBeamEditor::GISASBeamEditor(QWidget* parent, BeamItem* item)
     auto* form = new QFormLayout;
     form->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
     form->addRow("Intensity:", intensityEditor);
-    vLayout->addLayout(form);
+    layout->addLayout(form);
 
     // Main row: fixed values or distributions for wavelength and angles of incidence
     auto* wavelengthEditor = new DistributionEditor(
@@ -79,11 +79,9 @@ GISASBeamEditor::GISASBeamEditor(QWidget* parent, BeamItem* item)
     mainrow->addWidget(wavelengthEditor);
     mainrow->addWidget(inclinationEditor);
     mainrow->addWidget(azimuthalEditor);
-    vLayout->addLayout(mainrow);
+    layout->addLayout(mainrow);
 
     auto* footprintEditor = new FootprintForm(this, item);
     connect(footprintEditor, &FootprintForm::dataChanged, this, &GISASBeamEditor::dataChanged);
-    vLayout->addWidget(footprintEditor);
-
-    body()->setLayout(vLayout);
+    layout->addWidget(footprintEditor);
 }
diff --git a/GUI/View/Instrument/PolarizationAnalysisEditor.cpp b/GUI/View/Instrument/PolarizationAnalysisEditor.cpp
index 60a11c03053..330cfb144f7 100644
--- a/GUI/View/Instrument/PolarizationAnalysisEditor.cpp
+++ b/GUI/View/Instrument/PolarizationAnalysisEditor.cpp
@@ -20,12 +20,11 @@
 #include <QLabel>
 
 PolarizationAnalysisEditor::PolarizationAnalysisEditor(QWidget* parent, InstrumentItem* instrument)
-    : QGroupBox("Polarization analysis", parent)
+    : CollapsibleGroupBox("Polarization analysis", parent, instrument->expandPolarizerAlanyzer)
     , m_instrument(instrument)
 {
-    ASSERT(instrument);
-
-    auto* layout = new QVBoxLayout(this);
+    auto* layout = new QVBoxLayout;
+    body()->setLayout(layout);
 
     // polarizer
     {
@@ -70,10 +69,6 @@ PolarizationAnalysisEditor::PolarizationAnalysisEditor(QWidget* parent, Instrume
             emit dataChanged();
         });
     }
-
-    // collapser
-
-    GroupBoxCollapser::installIntoGroupBox2(this, instrument->expandPolarizerAlanyzer);
 }
 
 DoubleSpinBox* PolarizationAnalysisEditor::createSpinBox(DoubleProperty& d)
diff --git a/GUI/View/Instrument/PolarizationAnalysisEditor.h b/GUI/View/Instrument/PolarizationAnalysisEditor.h
index db583639216..6a2a6445e18 100644
--- a/GUI/View/Instrument/PolarizationAnalysisEditor.h
+++ b/GUI/View/Instrument/PolarizationAnalysisEditor.h
@@ -26,7 +26,7 @@ class VectorProperty;
 //! Polarization analysis editor (beam polarization, analyzer properties) for instrument editors.
 //! Operates on InstrumentItem.
 
-class PolarizationAnalysisEditor : public QGroupBox {
+class PolarizationAnalysisEditor : public CollapsibleGroupBox {
     Q_OBJECT
 public:
     PolarizationAnalysisEditor(QWidget* parent, InstrumentItem* instrument);
diff --git a/GUI/View/Instrument/ScanEditor.cpp b/GUI/View/Instrument/ScanEditor.cpp
index d8d65e024f7..38ec5471759 100644
--- a/GUI/View/Instrument/ScanEditor.cpp
+++ b/GUI/View/Instrument/ScanEditor.cpp
@@ -25,15 +25,14 @@
 #include <QLineEdit>
 
 ScanEditor::ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec, bool allow_distr)
-    : QGroupBox("Beam and scan parameters", parent)
+    : CollapsibleGroupBox("Beam and scan parameters", parent, item->expandBeamParameters)
 {
-    ASSERT(item);
+    auto* layout = new QVBoxLayout;
+    body()->setLayout(layout);
 
-    auto* vLayout = new QVBoxLayout(this);
-    vLayout->setContentsMargins(30, 8, 0, 0);
     auto* form = new QFormLayout();
     form->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
-    vLayout->addLayout(form);
+    layout->addLayout(form);
     auto* intensityLineEdit = new QLineEdit(this);
     intensityLineEdit->setToolTip("Correction factor for normalized intensity");
     auto* validator = new FixupDoubleValidator(intensityLineEdit);
@@ -45,18 +44,16 @@ ScanEditor::ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec,
     auto* wavelengthEditor =
         new DistributionEditor("Wavelength", MeanConfig{true}, GUI::ID::Distributions::Symmetric,
                                this, item->wavelengthItem(), allow_distr);
-    vLayout->addWidget(wavelengthEditor);
+    layout->addWidget(wavelengthEditor);
 
     auto* inclinationEditor = new AlphaScanEditor(this, item->grazingScanItem(), allow_distr);
-    vLayout->addWidget(inclinationEditor);
+    layout->addWidget(inclinationEditor);
 
     auto* footprintEditor = new FootprintForm(this, item);
-    vLayout->addWidget(footprintEditor);
+    layout->addWidget(footprintEditor);
 
     intensityLineEdit->setText(QString::number(item->intensity()));
 
-    GroupBoxCollapser::installIntoGroupBox2(this, item->expandBeamParameters);
-
     // order of the next two connections is important! Indicators have to be recalculated first,
     // then updated (recalculation is done in EditController)
     connect(wavelengthEditor, &DistributionEditor::distributionChanged, ec,
diff --git a/GUI/View/Instrument/ScanEditor.h b/GUI/View/Instrument/ScanEditor.h
index 90fb64958c9..5e9b6a38083 100644
--- a/GUI/View/Instrument/ScanEditor.h
+++ b/GUI/View/Instrument/ScanEditor.h
@@ -22,7 +22,7 @@ class ScanItem;
 
 //! Specular beam editor. Operates on ScanItem.
 
-class ScanEditor : public QGroupBox {
+class ScanEditor : public CollapsibleGroupBox {
     Q_OBJECT
 public:
     ScanEditor(QWidget* parent, ScanItem* item, InstrumentNotifier* ec, bool allow_distr = true);
-- 
GitLab