/* 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 "cmsys/FStream.hxx" #include "cmCursesStandardIncludes.h" class cmCursesForm { public: cmCursesForm(); virtual ~cmCursesForm(); cmCursesForm(cmCursesForm const&) = delete; cmCursesForm& operator=(cmCursesForm const&) = delete; // Description: // Handle user input. virtual void HandleInput() = 0; // Description: // Display form. virtual void Render(int left, int top, int width, int height) = 0; // Description: // This method should normally called only by the form. // The only exception is during a resize. virtual void UpdateStatusBar() = 0; // Description: // During a CMake run, an error handle should add errors // to be displayed afterwards. virtual void AddError(const std::string&, const char*) {} // Description: // Turn debugging on. This will create ccmakelog.txt. static void DebugStart(); // Description: // Turn debugging off. This will close ccmakelog.txt. static void DebugEnd(); // Description: // Write a debugging message. static void LogMessage(const char* msg); // Description: // Return the FORM. Should be only used by low-level methods. FORM* GetForm() { return this->Form; } static cmCursesForm* CurrentForm; // Description: // Handle resizing the form with curses. void HandleResize(); protected: static cmsys::ofstream DebugFile; static bool Debug; FORM* Form; };