26#ifndef TGUI_BUTTON_BASE_HPP
27#define TGUI_BUTTON_BASE_HPP
30#include <TGUI/Renderers/ButtonRenderer.hpp>
31#include <TGUI/Widgets/ClickableWidget.hpp>
32#include <TGUI/Components.hpp>
45 using Ptr = std::shared_ptr<ButtonBase>;
46 using ConstPtr = std::shared_ptr<const ButtonBase>;
56 ButtonBase(
const char* typeName,
bool initRenderer);
116 void setEnabled(
bool enabled) override;
124 virtual
void setText(const
String& text);
163 void setFocused(
bool focused) override;
176 void leftMousePressed(
Vector2f pos) override;
181 void leftMouseReleased(
Vector2f pos) override;
186 void leftMouseButtonNoLongerDown() override;
205 void mouseEnteredWidget() override;
211 void mouseLeftWidget() override;
220 void rendererChanged(const
String& property) override;
226 std::unique_ptr<DataIO::Node> save(SavingRenderersMap& renderers) const override;
232 void load(const std::unique_ptr<DataIO::Node>& node, const LoadingRenderersMap& renderers) override;
238 void updateTextSize() override;
250 virtual
void updateSize();
256 virtual
void updateTextPosition();
262 virtual
void initComponents();
268 void addComponent(const std::shared_ptr<priv::dev::Component>& component);
274 std::shared_ptr<priv::dev::Component> getComponent(const
String& name);
283 priv::dev::ComponentState m_state = priv::dev::ComponentState::Normal;
285 bool m_autoSize = true;
286 bool m_updatingTextSize = false;
291 priv::dev::StylePropertyBackground background;
292 priv::dev::StylePropertyText text;
294 std::uint64_t m_textStyleChangedCallbackId = 0;
297 std::map<
String, priv::dev::StylePropertyBase*> m_stylePropertiesNames;
298 std::map<
String, std::vector<priv::dev::StylePropertyBase*>> m_stylePropertiesGlobalNames;
299 std::map<
String, std::shared_ptr<priv::dev::Component>> m_namedComponents;
302 std::shared_ptr<priv::dev::BackgroundComponent> m_backgroundComponent;
303 std::shared_ptr<priv::dev::TextComponent> m_textComponent;
305 std::vector<std::shared_ptr<priv::dev::Component>> m_components;
Class to store the a value that is either a constant or a ratio.
Definition: AbsoluteOrRelativeValue.hpp:43
Base class for render targets.
Definition: BackendRenderTarget.hpp:48
Class to store the position or size of a widget.
Definition: Layout.hpp:284
Wrapper class to store strings.
Definition: String.hpp:79
Definition: Vector2.hpp:42
Namespace that contains all TGUI functions and classes.
Definition: AbsoluteOrRelativeValue.hpp:36
States used for drawing.
Definition: RenderStates.hpp:39