diff --git a/GUI/Model/Sample/MaterialItem.cpp b/GUI/Model/Sample/MaterialItem.cpp index 7264b59ddec02e9f96f32693cb3cdff6321f1b93..de2f7b99f7c434e1e6c67ad24b88057329fd7cc8 100644 --- a/GUI/Model/Sample/MaterialItem.cpp +++ b/GUI/Model/Sample/MaterialItem.cpp @@ -46,10 +46,12 @@ MaterialItem::MaterialItem() m_beta.init("Beta", "Beta of refractive index (n = 1 - delta + i*beta)", 0.0, Unit::unitless, 3, RealLimits::limitless(), "beta"); - m_sldRe.init("SLD, real", "Real part of SLD (SLD = real - i*imag), AA^{-2}", 0.0, - Unit::unitless, 3, RealLimits::limitless(), "sldRe"); - m_sldIm.init("SLD, imaginary", "Imaginary part of SLD (SLD = real - i*imag), AA^{-2}", 0.0, - Unit::unitless, 3, RealLimits::limitless(), "sldIm"); + Unit sld_units = Unit::angstromMinus2; + QString sld_units_str = unitAsString(sld_units); + m_sldRe.init("SLD, real", "Real part of SLD (SLD = real - i*imag), " + sld_units_str, 0.0, + sld_units, 3, RealLimits::limitless(), "sldRe"); + m_sldIm.init("SLD, imaginary", "Imaginary part of SLD (SLD = real - i*imag), " + sld_units_str, + 0.0, sld_units, 3, RealLimits::limitless(), "sldIm"); m_magnetization.init("Magnetization", "Magnetization (A/m)", "A/m", "magnetization"); } diff --git a/GUI/View/Numeric/DoubleLineEdit.cpp b/GUI/View/Numeric/DoubleLineEdit.cpp index 22c8ebf3c258adedaed74349f69bfa803f904223..122a7fc6df3a0bbc00aff368d869e705d546ab5d 100644 --- a/GUI/View/Numeric/DoubleLineEdit.cpp +++ b/GUI/View/Numeric/DoubleLineEdit.cpp @@ -28,6 +28,8 @@ DoubleLineEdit::DoubleLineEdit(QWidget* parent, const DoubleProperty& d) m_validator->setRange(minimum, maximum, 1000); setValidator(m_validator); + setToolTip(d.tooltip()); + updateBaseValue(); connect(this, &QLineEdit::editingFinished, this, &DoubleLineEdit::onEditingFinished); @@ -43,6 +45,14 @@ void DoubleLineEdit::updateBaseValue() setBaseValue(m_valueProperty.value()); } +QString DoubleLineEdit::displayUnitAsString() const +{ + if (std::holds_alternative<QString>(m_valueProperty.unit())) + return std::get<QString>(m_valueProperty.unit()); + + return unitAsString(std::get<Unit>(m_valueProperty.unit())); +} + void DoubleLineEdit::onEditingFinished() { const double new_value = text().toDouble(); diff --git a/GUI/View/Numeric/DoubleLineEdit.h b/GUI/View/Numeric/DoubleLineEdit.h index d3b82e78364e539d52de9eb5fcaf1b61818e5498..90fdde35385bf44cdc91367a327477d129b7fb42 100644 --- a/GUI/View/Numeric/DoubleLineEdit.h +++ b/GUI/View/Numeric/DoubleLineEdit.h @@ -35,6 +35,7 @@ public: void updateBaseValue(); + QString displayUnitAsString() const; signals: //! Emitted whenever the value changes. //! diff --git a/GUI/View/SampleDesigner/LayerEditorUtils.cpp b/GUI/View/SampleDesigner/LayerEditorUtils.cpp index 4125746cbc41b0945a172054d0b98dbdd3e9e1ca..2bd817a354b59e5f376a4d87abaaaea2bdb1fcc1 100644 --- a/GUI/View/SampleDesigner/LayerEditorUtils.cpp +++ b/GUI/View/SampleDesigner/LayerEditorUtils.cpp @@ -21,6 +21,7 @@ #include "GUI/Model/Sample/ParticleItem.h" #include "GUI/Model/Sample/ProfileItems.h" #include "GUI/Model/Sample/RoughnessItems.h" +#include "GUI/View/Numeric/DoubleLineEdit.h" #include "GUI/View/Numeric/DoubleSpinBox.h" #include "GUI/View/SampleDesigner/CompoundForm.h" #include "GUI/View/SampleDesigner/CoreAndShellForm.h" @@ -62,6 +63,8 @@ void LayerEditorUtils::updateLabelUnit(QLabel* label) { if (auto* editor = dynamic_cast<DoubleSpinBox*>(label->buddy())) ::updateLabelUnit(label, editor->displayUnitAsString()); + else if (auto* editor = dynamic_cast<DoubleLineEdit*>(label->buddy())) + ::updateLabelUnit(label, editor->displayUnitAsString()); } void LayerEditorUtils::addMultiPropertyToGrid(QGridLayout* m_gridLayout, int firstCol,