3#include "../UI/Components/CFLayout.hpp"
4#include "Generics/IXUIElementWithChilds.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
15 public std::enable_shared_from_this<XUIFLayout>
26 std::shared_ptr<XUIFLayout> AsShared() {
return std::enable_shared_from_this<XUIFLayout>::shared_from_this(); }
38 static constexpr ETypeID TypeID = ETypeID::FLayout;
39 using Ptr = std::shared_ptr<XUIFLayout>;
41 XUIFLayout(CP_SDK_PRIV_TAG_ARG(),
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
42 :
XUIFLayout(CP_SDK_PRIV_TAG_FWD(), u
"XUIFLayout", p_Childs)
44 XUIFLayout(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name,
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
52 static std::vector<std::shared_ptr<IXUIElement>> s_Empty(0);
53 return std::make_shared<XUIFLayout>(CP_SDK_PRIV_TAG_VAL(), s_Empty);
57 static Ptr
Make(
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
59 return std::make_shared<XUIFLayout>(CP_SDK_PRIV_TAG_VAL(), p_Childs);
64 static Ptr
Make(std::u16string_view p_Name,
const std::vector<std::shared_ptr<IXUIElement>>& p_Childs)
66 return std::make_shared<XUIFLayout>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Childs);
72 virtual void BuildUI(_u::Transform* p_Parent)
override
78 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
79 catch (
const std::exception& l_Exception)
91 if (m_Element) p_Functor(m_Element.Ptr());
92 else m_OnReady += p_Functor;
99 *p_Target = std::enable_shared_from_this<XUIFLayout>::shared_from_this();
static Logging::ILogger * Logger()
Logger instance.
CFLayout * SetSpacing(_u::Vector2 p_Spacing)
Set spacing between elements.
CFLayout * SetHeight(float p_Height)
Set preferred height.
CFLayout * SetMinHeight(float p_Height)
Set min height.
IXUIElement Bind interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
IXUIElement with children abstract class.
void BuildUIChilds(_u::Transform *p_Parent)
BuildUI for children into p_Parent transform.
XUIFLayout * SetHeight(float p_Height) XUI_PROXY_IMPL(_v
Set preferred height.
static Ptr Make(const std::vector< std::shared_ptr< IXUIElement > > &p_Childs)
Constructor.
XUIFLayout * SetSpacing(_u::Vector2 p_Spacing) XUI_PROXY_IMPL(_v
Set spacing between elements.
XUIFLayout * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
XUIFLayout * SetMinHeight(float p_Height) XUI_PROXY_IMPL(_v
Set min height.
XUIFLayout * SetChildAlign(_u::TextAnchor p_ChildAlign) XUI_PROXY_IMPL(_v
Set child alignment.
virtual XUIFLayout * Bind(std::shared_ptr< XUIFLayout > *p_Target) override
On ready, bind.
virtual XUIFLayout * OnReady(_v::CActionRef< _v::CFLayout * > p_Functor) override
IXUIElement OnReady functor interface.
XUIFLayout * SetMinWidth(float p_Width) XUI_PROXY_IMPL(_v
Set min width.
XUIFLayout * SetWidth(float p_Width) XUI_PROXY_IMPL(_v
Set preferred width.
static Ptr Make(std::u16string_view p_Name, const std::vector< std::shared_ptr< IXUIElement > > &p_Childs)
Constructor.
static Ptr Make()
Constructor.
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
Tree like syntax CP_SDK::UI builder.