void showiostat(void) { int i, row, _col; struct kinfo_cputime diff_cp_time; uint64_t cp_total; diff_cp_time.cp_user = cp_time.cp_user - old_cp_time.cp_user; diff_cp_time.cp_nice = cp_time.cp_nice - old_cp_time.cp_nice; diff_cp_time.cp_sys = cp_time.cp_sys - old_cp_time.cp_sys; diff_cp_time.cp_intr = cp_time.cp_intr - old_cp_time.cp_intr; diff_cp_time.cp_idle = cp_time.cp_idle - old_cp_time.cp_idle; old_cp_time = cp_time; row = 1; cp_total = diff_cp_time.cp_user + diff_cp_time.cp_nice + diff_cp_time.cp_sys + diff_cp_time.cp_intr + diff_cp_time.cp_idle; stat1(row++, diff_cp_time.cp_user, cp_total); stat1(row++, diff_cp_time.cp_nice, cp_total); stat1(row++, diff_cp_time.cp_sys, cp_total); stat1(row++, diff_cp_time.cp_intr, cp_total); stat1(row++, diff_cp_time.cp_idle, cp_total); if (!numbers) { row += 2; for (i = 0; i < num_devices; i++) if (dev_select[i].selected) { if (row > wnd->_maxy - linesperregion) break; row = devstats(row, INSET, i); } return; } _col = INSET; wmove(wnd, row + linesperregion, 0); wdeleteln(wnd); wmove(wnd, row + 3, 0); winsertln(wnd); for (i = 0; i < num_devices; i++) if (dev_select[i].selected) { if (_col + COLWIDTH >= wnd->_maxx - INSET) { _col = INSET, row += linesperregion + 1; if (row > wnd->_maxy - (linesperregion + 1)) break; wmove(wnd, row + linesperregion, 0); wdeleteln(wnd); wmove(wnd, row + 3, 0); winsertln(wnd); } (void) devstats(row + 3, _col, i); _col += COLWIDTH; } }
void showiostat(void) { long t; int i, row, _col; #define X(fld) t = cur.fld[i]; cur.fld[i] -= last.fld[i]; last.fld[i] = t etime = 0; for(i = 0; i < CPUSTATES; i++) { X(cp_time); etime += cur.cp_time[i]; } if (etime == 0.0) etime = 1.0; etime /= hertz; row = 1; for (i = 0; i < CPUSTATES; i++) stat1(row++, i); if (!numbers) { row += 2; for (i = 0; i < num_devices; i++) if (dev_select[i].selected) { if (row > wnd->_maxy - linesperregion) break; row = devstats(row, INSET, i); } return; } _col = INSET; wmove(wnd, row + linesperregion, 0); wdeleteln(wnd); wmove(wnd, row + 3, 0); winsertln(wnd); for (i = 0; i < num_devices; i++) if (dev_select[i].selected) { if (_col + COLWIDTH >= wnd->_maxx - INSET) { _col = INSET, row += linesperregion + 1; if (row > wnd->_maxy - (linesperregion + 1)) break; wmove(wnd, row + linesperregion, 0); wdeleteln(wnd); wmove(wnd, row + 3, 0); winsertln(wnd); } (void) devstats(row + 3, _col, i); _col += COLWIDTH; } }
int winsdelln(WINDOW *win, int n) { int i; PDC_LOG(("winsdelln() - called\n")); if (!win) return ERR; if (n > 0) { for (i = 0; i < n; i++) if (winsertln(win) == ERR) return ERR; } else if (n < 0) { n = -n; for (i = 0; i < n; i++) if (wdeleteln(win) == ERR) return ERR; } return OK; }
void scrollup(int top, int bot) { wmove(curwin, top, 0); wdeleteln(curwin); wmove(curwin, bot, 0); winsertln(curwin); wrefresh(curwin); }
int mvwinsertln(WINDOW *win, int y, int x) { PDC_LOG(("mvwinsertln() - called\n")); if (wmove(win, y, x) == ERR) return ERR; return winsertln(win); }
int mvinsertln(int y, int x) { PDC_LOG(("mvinsertln() - called\n")); if (move(y, x) == ERR) return ERR; return winsertln(stdscr); }
/* * cl_insertln -- * Push down the current line, discarding the bottom line. * * PUBLIC: int cl_insertln __P((SCR *)); */ int cl_insertln(SCR *sp) { WINDOW *win; win = CLSP(sp) ? CLSP(sp) : stdscr; /* * The current line is expected to be blank after this operation, * and the screen must support that semantic. */ return (winsertln(win) == ERR); }
main() { int i; WINDOW *win; initscr(); noecho(); nonl(); cbreak(); scrollok(stdscr, TRUE); for (i=0; i<25; i++) printw("This is in the background, this should be left alone!\n"); refresh(); win=newwin(10,50,6,20); scrollok(win,TRUE); wmove(win,0,0); whline(win,0,49); wmove(win,9,0); whline(win,0,49); wrefresh(win); wattrset(win,A_STANDOUT); mvwprintw(win, 0, 14, " Scrolling Demo! "); mvwprintw(win, 9, 14, " Scrolling Demo! "); wattroff(win,A_STANDOUT); wsetscrreg(win, 1,8); mvwprintw(win, 0, 5, " DOWN "); wmove(win,1,0); wrefresh(win); getch(); for (i=0; i<25; i++){ wprintw(win, "This is window line test (%d).\n", i); if (i%2) wattrset(win,A_BOLD); else wattroff(win,A_BOLD); wrefresh(win); } mvwprintw(win, 0, 5, " UP "); wrefresh(win); getch(); for (i=0; i<25; i++) { wmove(win,1,0); winsertln(win); if (i%2) wattrset(win,A_BOLD); else wattroff(win,A_BOLD); wprintw(win, "Scrolling backwards! (%d)\n", i); wrefresh(win); } mvwprintw(win, 0, 5, " DONE "); wrefresh(win); endwin(); }
static TACommandVerdict winsertln_cmd(TAThread thread,TAInputStream stream) { WINDOW *win; int res; win = readPointer(&stream); START_TARGET_OPERATION(thread); res = winsertln(win); END_TARGET_OPERATION(thread); writeInt(thread, res); sendResponse(thread); return taDefaultVerdict; }
static void test_winsdelln(WINDOW *win) { STATUS st; int n; init_status(win, &st); do { (void) wattrset(win, st.attr | COLOR_PAIR(st.pair)); switch (st.ch) { case 'i': for (n = 0; n < st.count; ++n) winsertln(win); break; case 'd': for (n = 0; n < st.count; ++n) wdeleteln(win); break; case 'I': winsdelln(win, st.count); break; case 'D': winsdelln(win, -st.count); break; case 'f': fill_window(win); reshow_status(win, &st); break; case 'w': do_subwindow(win, &st, test_winsdelln); break; case 'q': return; default: update_status(win, &st); break; } } while ((st.ch = wgetch(win)) != ERR); }
EIF_INTEGER c_ecurses_winsertln (EIF_POINTER w) { return winsertln ((WINDOW *)w) ; };
static void outputTest(WINDOW *win) { WINDOW *win1; char Buffer[80]; chtype ch; int by, bx; #if !HAVE_TIGETSTR #if HAVE_TGETENT char tc_buffer[4096]; char tc_parsed[4096]; char *area_pointer = tc_parsed; tgetent(tc_buffer, getenv("TERM")); #else #define tgetstr(a,b) 0 #endif #endif /* !HAVE_TIGETSTR */ nl(); wclear(win); MvWAddStr(win, 1, 1, "You should now have a screen in the upper left corner, and this text should have wrapped"); mvwin(win, 2, 1); waddstr(win, "\nThis text should be down\n"); waddstr(win, "and broken into two here ^"); Continue(win); wclear(win); wattron(win, A_BOLD); MvWAddStr(win, 1, 1, "A new window will appear with this text in it"); MvWAddStr(win, 8, 1, "Press any key to continue"); wrefresh(win); wgetch(win); getbegyx(win, by, bx); if (LINES < 24 || COLS < 75) { MvWAddStr(win, 5, 1, "Some tests have been skipped as they require a"); MvWAddStr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS"); Continue(win); } else { win1 = newwin(10, 50, 14, 25); if (win1 == NULL) { endwin(); return; } #ifdef A_COLOR if (has_colors()) { init_pair(3, COLOR_BLUE, COLOR_WHITE); wbkgd(win1, (chtype) COLOR_PAIR(3)); } else wbkgd(win1, A_NORMAL); #else wbkgd(win1, A_NORMAL); #endif wclear(win1); MvWAddStr(win1, 5, 1, "This text should appear; using overlay option"); copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE); #if defined(PDCURSES) && !defined(XCURSES) box(win1, 0xb3, 0xc4); #else box(win1, ACS_VLINE, ACS_HLINE); #endif wmove(win1, 8, 26); wrefresh(win1); wgetch(win1); wclear(win1); wattron(win1, A_BLINK); MvWAddStr(win1, 4, 1, "This blinking text should appear in only the second window"); wattroff(win1, A_BLINK); mvwin(win1, by, bx); overlay(win, win1); mvwin(win1, 14, 25); wmove(win1, 8, 26); wrefresh(win1); wgetch(win1); delwin(win1); } clear(); wclear(win); wrefresh(win); MvWAddStr(win, 6, 2, "This line shouldn't appear"); MvWAddStr(win, 4, 2, "Only half of the next line is visible"); MvWAddStr(win, 5, 2, "Only half of the next line is visible"); wmove(win, 6, 1); wclrtobot(win); wmove(win, 5, 20); wclrtoeol(win); MvWAddStr(win, 8, 2, "This line also shouldn't appear"); wmove(win, 8, 1); wdeleteln(win); Continue(win); wmove(win, 5, 9); ch = winch(win); wclear(win); wmove(win, 6, 2); waddstr(win, "The next char should be l: "); winsch(win, ch); Continue(win); #if HAVE_WINSSTR (void) mvwinsstr(win, 6, 2, "A1B2C3D4E5"); Continue(win); #endif wmove(win, 5, 1); winsertln(win); MvWAddStr(win, 5, 2, "The lines below should have moved down"); Continue(win); wclear(win); wmove(win, 2, 2); wprintw(win, "This is a formatted string in a window: %d %s\n", 42, "is it"); MvWAddStr(win, 10, 1, "Enter a string: "); wrefresh(win); noraw(); echo(); *Buffer = 0; wscanw(win, "%s", Buffer); printw("This is a formatted string in stdscr: %d %s\n", 42, "is it"); MvAddStr(10, 1, "Enter a string: "); *Buffer = 0; scanw("%s", Buffer); if (TIGETSTR("cvvis", "vs") != 0) { wclear(win); curs_set(2); MvWAddStr(win, 1, 1, "The cursor should appear as a block (visible)"); Continue(win); } if (TIGETSTR("civis", "vi") != 0) { wclear(win); curs_set(0); MvWAddStr(win, 1, 1, "The cursor should have disappeared (invisible)"); Continue(win); } if (TIGETSTR("cnorm", "ve") != 0) { wclear(win); curs_set(1); MvWAddStr(win, 1, 1, "The cursor should be an underline (normal)"); Continue(win); } #ifdef A_COLOR if (has_colors()) { wclear(win); MvWAddStr(win, 1, 1, "Colors should change after you press a key"); Continue(win); init_pair(1, COLOR_RED, COLOR_WHITE); wrefresh(win); } #endif werase(win); #if HAVE_TERMNAME MvWAddStr(win, 1, 1, "Information About Your Terminal"); MvWAddStr(win, 3, 1, termname()); MvWAddStr(win, 4, 1, longname()); if (termattrs() & A_BLINK) MvWAddStr(win, 5, 1, "This terminal supports blinking."); else MvWAddStr(win, 5, 1, "This terminal does NOT support blinking."); #endif (void) mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16); wrefresh(win); (void) mvwinnstr(win, 7, 5, Buffer, 18); MvAddStr(LINES - 2, 10, Buffer); refresh(); Continue(win); }
void insline (void) { if (initialized==0) init_lconio(); winsertln(conio_scr); wrefresh(conio_scr); }
int insertln(void) { PDC_LOG(("insertln() - called\n")); return winsertln(stdscr); }
char *GetHistory() { int ch, tmp; int start_x; char *RetVal = NULL; History *TMP; int hide_left, hide_right; disp_begin_pos = 0; cursor_pos = 0; start_x = 0; /* leaveok(stdscr, TRUE); */ (void) DisplayHistory(); do { RefreshWindow( history_window ); doupdate(); ch = Getch(); if(ch != -1 && ch != KEY_RIGHT && ch != KEY_LEFT) { if(start_x) { start_x = 0; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } } switch( ch ) { case -1: RetVal = NULL; break; case ' ': break; /* Quick-Key */ case KEY_RIGHT: start_x++; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); if(hide_right < 0) start_x--; break; case KEY_LEFT: if(start_x > 0) start_x--; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); break; case '\t': case KEY_DOWN: if (disp_begin_pos + cursor_pos+1 >= total_hist) { beep(); } else { if( cursor_pos + 1 < HISTORY_WINDOW_HEIGHT ) { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); cursor_pos++; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } else { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); scroll( history_window ); disp_begin_pos++; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } } break; case KEY_BTAB: case KEY_UP : if( disp_begin_pos + cursor_pos - 1 < 0 ) { beep(); } else { if( cursor_pos - 1 >= 0 ) { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); cursor_pos--; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } else { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); wmove( history_window, 0, 0 ); winsertln( history_window ); disp_begin_pos--; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } } break; case KEY_NPAGE: if( disp_begin_pos + cursor_pos >= total_hist - 1 ) { beep(); } else { if( cursor_pos < HISTORY_WINDOW_HEIGHT - 1 ) { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); if( disp_begin_pos + HISTORY_WINDOW_HEIGHT > total_hist - 1 ) cursor_pos = total_hist - disp_begin_pos - 1; else cursor_pos = HISTORY_WINDOW_HEIGHT - 1; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } else { if( disp_begin_pos + cursor_pos + HISTORY_WINDOW_HEIGHT < total_hist ) { disp_begin_pos += HISTORY_WINDOW_HEIGHT; cursor_pos = HISTORY_WINDOW_HEIGHT - 1; } else { disp_begin_pos = total_hist - HISTORY_WINDOW_HEIGHT; if( disp_begin_pos < 0 ) disp_begin_pos = 0; cursor_pos = total_hist - disp_begin_pos - 1; } DisplayHistory(); } } break; case KEY_PPAGE: if( disp_begin_pos + cursor_pos <= 0 ) { beep(); } else { if( cursor_pos > 0 ) { PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HST_COLOR, start_x, &hide_left, &hide_right); cursor_pos = 0; PrintHstEntry( disp_begin_pos + cursor_pos, cursor_pos, HIHST_COLOR, start_x, &hide_left, &hide_right); } else { if( (disp_begin_pos -= HISTORY_WINDOW_HEIGHT) < 0 ) { disp_begin_pos = 0; } cursor_pos = 0; DisplayHistory(); } } break; case KEY_HOME: if( disp_begin_pos == 0 && cursor_pos == 0 ) { beep(); } else { disp_begin_pos = 0; cursor_pos = 0; DisplayHistory(); } break; case KEY_END : disp_begin_pos = MAX(0, total_hist - HISTORY_WINDOW_HEIGHT); cursor_pos = total_hist - disp_begin_pos - 1; DisplayHistory(); break; case LF : case CR : TMP = Hist; for(tmp = 0; (tmp != disp_begin_pos + cursor_pos); tmp++) { TMP = TMP -> next; if (TMP == NULL) break; } if (TMP != NULL) RetVal = TMP -> hst; else RetVal = NULL; break; case ESC: RetVal = NULL; break; default : beep(); break; } /* switch */ } while(ch != CR && ch != ESC && ch != -1); /* leaveok(stdscr, FALSE); */ touchwin(stdscr); return RetVal; }