3#include "../UI/Components/CIconButton.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
15 public std::enable_shared_from_this<XUIIconButton>
26 std::shared_ptr<XUIIconButton> AsShared() {
return std::enable_shared_from_this<XUIIconButton>::shared_from_this(); }
38 static constexpr ETypeID TypeID = ETypeID::IconButton;
39 using Ptr = std::shared_ptr<XUIIconButton>;
47 if (p_OnClick.IsValid())
57 return std::make_shared<XUIIconButton>(CP_SDK_PRIV_TAG_VAL(), u
"XUIIconButton",
nullptr, p_OnClick);
64 return std::make_shared<XUIIconButton>(CP_SDK_PRIV_TAG_VAL(), u
"XUIIconButton", p_Sprite, p_OnClick);
72 return std::make_shared<XUIIconButton>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Sprite, p_OnClick);
78 virtual void BuildUI(_u::Transform* p_Parent)
override
82 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
83 catch (
const std::exception& l_Exception)
95 if (m_Element) p_Functor(m_Element.Ptr());
96 else m_OnReady += p_Functor;
103 *p_Target = std::enable_shared_from_this<XUIIconButton>::shared_from_this();
static Logging::ILogger * Logger()
Logger instance.
IXUIElement Bind interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
Tree like syntax CP_SDK::UI builder.