Skip to content
Snippets Groups Projects
Commit 114ae6de authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

Update wavelength on Axis type switch in SpecularBeamItem

Redmine: #2217
parent ddab315f
No related branches found
No related tags found
No related merge requests found
...@@ -157,6 +157,8 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem(Constants::SpecularBeamType) ...@@ -157,6 +157,8 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem(Constants::SpecularBeamType)
axis_item->updateIndicators(); axis_item->updateIndicators();
}, },
this); this);
inclinationAxisGroup()->mapper()->setOnValueChange([this]() { updateWavelength(); }, this);
} }
SpecularBeamItem::~SpecularBeamItem() = default; SpecularBeamItem::~SpecularBeamItem() = default;
...@@ -203,19 +205,27 @@ void SpecularBeamItem::updateToData(const IAxis& axis, QString units) ...@@ -203,19 +205,27 @@ void SpecularBeamItem::updateToData(const IAxis& axis, QString units)
inclinationAxisGroup()->setCurrentType(Constants::BasicAxisType); inclinationAxisGroup()->setCurrentType(Constants::BasicAxisType);
auto axis_item = currentInclinationAxisItem(); auto axis_item = currentInclinationAxisItem();
axis_item->setItemValue(BasicAxisItem::P_NBINS, static_cast<int>(axis.size())); axis_item->setItemValue(BasicAxisItem::P_NBINS, static_cast<int>(axis.size()));
auto wl_item = static_cast<SpecularBeamWavelengthItem*>(getItem(P_WAVELENGTH));
wl_item->setToRange(RealLimits::positive());
return; return;
} }
auto axis_group = inclinationAxisGroup(); auto axis_group = inclinationAxisGroup();
axis_group->setCurrentType(Constants::PointwiseAxisType); auto axis_item =
auto axis_item = static_cast<PointwiseAxisItem*>(axis_group->currentItem()); static_cast<PointwiseAxisItem*>(axis_group->getChildOfType(Constants::PointwiseAxisType));
if (units == Constants::UnitsQyQz) {
auto wl_item = static_cast<SpecularBeamWavelengthItem*>(getItem(P_WAVELENGTH));
wl_item->setToRange(getLimits(axis.getMax()));
}
axis_item->init(axis, units); axis_item->init(axis, units);
axis_group->setCurrentType(Constants::PointwiseAxisType); // calls updateWavelength()
axis_item->updateIndicators();
}
void SpecularBeamItem::updateWavelength()
{
auto item = inclinationAxisGroup()->currentItem();
auto wl_item = static_cast<SpecularBeamWavelengthItem*>(getItem(P_WAVELENGTH));
if (auto axis_item = dynamic_cast<PointwiseAxisItem*>(item)) {
auto axis = axis_item->getAxis();
if (axis && axis_item->getUnitsLabel() == Constants::UnitsQyQz)
wl_item->setToRange(getLimits(axis->getMax()));
} else
wl_item->setToRange(RealLimits::positive());
} }
// GISAS beam item // GISAS beam item
......
...@@ -72,6 +72,9 @@ public: ...@@ -72,6 +72,9 @@ public:
void updateFileName(const QString& filename); void updateFileName(const QString& filename);
void updateToData(const IAxis& axis, QString units); void updateToData(const IAxis& axis, QString units);
private:
void updateWavelength();
}; };
class BA_CORE_API_ GISASBeamItem : public BeamItem class BA_CORE_API_ GISASBeamItem : public BeamItem
......
...@@ -51,7 +51,6 @@ void PointwiseAxisItem::init(const IAxis& axis, const QString& units_label) ...@@ -51,7 +51,6 @@ void PointwiseAxisItem::init(const IAxis& axis, const QString& units_label)
m_axis = std::unique_ptr<IAxis>(axis.clone()); m_axis = std::unique_ptr<IAxis>(axis.clone());
setItemValue(P_NATIVE_UNITS, units_label); setItemValue(P_NATIVE_UNITS, units_label);
findInstrument(); findInstrument();
updateIndicators();
} }
const IAxis* PointwiseAxisItem::getAxis() const const IAxis* PointwiseAxisItem::getAxis() const
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment