#pragma once #include class GButton; class GTextEditor; class GSpinBox : public GWidget { C_OBJECT(GSpinBox) public: virtual ~GSpinBox() override; int value() const { return m_value; } void set_value(int); int min() const { return m_min; } int max() const { return m_max; } void set_min(int min) { set_range(min, max()); } void set_max(int max) { set_range(min(), max); } void set_range(int min, int max); Function on_change; protected: explicit GSpinBox(GWidget* parent = nullptr); virtual void resize_event(GResizeEvent&) override; private: ObjectPtr m_editor; ObjectPtr m_increment_button; ObjectPtr m_decrement_button; int m_min { 0 }; int m_max { 100 }; int m_value { 0 }; };