diff options
Diffstat (limited to 'src/utils.c')
-rwxr-xr-x | src/utils.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c index a19b021..e4fdbc0 100755 --- a/src/utils.c +++ b/src/utils.c @@ -1,4 +1,6 @@ #include <stdio.h> +#include <string.h> + #include "utils.h" int parseArgs(int argc, char **argv, struct progArgs *args) { @@ -22,3 +24,74 @@ void usage(char *progname) { <ddOpts>\t\n\ ", progname); } + +void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color) +{ int length, x, y; + float temp; + + if(win == NULL) + win = stdscr; + getyx(win, y, x); + if(startx != 0) + x = startx; + if(starty != 0) + y = starty; + if(width == 0) + width = 80; + + length = strlen(string); + temp = (width - length)/ 2; + x = startx + (int)temp; + wattron(win, color); + mvwprintw(win, y, x, "%s", string); + wattroff(win, color); + refresh(); +} + + +void makeWin(WINDOW *win, PANEL *panel, int h, int w, int y, int x, char title[]) { + int i; + win = newwin(h, w, y, x); + mvwprintw(win, 0, 0, "%s", title); + mvwchgat(win, 0, 0, -1, A_BOLD, 2, NULL); + for(i=1;i<h;i++) mvwchgat(win, i, 0, -1, A_STANDOUT, 1, NULL); + panel = new_panel(win); +} + + +int cursesInit(WINDOW *wins[], PANEL *panels[], int count) { + int screenH, screenW; + + /* Initialize curses */ + initscr(); + start_color(); + raw(); + noecho(); + keypad(stdscr, TRUE); + + /* Initialize all the colors */ + init_pair(1, COLOR_WHITE, COLOR_BLACK); + init_pair(2, COLOR_WHITE, COLOR_BLUE); + init_pair(3, COLOR_BLUE, COLOR_BLACK); + init_pair(4, COLOR_CYAN, COLOR_BLACK); + + /* Initialize windows and panels */ + getmaxyx(stdscr, screenH, screenW); + if ( screenH < 8 || screenW < 40 ) return 1; + + makeWin(wins[0], panels[0], 3 , screenW, 0 , 0, "Menu"); + makeWin(wins[1], panels[1], screenH-6 , screenW, 3 , 0, "Main Win"); + makeWin(wins[2], panels[2], 2 , screenW, screenH-3 , 0, "Commands"); + + /* Set up the user pointers to the next panel + set_panel_userptr(panels[0], panels[1]); + set_panel_userptr(panels[1], panels[2]); + set_panel_userptr(panels[2], panels[0]); + */ + + /* Update the stacking order. 2nd panel will be on top */ + update_panels(); + + return 0; +} + |