diff --git a/GUI/Model/Types/DoubleDescriptor.cpp b/GUI/Model/Types/DoubleDescriptor.cpp index d98a411f0724ff8a523d424cb64cd5ad2ca776a1..f86331b6f786d1824e1ef7e3dfaa04a97d15865a 100644 --- a/GUI/Model/Types/DoubleDescriptor.cpp +++ b/GUI/Model/Types/DoubleDescriptor.cpp @@ -18,30 +18,6 @@ #include "GUI/Util/Path.h" #include <utility> -DoubleDescriptor::DoubleDescriptor(const QString& label, SessionItem* item, - const variant<QString, Unit>& unit) - : DoubleDescriptor( - label, item->toolTip(), item->decimals(), item->limits(), - [=](double d) { item->setValue(d); }, [=]() { return item->value().toDouble(); }, unit) -{ - path = [=] { - ASSERT(item->model()); // if assert, item is not completely initialized - return GUI::Util::Path::getPathFromIndex(item->model()->indexOfItem(item)); - }; -} - -DoubleDescriptor::DoubleDescriptor(SessionItem* item, const variant<QString, Unit>& unit) - : DoubleDescriptor(item->displayName(), item, unit) -{ -} - -DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip, - function<void(double)> setter, function<double()> getter, - const variant<QString, Unit>& unit) - : DoubleDescriptor(label, tooltip, 3, RealLimits::nonnegative(), setter, getter, unit) -{ -} - DoubleDescriptor::DoubleDescriptor(QString label_, QString tooltip_, int decimals_, const RealLimits& limits_, function<void(double)> setter, function<double()> getter, const variant<QString, Unit>& unit_) @@ -58,6 +34,13 @@ DoubleDescriptor::DoubleDescriptor(QString label_, QString tooltip_, int decimal path = [] { return QString(); }; } +DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip, + function<void(double)> setter, function<double()> getter, + const variant<QString, Unit>& unit) + : DoubleDescriptor(label, tooltip, 3, RealLimits::nonnegative(), setter, getter, unit) +{ +} + DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip, double* var, const variant<QString, Unit>& unit) : DoubleDescriptor(label, tooltip, 3, RealLimits::nonnegative(), var, unit) @@ -81,6 +64,23 @@ DoubleDescriptor::DoubleDescriptor(const QString& label, const double* var, { } +DoubleDescriptor::DoubleDescriptor(const QString& label, SessionItem* item, + const variant<QString, Unit>& unit) + : DoubleDescriptor( + label, item->toolTip(), item->decimals(), item->limits(), + [=](double d) { item->setValue(d); }, [=]() { return item->value().toDouble(); }, unit) +{ + path = [=] { + ASSERT(item->model()); // if assert, item is not completely initialized + return GUI::Util::Path::getPathFromIndex(item->model()->indexOfItem(item)); + }; +} + +DoubleDescriptor::DoubleDescriptor(SessionItem* item, const variant<QString, Unit>& unit) + : DoubleDescriptor(item->displayName(), item, unit) +{ +} + DoubleDescriptor::operator double() const { return get(); diff --git a/GUI/Model/Types/DoubleDescriptor.h b/GUI/Model/Types/DoubleDescriptor.h index 36236317ad4f3da3628a0d69aca41d9eeb5e38f7..6e179e3a6bc55253fb413842d2a578ddd00a10c7 100644 --- a/GUI/Model/Types/DoubleDescriptor.h +++ b/GUI/Model/Types/DoubleDescriptor.h @@ -34,43 +34,43 @@ using std::variant; //! eases SessionItem migration. The underlying implementation can be a SessionItem, a simple double //! member, or any other construction to hold a double value. class DoubleDescriptor { -public: - DoubleDescriptor(const DoubleDescriptor& other) = default; +private: // private as long as path initialization is not included in params (to be done after + // SessionItem migration) + //! Operates on a double value (e.g a member variable). + DoubleDescriptor(const QString& label, const QString& tooltip, int decimals, + const RealLimits& limits, double* var, const variant<QString, Unit>& unit); - //! Operates on a session item. The settings (like decimals, limits) are taken from the session - //! item. - //! Only for easier migration. Should be removed after SessionItem refactoring. - DoubleDescriptor(SessionItem* item, const variant<QString, Unit>& unit); + //! Operates on a double value (e.g a member variable). + //! Decimals is set to 3, limits is set to nonnegative + DoubleDescriptor(const QString& label, const QString& tooltip, double* var, + const variant<QString, Unit>& unit); +public: //! Operates on any kind of storage (e.g. session items), by using setter/getter methods //! decimals is set to 3, limits is set to nonnegative DoubleDescriptor(const QString& label, const QString& tooltip, function<void(double)> setter, function<double()> getter, const variant<QString, Unit>& unit); + //! Operates on any kind of storage (e.g. session items), by using setter/getter methods + DoubleDescriptor(QString label, QString tooltip, int decimals, const RealLimits& limits, + function<void(double)> setter, function<double()> getter, + const variant<QString, Unit>& unit); + + DoubleDescriptor(const QString& label, const double* var, const variant<QString, Unit>& unit); + //! Operates on a session item. The settings (like decimals, limits) are taken from the session //! item. //! Only for easier migration. Should be removed after SessionItem refactoring. DoubleDescriptor(const QString& label, SessionItem* item, const variant<QString, Unit>& unit); - DoubleDescriptor(const QString& label, const double* var, const variant<QString, Unit>& unit); - - //! Operates on any kind of storage (e.g. session items), by using setter/getter methods - DoubleDescriptor(QString label, QString tooltip, int decimals, const RealLimits& limits, - function<void(double)> setter, function<double()> getter, - const variant<QString, Unit>& unit); + //! Operates on a session item. The settings (like decimals, limits) are taken from the session + //! item. + //! Only for easier migration. Should be removed after SessionItem refactoring. + DoubleDescriptor(SessionItem* item, const variant<QString, Unit>& unit); DoubleDescriptor() = default; -private: // private as long as path initialization is not included in params (to be done after - // SessionItem migration) - //! Operates on a double value (e.g a member variable). - DoubleDescriptor(const QString& label, const QString& tooltip, int decimals, - const RealLimits& limits, double* var, const variant<QString, Unit>& unit); - - //! Operates on a double value (e.g a member variable). - //! Decimals is set to 3, limits is set to nonnegative - DoubleDescriptor(const QString& label, const QString& tooltip, double* var, - const variant<QString, Unit>& unit); + DoubleDescriptor(const DoubleDescriptor& other) = default; public: //! Return the current value of the handled parameter.