| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #include "cmCursesForm.h" |
| |
| #include <cstdlib> |
| #ifndef _WIN32 |
| # include <unistd.h> |
| #endif // _WIN32 |
| |
| cmsys::ofstream cmCursesForm::DebugFile; |
| bool cmCursesForm::Debug = false; |
| |
| cmCursesForm::cmCursesForm() |
| { |
| this->Form = nullptr; |
| } |
| |
| cmCursesForm::~cmCursesForm() |
| { |
| if (this->Form) { |
| unpost_form(this->Form); |
| free_form(this->Form); |
| this->Form = nullptr; |
| } |
| } |
| |
| void cmCursesForm::DebugStart() |
| { |
| cmCursesForm::Debug = true; |
| cmCursesForm::DebugFile.open("ccmakelog.txt"); |
| } |
| |
| void cmCursesForm::DebugEnd() |
| { |
| if (!cmCursesForm::Debug) { |
| return; |
| } |
| |
| cmCursesForm::Debug = false; |
| cmCursesForm::DebugFile.close(); |
| } |
| |
| void cmCursesForm::LogMessage(const char* msg) |
| { |
| if (!cmCursesForm::Debug) { |
| return; |
| } |
| |
| cmCursesForm::DebugFile << msg << std::endl; |
| } |
| |
| void cmCursesForm::HandleResize() |
| { |
| endwin(); |
| if (initscr() == nullptr) { |
| static const char errmsg[] = "Error: ncurses initialization failed\n"; |
| #ifdef _WIN32 |
| fprintf(stderr, "%s", errmsg); |
| #else |
| auto r = write(STDERR_FILENO, errmsg, sizeof(errmsg) - 1); |
| static_cast<void>(r); |
| #endif // _WIN32 |
| exit(1); |
| } |
| noecho(); /* Echo off */ |
| cbreak(); /* nl- or cr not needed */ |
| keypad(stdscr, true); /* Use key symbols as KEY_DOWN */ |
| refresh(); |
| int x; |
| int y; |
| getmaxyx(stdscr, y, x); |
| this->Render(1, 1, x, y); |
| this->UpdateStatusBar(); |
| } |