diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index cff8509b566bffe1dae6070d27321c04e8ae6147..269d67b31e413651ee8df89ec07a39e2b00ce23b 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -173,11 +173,27 @@ void GUIObjectBuilder::visit(const Particle *sample) particleItem = m_sampleModel->insertNewItem(Constants::ParticleType, m_sampleModel->indexOfItem(parent), -1, ParameterizedItem::PortInfo::Port0); + const Geometry::Transform3D *p_transformation = sample->getPTransform3D(); + if (p_transformation) { + ParameterizedItem *transformation_item = + m_sampleModel->insertNewItem( + Constants::TransformationType, + m_sampleModel->indexOfItem(particleItem)); + addRotationItem(p_transformation, transformation_item); + } } else if(sample == coreshell->getShellParticle()) { particleItem = m_sampleModel->insertNewItem(Constants::ParticleType, m_sampleModel->indexOfItem(parent), -1, ParameterizedItem::PortInfo::Port1); + const Geometry::Transform3D *p_transformation = sample->getPTransform3D(); + if (p_transformation) { + ParameterizedItem *transformation_item = + m_sampleModel->insertNewItem( + Constants::TransformationType, + m_sampleModel->indexOfItem(particleItem)); + addRotationItem(p_transformation, transformation_item); + } } else { throw GUIHelpers::Error("GUIObjectBuilder::visit" "(const Particle *sample) -> Error. Logically should not be here"); @@ -204,47 +220,7 @@ void GUIObjectBuilder::visit(const Particle *sample) m_sample_encountered[Constants::TransformationType] = false; } if (p_transformation) { - Geometry::Transform3D::RotationType rot_type = - p_transformation->getRotationType(); - double alpha, beta, gamma; - p_transformation->calculateEulerAngles(&alpha, &beta, &gamma); - ParameterizedItem *p_rotation_item = 0; - switch (rot_type) { - case Geometry::Transform3D::XAXIS: - p_rotation_item = transformation_item->setGroupProperty( - TransformationItem::P_ROT, - Constants::XRotationType); - if (alpha>0.0) beta = -beta; - p_rotation_item->setRegisteredProperty( - XRotationItem::P_ANGLE, Units::rad2deg(beta)); - break; - case Geometry::Transform3D::YAXIS: - p_rotation_item = transformation_item->setGroupProperty( - TransformationItem::P_ROT, - Constants::YRotationType); - if (alpha>0.0 && alpha<3.14) beta = -beta; - p_rotation_item->setRegisteredProperty( - YRotationItem::P_ANGLE, Units::rad2deg(beta)); - break; - case Geometry::Transform3D::ZAXIS: - p_rotation_item = transformation_item->setGroupProperty( - TransformationItem::P_ROT, - Constants::ZRotationType); - p_rotation_item->setRegisteredProperty( - ZRotationItem::P_ANGLE, Units::rad2deg(alpha)); - break; - default: - p_rotation_item = transformation_item->setGroupProperty( - TransformationItem::P_ROT, - Constants::EulerRotationType); - p_rotation_item->setRegisteredProperty( - EulerRotationItem::P_ALPHA, Units::rad2deg(alpha)); - p_rotation_item->setRegisteredProperty( - EulerRotationItem::P_BETA, Units::rad2deg(beta)); - p_rotation_item->setRegisteredProperty( - EulerRotationItem::P_GAMMA, Units::rad2deg(gamma)); - break; - } + addRotationItem(p_transformation, transformation_item); } } } @@ -614,4 +590,51 @@ MaterialProperty GUIObjectBuilder::createMaterialFromDomain( return MaterialProperty(); } +void GUIObjectBuilder::addRotationItem( + const Geometry::Transform3D *p_transformation, + ParameterizedItem *transformation_item) +{ + Geometry::Transform3D::RotationType rot_type = + p_transformation->getRotationType(); + double alpha, beta, gamma; + p_transformation->calculateEulerAngles(&alpha, &beta, &gamma); + ParameterizedItem *p_rotation_item = 0; + switch (rot_type) { + case Geometry::Transform3D::XAXIS: + p_rotation_item = transformation_item->setGroupProperty( + TransformationItem::P_ROT, + Constants::XRotationType); + if (alpha>0.0) beta = -beta; + p_rotation_item->setRegisteredProperty( + XRotationItem::P_ANGLE, Units::rad2deg(beta)); + break; + case Geometry::Transform3D::YAXIS: + p_rotation_item = transformation_item->setGroupProperty( + TransformationItem::P_ROT, + Constants::YRotationType); + if (alpha>0.0 && alpha<3.14) beta = -beta; + p_rotation_item->setRegisteredProperty( + YRotationItem::P_ANGLE, Units::rad2deg(beta)); + break; + case Geometry::Transform3D::ZAXIS: + p_rotation_item = transformation_item->setGroupProperty( + TransformationItem::P_ROT, + Constants::ZRotationType); + p_rotation_item->setRegisteredProperty( + ZRotationItem::P_ANGLE, Units::rad2deg(alpha)); + break; + default: + p_rotation_item = transformation_item->setGroupProperty( + TransformationItem::P_ROT, + Constants::EulerRotationType); + p_rotation_item->setRegisteredProperty( + EulerRotationItem::P_ALPHA, Units::rad2deg(alpha)); + p_rotation_item->setRegisteredProperty( + EulerRotationItem::P_BETA, Units::rad2deg(beta)); + p_rotation_item->setRegisteredProperty( + EulerRotationItem::P_GAMMA, Units::rad2deg(gamma)); + break; + } +} + diff --git a/GUI/coregui/Models/GUIObjectBuilder.h b/GUI/coregui/Models/GUIObjectBuilder.h index 765f88d3c2ffa672dd1f18674f8b1bdc40e07fe2..2b86989e83b15850f431bc38a26f75682cf4b0bf 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.h +++ b/GUI/coregui/Models/GUIObjectBuilder.h @@ -84,6 +84,8 @@ public: private: MaterialProperty createMaterialFromDomain(const IMaterial *); + void addRotationItem(const Geometry::Transform3D *p_transformation, + ParameterizedItem *transformation_item); SampleModel *m_sampleModel; diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp index e9aef6eaa0ba133af82379b739c645d992223332..f79f2d1c5e723b7e383e1f1aa1ff026b643a4385 100644 --- a/GUI/coregui/Models/TransformToDomain.cpp +++ b/GUI/coregui/Models/TransformToDomain.cpp @@ -291,7 +291,7 @@ void TransformToDomain::initInstrumentFromDetectorItem(const ParameterizedItem & double alpha_max = alpha_max_property.getValueInRadians(); ComboProperty binning = subDetector->getRegisteredProperty(PhiAlphaDetectorItem::P_BINNING).value<ComboProperty>(); - // FIXEM Get rid from hardcoded string + // FIXME Get rid from hardcoded string // if(binning.getValue() != QStringLiteral("Const KBin")) // throw GUIHelpers::Error("TransformToDomain::initInstrumentFromDetectorItem() -> Not implemented");