25#ifndef TGUI_SPIN_CONTROL_HPP
26#define TGUI_SPIN_CONTROL_HPP
28#include <TGUI/SubwidgetContainer.hpp>
29#include <TGUI/Widgets/EditBox.hpp>
30#include <TGUI/Widgets/SpinButton.hpp>
39 class TGUI_API SpinControl :
public SubwidgetContainer
42 using Ptr = std::shared_ptr<SpinControl>;
43 using ConstPtr = std::shared_ptr<const SpinControl>;
54 explicit SpinControl(
const char* typeName =
StaticWidgetType,
bool initRenderer =
true);
74 SpinControl&
operator=(SpinControl&& other)
noexcept;
91 unsigned int decimal = 0,
186 template <
typename T,
typename =
typename std::enable_if_t<std::is_arithmetic_v<T>, T>>
191 if (m_spinButton->getValue() !=
static_cast<float>(value) && inRange(
static_cast<float>(value)))
193 m_spinButton->setValue(value);
214 template <
typename T,
typename =
typename std::enable_if_t<std::is_arithmetic_v<T>, T>>
219 m_spinButton->setStep(step);
252 TGUI_DEPRECATED(
"Use setSpinButtonWidth(\"100%\") or setSpinButtonWidth(\"50%\") instead")
259 TGUI_DEPRECATED(
"Use getSpinButtonWidth() instead") [[nodiscard]]
bool getUseWideArrows() const;
301 [[nodiscard]] std::unique_ptr<DataIO::Node>
save(SavingRenderersMap& renderers) const override;
306 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
319 bool inRange(
float value) const;
324 void setString(const
String& str);
334 unsigned int m_decimalPlaces = 0;
335 bool m_useWideArrows =
false;
Class to store the a value that is either a constant or a ratio.
Definition AbsoluteOrRelativeValue.hpp:44
Definition EditBoxRenderer.hpp:35
static EditBox::Ptr create()
Creates a new edit box widget.
std::shared_ptr< EditBox > Ptr
Shared widget pointer.
Definition EditBox.hpp:48
Class to store the position or size of a widget.
Definition Layout.hpp:320
Signal to which the user can subscribe to get callbacks from.
Definition Signal.hpp:59
SpinButtonRenderer * getSpinButtonSharedRenderer()
Returns the renderer of spin buttons part of widget.
EditBoxRenderer * getSpinTextSharedRenderer()
Returns the renderer of edit box part of widget.
void setMaximum(float maximum)
Sets a maximum value.
static SpinControl::Ptr copy(const SpinControl::ConstPtr &SpinCtrl)
Makes a copy of another spin control.
float getMaximum() const
Returns the maximum value.
Widget::Ptr clone() const override
Makes a copy of the widget if you don't know its exact type.
std::shared_ptr< const SpinControl > ConstPtr
Shared constant widget pointer.
Definition SpinControl.hpp:43
float getMinimum() const
Returns the minimum value.
std::unique_ptr< DataIO::Node > save(SavingRenderersMap &renderers) const override
Saves the widget as a tree node in order to save it to a file.
bool getUseWideArrows() const
Returns whether the spin button width equals the heigh or the widget or only half of the height (defa...
static constexpr char StaticWidgetType[]
Type name of the widget.
Definition SpinControl.hpp:45
SignalFloat onValueChange
Value of the spin control changed. Optional parameter: new value.
Definition SpinControl.hpp:329
SpinControl & operator=(const SpinControl &other)
Overload of copy assignment operator.
void setSpinButtonWidth(AbsoluteOrRelativeValue width)
Changes the width of the spin button (i.e. width of the arrows that are shown next to the edit box).
EditBoxRenderer * getSpinTextRenderer()
Returns the renderer of edit box part of widget.
unsigned int getDecimalPlaces() const
Returns the number of decimal places to display.
static SpinControl::Ptr create(float min=0.0f, float max=10.0f, float value=0.0f, unsigned int decimal=0, float step=1.0f)
Creates a new spin button widget.
SpinControl & operator=(SpinControl &&other) noexcept
Overload of move assignment operator.
void setUseWideArrows(bool useWideArrows)
Changes whether the spin button width equals the heigh or the widget or only half of the height (defa...
void setSize(const Layout2d &size) override
Changes the size of the spin control.
SpinControl(const SpinControl &other)
Copy constructor.
void setMinimum(float minimum)
Sets a minimum value.
bool setValue(T value)
Changes the current value.
Definition SpinControl.hpp:187
Signal & getSignal(String signalName) override
Retrieves a signal based on its name.
std::shared_ptr< SpinControl > Ptr
Shared widget pointer.
Definition SpinControl.hpp:42
void setStep(T step)
Changes how much the value changes on each arrow press.
Definition SpinControl.hpp:215
SpinButtonRenderer * getSpinButtonRenderer()
Returns the renderer of spin buttons part of widget.
void setDecimalPlaces(unsigned int decimalPlaces)
Changes the number of decimal places to display.
float getSpinButtonWidth() const
Returns the width of the spin button (i.e. width of the arrows that are shown next to the edit box).
SpinControl(SpinControl &&other) noexcept
Move constructor.
float getValue() const
Returns the current value.
void load(const std::unique_ptr< DataIO::Node > &node, const LoadingRenderersMap &renderers) override
Loads the widget from a tree of nodes.
float getStep() const
Returns the number of positions the thumb advances with each move.
Wrapper class to store strings.
Definition String.hpp:94
static String fromNumberRounded(T value, unsigned int decimals)
Construct the string from a floating point number, keeping only a certain amount of decimals behind t...
Definition String.hpp:326
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:37
SignalTyped< float > SignalFloat
Signal with one "float" as optional unbound parameter.
Definition Signal.hpp:411