mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-22 18:59:59 +08:00
Add option for Button.
This commit is contained in:
parent
cd84b187b3
commit
359100ca73
@ -13,11 +13,13 @@ int main(int argc, const char* argv[]) {
|
||||
int value = 50;
|
||||
|
||||
// The tree of components. This defines how to navigate using the keyboard.
|
||||
auto button_option = ButtonOption();
|
||||
button_option.border = false;
|
||||
auto buttons = Container::Horizontal({
|
||||
Button(
|
||||
"[Decrease]", [&] { value--; }, false),
|
||||
"[Decrease]", [&] { value--; }, &button_option),
|
||||
Button(
|
||||
"[Increase]", [&] { value++; }, false),
|
||||
"[Increase]", [&] { value++; }, &button_option),
|
||||
});
|
||||
|
||||
// Modify the way to render them on screen:
|
||||
|
@ -21,7 +21,9 @@ class ButtonBase : public ComponentBase {
|
||||
static ButtonBase* From(Component);
|
||||
|
||||
// Constructor.
|
||||
ButtonBase(ConstStringRef label, std::function<void()> on_click, bool border);
|
||||
ButtonBase(ConstStringRef label,
|
||||
std::function<void()> on_click,
|
||||
ConstRef<ButtonOption> option);
|
||||
~ButtonBase() override = default;
|
||||
|
||||
// Component implementation.
|
||||
@ -31,8 +33,8 @@ class ButtonBase : public ComponentBase {
|
||||
private:
|
||||
ConstStringRef label_;
|
||||
std::function<void()> on_click_;
|
||||
bool border_;
|
||||
Box box_;
|
||||
ConstRef<ButtonOption> option_;
|
||||
};
|
||||
|
||||
} // namespace ftxui
|
||||
|
@ -26,7 +26,7 @@ std::shared_ptr<T> Make(Args&&... args) {
|
||||
|
||||
Component Button(ConstStringRef label,
|
||||
std::function<void()> on_click,
|
||||
bool border = true);
|
||||
ConstRef<ButtonOption> = {});
|
||||
Component Checkbox(ConstStringRef label, bool* checked);
|
||||
Component Input(StringRef content, ConstStringRef placeholder);
|
||||
Component Menu(const std::vector<std::wstring>* entries,
|
||||
|
@ -14,6 +14,10 @@ struct MenuOption {
|
||||
std::function<void()> on_enter = []() {};
|
||||
};
|
||||
|
||||
struct ButtonOption {
|
||||
bool border = true;
|
||||
};
|
||||
|
||||
}; // namespace ftxui
|
||||
|
||||
#endif /* end of include guard: FTXUI_COMPONENT_COMPONENT_OPTIONS_HPP */
|
||||
|
@ -33,8 +33,8 @@ namespace ftxui {
|
||||
/// ```
|
||||
Component Button(ConstStringRef label,
|
||||
std::function<void()> on_click,
|
||||
bool border) {
|
||||
return Make<ButtonBase>(label, on_click, border);
|
||||
ConstRef<ButtonOption> option) {
|
||||
return Make<ButtonBase>(label, std::move(on_click), std::move(option));
|
||||
}
|
||||
|
||||
// static
|
||||
@ -44,12 +44,12 @@ ButtonBase* ButtonBase::From(Component component) {
|
||||
|
||||
ButtonBase::ButtonBase(ConstStringRef label,
|
||||
std::function<void()> on_click,
|
||||
bool border)
|
||||
: label_(label), on_click_(on_click), border_(border) {}
|
||||
ConstRef<ButtonOption> option)
|
||||
: label_(label), on_click_(on_click), option_(std::move(option)) {}
|
||||
|
||||
Element ButtonBase::Render() {
|
||||
auto style = Focused() ? inverted : nothing;
|
||||
auto my_border = border_ ? border : nothing;
|
||||
auto my_border = option_->border ? border : nothing;
|
||||
return text(*label_) | my_border | style | reflect(box_);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user