void StatFormBase::EndWin() { if(!m_bCursesOn) return; m_bCursesOn = false; //退出到命令行模式 resetty(); endwin(); }
void do_shell(void) { int ret; addch('\n'); savetty(); #ifdef DJGPP ret = system(""); #else ret = system(shell); #endif resetty(); }
endwin() { resetty(); _puts(VE); _puts(TE); if (curscr) { if (curscr->_flags & _STANDOUT) { _puts(SE); curscr->_flags &= ~_STANDOUT; } _endwin = TRUE; } }
int endwin() { extern char *me; curs_set(1); poscur(LINES - 1, 0); refresh(); tputs(me, 1, outc); delwin(stdscr); delwin(curscr); delwin(_cursvar.tmpwin); resetty(); return(OK); }
/* What we do when we're all set to exit */ void finish(void) { curs_set(1); clear(); refresh(); resetty(); endwin(); if (console) { #ifdef HAVE_CONSOLECHARS va_system("consolechars -d"); #elif defined(HAVE_SETFONT) va_system("setfont"); #endif } exit(0); }
void resizeTest(WINDOW *dummy) { WINDOW *win1; int nwidth = 135, nheight = 52; int owidth = COLS, oheight = LINES; savetty(); resize_term(nheight, nwidth); clear(); refresh(); win1 = newwin(10, 50, 14, 25); if (win1 == NULL) { endwin(); return; } #ifdef A_COLOR if (has_colors()) { init_pair(3, COLOR_BLUE, COLOR_WHITE); wattrset(win1, COLOR_PAIR(3)); } wclear(win1); #endif mvwaddstr(win1, 0, 0, "The screen may now be resized"); mvwprintw(win1, 1, 4, "Given size: %d by %d", nwidth, nheight); mvwprintw(win1, 2, 4, "Actual size: %d by %d", COLS, LINES); Continue(win1); wclear(win1); resetty(); mvwaddstr(win1, 0, 0, "The screen should now be reset"); mvwprintw(win1, 1, 6, "Old size: %d by %d", owidth, oheight); mvwprintw(win1, 2, 6, "Size now: %d by %d", COLS, LINES); Continue(win1); delwin(win1); clear(); refresh(); }
/* What we do when we're all set to exit */ RETSIGTYPE finish(int sigage) { curs_set(1); clear(); refresh(); resetty(); endwin(); #ifdef HAVE_CONSOLECHARS if (console) va_system("consolechars -d"); #elif defined(HAVE_SETFONT) if (console) va_system("setfont"); #endif exit(0); }
/* Catch SIGCONT to restore the terminal and refresh the screen. */ static void tui_cont_sig (int sig) { if (tui_active) { /* Restore the terminal setting because another process (shell) might have changed it. */ resetty (); /* Force a refresh of the screen. */ tui_refresh_all_win (); wrefresh (TUI_CMD_WIN->generic.handle); } signal (sig, tui_cont_sig); }
static TACommandVerdict resetty_cmd(TAThread thread, TAInputStream stream) { // Prepare int res; START_TARGET_OPERATION(thread); // Execute res = resetty(); END_TARGET_OPERATION(thread); // Response writeInt(thread, res); sendResponse(thread); return taDefaultVerdict; }
/* Catch SIGCONT to restore the terminal and refresh the screen. */ static void tui_cont_sig (int sig) { if (tui_active) { /* Restore the terminal setting because another process (shell) might have changed it. */ resetty (); /* Force a refresh of the screen. */ tui_refresh_all_win (); /* Update cursor position on the screen. */ wmove (TUI_CMD_WIN->generic.handle, TUI_CMD_WIN->detail.command_info.start_line, TUI_CMD_WIN->detail.command_info.curch); wrefresh (TUI_CMD_WIN->generic.handle); } signal (sig, tui_cont_sig); }
void mytstp() { resetty(); #ifdef SIGTSTP kill(0,SIGTSTP); #else if (fork()) wait(0); else { char *shell = getenv("SHELL"); setuid(getuid()); if (!*shell) shell = "/bin/sh"; execl(shell,shell,0); exit(1); } #endif rewrite(); }
int escapade() { register char *s; bool interactive = (buf[1] == FINISHCMD); bool docd; char whereiam[512]; if (!finish_command(interactive)) /* get remainder of command */ return -1; s = buf+1; docd = *s != '!'; if (!docd) { s++; } else { getwd(whereiam); if (chdir(cwd)) { printf(nocd,cwd) FLUSH; sig_catcher(0); } } while (*s == ' ') s++; /* skip leading spaces */ interp(cmd_buf, (sizeof cmd_buf), s);/* interpret any % escapes */ resetty(); /* make sure tty is friendly */ doshell(Nullch,cmd_buf); /* invoke the shell */ noecho(); /* and make terminal */ crmode(); /* unfriendly again */ if (docd) { if (chdir(whereiam)) { printf(nocd,whereiam) FLUSH; sig_catcher(0); } } #ifdef MAILCALL mailcount = 0; /* force recheck */ #endif return 0; }
/* What we do when we're all set to exit */ RETSIGTYPE c_die(char *msg, ...) { va_list ap; curs_set(1); clear(); refresh(); resetty(); endwin(); #ifdef HAVE_CONSOLECHARS if (console) va_system("consolechars -d"); #elif defined(HAVE_SETFONT) if (console) va_system("setfont"); #endif va_start(ap, msg); vfprintf(stderr, "%s", ap); va_end(ap); exit(0); }
void restore_curses() { curs_set(0); resetty(); }
cell pp_curs_resetty(cell x) { if (!Running) return UNSPECIFIC; resetty(); return UNSPECIFIC; }
int main(){ WINDOW *consola; /* La función initscr(); determina el tipo de terminal e inicializa todas las estructuras de datos privadas de la biblioteca ncurses.h También hace una primera llamada a la función refresh, que actualiza el aspecto de la pantalla. Si se produce algún error, imprime un mensaje indicándolo y acaba el programa. Si finaliza correctamente, devuelve un puntero a una estructura que hace referencia a la pantalla. Ese puntero se usará como parámetro en algunas funciones. */ consola = initscr(); /* La función savetty(); guarda el estado en que se puso en marcha el programa por una llamada a reset_prog_mode(). */ savetty(); /* La función keypad activa y desactiva la rutina de procesado de caracteres especiales. Si está activada (el segundo parámetro es TRUE) cuando se pulse una tecla especial, las funciones de lectura, como getch(), devuelven un único valor, por ejemplo KEY_LEFT, para el cursor hacia arriba. Si está desactivada, la lectura de una tecla especial requiere "dos" caracteres, y por tanto dos lecturas, y es el usuario el que se tiene que encargar de interpretar los caracteres de estas teclas especiales. */ keypad(consola, TRUE); /* Las rutinas echo() y noecho() controlan si el carácter tecleado es escrito en pantalla (eco) al leerse con la rutina getch. */ noecho(); /* La rutinas nl() y nonl() controlan el funcionamiento de la tecla "retorno de carro" tanto en la lectura como en la escritura. Si se llama a nonl(), la lectura del retorno de carro, no añade una nueva línea, sino que su funcionamiento es controlado directamente por la aplicación. */ nonl(); /* La rutina curs_set establece el aspecto del cursor: 0 -> invisible, 1 -> visible, 2 -> muy visible. */ curs_set(0); /* Limpia la pantalla (consola) */ erase(); Persona alumno = {"Martin","Alem","M",19}; typedef unsigned int nota; float promedio = 0; nota parcial1 = 0; nota parcial2 = 0; printw("\nNota del primer parcial: "); scanw("%d", &parcial1); printw("\nNota del segundo parcial: "); scanw("%d", &parcial2); promedio = (float) (parcial1 + parcial2) / 2; printw("\nEl alumno %7s %7s tiene como promedio: %.2f", alumno.nombre,alumno.apellido,promedio); printw("\n\nPresione una tecla para salir..."); getch(); echo(); /* La función resetty() restaura el modo de programa a partir de la última llamada a savetty(), y se usa previo a la función endwin(); */ resetty(); /* Al terminar de trabajar en el modo terminal, el programa debe llamar a la función endwin() para restaurar los valores apropiados de las variables de entorno y seguir trabajando en el modo texto normal */ endwin(); return 0; }