| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /* 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 <string>
- #include <vector>
- #include "cmCursesForm.h"
- #include "cmCursesStandardIncludes.h"
- class cmCursesLongMessageForm : public cmCursesForm
- {
- public:
- enum class ScrollBehavior
- {
- NoScroll,
- ScrollDown
- };
- cmCursesLongMessageForm(std::vector<std::string> 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];
- };
|