diff --git a/GUI/Model/Device/RectangularDetectorItem.h b/GUI/Model/Device/RectangularDetectorItem.h index 209ece888e32b1aa3904fd8e34791314adc62d2e..84c69a0b4f62c8977301a6f145145d5c86af4074 100644 --- a/GUI/Model/Device/RectangularDetectorItem.h +++ b/GUI/Model/Device/RectangularDetectorItem.h @@ -16,7 +16,6 @@ #define BORNAGAIN_GUI_MODEL_DEVICE_RECTANGULARDETECTORITEM_H #include "Device/Detector/RectangularDetector.h" -#include "GUI/Model/Descriptor/DoubleProperty.h" #include "GUI/Model/Descriptor/VectorProperty.h" #include "GUI/Model/Device/DetectorItems.h" diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp index 8e77332fffa78a3520e17ad15a4d167aaee9700e..ea8d8db7ab467ef5dc176accc37dca201bb15825 100644 --- a/GUI/Model/FromCore/ItemizeSample.cpp +++ b/GUI/Model/FromCore/ItemizeSample.cpp @@ -631,7 +631,7 @@ MultiLayerItem* itemizeSample(const MultiLayer& sample, const QString& nodeName) auto* result = new MultiLayerItem(); result->setSampleName(nodeName.isEmpty() ? QString::fromStdString(sample.sampleName()) : nodeName); - result->crossCorrLength().set(sample.crossCorrLength()); + result->setCrossCorLength(sample.crossCorrLength()); result->setExternalField(sample.externalField()); MaterialItems& matItems = result->materialItems(); diff --git a/GUI/Model/Model/ParameterTreeUtils.cpp b/GUI/Model/Model/ParameterTreeUtils.cpp index a7424f03ec5878c78e98784d7ce4000284dd320d..d8c4730ac9bf9b0cb8a2821a7466ffe2c596f9fc 100644 --- a/GUI/Model/Model/ParameterTreeUtils.cpp +++ b/GUI/Model/Model/ParameterTreeUtils.cpp @@ -111,7 +111,7 @@ void ParameterTreeBuilder::addSample() auto* label = new ParameterLabelItem("Sample", parameterContainer()->parameterTreeRoot()); addParameterItem(label, m_jobItem->sampleItem()->crossCorrLength()); if (allowMagneticFields()) - addParameterItem(label, m_jobItem->sampleItem()->externalFieldVector()); + addParameterItem(label, m_jobItem->sampleItem()->externalField()); int iLayer = 0; for (auto* layer : m_jobItem->sampleItem()->layers()) { diff --git a/GUI/Model/Sample/ItemWithParticles.h b/GUI/Model/Sample/ItemWithParticles.h index 390cd944668aba08ca588dba86bddc250ec05d7d..c592e60a29db5614953021f2bdcde8e0f52e7c42 100644 --- a/GUI/Model/Sample/ItemWithParticles.h +++ b/GUI/Model/Sample/ItemWithParticles.h @@ -15,7 +15,6 @@ #ifndef BORNAGAIN_GUI_MODEL_SAMPLE_ITEMWITHPARTICLES_H #define BORNAGAIN_GUI_MODEL_SAMPLE_ITEMWITHPARTICLES_H -#include "GUI/Model/Descriptor/DoubleProperty.h" #include "GUI/Model/Descriptor/SelectionProperty.h" #include "GUI/Model/Descriptor/VectorProperty.h" #include "GUI/Model/Sample/Item3D.h" diff --git a/GUI/Model/Sample/MaterialItem.cpp b/GUI/Model/Sample/MaterialItem.cpp index 80852cbe3f7e68da070e4519c79d5090ef761bd0..502c37f9034ce1f1bcc78d2330abd4d56cf43ffc 100644 --- a/GUI/Model/Sample/MaterialItem.cpp +++ b/GUI/Model/Sample/MaterialItem.cpp @@ -95,25 +95,45 @@ void MaterialItem::setScatteringLengthDensity(const complex_t sld) emit dataChanged(); } -DoubleDescriptor MaterialItem::delta() +DoubleProperty& MaterialItem::delta() +{ + return const_cast<DoubleProperty&>(const_cast<const MaterialItem*>(this)->delta()); +} + +const DoubleProperty& MaterialItem::delta() const { ASSERT(hasRefractiveIndex()); return m_delta; } -DoubleDescriptor MaterialItem::beta() +DoubleProperty& MaterialItem::beta() +{ + return const_cast<DoubleProperty&>(const_cast<const MaterialItem*>(this)->beta()); +} + +const DoubleProperty& MaterialItem::beta() const { ASSERT(hasRefractiveIndex()); return m_beta; } -DoubleDescriptor MaterialItem::sldRe() +DoubleProperty& MaterialItem::sldRe() +{ + return const_cast<DoubleProperty&>(const_cast<const MaterialItem*>(this)->sldRe()); +} + +const DoubleProperty& MaterialItem::sldRe() const { ASSERT(!hasRefractiveIndex()); return m_sldRe; } -DoubleDescriptor MaterialItem::sldIm() +DoubleProperty& MaterialItem::sldIm() +{ + return const_cast<DoubleProperty&>(const_cast<const MaterialItem*>(this)->sldIm()); +} + +const DoubleProperty& MaterialItem::sldIm() const { ASSERT(!hasRefractiveIndex()); return m_sldIm; @@ -161,10 +181,6 @@ void MaterialItem::setColor(const QColor& color) } } -R3 MaterialItem::magnetization() const -{ - return m_magnetization; -} void MaterialItem::setMagnetization(const R3& magnetization) { diff --git a/GUI/Model/Sample/MaterialItem.h b/GUI/Model/Sample/MaterialItem.h index 093e43866499337164f2d2dfe4f452cd63321a0d..b44d4c127225d7141e7285bf2e974f56acd67f4d 100644 --- a/GUI/Model/Sample/MaterialItem.h +++ b/GUI/Model/Sample/MaterialItem.h @@ -15,7 +15,6 @@ #ifndef BORNAGAIN_GUI_MODEL_SAMPLE_MATERIALITEM_H #define BORNAGAIN_GUI_MODEL_SAMPLE_MATERIALITEM_H -#include "GUI/Model/Descriptor/DoubleProperty.h" #include "GUI/Model/Descriptor/VectorProperty.h" #include <QColor> #include <QObject> @@ -52,11 +51,22 @@ public: //! Turns material into SLD based material. void setScatteringLengthDensity(complex_t sld); - DoubleDescriptor delta(); - DoubleDescriptor beta(); - DoubleDescriptor sldRe(); - DoubleDescriptor sldIm(); + DoubleProperty& delta(); + const DoubleProperty& delta() const; + + DoubleProperty& beta(); + const DoubleProperty& beta() const; + + DoubleProperty& sldRe(); + const DoubleProperty& sldRe() const; + + DoubleProperty& sldIm(); + const DoubleProperty& sldIm() const; + + VectorProperty& magnetizationVector() { return m_magnetization; } const VectorProperty& magnetizationVector() const { return m_magnetization; } + R3 magnetization() const { return m_magnetization; } + void setMagnetization(const R3& magnetization); /// \return true if refractive index was given, otherwise SLD was given bool hasRefractiveIndex() const; @@ -70,9 +80,6 @@ public: QColor color() const; void setColor(const QColor& color); - R3 magnetization() const; - void setMagnetization(const R3& magnetization); - std::unique_ptr<Material> createMaterial() const; void serialize(Streamer& s); diff --git a/GUI/Model/Sample/MultiLayerItem.cpp b/GUI/Model/Sample/MultiLayerItem.cpp index 428a82c1733a6fbf41d3b7ed795c13c8c2181789..32a371ce4b1c77290e9c32ec6529e6d4fa7cdc62 100644 --- a/GUI/Model/Sample/MultiLayerItem.cpp +++ b/GUI/Model/Sample/MultiLayerItem.cpp @@ -34,9 +34,9 @@ const QString ExternalField("ExternalField"); MultiLayerItem::MultiLayerItem() { m_name = "Sample"; - m_crossCorrelationLength.init("Cross-correlation length", - "Cross correlation length of roughnesses between interfaces", 0.0, - Unit::nanometer, 5, RealLimits::nonnegative(), "cross"); + m_crossCorrelationLength.init( + "Cross-correlation length", "Cross correlation length of roughnesses between interfaces", + 0.0, Unit::nanometer, 5 /* decimals */, RealLimits::nonnegative(), "cross"); m_externalField.init("External field", "External field (A/m)", "A/m", "extField"); } @@ -61,41 +61,6 @@ void MultiLayerItem::addStandardMaterials() m_materials.addRefractiveMaterial("Substrate", 6e-6, 2e-8); } -QString MultiLayerItem::sampleName() const -{ - return m_name; -} - -void MultiLayerItem::setSampleName(const QString& name) -{ - m_name = name; -} - -QString MultiLayerItem::description() const -{ - return m_description; -} - -void MultiLayerItem::setDescription(const QString& description) -{ - m_description = description; -} - -DoubleDescriptor MultiLayerItem::crossCorrLength() const -{ - return m_crossCorrelationLength; -} - -R3 MultiLayerItem::externalField() const -{ - return m_externalField; -} - -void MultiLayerItem::setExternalField(const R3& externalField) -{ - m_externalField.set(externalField); -} - QVector<LayerItem*> MultiLayerItem::layers() const { return m_layers; @@ -167,13 +132,3 @@ void MultiLayerItem::serialize(Streamer& s) } } } - -const MaterialItems& MultiLayerItem::materialItems() const -{ - return m_materials; -} - -MaterialItems& MultiLayerItem::materialItems() -{ - return m_materials; -} diff --git a/GUI/Model/Sample/MultiLayerItem.h b/GUI/Model/Sample/MultiLayerItem.h index 1287ed48b8e0a1b02503273d636ad03ca617e05c..f55205b073a3ede0d882d0e030fe0cf7edfc3e90 100644 --- a/GUI/Model/Sample/MultiLayerItem.h +++ b/GUI/Model/Sample/MultiLayerItem.h @@ -15,7 +15,6 @@ #ifndef BORNAGAIN_GUI_MODEL_SAMPLE_MULTILAYERITEM_H #define BORNAGAIN_GUI_MODEL_SAMPLE_MULTILAYERITEM_H -#include "GUI/Model/Descriptor/DoubleProperty.h" #include "GUI/Model/Descriptor/VectorProperty.h" #include "GUI/Model/Sample/Item3D.h" #include "GUI/Model/Sample/MaterialItems.h" @@ -39,17 +38,19 @@ public: void addStandardMaterials(); - QString sampleName() const; - void setSampleName(const QString& name); + QString sampleName() const { return m_name; } + void setSampleName(const QString& s) { m_name = s; } - QString description() const; - void setDescription(const QString& description); + QString description() const { return m_description; } + void setDescription(const QString& s) { m_description = s; } - DoubleDescriptor crossCorrLength() const; + DoubleProperty& crossCorrLength() { return m_crossCorrelationLength; } + const DoubleProperty& crossCorrLength() const { return m_crossCorrelationLength; } + void setCrossCorLength(double d) { m_crossCorrelationLength.set(d); } - R3 externalField() const; - void setExternalField(const R3& externalField); - const VectorProperty& externalFieldVector() const { return m_externalField; } + VectorProperty& externalField() { return m_externalField; } + const VectorProperty& externalField() const { return m_externalField; } + void setExternalField(const R3& r) { m_externalField.set(r); } QVector<LayerItem*> layers() const; @@ -66,8 +67,8 @@ public: void readContentFrom(QXmlStreamReader* reader); void serialize(Streamer& s); - MaterialItems& materialItems(); - const MaterialItems& materialItems() const; + MaterialItems& materialItems() { return m_materials; } + const MaterialItems& materialItems() const { return m_materials; } private: QString m_name; diff --git a/GUI/View/SampleDesigner/MultiLayerForm.cpp b/GUI/View/SampleDesigner/MultiLayerForm.cpp index 78f2cc0f2a38fb0ffe106a686dfe55b865318184..99af67127df0951a895fda08c484305da9459d20 100644 --- a/GUI/View/SampleDesigner/MultiLayerForm.cpp +++ b/GUI/View/SampleDesigner/MultiLayerForm.cpp @@ -86,7 +86,7 @@ MultiLayerForm::MultiLayerForm(QWidget* parent, MultiLayerItem* sampleItem, [=]() { m_ec->setSampleDescription(descriptionEdit->toPlainText()); }); layouter.addValue(sampleItem->crossCorrLength()); - layouter.addVector(sampleItem->externalFieldVector(), false); + layouter.addVector(sampleItem->externalField(), false); auto* collapser = GroupBoxCollapser::installIntoGroupBox(props, false); auto* showInRealspaceAction = ActionFactory::createShowInRealspaceAction(