From b382ebd21fbfcda7e2d9f3a3427bef8f053ddd4a Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Mon, 13 May 2024 14:59:03 +0200
Subject: [PATCH] correct 'Alanyz' -> 'Analyz'; replace XML::readAttribute

---
 GUI/Model/Axis/AmplitudeAxisItem.cpp          |  4 +-
 GUI/Model/Axis/BasicAxisItem.cpp              |  8 ++--
 GUI/Model/Beam/GrazingScanItem.cpp            |  2 +-
 GUI/Model/Beam/SourceItems.cpp                |  6 +--
 GUI/Model/Data/Data1DItem.cpp                 |  4 +-
 GUI/Model/Data/Data2DItem.cpp                 |  2 +-
 GUI/Model/Descriptor/ComboProperty.cpp        |  3 +-
 GUI/Model/Descriptor/DoubleProperty.cpp       |  2 +-
 GUI/Model/Detector/DetectorItem.cpp           |  2 +-
 GUI/Model/File/DatafileItem.cpp               |  2 +-
 GUI/Model/File/DatafilesSet.cpp               |  3 +-
 GUI/Model/Job/JobsSet.cpp                     |  3 +-
 GUI/Model/Mask/MaskItems.cpp                  |  9 ++---
 GUI/Model/Mask/PointItem.cpp                  |  9 +----
 GUI/Model/Material/MaterialItem.cpp           |  2 +-
 GUI/Model/Mini/MinimizerItems.cpp             | 40 +++++++++----------
 GUI/Model/Par/ParameterBackup.cpp             |  3 +-
 GUI/Model/Par/ParameterTreeItems.cpp          |  4 +-
 GUI/Model/Sample/CompoundItem.cpp             |  2 +-
 GUI/Model/Sample/CoreAndShellItem.cpp         |  6 +--
 GUI/Model/Sample/InterferenceItems.cpp        |  2 +-
 GUI/Model/Sample/LayerItem.cpp                |  2 +-
 GUI/Model/Sample/MesocrystalItem.cpp          |  2 +-
 GUI/Model/Sample/ParticleItem.cpp             |  2 +-
 GUI/Model/Sample/ParticleLayoutItem.cpp       |  4 +-
 GUI/Model/Sample/SampleItem.cpp               |  6 +--
 GUI/Model/Sample/SamplesSet.cpp               |  3 +-
 GUI/Model/Sim/InstrumentItems.cpp             | 26 ++++++------
 GUI/Model/Sim/InstrumentItems.h               |  2 +-
 GUI/Model/Sim/InstrumentsSet.cpp              |  4 +-
 GUI/Model/Sim/SimulationOptionsItem.cpp       | 14 +++----
 GUI/Model/Tune/FitParameterItem.cpp           |  4 +-
 GUI/Model/Tune/FitSuiteItem.cpp               |  6 +--
 GUI/Model/Util/UtilXML.cpp                    | 19 +++------
 GUI/Model/Util/UtilXML.h                      |  2 -
 .../Device/PolarizationAnalysisEditor.cpp     |  2 +-
 36 files changed, 97 insertions(+), 119 deletions(-)

diff --git a/GUI/Model/Axis/AmplitudeAxisItem.cpp b/GUI/Model/Axis/AmplitudeAxisItem.cpp
index c2e6017ba6a..4054d3ef224 100644
--- a/GUI/Model/Axis/AmplitudeAxisItem.cpp
+++ b/GUI/Model/Axis/AmplitudeAxisItem.cpp
@@ -78,12 +78,12 @@ void AmplitudeAxisItem::readFrom(QXmlStreamReader* r)
 
             // lock min/max
         } else if (tag == Tag::LockMinMax) {
-            XML::readAttribute(r, XML::Attrib::value, &m_lock_min_max);
+            m_lock_min_max = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // log range, orders of magniture
         } else if (tag == Tag::LogRangeOrders) {
-            XML::readAttribute(r, XML::Attrib::value, &m_log_range_orders);
+            m_log_range_orders = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Axis/BasicAxisItem.cpp b/GUI/Model/Axis/BasicAxisItem.cpp
index 0735ccd10d3..0d666a7fd2a 100644
--- a/GUI/Model/Axis/BasicAxisItem.cpp
+++ b/GUI/Model/Axis/BasicAxisItem.cpp
@@ -106,22 +106,22 @@ void BasicAxisItem::readFrom(QXmlStreamReader* r)
 
         // visibility?
         if (tag == Tag::IsVisible) {
-            XML::readAttribute(r, XML::Attrib::value, &m_visible);
+            m_visible = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // nbins
         } else if (tag == Tag::Nbins) {
-            XML::readAttribute(r, XML::Attrib::value, &m_nbins);
+            m_nbins = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // min
         } else if (tag == Tag::MinDeg) {
-            XML::readAttribute(r, XML::Attrib::value, &m_min);
+            m_min = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // max
         } else if (tag == Tag::MaxDeg) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max);
+            m_max = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Beam/GrazingScanItem.cpp b/GUI/Model/Beam/GrazingScanItem.cpp
index 38d5e5c8573..a474ce0793f 100644
--- a/GUI/Model/Beam/GrazingScanItem.cpp
+++ b/GUI/Model/Beam/GrazingScanItem.cpp
@@ -118,7 +118,7 @@ void GrazingScanItem::readFrom(QXmlStreamReader* r)
 
             // is uniform axis?
         } else if (tag == Tag::IsUniformAxis) {
-            XML::readAttribute(r, XML::Attrib::value, &m_current_axis_is_uniform_axis);
+            m_current_axis_is_uniform_axis = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // uniform axis
diff --git a/GUI/Model/Beam/SourceItems.cpp b/GUI/Model/Beam/SourceItems.cpp
index cc5fdc94333..ca4f0e125b1 100644
--- a/GUI/Model/Beam/SourceItems.cpp
+++ b/GUI/Model/Beam/SourceItems.cpp
@@ -121,7 +121,7 @@ void SourceItem::readFrom(QXmlStreamReader* r)
 
             // beam parameters groupbox: is expanded?
         } else if (tag == Tag::ExpandBeamParametersGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandBeamParameters);
+            expandBeamParameters = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // footprint
@@ -131,7 +131,7 @@ void SourceItem::readFrom(QXmlStreamReader* r)
 
             // footprint groupbox: is expanded?
         } else if (tag == Tag::ExpandFootprintGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandFootprint);
+            expandFootprint = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
         } else
             r->skipCurrentElement();
@@ -336,7 +336,7 @@ void ScanItem::readFrom(QXmlStreamReader* r)
 
             // footprint groupbox: is expanded? (moved to base class since v21 (version == 2))
         } else if (version == 1 && tag == Tag::ExpandFootprintGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandFootprint);
+            expandFootprint = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // grazing scan
diff --git a/GUI/Model/Data/Data1DItem.cpp b/GUI/Model/Data/Data1DItem.cpp
index f0eb9c02390..505aada2d78 100644
--- a/GUI/Model/Data/Data1DItem.cpp
+++ b/GUI/Model/Data/Data1DItem.cpp
@@ -223,7 +223,7 @@ void Data1DItem::readFrom(QXmlStreamReader* r)
 
             // thickness
         } else if (tag == Tag::Thickness) {
-            XML::readAttribute(r, XML::Attrib::value, &m_thickness);
+            m_thickness = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // scatter type
@@ -233,7 +233,7 @@ void Data1DItem::readFrom(QXmlStreamReader* r)
 
             // scatter size
         } else if (tag == Tag::ScatterSize) {
-            XML::readAttribute(r, XML::Attrib::value, &m_scatter_size);
+            m_scatter_size = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Data/Data2DItem.cpp b/GUI/Model/Data/Data2DItem.cpp
index a35d05d5e3d..cc87c7bab78 100644
--- a/GUI/Model/Data/Data2DItem.cpp
+++ b/GUI/Model/Data/Data2DItem.cpp
@@ -243,7 +243,7 @@ void Data2DItem::readFrom(QXmlStreamReader* r)
 
             // interpolation
         } else if (tag == Tag::Interpolation) {
-            XML::readAttribute(r, XML::Attrib::value, &m_is_interpolated);
+            m_is_interpolated = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // z axis
diff --git a/GUI/Model/Descriptor/ComboProperty.cpp b/GUI/Model/Descriptor/ComboProperty.cpp
index 6e9e3cef070..186f940f41b 100644
--- a/GUI/Model/Descriptor/ComboProperty.cpp
+++ b/GUI/Model/Descriptor/ComboProperty.cpp
@@ -235,8 +235,7 @@ void ComboProperty::readFrom(QXmlStreamReader* r)
     const uint version = XML::readUInt(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    int index = -1;
-    XML::readAttribute(r, XML::Attrib::index, &index);
+    int index = XML::readInt(r, XML::Attrib::index);
     ASSERT(index < m_values.size());
     // 'ComboProperty' can be in unselected state
     if (index >= 0)
diff --git a/GUI/Model/Descriptor/DoubleProperty.cpp b/GUI/Model/Descriptor/DoubleProperty.cpp
index 5993f910cb4..1b16be760f7 100644
--- a/GUI/Model/Descriptor/DoubleProperty.cpp
+++ b/GUI/Model/Descriptor/DoubleProperty.cpp
@@ -68,7 +68,7 @@ void DoubleProperty::readFrom(QXmlStreamReader* r)
     const uint version = XML::readUInt(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    XML::readAttribute(r, XML::Attrib::value, &m_value);
+    m_value = XML::readDouble(r, XML::Attrib::value);
     m_uid = XML::readString(r, XML::Attrib::id);
 }
 
diff --git a/GUI/Model/Detector/DetectorItem.cpp b/GUI/Model/Detector/DetectorItem.cpp
index 062e19dc95c..b67a8bae4be 100644
--- a/GUI/Model/Detector/DetectorItem.cpp
+++ b/GUI/Model/Detector/DetectorItem.cpp
@@ -158,7 +158,7 @@ void DetectorItem::readFrom(QXmlStreamReader* r)
 
             // resolution function groupbox: is expanded?
         } else if (tag == Tag::ExpandResolutionFuncGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandResolutionFunc);
+            expandResolutionFunc = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // masks
diff --git a/GUI/Model/File/DatafileItem.cpp b/GUI/Model/File/DatafileItem.cpp
index 0b315dd97b1..39f8a3af1ed 100644
--- a/GUI/Model/File/DatafileItem.cpp
+++ b/GUI/Model/File/DatafileItem.cpp
@@ -156,7 +156,7 @@ void DatafileItem::readFrom(QXmlStreamReader* r)
 
         // name
         if (tag == Tag::Name) {
-            setName(XML::readAttributeString(r, XML::Attrib::value));
+            setName(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // data
diff --git a/GUI/Model/File/DatafilesSet.cpp b/GUI/Model/File/DatafilesSet.cpp
index 6939c97fcdd..547e3303719 100644
--- a/GUI/Model/File/DatafilesSet.cpp
+++ b/GUI/Model/File/DatafilesSet.cpp
@@ -65,8 +65,7 @@ void DatafilesSet::readFrom(QXmlStreamReader* r)
 
             // selected index
         } else if (tag == Tag::CurrentIndex) {
-            size_t i;
-            XML::readAttribute(r, XML::Attrib::value, &i);
+            size_t i = XML::readSize(r, XML::Attrib::value);
             setCurrentIndex(i);
             XML::gotoEndElementOfTag(r, tag);
 
diff --git a/GUI/Model/Job/JobsSet.cpp b/GUI/Model/Job/JobsSet.cpp
index 561398d7406..b1e92bb91a0 100644
--- a/GUI/Model/Job/JobsSet.cpp
+++ b/GUI/Model/Job/JobsSet.cpp
@@ -72,8 +72,7 @@ void JobsSet::readFrom(QXmlStreamReader* r)
 
             // selected index
         } else if (tag == Tag::CurrentIndex) {
-            size_t i;
-            XML::readAttribute(r, XML::Attrib::value, &i);
+            size_t i = XML::readSize(r, XML::Attrib::value);
             setCurrentIndex(i);
             XML::gotoEndElementOfTag(r, tag);
 
diff --git a/GUI/Model/Mask/MaskItems.cpp b/GUI/Model/Mask/MaskItems.cpp
index 17c18a14f93..90e9536ecf0 100644
--- a/GUI/Model/Mask/MaskItems.cpp
+++ b/GUI/Model/Mask/MaskItems.cpp
@@ -91,17 +91,17 @@ void MaskItem::readFrom(QXmlStreamReader* r)
 
         // name
         if (tag == Tag::Name) {
-            setName(XML::readAttributeString(r, XML::Attrib::value));
+            setName(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // mask value
         } else if (tag == Tag::MaskValue) {
-            XML::readAttribute(r, XML::Attrib::value, &m_mask_value);
+            m_mask_value = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // is visible?
         } else if (tag == Tag::IsVisible) {
-            XML::readAttribute(r, XML::Attrib::value, &m_is_visible);
+            m_is_visible = XML::readBool(r, XML::Attrib::value);
             m_was_visible = m_is_visible;
             XML::gotoEndElementOfTag(r, tag);
 
@@ -302,8 +302,7 @@ void PolygonItem::readFrom(QXmlStreamReader* r)
 
             // is closed?
         } else if (tag == Tag::IsClosed) {
-            XML::readAttribute(r, XML::Attrib::value,
-                               &m_is_closed); // TODO do we need to read 'isClosed'?
+            m_is_closed = XML::readBool(r, XML::Attrib::value); // TODO need to read 'isClosed'?
             XML::gotoEndElementOfTag(r, tag);
 
             // polygon point
diff --git a/GUI/Model/Mask/PointItem.cpp b/GUI/Model/Mask/PointItem.cpp
index 71ad136197e..3b0124db016 100644
--- a/GUI/Model/Mask/PointItem.cpp
+++ b/GUI/Model/Mask/PointItem.cpp
@@ -43,11 +43,6 @@ void PointItem::readFrom(QXmlStreamReader* r)
     const uint version = XML::readUInt(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    double xPos = 0;
-    XML::readAttribute(r, XML::Attrib::xPos, &xPos);
-    setPosX(xPos);
-
-    double yPos = 0;
-    XML::readAttribute(r, XML::Attrib::yPos, &yPos);
-    setPosY(yPos);
+    setPosX(XML::readDouble(r, XML::Attrib::xPos));
+    setPosY(XML::readDouble(r, XML::Attrib::yPos));
 }
diff --git a/GUI/Model/Material/MaterialItem.cpp b/GUI/Model/Material/MaterialItem.cpp
index 28c13829c14..a4890efe171 100644
--- a/GUI/Model/Material/MaterialItem.cpp
+++ b/GUI/Model/Material/MaterialItem.cpp
@@ -213,7 +213,7 @@ void MaterialItem::readFrom(QXmlStreamReader* r)
 
             // use refractive index?
         } else if (tag == Tag::UseRefractiveIndex) {
-            XML::readAttribute(r, XML::Attrib::value, &m_use_refractive_index);
+            m_use_refractive_index = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // delta
diff --git a/GUI/Model/Mini/MinimizerItems.cpp b/GUI/Model/Mini/MinimizerItems.cpp
index dfc55713057..3d6289bc9ea 100644
--- a/GUI/Model/Mini/MinimizerItems.cpp
+++ b/GUI/Model/Mini/MinimizerItems.cpp
@@ -12,6 +12,7 @@
 //
 //  ************************************************************************************************
 
+#include "GUI/Model/Mini/MinimizerItems.h"
 #include "Base/Util/Assert.h"
 #include "Fit/Suite/GSLLevenbergMarquardtMinimizer.h"
 #include "Fit/Suite/GSLMultiMinimizer.h"
@@ -19,7 +20,6 @@
 #include "Fit/Suite/Minuit2Minimizer.h"
 #include "Fit/Suite/SimAnMinimizer.h"
 #include "GUI/Model/Mini/MinimizerItemCatalog.h"
-#include "GUI/Model/Mini/MinimizerItems.h"
 #include "GUI/Model/Util/UtilXML.h"
 #include "Sim/Fitting/ObjectiveMetric.h"
 #include "Sim/Fitting/ObjectiveMetricUtil.h"
@@ -500,27 +500,27 @@ void MinuitMinimizerItem::readFrom(QXmlStreamReader* r)
 
             // strategy
         } else if (tag == Tag::Strategy) {
-            XML::readAttribute(r, XML::Attrib::value, &m_strategy);
+            m_strategy = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // error definition
         } else if (tag == Tag::ErrorDef) {
-            XML::readAttribute(r, XML::Attrib::value, &m_error_def);
+            m_error_def = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // tolerance
         } else if (tag == Tag::Tolerance) {
-            XML::readAttribute(r, XML::Attrib::value, &m_tolerance);
+            m_tolerance = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // precision
         } else if (tag == Tag::Precision) {
-            XML::readAttribute(r, XML::Attrib::value, &m_precision);
+            m_precision = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // max function calls
         } else if (tag == Tag::MaxFuncCalls) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max_func_calls);
+            m_max_func_calls = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
@@ -591,7 +591,7 @@ void GSLMultiMinimizerItem::readFrom(QXmlStreamReader* r)
 
             // max iterations
         } else if (tag == Tag::MaxIterations) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max_iterations);
+            m_max_iterations = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
@@ -673,22 +673,22 @@ void GeneticMinimizerItem::readFrom(QXmlStreamReader* r)
 
         // tolerance
         if (tag == Tag::Tolerance) {
-            XML::readAttribute(r, XML::Attrib::value, &m_tolerance);
+            m_tolerance = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // max iterations
         } else if (tag == Tag::MaxIterations) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max_iterations);
+            m_max_iterations = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // population size
         } else if (tag == Tag::PopulationSize) {
-            XML::readAttribute(r, XML::Attrib::value, &m_population_size);
+            m_population_size = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // random seed
         } else if (tag == Tag::RandomSeed) {
-            XML::readAttribute(r, XML::Attrib::value, &m_random_seed);
+            m_random_seed = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
@@ -803,37 +803,37 @@ void SimAnMinimizerItem::readFrom(QXmlStreamReader* r)
 
         // max iterations
         if (tag == Tag::MaxIterations) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max_iterations);
+            m_max_iterations = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // iterations at each temperature
         } else if (tag == Tag::IterationsAtTemp) {
-            XML::readAttribute(r, XML::Attrib::value, &m_iterations_at_temp);
+            m_iterations_at_temp = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // step size
         } else if (tag == Tag::StepSize) {
-            XML::readAttribute(r, XML::Attrib::value, &m_step_size);
+            m_step_size = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // k
         } else if (tag == Tag::BoltzmannK) {
-            XML::readAttribute(r, XML::Attrib::value, &m_boltzmann_K);
+            m_boltzmann_K = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // T init
         } else if (tag == Tag::Tinit) {
-            XML::readAttribute(r, XML::Attrib::value, &m_boltzmann_T_init);
+            m_boltzmann_T_init = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // mu
         } else if (tag == Tag::BoltzmannMu) {
-            XML::readAttribute(r, XML::Attrib::value, &m_boltzmann__mu);
+            m_boltzmann__mu = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // T min
         } else if (tag == Tag::Tmin) {
-            XML::readAttribute(r, XML::Attrib::value, &m_boltzmann_T_min);
+            m_boltzmann_T_min = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
@@ -893,12 +893,12 @@ void GSLLMAMinimizerItem::readFrom(QXmlStreamReader* r)
 
         // tolerance
         if (tag == Tag::Tolerance) {
-            XML::readAttribute(r, XML::Attrib::value, &m_tolerance);
+            m_tolerance = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // max iterations
         } else if (tag == Tag::MaxIterations) {
-            XML::readAttribute(r, XML::Attrib::value, &m_max_iterations);
+            m_max_iterations = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Par/ParameterBackup.cpp b/GUI/Model/Par/ParameterBackup.cpp
index 64f634369bc..8a368fec637 100644
--- a/GUI/Model/Par/ParameterBackup.cpp
+++ b/GUI/Model/Par/ParameterBackup.cpp
@@ -97,8 +97,7 @@ void ParameterBackup::readValues(QXmlStreamReader* r)
 
         if (valTag == Tag::BackupValue) {
             QString link = XML::readString(r, XML::Attrib::id);
-            double d;
-            XML::readAttribute(r, XML::Attrib::value, &d);
+            double d = XML::readDouble(r, XML::Attrib::value);
             m_backup_values[link] = d;
             XML::gotoEndElementOfTag(r, valTag);
 
diff --git a/GUI/Model/Par/ParameterTreeItems.cpp b/GUI/Model/Par/ParameterTreeItems.cpp
index c58b18016c7..720243f201a 100644
--- a/GUI/Model/Par/ParameterTreeItems.cpp
+++ b/GUI/Model/Par/ParameterTreeItems.cpp
@@ -78,7 +78,7 @@ void ParameterLabelItem::readFrom(QXmlStreamReader* r)
             QString title;
             title = XML::readString(r, XML::Attrib::name);
             if (title == m_title)
-                XML::readAttribute(r, XML::Attrib::collapsed, &m_collapsed);
+                m_collapsed = XML::readBool(r, XML::Attrib::collapsed);
             XML::gotoEndElementOfTag(r, tag);
             break;
         }
@@ -186,7 +186,7 @@ void ParameterContainerItem::readFrom(QXmlStreamReader* r)
 
         // selected index
         if (tag == Tag::CurrentIndex) {
-            XML::readAttribute(r, XML::Attrib::value, &m_current_index);
+            m_current_index = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // backups
diff --git a/GUI/Model/Sample/CompoundItem.cpp b/GUI/Model/Sample/CompoundItem.cpp
index c2619450684..68df155ac16 100644
--- a/GUI/Model/Sample/CompoundItem.cpp
+++ b/GUI/Model/Sample/CompoundItem.cpp
@@ -104,7 +104,7 @@ void CompoundItem::readFrom(QXmlStreamReader* r)
 
             // compound groupbox: is expanded?
         } else if (tag == Tag::ExpandCompoundGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandCompound);
+            expandCompound = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/CoreAndShellItem.cpp b/GUI/Model/Sample/CoreAndShellItem.cpp
index f1d9f9f1985..484c10845fc 100644
--- a/GUI/Model/Sample/CoreAndShellItem.cpp
+++ b/GUI/Model/Sample/CoreAndShellItem.cpp
@@ -111,17 +111,17 @@ void CoreAndShellItem::readFrom(QXmlStreamReader* r)
 
             // main groupbox: is expanded?
         } else if (tag == Tag::ExpandMainGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandMain);
+            expandMain = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // core groupbox: is expanded?
         } else if (tag == Tag::ExpandCoreGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandCore);
+            expandCore = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // shell groupbox: is expanded?
         } else if (tag == Tag::ExpandShellGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandShell);
+            expandShell = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/InterferenceItems.cpp b/GUI/Model/Sample/InterferenceItems.cpp
index ca851b4160a..5e94dcf93e3 100644
--- a/GUI/Model/Sample/InterferenceItems.cpp
+++ b/GUI/Model/Sample/InterferenceItems.cpp
@@ -193,7 +193,7 @@ void Interference2DAbstractLatticeItem::readFrom(QXmlStreamReader* r)
 
             // integrate over xi?
         } else if (tag == Tag::IntegrateOverXi) {
-            XML::readAttribute(r, XML::Attrib::value, &m_xi_integration);
+            m_xi_integration = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // lattice type
diff --git a/GUI/Model/Sample/LayerItem.cpp b/GUI/Model/Sample/LayerItem.cpp
index 86b69f8bab4..2403fd4122a 100644
--- a/GUI/Model/Sample/LayerItem.cpp
+++ b/GUI/Model/Sample/LayerItem.cpp
@@ -202,7 +202,7 @@ void LayerItem::readFrom(QXmlStreamReader* r)
 
             // layer groupbox: is expanded?
         } else if (tag == Tag::ExpandLayerGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandLayer);
+            expandLayer = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/MesocrystalItem.cpp b/GUI/Model/Sample/MesocrystalItem.cpp
index 745e4865158..19df325472e 100644
--- a/GUI/Model/Sample/MesocrystalItem.cpp
+++ b/GUI/Model/Sample/MesocrystalItem.cpp
@@ -141,7 +141,7 @@ void MesocrystalItem::readFrom(QXmlStreamReader* r)
 
             // mesocrystal groupbox: is expanded?
         } else if (tag == Tag::ExpandMesocrystalGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandMesocrystal);
+            expandMesocrystal = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp
index 18fb1779de9..2a096007b02 100644
--- a/GUI/Model/Sample/ParticleItem.cpp
+++ b/GUI/Model/Sample/ParticleItem.cpp
@@ -94,7 +94,7 @@ void ParticleItem::readFrom(QXmlStreamReader* r)
 
             // particle groupbox: is expanded?
         } else if (tag == Tag::ExpandParticleGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandParticle);
+            expandParticle = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/ParticleLayoutItem.cpp b/GUI/Model/Sample/ParticleLayoutItem.cpp
index 164cbfbd747..099fd734292 100644
--- a/GUI/Model/Sample/ParticleLayoutItem.cpp
+++ b/GUI/Model/Sample/ParticleLayoutItem.cpp
@@ -160,12 +160,12 @@ void ParticleLayoutItem::readFrom(QXmlStreamReader* r)
 
             // layout groupbox: is expanded?
         } else if (tag == Tag::ExpandLayoutGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandParticleLayout);
+            expandParticleLayout = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // interference groupbox: is expanded?
         } else if (tag == Tag::ExpandInterferenceGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandInterference);
+            expandInterference = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/SampleItem.cpp b/GUI/Model/Sample/SampleItem.cpp
index b2d6bdcb121..f2d653f232e 100644
--- a/GUI/Model/Sample/SampleItem.cpp
+++ b/GUI/Model/Sample/SampleItem.cpp
@@ -178,12 +178,12 @@ void SampleItem::readFrom(QXmlStreamReader* r)
 
         // sample name
         if (tag == Tag::Name) {
-            setName(XML::readAttributeString(r, XML::Attrib::value));
+            setName(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // description
         } else if (tag == Tag::Description) {
-            setDescription(XML::readAttributeString(r, XML::Attrib::value));
+            setDescription(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // cross-correlation length
@@ -208,7 +208,7 @@ void SampleItem::readFrom(QXmlStreamReader* r)
 
             // info groupbox: is expanded?
         } else if (tag == Tag::ExpandInfoGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandInfo);
+            expandInfo = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sample/SamplesSet.cpp b/GUI/Model/Sample/SamplesSet.cpp
index ada352a2f9e..e8622384d2f 100644
--- a/GUI/Model/Sample/SamplesSet.cpp
+++ b/GUI/Model/Sample/SamplesSet.cpp
@@ -64,8 +64,7 @@ void SamplesSet::readFrom(QXmlStreamReader* r)
 
             // selected index
         } else if (tag == Tag::CurrentIndex) {
-            size_t i;
-            XML::readAttribute(r, XML::Attrib::value, &i);
+            size_t i = XML::readSize(r, XML::Attrib::value);
             setCurrentIndex(i);
             XML::gotoEndElementOfTag(r, tag);
 
diff --git a/GUI/Model/Sim/InstrumentItems.cpp b/GUI/Model/Sim/InstrumentItems.cpp
index 81cc8cec39b..cefe4f4289c 100644
--- a/GUI/Model/Sim/InstrumentItems.cpp
+++ b/GUI/Model/Sim/InstrumentItems.cpp
@@ -64,7 +64,7 @@ const QString ExpandBeamParametersGroupbox("ExpandBeamParametersGroupbox");
 const QString ExpandDetectorGroupbox("ExpandDetectorGroupbox");
 const QString ExpandEnvironmentGroupbox("ExpandEnvironmentGroupbox");
 const QString ExpandInfoGroupbox("ExpandInfoGroupbox");
-const QString ExpandPolarizerAlanyzerGroupbox("ExpandPolarizerAlanyzerGroupbox");
+const QString ExpandPolarizerAnalyzerGroupbox("ExpandPolarizerAnalyzerGroupbox");
 const QString Id("Id");
 const QString Name("Name");
 const QString Polarization("Polarization"); // OBSOLETE since v21
@@ -173,8 +173,8 @@ void InstrumentItem::writeTo(QXmlStreamWriter* w) const
     w->writeEndElement();
 
     // polarizer analyzer groupbox: is expanded?
-    w->writeStartElement(Tag::ExpandPolarizerAlanyzerGroupbox);
-    XML::writeAttribute(w, XML::Attrib::value, expandPolarizerAlanyzer);
+    w->writeStartElement(Tag::ExpandPolarizerAnalyzerGroupbox);
+    XML::writeAttribute(w, XML::Attrib::value, expandPolarizerAnalyzer);
     w->writeEndElement();
 
     // environment groupbox: is expanded?
@@ -202,23 +202,23 @@ void InstrumentItem::readFrom(QXmlStreamReader* r)
 
             // name
         } else if (tag == Tag::Name) {
-            setName(XML::readAttributeString(r, XML::Attrib::value));
+            setName(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // description
         } else if (tag == Tag::Description) {
-            setDescription(XML::readAttributeString(r, XML::Attrib::value));
+            setDescription(XML::readString(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
             // with polarizer or analyzer? (OBSOLETE since v21 (version == 2))
         } else if (version == 1 && tag == Tag::WithPolarizerAnalyzer) {
-            XML::readAttribute(r, XML::Attrib::value, &m_with_polarizer);
+            m_with_polarizer = XML::readBool(r, XML::Attrib::value);
             m_with_analyzer = m_with_polarizer;
             XML::gotoEndElementOfTag(r, tag);
 
             // with polarizer?
         } else if (tag == Tag::WithPolarizer) {
-            XML::readAttribute(r, XML::Attrib::value, &m_with_polarizer);
+            m_with_polarizer = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // polarization (alternate tag OBSOLETE since v21 (version == 2))
@@ -228,7 +228,7 @@ void InstrumentItem::readFrom(QXmlStreamReader* r)
 
             // with analyzer?
         } else if (tag == Tag::WithAnalyzer) {
-            XML::readAttribute(r, XML::Attrib::value, &m_with_analyzer);
+            m_with_analyzer = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // analyzer
@@ -256,22 +256,22 @@ void InstrumentItem::readFrom(QXmlStreamReader* r)
 
             // info groupbox: is expanded?
         } else if (tag == Tag::ExpandInfoGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandInfo);
+            expandInfo = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // polarizer analyzer groupbox: is expanded?
-        } else if (tag == Tag::ExpandPolarizerAlanyzerGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandPolarizerAlanyzer);
+        } else if (tag == Tag::ExpandPolarizerAnalyzerGroupbox) {
+            expandPolarizerAnalyzer = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // environment groupbox: is expanded?
         } else if (tag == Tag::ExpandEnvironmentGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandEnvironment);
+            expandEnvironment = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // detector groupbox: is expanded?
         } else if (tag == Tag::ExpandDetectorGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandDetector);
+            expandDetector = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sim/InstrumentItems.h b/GUI/Model/Sim/InstrumentItems.h
index 739296844db..d82512d88a1 100644
--- a/GUI/Model/Sim/InstrumentItems.h
+++ b/GUI/Model/Sim/InstrumentItems.h
@@ -86,7 +86,7 @@ public:
 
     bool expandDetector = true;
     bool expandInfo = true;
-    bool expandPolarizerAlanyzer = true;
+    bool expandPolarizerAnalyzer = true;
     bool expandEnvironment = true;
 
 protected:
diff --git a/GUI/Model/Sim/InstrumentsSet.cpp b/GUI/Model/Sim/InstrumentsSet.cpp
index 76db67c26c3..27479b53809 100644
--- a/GUI/Model/Sim/InstrumentsSet.cpp
+++ b/GUI/Model/Sim/InstrumentsSet.cpp
@@ -61,9 +61,7 @@ void InstrumentsSet::readFrom(QXmlStreamReader* r)
 
             // selected index
         } else if (tag == Tag::CurrentIndex) {
-            size_t i;
-            XML::readAttribute(r, XML::Attrib::value, &i);
-            setCurrentIndex(i);
+            setCurrentIndex(XML::readSize(r, XML::Attrib::value));
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Sim/SimulationOptionsItem.cpp b/GUI/Model/Sim/SimulationOptionsItem.cpp
index d36750cd755..0a9fe7d05f1 100644
--- a/GUI/Model/Sim/SimulationOptionsItem.cpp
+++ b/GUI/Model/Sim/SimulationOptionsItem.cpp
@@ -109,7 +109,7 @@ void SimulationOptionsItem::readFrom(QXmlStreamReader* r)
 
         // run immediately?
         if (tag == Tag::RunImmediately) {
-            XML::readAttribute(r, XML::Attrib::value, &m_run_immediately);
+            m_run_immediately = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // number of threads
@@ -119,7 +119,7 @@ void SimulationOptionsItem::readFrom(QXmlStreamReader* r)
 
             // computation method
         } else if (tag == Tag::Analytical) {
-            XML::readAttribute(r, XML::Attrib::value, &m_computation_method_analytical);
+            m_computation_method_analytical = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // number of Monte Carlo points
@@ -129,27 +129,27 @@ void SimulationOptionsItem::readFrom(QXmlStreamReader* r)
 
             // use average materials
         } else if (tag == Tag::UseAverageMaterials) {
-            XML::readAttribute(r, XML::Attrib::value, &m_use_average_materials);
+            m_use_average_materials = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // include specular peak
         } else if (tag == Tag::IncludeSpecularPeak) {
-            XML::readAttribute(r, XML::Attrib::value, &m_include_specular_peak);
+            m_include_specular_peak = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // fast mesocrystal computation
         } else if (tag == Tag::UseFastMesoAlgorithm) {
-            XML::readAttribute(r, XML::Attrib::value, &m_use_meso_reciprocal_sum);
+            m_use_meso_reciprocal_sum = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // mesocrystal cutoff radius
         } else if (tag == Tag::MesoCutoffRadius) {
-            XML::readAttribute(r, XML::Attrib::value, &m_meso_radius_factor);
+            m_meso_radius_factor = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // advanced options groupbox: is expanded?
         } else if (tag == Tag::ExpandAdvancedOptionsGroupbox) {
-            XML::readAttribute(r, XML::Attrib::value, &expandAdvancedOptions);
+            expandAdvancedOptions = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Tune/FitParameterItem.cpp b/GUI/Model/Tune/FitParameterItem.cpp
index 35c3caf473d..78a26ca0e78 100644
--- a/GUI/Model/Tune/FitParameterItem.cpp
+++ b/GUI/Model/Tune/FitParameterItem.cpp
@@ -102,7 +102,7 @@ void FitDoubleItem::readFrom(QXmlStreamReader* r)
 
         // value
         if (tag == Tag::Value) {
-            XML::readAttribute(r, XML::Attrib::value, &m_value);
+            m_value = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
@@ -148,7 +148,7 @@ void FitEditableDoubleItem::readFrom(QXmlStreamReader* r)
 
             // is enabled?
         } else if (tag == Tag::IsEnabled) {
-            XML::readAttribute(r, XML::Attrib::value, &m_is_enabled);
+            m_is_enabled = XML::readBool(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
         } else
diff --git a/GUI/Model/Tune/FitSuiteItem.cpp b/GUI/Model/Tune/FitSuiteItem.cpp
index 68d136a45d8..ad3b457710d 100644
--- a/GUI/Model/Tune/FitSuiteItem.cpp
+++ b/GUI/Model/Tune/FitSuiteItem.cpp
@@ -103,17 +103,17 @@ void FitSuiteItem::readFrom(QXmlStreamReader* r)
 
         // update interval
         if (tag == Tag::UpdateInterval) {
-            XML::readAttribute(r, XML::Attrib::value, &m_update_interval);
+            m_update_interval = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // iterations count
         } else if (tag == Tag::IterationsCount) {
-            XML::readAttribute(r, XML::Attrib::value, &m_iter_count);
+            m_iter_count = XML::readInt(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // chi2
         } else if (tag == Tag::Chi2) {
-            XML::readAttribute(r, XML::Attrib::value, &m_chi2);
+            m_chi2 = XML::readDouble(r, XML::Attrib::value);
             XML::gotoEndElementOfTag(r, tag);
 
             // minimizer container
diff --git a/GUI/Model/Util/UtilXML.cpp b/GUI/Model/Util/UtilXML.cpp
index 438df754acb..e0b07853138 100644
--- a/GUI/Model/Util/UtilXML.cpp
+++ b/GUI/Model/Util/UtilXML.cpp
@@ -97,7 +97,7 @@ bool XML::readBool(QXmlStreamReader* reader, const QString& attributeName)
     return reader->attributes().value(attributeName).toUInt() > 0;
 }
 
-void XML::readInt(QXmlStreamReader* reader, const QString& attributeName)
+int XML::readInt(QXmlStreamReader* reader, const QString& attributeName)
 {
     return reader->attributes().value(attributeName).toInt();
 }
@@ -130,22 +130,15 @@ QColor XML::readColor(QXmlStreamReader* reader, const QString& attributeName)
 
 R3 XML::readR3(QXmlStreamReader* reader, const QString& attributeBaseName)
 {
-    double x, y, z;
-    readAttribute(reader, attributeBaseName + "X", &x);
-    readAttribute(reader, attributeBaseName + "Y", &y);
-    readAttribute(reader, attributeBaseName + "Z", &z);
+    double x = readDouble(reader, attributeBaseName + "X");
+    double y = readDouble(reader, attributeBaseName + "Y");
+    double z = readDouble(reader, attributeBaseName + "Z");
     return {x, y, z};
 }
 
 complex_t XML::readC(QXmlStreamReader* reader, const QString& attributeBaseName)
 {
-    double r, i;
-    readAttribute(reader, attributeBaseName + "Re", &r);
-    readAttribute(reader, attributeBaseName + "Im", &i);
+    double r = readDouble(reader, attributeBaseName + "Re");
+    double i = readDouble(reader, attributeBaseName + "Im");
     return {r, i};
 }
-
-QString XML::readAttributeString(QXmlStreamReader* reader, const QString& attributeName)
-{
-    return reader->attributes().value(attributeName).toString();
-}
diff --git a/GUI/Model/Util/UtilXML.h b/GUI/Model/Util/UtilXML.h
index d19b2a3cc32..2fd681e093a 100644
--- a/GUI/Model/Util/UtilXML.h
+++ b/GUI/Model/Util/UtilXML.h
@@ -69,8 +69,6 @@ QColor readColor(QXmlStreamReader* reader, const QString& attributeName);
 R3 readR3(QXmlStreamReader* reader, const QString& attributeBaseName);
 complex_t readC(QXmlStreamReader* reader, const QString& attributeBaseName);
 
-QString readAttributeString(QXmlStreamReader* reader, const QString& attributeName);
-
 } // namespace XML
 
 #endif // BORNAGAIN_GUI_MODEL_UTIL_UTILXML_H
diff --git a/GUI/View/Device/PolarizationAnalysisEditor.cpp b/GUI/View/Device/PolarizationAnalysisEditor.cpp
index cc52c1ca0a0..91cf1b405ef 100644
--- a/GUI/View/Device/PolarizationAnalysisEditor.cpp
+++ b/GUI/View/Device/PolarizationAnalysisEditor.cpp
@@ -21,7 +21,7 @@
 #include <QLabel>
 
 PolarizationAnalysisEditor::PolarizationAnalysisEditor(QWidget* parent, InstrumentItem* instrument)
-    : CollapsibleGroupBox("Polarization analysis", parent, instrument->expandPolarizerAlanyzer)
+    : CollapsibleGroupBox("Polarization analysis", parent, instrument->expandPolarizerAnalyzer)
     , m_instrument(instrument)
 {
     auto* layout = new QVBoxLayout;
-- 
GitLab