diff --git a/GUI/Model/Descriptor/SelectionProperty.h b/GUI/Model/Descriptor/SelectionProperty.h index 5aefb8d1878fe1bac95f929da48c2a302addd424..bea0031f40e231a5365d91c01e7989b32e46c86b 100644 --- a/GUI/Model/Descriptor/SelectionProperty.h +++ b/GUI/Model/Descriptor/SelectionProperty.h @@ -137,9 +137,6 @@ public: //! Direct access to the stored pointer CatalogedType* operator->() const { return m_p.get(); } - //! Direct access to the stored pointer - CatalogedType* get() const { return m_p.get(); } - //! Directly set the new item. void set(CatalogedType* t, bool callInitializer = false) { @@ -171,6 +168,14 @@ public: } } + QString label() const {return m_label;} + QString tooltip() const {return m_tooltip;} + QStringList options() const {return m_options;} + CatalogedType* currentItem() const {return m_p.get();} + + void setCurrentIndex(int newIndex) override { currentIndexSetter(newIndex); } + int currentIndex() const override { return m_types.indexOf(Catalog::type(m_p.get())); } + private: template <typename... ArgsForCreation> void initFieldsAndSetter(const QString& label, const QString& tooltip, ArgsForCreation... argsForCreation) { @@ -211,14 +216,6 @@ private: m_descriptor.currentItem = [=] { return m_p.get(); }; } - QString label() {return m_label;} - QString tooltip() {return m_tooltip;} - QStringList options() {return m_options;} - CatalogedType* currentItem() {return m_p.get();} - - void setCurrentIndex(int newIndex) override { currentIndexSetter(newIndex); } - int currentIndex() const override { return m_types.indexOf(Catalog::type(m_p.get())); } - private: SelectionDescriptor<CatalogedType*> m_descriptor; //!< descriptor, holding attributes like label, tooltip diff --git a/GUI/Model/Device/BeamDistributionItem.cpp b/GUI/Model/Device/BeamDistributionItem.cpp index 61bc6342e68c084ea72bdfa6fdeb2aabcac7f7c0..5b12f22e2a4f77dba58a288a91fcfb86736873f7 100644 --- a/GUI/Model/Device/BeamDistributionItem.cpp +++ b/GUI/Model/Device/BeamDistributionItem.cpp @@ -56,7 +56,7 @@ double BeamDistributionItem::scaleFactor() const DistributionItem* BeamDistributionItem::distribution() const { - return m_distribution.get(); + return m_distribution.currentItem(); } SelectionDescriptor<DistributionItem*> BeamDistributionItem::distributionSelection() const diff --git a/GUI/Model/Device/BeamDistributionItem.h b/GUI/Model/Device/BeamDistributionItem.h index ccba2f001390ca2b4bad5e6fbdb49a53bb819131..d190a7b6e6e4b890629220a293574a7e4dd7a153 100644 --- a/GUI/Model/Device/BeamDistributionItem.h +++ b/GUI/Model/Device/BeamDistributionItem.h @@ -53,7 +53,7 @@ template <typename T> T* BeamDistributionItem::setDistributionType() { m_distribution.set<T>(); - return dynamic_cast<T*>(m_distribution.get()); + return dynamic_cast<T*>(m_distribution.currentItem()); } #endif // BORNAGAIN_GUI_MODEL_DEVICE_BEAMDISTRIBUTIONITEM_H diff --git a/GUI/Model/Device/BeamItems.cpp b/GUI/Model/Device/BeamItems.cpp index 5071c4df50f6a90101af31f662711558ce54ce6d..a61ea8da9a745e3d5185f106e5430181f822a9d5 100644 --- a/GUI/Model/Device/BeamItems.cpp +++ b/GUI/Model/Device/BeamItems.cpp @@ -170,7 +170,7 @@ BasicAxisItem* SpecularBeamItem::inclinationAxis() const FootprintItem* SpecularBeamItem::footprint() const { - return m_footprint.get(); + return m_footprint.currentItem(); } SelectionDescriptor<FootprintItem*> SpecularBeamItem::footprintSelection() const diff --git a/GUI/Model/Device/DetectorItems.cpp b/GUI/Model/Device/DetectorItems.cpp index da7f88f39ed3dd7ab6bbaa550fc8868d7c99d60b..44117ae215b65caf5ea653724ccfbfc598f7eb03 100644 --- a/GUI/Model/Device/DetectorItems.cpp +++ b/GUI/Model/Device/DetectorItems.cpp @@ -45,7 +45,7 @@ MaskItems& DetectorItem::maskItems() ResolutionFunctionItem* DetectorItem::resolutionFunction() const { - return m_resolutionFunction.get(); + return m_resolutionFunction.currentItem(); } SelectionDescriptor<ResolutionFunctionItem*> DetectorItem::resolutionFunctionSelection() const diff --git a/GUI/Model/Device/DetectorItems.h b/GUI/Model/Device/DetectorItems.h index 7bcef7153858b8d033b49366eb4fd4345d1d9ea3..478322eddac836bb535b97fbb03a9afdf1801fb6 100644 --- a/GUI/Model/Device/DetectorItems.h +++ b/GUI/Model/Device/DetectorItems.h @@ -74,7 +74,7 @@ template <typename T> T* DetectorItem::setResolutionFunctionType() { m_resolutionFunction.set<T>(); - return dynamic_cast<T*>(m_resolutionFunction.get()); + return dynamic_cast<T*>(m_resolutionFunction.currentItem()); } #endif // BORNAGAIN_GUI_MODEL_DEVICE_DETECTORITEMS_H diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp index a8f4dd773f4807ec46fab38428b9ba752891e3be..7958aef0f20e6c1b181447418486f20e546e8d32 100644 --- a/GUI/Model/Device/InstrumentItems.cpp +++ b/GUI/Model/Device/InstrumentItems.cpp @@ -133,7 +133,7 @@ BeamItem* InstrumentItem::beamItem() const BackgroundItem* InstrumentItem::backgroundItem() const { - return m_backgroundItem.get(); + return m_backgroundItem.currentItem(); } SelectionDescriptor<BackgroundItem*> InstrumentItem::backgroundSelection() const @@ -364,7 +364,7 @@ void Instrument2DItem::serialize(Streamer& s) DetectorItem* Instrument2DItem::detectorItem() const { - return m_detectorItem.get(); + return m_detectorItem.currentItem(); } SelectionDescriptor<DetectorItem*> Instrument2DItem::detectorSelection() const diff --git a/GUI/Model/Device/InstrumentItems.h b/GUI/Model/Device/InstrumentItems.h index 9a5b13ebb8afb033c1d5944e18cd510bff2f19ba..4110ca6e387601de1fcb6e1be467cb352da12c5f 100644 --- a/GUI/Model/Device/InstrumentItems.h +++ b/GUI/Model/Device/InstrumentItems.h @@ -233,14 +233,14 @@ template <typename T> T* InstrumentItem::setBackgroundType() { m_backgroundItem.set<T>(); - return dynamic_cast<T*>(m_backgroundItem.get()); + return dynamic_cast<T*>(m_backgroundItem.currentItem()); } template <typename T> T* Instrument2DItem::setDetectorType() { m_detectorItem.set<T>(); - return dynamic_cast<T*>(m_detectorItem.get()); + return dynamic_cast<T*>(m_detectorItem.currentItem()); } #endif // BORNAGAIN_GUI_MODEL_DEVICE_INSTRUMENTITEMS_H diff --git a/GUI/Model/Sample/ItemWithParticles.cpp b/GUI/Model/Sample/ItemWithParticles.cpp index c6b5478f0d98500a094d54db710df49838057a9d..ef81e55f85f0a39f25b76a10537eb107889982b4 100644 --- a/GUI/Model/Sample/ItemWithParticles.cpp +++ b/GUI/Model/Sample/ItemWithParticles.cpp @@ -30,7 +30,7 @@ ItemWithParticles::ItemWithParticles(const QString& abundanceTooltip, std::unique_ptr<IRotation> ItemWithParticles::createRotation() const { - if (!m_rotation.get()) + if (!m_rotation.currentItem()) return {}; const auto matrix = m_rotation->rotation(); return std::unique_ptr<IRotation>(IRotation::createRotation(matrix)); diff --git a/GUI/Model/Sample/MesocrystalItem.cpp b/GUI/Model/Sample/MesocrystalItem.cpp index ebac4d5e0b349d08e7b52a79544dd256b39dfd6c..38c942c42e09d80020bf5ed9667373f758503289 100644 --- a/GUI/Model/Sample/MesocrystalItem.cpp +++ b/GUI/Model/Sample/MesocrystalItem.cpp @@ -109,16 +109,16 @@ Lattice3D MesocrystalItem::getLattice() const std::unique_ptr<IParticle> MesocrystalItem::getBasis() const { - if (auto* p = dynamic_cast<ParticleItem*>(m_basisParticle.get())) + if (auto* p = dynamic_cast<ParticleItem*>(m_basisParticle.currentItem())) return p->createParticle(); - if (auto* p = dynamic_cast<CoreAndShellItem*>(m_basisParticle.get())) + if (auto* p = dynamic_cast<CoreAndShellItem*>(m_basisParticle.currentItem())) return p->createCoreAndShell(); - if (auto* p = dynamic_cast<CompoundItem*>(m_basisParticle.get())) + if (auto* p = dynamic_cast<CompoundItem*>(m_basisParticle.currentItem())) return p->createCompound(); - if (auto* p = dynamic_cast<MesocrystalItem*>(m_basisParticle.get())) + if (auto* p = dynamic_cast<MesocrystalItem*>(m_basisParticle.currentItem())) return p->createMesocrystal(); return {}; @@ -131,7 +131,7 @@ std::unique_ptr<IFormFactor> MesocrystalItem::getOuterShape() const ItemWithParticles* MesocrystalItem::basisParticle() const { - return m_basisParticle.get(); + return m_basisParticle.currentItem(); } void MesocrystalItem::setBasis(ItemWithParticles* basis) diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp index f515e3fceb7a6f34804473ad12c132b4fcde34cb..a02c9ec9219998cdda02c16764dd1ae6d35d8f6e 100644 --- a/GUI/Model/Sample/ParticleItem.cpp +++ b/GUI/Model/Sample/ParticleItem.cpp @@ -79,7 +79,7 @@ void ParticleItem::setFormFactor(FormFactorItem* p) FormFactorItem* ParticleItem::formfactor() const { - return m_formFactor.get(); + return m_formFactor.currentItem(); } QVector<ItemWithParticles*> ParticleItem::containedItemsWithParticles() const diff --git a/GUI/Model/Sample/ParticleLayoutItem.cpp b/GUI/Model/Sample/ParticleLayoutItem.cpp index cdb3124223d1e9e79501715db30effd8b19c86e0..54f6cccdd7dfc13560653390852185f346da3d44 100644 --- a/GUI/Model/Sample/ParticleLayoutItem.cpp +++ b/GUI/Model/Sample/ParticleLayoutItem.cpp @@ -48,10 +48,10 @@ double ParticleLayoutItem::totalDensityValue() const if (!totalDensityIsDefinedByInterference()) return m_ownDensity.value(); - ASSERT(m_interference.get()); + ASSERT(m_interference.currentItem()); if (const auto* interLatticeItem = - dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.get())) { + dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.currentItem())) { Lattice2DItem* latticeItem = interLatticeItem->latticeType().currentItem(); try { const double area = latticeItem->unitCellArea(); @@ -62,7 +62,7 @@ double ParticleLayoutItem::totalDensityValue() const } } - if (const auto* hd = dynamic_cast<const InterferenceHardDiskItem*>(m_interference.get())) + if (const auto* hd = dynamic_cast<const InterferenceHardDiskItem*>(m_interference.currentItem())) return hd->density(); ASSERT(false); @@ -109,8 +109,8 @@ void ParticleLayoutItem::removeInterference() bool ParticleLayoutItem::totalDensityIsDefinedByInterference() const { - return dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.get()) - || dynamic_cast<const InterferenceHardDiskItem*>(m_interference.get()); + return dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.currentItem()) + || dynamic_cast<const InterferenceHardDiskItem*>(m_interference.currentItem()); } void ParticleLayoutItem::serialize(Streamer& s)