/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include #include #include "cmCursesForm.h" #include "cmCursesStandardIncludes.h" class cmCursesLongMessageForm : public cmCursesForm { public: enum class ScrollBehavior { NoScroll, ScrollDown }; cmCursesLongMessageForm(std::vector const& messages, const char* title, ScrollBehavior scrollBehavior); ~cmCursesLongMessageForm() override; cmCursesLongMessageForm(cmCursesLongMessageForm const&) = delete; cmCursesLongMessageForm& operator=(cmCursesLongMessageForm const&) = delete; void UpdateContent(std::string const& output, std::string const& title); // Description: // Handle user input. void HandleInput() override; // Description: // Display form. Use a window of size width x height, starting // at top, left. void Render(int left, int top, int width, int height) override; // Description: // This method should normally called only by the form. // The only exception is during a resize. void PrintKeys(); // Description: // This method should normally called only by the form. // The only exception is during a resize. void UpdateStatusBar() override; protected: static constexpr int MAX_CONTENT_SIZE = 60000; void DrawMessage(const char* msg) const; std::string Messages; std::string Title; ScrollBehavior Scrolling; FIELD* Fields[2]; };