From ac2201550829caa5bc3b257c1cfcea28a29ad324 Mon Sep 17 00:00:00 2001 From: Walter Van Herck <w.van.herck@fz-juelich.de> Date: Mon, 6 Nov 2017 18:11:07 +0100 Subject: [PATCH] Extract method to namespace function: SessionItem::setVectorItem --- GUI/coregui/Models/GUIObjectBuilder.cpp | 14 ++++++++------ GUI/coregui/Models/ParticleItem.cpp | 5 +++-- GUI/coregui/Models/SessionItem.cpp | 8 -------- GUI/coregui/Models/SessionItem.h | 1 - GUI/coregui/Models/SessionItemUtils.cpp | 8 ++++++++ GUI/coregui/Models/SessionItemUtils.h | 3 +++ GUI/coregui/Models/TransformFromDomain.cpp | 15 +++++++++------ 7 files changed, 31 insertions(+), 23 deletions(-) diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index 0db01fed199..ce46b8ac3b6 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -47,6 +47,7 @@ #include "RectangularDetector.h" #include "RotationItems.h" #include "SampleModel.h" +#include "SessionItemUtils.h" #include "SimulationOptionsItem.h" #include "SphericalDetector.h" #include "TransformFromDomain.h" @@ -199,7 +200,7 @@ void GUIObjectBuilder::visit(const MultiLayer* p_sample) p_multilayer_item->setItemName(p_sample->getName().c_str()); p_multilayer_item->setItemValue(MultiLayerItem::P_CROSS_CORR_LENGTH, p_sample->crossCorrLength()); - p_multilayer_item->setVectorItem(MultiLayerItem::P_EXTERNAL_FIELD, + SessionItemUtils::SetVectorItem(*p_multilayer_item, MultiLayerItem::P_EXTERNAL_FIELD, p_sample->externalField()); m_levelToParentItem[depth()] = p_multilayer_item; m_itemToSample[p_multilayer_item] = p_sample; @@ -255,9 +256,9 @@ void GUIObjectBuilder::visit(const Crystal* p_sample) auto vector_b = lattice.getBasisVectorB(); auto vector_c = lattice.getBasisVectorC(); - p_mesocrystal_item->setVectorItem(MesoCrystalItem::P_VECTOR_A, vector_a); - p_mesocrystal_item->setVectorItem(MesoCrystalItem::P_VECTOR_B, vector_b); - p_mesocrystal_item->setVectorItem(MesoCrystalItem::P_VECTOR_C, vector_c); + SessionItemUtils::SetVectorItem(*p_mesocrystal_item, MesoCrystalItem::P_VECTOR_A, vector_a); + SessionItemUtils::SetVectorItem(*p_mesocrystal_item, MesoCrystalItem::P_VECTOR_B, vector_b); + SessionItemUtils::SetVectorItem(*p_mesocrystal_item, MesoCrystalItem::P_VECTOR_C, vector_c); // Since there is no CrystalItem, set the parent map to the MesoCrystalItem m_levelToParentItem[depth()] = p_mesocrystal_item; @@ -584,7 +585,7 @@ void GUIObjectBuilder::visit(const RotationEuler* p_sample) void GUIObjectBuilder::buildPositionInfo(SessionItem* p_particle_item, const IParticle* p_sample) { kvector_t position = p_sample->position(); - p_particle_item->setVectorItem(ParticleItem::P_POSITION, position); + SessionItemUtils::SetVectorItem(*p_particle_item, ParticleItem::P_POSITION, position); } MaterialProperty GUIObjectBuilder::createMaterialFromDomain( @@ -600,7 +601,8 @@ MaterialProperty GUIObjectBuilder::createMaterialFromDomain( complex_t material_data = material->materialData(); MaterialItem* materialItem = model->addMaterial(materialName, material_data.real(),material_data.imag()); - materialItem->setVectorItem(MaterialItem::P_MAGNETIZATION, material->magnetization()); + SessionItemUtils::SetVectorItem(*materialItem, MaterialItem::P_MAGNETIZATION, + material->magnetization()); return MaterialProperty(materialItem->getIdentifier()); } diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp index c4c1f18a317..dd92453e9fb 100644 --- a/GUI/coregui/Models/ParticleItem.cpp +++ b/GUI/coregui/Models/ParticleItem.cpp @@ -19,10 +19,11 @@ #include "FormFactorItems.h" #include "MaterialItemUtils.h" #include "ModelPath.h" +#include "Particle.h" #include "ParticleCoreShellItem.h" +#include "SessionItemUtils.h" #include "TransformToDomain.h" #include "VectorItem.h" -#include "Particle.h" namespace { const QString abundance_tooltip = @@ -87,7 +88,7 @@ void ParticleItem::updatePropertiesAppearance(SessionItem* newParent) getItem(ParticleItem::P_ABUNDANCE)->setEnabled(false); if (isShellParticle()) { kvector_t zero_vector; - setVectorItem(ParticleItem::P_POSITION, zero_vector); + SessionItemUtils::SetVectorItem(*this, ParticleItem::P_POSITION, zero_vector); SessionItem *positionItem = getItem(ParticleItem::P_POSITION); positionItem->setEnabled(false); } diff --git a/GUI/coregui/Models/SessionItem.cpp b/GUI/coregui/Models/SessionItem.cpp index d789bac1f72..d33e680a9b8 100644 --- a/GUI/coregui/Models/SessionItem.cpp +++ b/GUI/coregui/Models/SessionItem.cpp @@ -445,14 +445,6 @@ void SessionItem::setItemValue(const QString& tag, const QVariant& variant) getItem(tag)->setValue(variant); } -void SessionItem::setVectorItem(const QString& name, kvector_t value) -{ - auto p_vector_item = getItem(name); - p_vector_item->setItemValue(VectorItem::P_X, value.x()); - p_vector_item->setItemValue(VectorItem::P_Y, value.y()); - p_vector_item->setItemValue(VectorItem::P_Z, value.z()); -} - //! Creates new group item and register new tag, returns GroupItem. SessionItem* SessionItem::addGroupProperty(const QString& groupName, const QString& groupType) diff --git a/GUI/coregui/Models/SessionItem.h b/GUI/coregui/Models/SessionItem.h index 20b145b5d54..9b5014f4c36 100644 --- a/GUI/coregui/Models/SessionItem.h +++ b/GUI/coregui/Models/SessionItem.h @@ -94,7 +94,6 @@ public: SessionItem* addProperty(const QString& name, const QVariant& variant); QVariant getItemValue(const QString& tag) const; void setItemValue(const QString& tag, const QVariant& variant); - void setVectorItem(const QString& name, kvector_t value); SessionItem* addGroupProperty(const QString& groupName, const QString& groupType); SessionItem* setGroupProperty(const QString& name, const QString& value) const; diff --git a/GUI/coregui/Models/SessionItemUtils.cpp b/GUI/coregui/Models/SessionItemUtils.cpp index 7371f726ab1..8de11147624 100644 --- a/GUI/coregui/Models/SessionItemUtils.cpp +++ b/GUI/coregui/Models/SessionItemUtils.cpp @@ -27,3 +27,11 @@ kvector_t SessionItemUtils::GetVectorItem(const SessionItem& item, const QString double z = vectorItem->getItemValue(VectorItem::P_Z).toDouble(); return { x, y, z }; } + +void SessionItemUtils::SetVectorItem(const SessionItem& item, const QString& name, kvector_t value) +{ + auto p_vector_item = item.getItem(name); + p_vector_item->setItemValue(VectorItem::P_X, value.x()); + p_vector_item->setItemValue(VectorItem::P_Y, value.y()); + p_vector_item->setItemValue(VectorItem::P_Z, value.z()); +} diff --git a/GUI/coregui/Models/SessionItemUtils.h b/GUI/coregui/Models/SessionItemUtils.h index 2078590c90d..df1e509062c 100644 --- a/GUI/coregui/Models/SessionItemUtils.h +++ b/GUI/coregui/Models/SessionItemUtils.h @@ -27,6 +27,9 @@ namespace SessionItemUtils { //! Returns a VectorType group property's value as a kvector_t BA_CORE_API_ kvector_t GetVectorItem(const SessionItem& item, const QString& name); + +//! Returns a VectorType group property's value as a kvector_t +BA_CORE_API_ void SetVectorItem(const SessionItem& item, const QString& name, kvector_t value); } // namespace SessionItemUtils #endif // SESSIONITEMUTILS_H diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp index 76827074d1c..7d9b9c98e43 100644 --- a/GUI/coregui/Models/TransformFromDomain.cpp +++ b/GUI/coregui/Models/TransformFromDomain.cpp @@ -54,14 +54,15 @@ #include "RectangularDetector.h" #include "ResolutionFunctionItems.h" #include "SphericalDetector.h" -#include "Units.h" -#include "VectorItem.h" #include "ParameterTreeUtils.h" #include "InstrumentItem.h" #include "ResolutionFunction2DGaussian.h" #include "ParameterUtils.h" #include "Particle.h" #include "ParticleDistribution.h" +#include "SessionItemUtils.h" +#include "Units.h" +#include "VectorItem.h" #include <limits> using namespace INodeUtils; @@ -237,7 +238,7 @@ void TransformFromDomain::setItemFromSample(BeamItem* beamItem, const GISASSimul } // polarization parameters - beamItem->setVectorItem(BeamItem::P_POLARIZATION, beam.getBlochVector()); + SessionItemUtils::SetVectorItem(*beamItem, BeamItem::P_POLARIZATION, beam.getBlochVector()); } void TransformFromDomain::setInstrumentDetectorFromSample(InstrumentItem* instrumentItem, @@ -297,7 +298,8 @@ void TransformFromDomain::setInstrumentDetectorFromSample(InstrumentItem* instru if (total_transmission>0.0) { kvector_t analyzer_dir = p_detector->analyzerDirection(); double efficiency = p_detector->analyzerEfficiency(); - detector_item->setVectorItem(DetectorItem::P_ANALYZER_DIRECTION, analyzer_dir); + SessionItemUtils::SetVectorItem(*detector_item, DetectorItem::P_ANALYZER_DIRECTION, + analyzer_dir); detector_item->setItemValue(DetectorItem::P_ANALYZER_EFFICIENCY, efficiency); detector_item->setItemValue(DetectorItem::P_ANALYZER_TOTAL_TRANSMISSION, total_transmission); @@ -347,10 +349,11 @@ void TransformFromDomain::setItemFromSample(RectangularDetectorItem* detectorIte detectorItem->setDetectorAlignment(Constants::ALIGNMENT_GENERIC); kvector_t normal = detector.getNormalVector(); - detectorItem->setVectorItem(RectangularDetectorItem::P_NORMAL, normal); + SessionItemUtils::SetVectorItem(*detectorItem, RectangularDetectorItem::P_NORMAL, normal); kvector_t direction = detector.getDirectionVector(); - detectorItem->setVectorItem(RectangularDetectorItem::P_DIRECTION, direction); + SessionItemUtils::SetVectorItem(*detectorItem, RectangularDetectorItem::P_DIRECTION, + direction); detectorItem->setItemValue(RectangularDetectorItem::P_U0, detector.getU0()); detectorItem->setItemValue(RectangularDetectorItem::P_V0, detector.getV0()); -- GitLab