// // cli.hpp // ncurses-wrapper // // Created by Sam Jaffe on 7/23/24. // #pragma once #include #include #include #include namespace curses { class Cli { private: Window window_; std::string prompt_; std::vector stack_{""}; int horizontal_offset_{0}; int vertical_offset_{0}; public: template explicit Cli(std::string const &prompt, Flags const &...flags) : window_(flags..., NoEcho, Scrollable, ExtendedKeys), prompt_(prompt) {} void loop(std::function on_enter); private: size_t index() const { return stack_.size() - vertical_offset_ - 1; } std::string &get() { return stack_.at(index()); } }; }