From: Andy Spencer Date: Sat, 29 Sep 2012 07:46:52 +0000 (+0000) Subject: Start using windows and views X-Git-Url: http://pileus.org/git/?p=lackey;a=commitdiff_plain;h=4c530f0e671956651dc76b262f343700789cf474 Start using windows and views --- diff --git a/.gitignore b/.gitignore index 61bceb3..a88d9f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.log *.o +*.swp *~ .vimrc acal diff --git a/src/main.c b/src/main.c index 5de195d..a5d89c9 100644 --- a/src/main.c +++ b/src/main.c @@ -14,7 +14,6 @@ static FILE *debug_fd = NULL; static void on_sigint(int signum) { endwin(); - debug("got sigint\n"); exit(0); } @@ -59,11 +58,9 @@ int main(int argc, char **argv) sigemptyset(&act.sa_mask); act.sa_flags = 0; act.sa_handler = on_sigint; - if (sigaction(SIGINT, &act, NULL) < 0) - debug("sigint error\n"); + sigaction(SIGINT, &act, NULL); act.sa_handler = on_sigwinch; - if (sigaction(SIGWINCH, &act, NULL) < 0) - debug("sigwinch error\n"); + sigaction(SIGWINCH, &act, NULL); /* Curses setup */ initscr(); @@ -76,6 +73,7 @@ int main(int argc, char **argv) init_pair(COLOR_TITLE, COLOR_GREEN, COLOR_BLACK); init_pair(COLOR_ERROR, COLOR_RED, COLOR_BLACK); screen_init(); + screen_draw(); /* Run */ while (1) { @@ -103,6 +101,5 @@ int main(int argc, char **argv) /* Cleanup, see also on_sigint */ endwin(); - debug("cleanup"); return 0; } diff --git a/src/screen.c b/src/screen.c index 926ed50..f31a738 100644 --- a/src/screen.c +++ b/src/screen.c @@ -5,11 +5,12 @@ /* 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 */ @@ -42,11 +43,18 @@ void draw_header(void) } 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 */ diff --git a/src/screen.h b/src/screen.h index 0054dbf..7f6aa9d 100644 --- a/src/screen.h +++ b/src/screen.h @@ -4,14 +4,14 @@ void screen_draw(void); int screen_run(int key, mmask_t btn, int row, int col); /* View init functions */ -void day_init(void); -void week_init(void); -void month_init(void); -void year_init(void); -void todo_init(void); -void notes_init(void); -void settings_init(void); -void help_init(void); +void day_init(WINDOW *win); +void week_init(WINDOW *win); +void month_init(WINDOW *win); +void year_init(WINDOW *win); +void todo_init(WINDOW *win); +void notes_init(WINDOW *win); +void settings_init(WINDOW *win); +void help_init(WINDOW *win); /* View draw functions */ void day_draw(void); diff --git a/src/view/day.c b/src/view/day.c index 7d25d5b..a1763f8 100644 --- a/src/view/day.c +++ b/src/view/day.c @@ -1,16 +1,22 @@ #include -/* day init */ -void day_init(void) +/* Static data */ +static WINDOW *win; + +/* Day init */ +void day_init(WINDOW *_win) { + win = _win; } -/* day draw */ +/* Day draw */ void day_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "day"); + wrefresh(win); } -/* day run */ +/* Day run */ int day_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/help.c b/src/view/help.c index 3db4647..4015f15 100644 --- a/src/view/help.c +++ b/src/view/help.c @@ -1,16 +1,22 @@ #include -/* help init */ -void help_init(void) +/* Static data */ +static WINDOW *win; + +/* Help init */ +void help_init(WINDOW *_win) { + win = _win; } -/* help draw */ +/* Help draw */ void help_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "help"); + wrefresh(win); } -/* help run */ +/* Help run */ int help_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/mkview.sh b/src/view/mkview.sh index 6f5773c..4f9e5e2 100755 --- a/src/view/mkview.sh +++ b/src/view/mkview.sh @@ -1,23 +1,30 @@ #!/bin/bash for file; do - name=${file%.c} + func=$(basename ${file%.c}) + name=$(echo $func | sed -r 's/./\U&/') tab=" " cat > $file <<-EOF #include + /* Static data */ + static WINDOW *win; + /* $name init */ - void ${name}_init(void) + void ${func}_init(WINDOW *_win) { + ${tab}win = _win; } /* $name draw */ - void ${name}_draw(void) + void ${func}_draw(void) { + ${tab}mvwprintw(win, 0, 1, "%s\n", "${func}"); + ${tab}wrefresh(win); } /* $name run */ - int ${name}_run(int key, mmask_t btn, int row, int col) + int ${func}_run(int key, mmask_t btn, int row, int col) { ${tab}return 0; } diff --git a/src/view/month.c b/src/view/month.c index 1644ed9..85ef13e 100644 --- a/src/view/month.c +++ b/src/view/month.c @@ -1,16 +1,22 @@ #include -/* month init */ -void month_init(void) +/* Static data */ +static WINDOW *win; + +/* Month init */ +void month_init(WINDOW *_win) { + win = _win; } -/* month draw */ +/* Month draw */ void month_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "month"); + wrefresh(win); } -/* month run */ +/* Month run */ int month_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/notes.c b/src/view/notes.c index 6bb2984..0b16a1a 100644 --- a/src/view/notes.c +++ b/src/view/notes.c @@ -1,16 +1,22 @@ #include -/* notes init */ -void notes_init(void) +/* Static data */ +static WINDOW *win; + +/* Notes init */ +void notes_init(WINDOW *_win) { + win = _win; } -/* notes draw */ +/* Notes draw */ void notes_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "notes"); + wrefresh(win); } -/* notes run */ +/* Notes run */ int notes_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/settings.c b/src/view/settings.c index baa84cf..8cc6192 100644 --- a/src/view/settings.c +++ b/src/view/settings.c @@ -1,16 +1,22 @@ #include -/* settings init */ -void settings_init(void) +/* Static data */ +static WINDOW *win; + +/* Settings init */ +void settings_init(WINDOW *_win) { + win = _win; } -/* settings draw */ +/* Settings draw */ void settings_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "settings"); + wrefresh(win); } -/* settings run */ +/* Settings run */ int settings_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/todo.c b/src/view/todo.c index acc0682..502909b 100644 --- a/src/view/todo.c +++ b/src/view/todo.c @@ -1,16 +1,22 @@ #include -/* todo init */ -void todo_init(void) +/* Static data */ +static WINDOW *win; + +/* Todo init */ +void todo_init(WINDOW *_win) { + win = _win; } -/* todo draw */ +/* Todo draw */ void todo_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "todo"); + wrefresh(win); } -/* todo run */ +/* Todo run */ int todo_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/week.c b/src/view/week.c index ddaec47..d885c8f 100644 --- a/src/view/week.c +++ b/src/view/week.c @@ -1,16 +1,22 @@ #include -/* week init */ -void week_init(void) +/* Static data */ +static WINDOW *win; + +/* Week init */ +void week_init(WINDOW *_win) { + win = _win; } -/* week draw */ +/* Week draw */ void week_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "week"); + wrefresh(win); } -/* week run */ +/* Week run */ int week_run(int key, mmask_t btn, int row, int col) { return 0; diff --git a/src/view/year.c b/src/view/year.c index 156a4da..7e3e51a 100644 --- a/src/view/year.c +++ b/src/view/year.c @@ -1,16 +1,22 @@ #include -/* year init */ -void year_init(void) +/* Static data */ +static WINDOW *win; + +/* Year init */ +void year_init(WINDOW *_win) { + win = _win; } -/* year draw */ +/* Year draw */ void year_draw(void) { + mvwprintw(win, 0, 1, "%s\n", "year"); + wrefresh(win); } -/* year run */ +/* Year run */ int year_run(int key, mmask_t btn, int row, int col) { return 0;