#pragma once #include "variable-number.hpp" #include #include #include #include namespace advss { class GenericVaraiableSpinbox : public QWidget { Q_OBJECT public: GenericVaraiableSpinbox(QWidget *parent, bool wholeNumber); void SetValue(const NumberVariable &); void SetValue(const NumberVariable &); void setMinimum(double value); void setMaximum(double value); void setPrefix(const QString &prefix); void setSuffix(const QString &suffix); void specialValueText(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; }; class VariableSpinBox : public GenericVaraiableSpinbox { public: VariableSpinBox(QWidget *parent = nullptr); NumberVariable Value() { return _numberInt; } QSpinBox *SpinBox() { return _fixedValueInt; } }; class VariableDoubleSpinBox : public GenericVaraiableSpinbox { public: VariableDoubleSpinBox(QWidget *parent = nullptr); NumberVariable Value() { return _numberDouble; } QDoubleSpinBox *SpinBox() { return _fixedValueDouble; } void setDecimals(int prec) { _fixedValueDouble->setDecimals(prec); } }; } // namespace advss