#include <ncurses.h>
#include "main.h"
#include "screen.h"
+#include "util.h"
/* Types */
typedef struct {
- char *name;
- void (*init)(void);
- void (*draw)(void);
- int (*run)(int,mmask_t,int,int);
- int keys[8];
+ char *name;
+ void (*init)(WINDOW*);
+ void (*draw)(void);
+ int (*run)(int,mmask_t,int,int);
+ int keys[8];
+ WINDOW *win;
} view_t;
/* Data */
for (int i = 0; i < N_ELEMENTS(views); i++) {
if (i == active)
attron(A_BOLD);
- printw(" %s", views[i].name);
+ printw("%s ", views[i].name);
if (i == active)
attroff(A_BOLD);
}
attroff(COLOR_PAIR(COLOR_TITLE));
mvhline(1, 0, ACS_HLINE, COLS);
+ refresh();
}
/* Screen init */
void screen_init(void)
{
+ for (int i = 0; i < N_ELEMENTS(views); i++) {
+ if (views[i].init) {
+ views[i].win = newwin(LINES-2, COLS, 2, 0);
+ views[i].init(views[i].win);
+ }
+ }
+}
+
+/* Screen draw */
+void screen_resize(void)
+{
+ for (int i = 0; i < N_ELEMENTS(views); i++)
+ if (views[i].init)
+ wresize(views[i].win, LINES-2, COLS);
}
/* Screen draw */
void screen_draw(void)
{
draw_header();
+ werase(views[active].win);
views[active].draw();
+ wrefresh(views[active].win);
}
/* Screen set */