diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp index 5010d2c5c44e0408ca06b4264199a371674d3680..5349ab84cbd25db6403e167553ede871d592ce18 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 018190cd3986151cbe03eba1d5a428fe499cf90e..2ddba42563894df8156807312f9fd9b9a604e171 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 5c5c49ea438fca54e8273fdb85901e14598a8e59..b7098f9773b6c3b950d1d888f48c300741f85e42 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 60a11c030537a5162062514e8cc1e74cd4676fa0..330cfb144f7a499f6ed3c1563da719e7916615e0 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 db583639216eb2281ed0b60e2b7c0803842d89a0..6a2a6445e183d50010aa9063dc438b485607d4b5 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 d8d65e024f7b3bfa367b54ab67b2a12e70dd4fee..38ec5471759e50e414bb3274e5bd421d1b282b16 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 90fb64958c920ae482c3ce1ed7a49e37675dfe59..5e9b6a38083343ad2fa84bfd200d952e5818d8ba 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);