From ee6addb93be2ef2dba2c760b98ed287d87b3b6cf Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <gennady.pospelov@gmail.com> Date: Wed, 20 Jan 2021 18:20:37 +0100 Subject: [PATCH] Introduce accessors for Particle's position --- GUI/coregui/Models/MesoCrystalItem.cpp | 5 +++++ GUI/coregui/Models/MesoCrystalItem.h | 3 +++ GUI/coregui/Models/ParticleCompositionItem.cpp | 6 ++++++ GUI/coregui/Models/ParticleCompositionItem.h | 5 +++++ GUI/coregui/Models/ParticleCoreShellItem.cpp | 6 ++++++ GUI/coregui/Models/ParticleCoreShellItem.h | 5 +++++ GUI/coregui/Models/ParticleItem.cpp | 8 +++++++- GUI/coregui/Models/ParticleItem.h | 3 +++ 8 files changed, 40 insertions(+), 1 deletion(-) diff --git a/GUI/coregui/Models/MesoCrystalItem.cpp b/GUI/coregui/Models/MesoCrystalItem.cpp index 209e1af803f..64d8a48c7e9 100644 --- a/GUI/coregui/Models/MesoCrystalItem.cpp +++ b/GUI/coregui/Models/MesoCrystalItem.cpp @@ -105,6 +105,11 @@ MesoCrystalItem::MesoCrystalItem() : SessionGraphicsItem("MesoCrystal") }); } +VectorItem* MesoCrystalItem::positionItem() const +{ + return item<VectorItem>(ParticleItem::P_POSITION); +} + std::unique_ptr<MesoCrystal> MesoCrystalItem::createMesoCrystal() const { const Lattice3D& lattice = getLattice(); diff --git a/GUI/coregui/Models/MesoCrystalItem.h b/GUI/coregui/Models/MesoCrystalItem.h index 94a20824c68..dfd1de7b082 100644 --- a/GUI/coregui/Models/MesoCrystalItem.h +++ b/GUI/coregui/Models/MesoCrystalItem.h @@ -21,6 +21,7 @@ class IFormFactor; class IParticle; class MesoCrystal; +class VectorItem; class BA_CORE_API_ MesoCrystalItem : public SessionGraphicsItem { public: @@ -32,6 +33,8 @@ public: MesoCrystalItem(); + VectorItem* positionItem() const; + std::unique_ptr<MesoCrystal> createMesoCrystal() const; QStringList translateList(const QStringList& list) const override; diff --git a/GUI/coregui/Models/ParticleCompositionItem.cpp b/GUI/coregui/Models/ParticleCompositionItem.cpp index 341b77d8bc5..bb6bacac52b 100644 --- a/GUI/coregui/Models/ParticleCompositionItem.cpp +++ b/GUI/coregui/Models/ParticleCompositionItem.cpp @@ -19,6 +19,7 @@ #include "GUI/coregui/Models/ParticleItem.h" #include "GUI/coregui/Models/SessionItemUtils.h" #include "GUI/coregui/Models/TransformToDomain.h" +#include "GUI/coregui/Models/VectorItem.h" #include "Sample/Particle/MesoCrystal.h" #include "Sample/Particle/Particle.h" #include "Sample/Particle/ParticleCoreShell.h" @@ -67,6 +68,11 @@ ParticleCompositionItem::ParticleCompositionItem() : SessionGraphicsItem("Partic }); } +VectorItem* ParticleCompositionItem::positionItem() const +{ + return item<VectorItem>(ParticleItem::P_POSITION); +} + std::unique_ptr<ParticleComposition> ParticleCompositionItem::createParticleComposition() const { double abundance = getItemValue(ParticleItem::P_ABUNDANCE).toDouble(); diff --git a/GUI/coregui/Models/ParticleCompositionItem.h b/GUI/coregui/Models/ParticleCompositionItem.h index f8341f7cc9d..9159ee63650 100644 --- a/GUI/coregui/Models/ParticleCompositionItem.h +++ b/GUI/coregui/Models/ParticleCompositionItem.h @@ -18,10 +18,15 @@ #include "GUI/coregui/Models/SessionGraphicsItem.h" #include "Sample/Particle/ParticleComposition.h" +class VectorItem; + class BA_CORE_API_ ParticleCompositionItem : public SessionGraphicsItem { public: static const QString T_PARTICLES; ParticleCompositionItem(); + + VectorItem* positionItem() const; + std::unique_ptr<ParticleComposition> createParticleComposition() const; }; diff --git a/GUI/coregui/Models/ParticleCoreShellItem.cpp b/GUI/coregui/Models/ParticleCoreShellItem.cpp index e809572aec3..b171c54d33b 100644 --- a/GUI/coregui/Models/ParticleCoreShellItem.cpp +++ b/GUI/coregui/Models/ParticleCoreShellItem.cpp @@ -19,6 +19,7 @@ #include "GUI/coregui/Models/TransformToDomain.h" #include "GUI/coregui/utils/GUIHelpers.h" #include "Sample/Particle/Particle.h" +#include "GUI/coregui/Models/VectorItem.h" #include "Sample/Particle/ParticleCoreShell.h" namespace { @@ -63,6 +64,11 @@ ParticleCoreShellItem::ParticleCoreShellItem() : SessionGraphicsItem("ParticleCo }); } +VectorItem* ParticleCoreShellItem::positionItem() const +{ + return item<VectorItem>(ParticleItem::P_POSITION); +} + std::unique_ptr<ParticleCoreShell> ParticleCoreShellItem::createParticleCoreShell() const { double abundance = getItemValue(ParticleItem::P_ABUNDANCE).toDouble(); diff --git a/GUI/coregui/Models/ParticleCoreShellItem.h b/GUI/coregui/Models/ParticleCoreShellItem.h index 5e05b8e6a1c..b74f2b4e66d 100644 --- a/GUI/coregui/Models/ParticleCoreShellItem.h +++ b/GUI/coregui/Models/ParticleCoreShellItem.h @@ -18,12 +18,17 @@ #include "GUI/coregui/Models/SessionGraphicsItem.h" class ParticleCoreShell; +class VectorItem; class BA_CORE_API_ ParticleCoreShellItem : public SessionGraphicsItem { public: static const QString T_CORE; static const QString T_SHELL; + ParticleCoreShellItem(); + + VectorItem* positionItem() const; + std::unique_ptr<ParticleCoreShell> createParticleCoreShell() const; QVector<SessionItem*> materialPropertyItems(); }; diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp index 02d9850faa9..f5a1b391519 100644 --- a/GUI/coregui/Models/ParticleItem.cpp +++ b/GUI/coregui/Models/ParticleItem.cpp @@ -62,6 +62,12 @@ ParticleItem::ParticleItem() : SessionGraphicsItem("Particle") [this](SessionItem* newParent) { updatePropertiesAppearance(newParent); }); } + +VectorItem* ParticleItem::positionItem() const +{ + return item<VectorItem>(P_POSITION); +} + std::unique_ptr<Particle> ParticleItem::createParticle() const { auto& ffItem = groupItem<FormFactorItem>(ParticleItem::P_FORM_FACTOR); @@ -92,7 +98,7 @@ void ParticleItem::updatePropertiesAppearance(SessionItem* newParent) setItemValue(ParticleItem::P_ABUNDANCE, 1.0); getItem(ParticleItem::P_ABUNDANCE)->setEnabled(false); if (isShellParticle()) { - auto pos = item<VectorItem>(P_POSITION); + auto pos = positionItem(); pos->setVector(kvector_t()); pos->setEnabled(false); } diff --git a/GUI/coregui/Models/ParticleItem.h b/GUI/coregui/Models/ParticleItem.h index 4a642b483a0..511e2b3a8be 100644 --- a/GUI/coregui/Models/ParticleItem.h +++ b/GUI/coregui/Models/ParticleItem.h @@ -18,6 +18,7 @@ #include "GUI/coregui/Models/SessionGraphicsItem.h" class Particle; +class VectorItem; class BA_CORE_API_ ParticleItem : public SessionGraphicsItem { public: @@ -29,6 +30,8 @@ public: ParticleItem(); + VectorItem* positionItem() const; + std::unique_ptr<Particle> createParticle() const; QVector<SessionItem*> materialPropertyItems(); -- GitLab