DD2-monitor/viz/curses/ecran.c
2019-05-13 17:48:58 +02:00

101 lines
1.8 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/utsname.h>
#include <getopt.h>
#include <ncurses.h>
#include "ecran.h"
extern int verbosity;
/* ---------------------------------------------------------------- */
int kbhit(void)
{
int r, ch;
nodelay(stdscr, TRUE);
noecho();
// check for input
ch = getch();
if( ch == ERR) { // no input
r = FALSE;
}
else { // input
r = TRUE;
ungetch(ch);
}
// restore block and echo
echo();
nodelay(stdscr, FALSE);
return r;
}
/* ---------------------------------------------------------------- */
int message(char *txt)
{
static int pass = 0;
#if TRACE
fprintf(stderr, "%s [%s]\n", __func__, txt);
#endif
standout();
mvhline(LINES-1, 0, ' ', COLS);
mvaddch(LINES-1, 0, "\\|/-"[(pass++)%4]);
mvaddstr(LINES-1, 2, txt);
standend();
refresh();
return 0;
}
/* ---------------------------------------------------------------- */
void barre_inverse(char c, int ligne)
{
int foo;
standout();
for (foo=0; foo<COLS; foo++)
mvaddch(ligne, foo, c);
standend();
/* refresh(); */
}
/* ---------------------------------------------------------------- */
/* make display on the standard screen (stdscr) */
int fond_ecran(char *title)
{
char *tp;
struct utsname utsn;
int foo;
char buffer[200];
tp = " DD2 Monitoring by tTh 2019 ";
if (NULL != title) tp = title;
barre_inverse(' ', 0);
standout();
mvaddstr(0, 2, tp);
if (verbosity) {
sprintf(buffer, " ecr: %dx%d ", COLS, LINES);
fprintf(stderr, "%s ==> %s\n", __func__, buffer);
foo = strlen(buffer);
mvaddstr(0, COLS-2-foo, buffer);
}
/* get and display hostname */
foo = uname(&utsn);
if ( !foo ) {
mvaddstr(0, 2+strlen(tp), "on");
mvaddstr(0, 5+strlen(tp), utsn.nodename);
}
standend();
refresh();
return 0;
}
/* ---------------------------------------------------------------- */