#pragma once #include "export-symbol-helper.hpp" #include "variable-number.hpp" #include #include #include #include namespace advss { class ADVSS_EXPORT GenericVariableSpinbox : public QWidget { Q_OBJECT public: GenericVariableSpinbox(QWidget *parent, bool wholeNumber); void SetValue(const NumberVariable &); void SetValue(const NumberVariable &); void DisableVariableSelection(); void setMinimum(double value); void setMaximum(double value); void setPrefix(const QString &prefix); void setSuffix(const QString &suffix); void setSpecialValueText(const QString &text); public slots: void SetFixedValue(int); void SetFixedValue(double); void VariableChanged(const QString &); void ToggleTypeClicked(bool); signals: void NumberVariableChanged(const NumberVariable &); void NumberVariableChanged(const NumberVariable &); void FixedValueChanged(int); void FixedValueChanged(double); void VariableAdded(const QString &); void VariableRenamed(const QString &oldName, const QString &newName); void VariableRemoved(const QString &); protected: QSpinBox *_fixedValueInt; QDoubleSpinBox *_fixedValueDouble; NumberVariable _numberInt; NumberVariable _numberDouble; private: void EmitSignals(); void SetVisibility(); void SetVisibilityInt(); void SetVisibilityDouble(); QPushButton *_toggleType; VariableSelection *_variable; bool _wholeNumber; bool _hideTypeToggle = false; }; class ADVSS_EXPORT VariableSpinBox : public GenericVariableSpinbox { Q_OBJECT public: VariableSpinBox(QWidget *parent = nullptr); NumberVariable Value() { return _numberInt; } QSpinBox *SpinBox() { return _fixedValueInt; } }; class ADVSS_EXPORT VariableDoubleSpinBox : public GenericVariableSpinbox { Q_OBJECT public: VariableDoubleSpinBox(QWidget *parent = nullptr); NumberVariable Value() { return _numberDouble; } QDoubleSpinBox *SpinBox() { return _fixedValueDouble; } void setDecimals(int prec); }; } // namespace advss