25class RadioboxBase :
public ComponentBase,
public RadioboxOption {
27 explicit RadioboxBase(
const RadioboxOption&
option)
28 : RadioboxOption(
option) {}
36 for (
int i = 0; i <
size(); ++i) {
42 auto state = EntryState{
54 bool OnEvent(Event
event)
override {
56 if (!CaptureMouse(
event)) {
60 if (
event.is_mouse()) {
61 return OnMouseEvent(
event);
73 (hovered_) -= box_.y_max - box_.y_min;
76 (hovered_) += box_.y_max - box_.y_min;
82 (hovered_) =
size() - 1;
85 hovered_ = (hovered_ + 1) %
size();
88 hovered_ = (hovered_ +
size() - 1) %
size();
94 focused_entry() = hovered_;
101 selected() = hovered_;
109 bool OnMouseEvent(Event
event) {
112 return OnMouseWheel(
event);
115 for (
int i = 0; i <
size(); ++i) {
116 if (!boxes_[i].Contain(
event.mouse().x,
event.mouse().y)) {
124 if (selected() != i) {
135 bool OnMouseWheel(Event
event) {
136 if (!box_.Contain(
event.mouse().x,
event.mouse().y)) {
159 boxes_.resize(
size());
165 bool Focusable()
const final {
return entries.size(); }
166 int size()
const {
return int(entries.size()); }
168 int hovered_ = selected();
169 std::vector<Box> boxes_;
240 option.entries = std::move(entries);
241 option.selected = selected;
An adapter. Reference a list of strings.
constexpr const T & clamp(const T &v, const T &lo, const T &hi)
Element nothing(Element element)
A decoration doing absolutely nothing.
Decorator size(WidthOrHeight, Constraint, int value)
Apply a constraint on the size of an element.
std::shared_ptr< Node > Element
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< ComponentBase > Component
Component Radiobox(RadioboxOption options)
A list of element, where only one can be selected.
std::vector< Element > Elements
Element select(Element)
Set the child to be the one selected among its siblings.
Element focus(Element)
Set the child to be the one in focus globally.
Decorator reflect(Box &box)
void Render(Screen &screen, const Element &element)
Display an element on a ftxui::Screen.
Element vbox(Elements)
A container displaying elements vertically one by one.
static const Event TabReverse
static const Event PageUp
static const Event ArrowUp
static const Event ArrowDown
static const Event PageDown
static const Event Return
Option for the Radiobox component.
static RadioboxOption Simple()
Option for standard Radiobox.
std::function< Element(const EntryState &)> transform