4 #ifndef FTXUI_COMPONENT_HPP
5 #define FTXUI_COMPONENT_HPP
20 struct CheckboxOption;
24 struct RadioboxOption;
25 struct MenuEntryOption;
27 template <
class T,
class... Args>
28 std::shared_ptr<T>
Make(Args&&... args) {
29 return std::make_shared<T>(std::forward<Args>(args)...);
51 std::function<
void()> on_click,
62 StringRef placeholder,
63 InputOption options = {});
75 RadioboxOption options = {});
89 ConstRef<int> min = 0,
90 ConstRef<int> max = 100,
91 ConstRef<int> increment = 5);
94 ConstRef<float> min = 0.f,
95 ConstRef<float> max = 100.f,
96 ConstRef<float> increment = 5.f);
99 ConstRef<long> min = 0l,
100 ConstRef<long> max = 100l,
101 ConstRef<long> increment = 5l);
131 std::function<
void()> on_enter,
132 std::function<
void()> on_leave);
134 std::function<
void(
bool)> on_change);
137 std::function<
void()> on_leave);
An adapter. Own or reference a constant string. For convenience, this class convert multiple immutabl...
Component Horizontal(Components children)
A list of components, drawn one by one horizontally and navigated horizontally using left/right arrow...
Component Vertical(Components children)
A list of components, drawn one by one vertically and navigated vertically using up/down arrow key or...
Component Stacked(Components children)
A list of components to be stacked on top of each other. Events are propagated to the first component...
Component Tab(Components children, int *selector)
A list of components, where only one is drawn and interacted with at a time. The |selector| gives the...
Component Maybe(Component, const bool *show)
Decorate a component |child|. It is shown only when |show| is true.
Component ResizableSplitTop(Component main, Component back, int *main_size)
An vertical split in between two components, configurable using the mouse.
std::shared_ptr< Node > Element
Component Menu(MenuOption options)
A list of text. The focused element is selected.
Component MenuEntry(MenuEntryOption options)
A specific menu entry. They can be put into a Container::Vertical to form a menu.
std::function< Element(Element)> ElementDecorator
std::shared_ptr< ComponentBase > Component
Component Toggle(ConstStringListRef entries, int *selected)
An horizontal list of elements. The user can navigate through them.
std::vector< Component > Components
Component Radiobox(RadioboxOption options)
A list of element, where only one can be selected.
Component Collapsible(ConstStringRef label, Component child, Ref< bool > show=false)
Component Button(ButtonOption options)
Draw a button. Execute a function when clicked.
Component Modal(Component main, Component modal, const bool *show_modal)
Component Renderer(Component child, std::function< Element()>)
Return a new Component, similar to |child|, but using |render| as the Component::Render() event.
Component Hoverable(Component component, bool *hover)
Wrap a component. Gives the ability to know if it is hovered by the mouse.
std::shared_ptr< T > Make(Args &&... args)
Component ResizableSplit(ResizableSplitOption options)
A split in between two components.
Component Window(WindowOptions option)
A draggeable / resizeable window. To use multiple of them, they must be stacked using Container::Stac...
Component operator|(Component component, ComponentDecorator decorator)
Component Input(InputOption options={})
An input box for editing text.
Component ResizableSplitRight(Component main, Component back, int *main_size)
An horizontal split in between two components, configurable using the mouse.
Component CatchEvent(Component child, std::function< bool(Event)>)
Component Dropdown(ConstStringListRef entries, int *selected)
A dropdown menu.
Component Slider(SliderOption< T > options)
A slider in any direction.
Component ResizableSplitBottom(Component main, Component back, int *main_size)
An vertical split in between two components, configurable using the mouse.
Component & operator|=(Component &component, ComponentDecorator decorator)
Component Checkbox(CheckboxOption options)
Draw checkable element.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
An horizontal split in between two components, configurable using the mouse.
std::function< Component(Component)> ComponentDecorator
Option for the Checkbox component.
static CheckboxOption Simple()
Option for standard Checkbox.
Represent an event. It can be key press event, a terminal resize, or more ...