/* 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 #ifndef _WIN32 # include #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(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(); }