From e7063be5778feade81cdfcf1b45ef2636fdc8bcb Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Tue, 29 Nov 2022 18:39:53 +0100 Subject: [PATCH] InterferenceItems: provide simple setters and DoubleProperty& interfaces --- GUI/Model/FromCore/ItemizeSample.cpp | 18 ++++----- GUI/Model/Model/ParameterTreeUtils.cpp | 6 --- GUI/Model/Model/ParameterTreeUtils.h | 2 - GUI/Model/Sample/InterferenceItems.cpp | 12 +++--- GUI/Model/Sample/InterferenceItems.h | 52 ++++++++++++++++++++------ 5 files changed, 55 insertions(+), 35 deletions(-) diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp index 7c4023328a2..8e77332fffa 100644 --- a/GUI/Model/FromCore/ItemizeSample.cpp +++ b/GUI/Model/FromCore/ItemizeSample.cpp @@ -202,7 +202,7 @@ void set2DLatticeParameters(Interference2DAbstractLatticeItem* parent, const Lat void setPositionVariance(InterferenceItem* parent, const IInterference& iff) { double pos_var = iff.positionVariance(); - parent->positionVariance().set(pos_var); + parent->setPositionVariance(pos_var); } template <typename T> @@ -216,8 +216,8 @@ T* addFormFactorItem(std::variant<ParticleItem*, MesocrystalItem*> parent) void set1DLatticeItem(Interference1DLatticeItem* parent, const Interference1DLattice& sample) { - parent->length().set(sample.length()); - parent->rotationAngle().set(Units::rad2deg(sample.xi())); + parent->setLength(sample.length()); + parent->setRotationAngle(Units::rad2deg(sample.xi())); const auto* pdf = OnlyChildOfType<IProfile1D>(sample); setDecayFunction1D(parent, pdf); @@ -268,18 +268,18 @@ void setFinite2DLatticeItem(InterferenceFinite2DLatticeItem* parent, void setHardDiskItem(InterferenceHardDiskItem* parent, const InterferenceHardDisk& sample) { - parent->radius().set(sample.radius()); - parent->density().set(sample.density()); + parent->setRadius(sample.radius()); + parent->setDensity(sample.density()); setPositionVariance(parent, sample); } void setRadialParacrystalItem(InterferenceRadialParacrystalItem* parent, const InterferenceRadialParacrystal& sample) { - parent->peakDistance().set(sample.peakDistance()); - parent->dampingLength().set(sample.dampingLength()); - parent->domainSize().set(sample.domainSize()); - parent->kappa().set(sample.kappa()); + parent->setPeakDistance(sample.peakDistance()); + parent->setDampingLength(sample.dampingLength()); + parent->setDomainSize(sample.domainSize()); + parent->setKappa(sample.kappa()); const auto* ipdf = OnlyChildOfType<IProfile1D>(sample); setPDF1D(parent, ipdf); diff --git a/GUI/Model/Model/ParameterTreeUtils.cpp b/GUI/Model/Model/ParameterTreeUtils.cpp index 41f9b06d180..a7424f03ec5 100644 --- a/GUI/Model/Model/ParameterTreeUtils.cpp +++ b/GUI/Model/Model/ParameterTreeUtils.cpp @@ -158,12 +158,6 @@ void ParameterTreeBuilder::addParameterItem(ParameterLabelItem* parent, const Ve addParameterItem(label, d.z()); } -void ParameterTreeBuilder::addParameterItem(ParameterLabelItem* parent, - const std::variant<VectorProperty, DoubleDescriptor>& v) -{ - std::visit([=](auto const& e) { addParameterItem(parent, e); }, v); -} - ParameterContainerItem* ParameterTreeBuilder::parameterContainer() { return m_jobItem->parameterContainerItem(); diff --git a/GUI/Model/Model/ParameterTreeUtils.h b/GUI/Model/Model/ParameterTreeUtils.h index 737747dc621..114decb0b03 100644 --- a/GUI/Model/Model/ParameterTreeUtils.h +++ b/GUI/Model/Model/ParameterTreeUtils.h @@ -55,8 +55,6 @@ private: void addParameterItem(ParameterLabelItem* parent, const DoubleDescriptor& d, const QString& label = QString()); void addParameterItem(ParameterLabelItem* parent, const VectorProperty& d); - void addParameterItem(ParameterLabelItem* parent, - const std::variant<VectorProperty, DoubleDescriptor>& v); ParameterContainerItem* parameterContainer(); bool allowMagneticFields() const; diff --git a/GUI/Model/Sample/InterferenceItems.cpp b/GUI/Model/Sample/InterferenceItems.cpp index ebda5c93f89..04b45db401c 100644 --- a/GUI/Model/Sample/InterferenceItems.cpp +++ b/GUI/Model/Sample/InterferenceItems.cpp @@ -69,7 +69,7 @@ std::unique_ptr<IInterference> Interference1DLatticeItem::createInterference() c auto result = std::make_unique<Interference1DLattice>(m_length, Units::deg2rad(m_rotationAngle)); result->setDecayFunction(*m_decayFunction->createProfile()); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return std::unique_ptr<IInterference>(result.release()); } @@ -108,7 +108,7 @@ std::unique_ptr<IInterference> Interference2DLatticeItem::createInterference() c result->setDecayFunction(*m_decayFunction->createProfile()); result->setIntegrationOverXi(xiIntegration()); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return std::unique_ptr<IInterference>(result.release()); } @@ -150,7 +150,7 @@ std::unique_ptr<IInterference> Interference2DParacrystalItem::createInterference result->setDomainSizes(m_domainSize1, m_domainSize2); result->setIntegrationOverXi(xiIntegration()); result->setProbabilityDistributions(*m_pdf1->createProfile(), *m_pdf2->createProfile()); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return std::unique_ptr<IInterference>(result.release()); } @@ -181,7 +181,7 @@ std::unique_ptr<IInterference> InterferenceFinite2DLatticeItem::createInterferen m_domainSize1, m_domainSize2); result->setIntegrationOverXi(xiIntegration()); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return result; } @@ -209,7 +209,7 @@ InterferenceHardDiskItem::InterferenceHardDiskItem() std::unique_ptr<IInterference> InterferenceHardDiskItem::createInterference() const { auto result = std::make_unique<InterferenceHardDisk>(m_radius, m_density); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return std::unique_ptr<IInterference>(result.release()); } @@ -244,7 +244,7 @@ std::unique_ptr<IInterference> InterferenceRadialParacrystalItem::createInterfer result->setKappa(m_kappa); auto pdf = m_pdf->createProfile(); result->setProbabilityDistribution(*pdf); - result->setPositionVariance(positionVariance()); + result->setPositionVariance(m_positionVariance); return std::unique_ptr<IInterference>(result.release()); } diff --git a/GUI/Model/Sample/InterferenceItems.h b/GUI/Model/Sample/InterferenceItems.h index f4525349268..f36285f74fe 100644 --- a/GUI/Model/Sample/InterferenceItems.h +++ b/GUI/Model/Sample/InterferenceItems.h @@ -30,7 +30,9 @@ public: virtual std::unique_ptr<IInterference> createInterference() const = 0; virtual void serialize(Streamer& s) = 0; - DoubleDescriptor positionVariance() const { return m_positionVariance; } + DoubleProperty& positionVariance() { return m_positionVariance; } + const DoubleProperty& positionVariance() const { return m_positionVariance; } + void setPositionVariance(double v) { m_positionVariance.set(v); } protected: InterferenceItem(); @@ -47,8 +49,13 @@ public: std::unique_ptr<IInterference> createInterference() const override; void serialize(Streamer& s) override; - DoubleDescriptor length() const { return m_length; } - DoubleDescriptor rotationAngle() const { return m_rotationAngle; } + DoubleProperty& length() { return m_length; } + const DoubleProperty& length() const { return m_length; } + void setLength(double v) { m_length.set(v); } + + DoubleProperty& rotationAngle() { return m_rotationAngle; } + const DoubleProperty& rotationAngle() const { return m_rotationAngle; } + void setRotationAngle(double v) { m_rotationAngle.set(v); } void setDecayFunction(Profile1DItem* p) { m_decayFunction.set(p); } SelectionDescriptor<Profile1DItem*> decayFunction() const { return m_decayFunction; } @@ -99,12 +106,16 @@ public: std::unique_ptr<IInterference> createInterference() const override; void serialize(Streamer& s) override; - DoubleDescriptor dampingLength() const { return m_dampingLength; } + DoubleProperty& dampingLength() { return m_dampingLength; } + const DoubleProperty& dampingLength() const { return m_dampingLength; } void setDampingLength(double dampingLength) { m_dampingLength.set(dampingLength); } - DoubleDescriptor domainSize1() const { return m_domainSize1; } + DoubleProperty& domainSize1() { return m_domainSize1; } + const DoubleProperty& domainSize1() const { return m_domainSize1; } void setDomainSize1(double size) { m_domainSize1.set(size); } - DoubleDescriptor domainSize2() const { return m_domainSize2; } + + DoubleProperty& domainSize2() { return m_domainSize2; } + const DoubleProperty& domainSize2() const { return m_domainSize2; } void setDomainSize2(double size) { m_domainSize2.set(size); } SelectionDescriptor<Profile2DItem*> probabilityDistribution1() const { return m_pdf1; } @@ -148,8 +159,13 @@ public: std::unique_ptr<IInterference> createInterference() const override; void serialize(Streamer& s) override; - DoubleDescriptor radius() const { return m_radius; } - DoubleDescriptor density() const { return m_density; } + DoubleProperty& radius() { return m_radius; } + const DoubleProperty& radius() const { return m_radius; } + void setRadius(double v) { m_radius.set(v); } + + DoubleProperty& density() { return m_density; } + const DoubleProperty& density() const { return m_density; } + void setDensity(double v) { m_density.set(v); } private: DoubleProperty m_radius; @@ -164,10 +180,22 @@ public: std::unique_ptr<IInterference> createInterference() const override; void serialize(Streamer& s) override; - DoubleDescriptor peakDistance() const { return m_peakDistance; } - DoubleDescriptor dampingLength() const { return m_dampingLength; } - DoubleDescriptor domainSize() const { return m_domainSize; } - DoubleDescriptor kappa() const { return m_kappa; } + DoubleProperty& peakDistance() { return m_peakDistance; } + const DoubleProperty& peakDistance() const { return m_peakDistance; } + void setPeakDistance(double v) { m_peakDistance.set(v); } + + DoubleProperty& dampingLength() { return m_dampingLength; } + const DoubleProperty& dampingLength() const { return m_dampingLength; } + void setDampingLength(double v) { m_dampingLength.set(v); } + + DoubleProperty& domainSize() { return m_domainSize; } + const DoubleProperty& domainSize() const { return m_domainSize; } + void setDomainSize(double v) { m_domainSize.set(v); } + + DoubleProperty& kappa() { return m_kappa; } + const DoubleProperty& kappa() const { return m_kappa; } + void setKappa(double v) { m_kappa.set(v); } + SelectionDescriptor<Profile1DItem*> probabilityDistribution() const { return m_pdf; } void setPDFType(Profile1DItem* p) { m_pdf.set(p); } -- GitLab