From 54b9dfa4e6dbab31bd9e36c8d571c0c0fc4f808d Mon Sep 17 00:00:00 2001 From: Matthias Puchner <github@mpuchner.de> Date: Fri, 28 Jan 2022 15:32:17 +0100 Subject: [PATCH] enhance VectorEditor to work with VectorDescriptor --- GUI/View/Instrument/VectorEditor.cpp | 34 +++++++++++++--------------- GUI/View/Instrument/VectorEditor.h | 4 +++- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/GUI/View/Instrument/VectorEditor.cpp b/GUI/View/Instrument/VectorEditor.cpp index 6efd3742f1a..38727efffd6 100644 --- a/GUI/View/Instrument/VectorEditor.cpp +++ b/GUI/View/Instrument/VectorEditor.cpp @@ -23,7 +23,6 @@ VectorEditor::VectorEditor(const QString& title, const QString& tooltip, QWidget* parent) : QGroupBox(title, parent) - , m_item(nullptr) { auto* form = new QFormLayout(this); @@ -55,39 +54,38 @@ VectorEditor::VectorEditor(const QString& title, const QString& tooltip, QWidget void VectorEditor::setItem(VectorItem* item) { - m_item = item; - setEnabled(m_item); - if (m_item) { - m_xSpinBox->setValue(m_item->x()); - m_ySpinBox->setValue(m_item->y()); - m_zSpinBox->setValue(m_item->z()); - } else { - m_xSpinBox->setValue(0); - m_ySpinBox->setValue(0); - m_zSpinBox->setValue(0); - } + ASSERT(item); + setVector(VectorDescriptor(item, Unit::unitless)); +} + +void VectorEditor::setVector(const VectorDescriptor& d) +{ + m_descriptor = d; + m_xSpinBox->setValue(m_descriptor.x); + m_ySpinBox->setValue(m_descriptor.y); + m_zSpinBox->setValue(m_descriptor.z); } void VectorEditor::onXValueChanged(double x) { - if (m_item) { - m_item->setX(x); + if (x != m_descriptor.x) { + m_descriptor.x.set(x); emit vectorChanged(); } } void VectorEditor::onYValueChanged(double y) { - if (m_item) { - m_item->setY(y); + if (y != m_descriptor.y) { + m_descriptor.y.set(y); emit vectorChanged(); } } void VectorEditor::onZValueChanged(double z) { - if (m_item) { - m_item->setZ(z); + if (z != m_descriptor.z) { + m_descriptor.z.set(z); emit vectorChanged(); } } diff --git a/GUI/View/Instrument/VectorEditor.h b/GUI/View/Instrument/VectorEditor.h index 6cc7c268247..31b271994c1 100644 --- a/GUI/View/Instrument/VectorEditor.h +++ b/GUI/View/Instrument/VectorEditor.h @@ -15,6 +15,7 @@ #ifndef BORNAGAIN_GUI_VIEW_INSTRUMENT_VECTOREDITOR_H #define BORNAGAIN_GUI_VIEW_INSTRUMENT_VECTOREDITOR_H +#include "GUI/Model/Types/VectorDescriptor.h" #include <QGroupBox> class QDoubleSpinBox; @@ -30,6 +31,7 @@ public: /// \param tooltip the tooltip for the spinboxes with wildcard ("%1") for coordinate VectorEditor(const QString& title, const QString& tooltip, QWidget* parent = nullptr); void setItem(VectorItem* item); + void setVector(const VectorDescriptor& d); signals: void vectorChanged(); @@ -43,7 +45,7 @@ private: QDoubleSpinBox* m_xSpinBox; QDoubleSpinBox* m_ySpinBox; QDoubleSpinBox* m_zSpinBox; - VectorItem* m_item; + VectorDescriptor m_descriptor; }; #endif // BORNAGAIN_GUI_VIEW_INSTRUMENT_VECTOREDITOR_H -- GitLab