Add option for Toggle.

This commit is contained in:
ArthurSonzogni
2021-07-10 11:03:01 +02:00
committed by Arthur Sonzogni
parent ae6473363d
commit fac373494d
7 changed files with 43 additions and 29 deletions

View File

@@ -23,7 +23,7 @@ class ButtonBase : public ComponentBase {
// Constructor.
ButtonBase(ConstStringRef label,
std::function<void()> on_click,
ConstRef<ButtonOption> option);
ConstRef<ButtonOption> option = {});
~ButtonBase() override = default;
// Component implementation.

View File

@@ -39,7 +39,9 @@ Component Menu(const std::vector<std::wstring>* entries,
Component Radiobox(const std::vector<std::wstring>* entries,
int* selected_,
ConstRef<RadioboxOption> option = {});
Component Toggle(const std::vector<std::wstring>* entries, int* selected);
Component Toggle(const std::vector<std::wstring>* entries,
int* selected,
ConstRef<ToggleOption> option = {});
template <class T> // T = {int, float, long}
Component Slider(StringRef label, T* value, T min, T max, T increment);
Component Renderer(Component child, std::function<Element()>);

View File

@@ -46,6 +46,17 @@ struct RadioboxOption {
std::function<void()> on_change = []() {};
};
struct ToggleOption {
Decorator normal_style = dim;
Decorator focused_style = inverted;
Decorator selected_style = bold;
Decorator selected_focused_style = focused_style | selected_style;
// Callback.
std::function<void()> on_change = []() {};
std::function<void()> on_enter = []() {};
};
}; // namespace ftxui
#endif /* end of include guard: FTXUI_COMPONENT_COMPONENT_OPTIONS_HPP */

View File

@@ -24,7 +24,7 @@ class RadioboxBase : public ComponentBase {
// Constructor.
RadioboxBase(const std::vector<std::wstring>* entries,
int* selected,
ConstRef<RadioboxOption> option);
ConstRef<RadioboxOption> option = {});
~RadioboxBase() override = default;
int focused = 0;

View File

@@ -21,21 +21,14 @@ class ToggleBase : public ComponentBase {
static ToggleBase* From(Component component);
// Constructor.
ToggleBase(const std::vector<std::wstring>* entries, int* selected);
ToggleBase(const std::vector<std::wstring>* entries,
int* selected,
ConstRef<ToggleOption> option = {});
~ToggleBase() override = default;
// State.
int focused = 0;
Decorator normal_style = dim;
Decorator focused_style = inverted;
Decorator selected_style = bold;
Decorator selected_focused_style = focused_style | selected_style;
// Callback.
std::function<void()> on_change = []() {};
std::function<void()> on_enter = []() {};
// Component implementation.
Element Render() override;
bool OnEvent(Event) override;
@@ -46,6 +39,7 @@ class ToggleBase : public ComponentBase {
bool OnMouseEvent(Event event);
std::vector<Box> boxes_;
ConstRef<ToggleOption> option_;
};
} // namespace ftxui