// Copyright 2020 Arthur Sonzogni. All rights reserved. // Use of this source code is governed by the MIT license that can be found in // the LICENSE file. #include // for allocator, __shared_ptr_access, shared_ptr #include // for string, basic_string #include // for vector #include "ftxui/component/captured_mouse.hpp" // for ftxui #include "ftxui/component/component.hpp" // for Radiobox, Horizontal, Menu, Renderer, Tab #include "ftxui/component/component_base.hpp" // for ComponentBase #include "ftxui/component/screen_interactive.hpp" // for ScreenInteractive #include "ftxui/dom/elements.hpp" // for Element, separator, hbox, operator|, border using namespace ftxui; int main() { std::vector tab_values{ "tab_1", "tab_2", "tab_3", }; int tab_selected = 0; auto tab_menu = Menu(&tab_values, &tab_selected); std::vector tab_1_entries{ "Forest", "Water", "I don't know", }; int tab_1_selected = 0; std::vector tab_2_entries{ "Hello", "Hi", "Hay", }; int tab_2_selected = 0; std::vector tab_3_entries{ "Table", "Nothing", "Is", "Empty", }; int tab_3_selected = 0; auto tab_container = Container::Tab( { Radiobox(&tab_1_entries, &tab_1_selected), Radiobox(&tab_2_entries, &tab_2_selected), Radiobox(&tab_3_entries, &tab_3_selected), }, &tab_selected); auto container = Container::Horizontal({ tab_menu, tab_container, }); auto renderer = Renderer(container, [&] { return hbox({ tab_menu->Render(), separator(), tab_container->Render(), }) | border; }); auto screen = ScreenInteractive::TerminalOutput(); screen.Loop(renderer); }