/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include "Host/GraphicsAppManager.hpp" #include "ExampleAppList.hpp" #include #include #include #include #include // for Event, Event::Custom #include #include using namespace OpenVulkano; int main(int argc, char** argv) { int selectedExample = -1; if (argc == 2) { selectedExample = strtol(argv[1], nullptr, 10); } if (selectedExample < 0) { std::vector examples; for (const auto& e : EXAMPLE_APPS) { examples.emplace_back(e.first); } ftxui::MenuOption option; auto screen = ftxui::ScreenInteractive::TerminalOutput(); bool shouldExit = true; option.on_enter = [&]() { shouldExit = false; screen.ExitLoopClosure()(); }; auto menu = ftxui::Menu(&examples, &selectedExample, option); screen.Loop(menu); if (shouldExit) return 0; if (selectedExample >= examples.size()) { throw std::runtime_error("Invalid menu selection!"); } } std::unique_ptr app(EXAMPLE_APPS[selectedExample].second()); GraphicsAppManager manager(app.get()); manager.Run(); return 0; }