diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2011-03-05 17:59:34 +0000 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2011-03-05 17:59:34 +0000 |
commit | 74443ea4b49d48ce308e79880d21c1cb52ca46fc (patch) | |
tree | 8f4436d4cc3928f8929605e2c852a3fb12461217 /src/essais | |
parent | 7db6f09bbf06dfc15cd9aef486229637514d607a (diff) | |
download | 2011-ddhardrescue-74443ea4b49d48ce308e79880d21c1cb52ca46fc.tar.gz 2011-ddhardrescue-74443ea4b49d48ce308e79880d21c1cb52ca46fc.tar.bz2 2011-ddhardrescue-74443ea4b49d48ce308e79880d21c1cb52ca46fc.zip |
Ajout du Makefile debuggué et de l'arborescence de compilation. Il ne gère pas automatiquement les dépendances du binaire, c'est con. Les options gcc -M et cie ne servent que pour les dépendances d'un .c, mais pas pour le link...
Recodage du util.c qui a été perdu dans la journée.
Les grosses modifs du main sont à réécrerire (perdues aussi).
git-svn-id: file:///var/svn/2011-ddhardrescue/trunk@7 d3078510-dda0-49f1-841c-895ef4b7ec81
Diffstat (limited to 'src/essais')
-rw-r--r-- | src/essais/test2.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/essais/test2.c b/src/essais/test2.c new file mode 100644 index 0000000..3a34414 --- /dev/null +++ b/src/essais/test2.c @@ -0,0 +1,120 @@ + +#include <string.h> +#include <panel.h> + +#define NLINES 10 +#define NCOLS 40 + +void init_wins(WINDOW **wins, int n); +void win_show(WINDOW *win, char *label, int label_color); +void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color); + +int main() +{ WINDOW *my_wins[3]; + PANEL *my_panels[3]; + PANEL *top; + int ch; + + /* Initialize curses */ + initscr(); + start_color(); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + + /* Initialize all the colors */ + init_pair(1, COLOR_RED, COLOR_BLACK); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + init_pair(3, COLOR_BLUE, COLOR_BLACK); + init_pair(4, COLOR_CYAN, COLOR_BLACK); + + init_wins(my_wins, 3); + + /* Attach a panel to each window */ /* Order is bottom up */ + my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */ + my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */ + my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */ + + /* Set up the user pointers to the next panel */ + set_panel_userptr(my_panels[0], my_panels[1]); + set_panel_userptr(my_panels[1], my_panels[2]); + set_panel_userptr(my_panels[2], my_panels[0]); + + /* Update the stacking order. 2nd panel will be on top */ + update_panels(); + + /* Show it on the screen */ + attron(COLOR_PAIR(4)); + mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F2 to Exit)"); + attroff(COLOR_PAIR(4)); + doupdate(); + + top = my_panels[2]; + while((ch = getch()) != KEY_F(2)) + { switch(ch) + { case 9: + top = (PANEL *)panel_userptr(top); + top_panel(top); + break; + } + update_panels(); + doupdate(); + } + endwin(); + return 0; +} + +/* Put all the windows */ +void init_wins(WINDOW **wins, int n) +{ int x, y, i; + char label[80]; + + y = 2; + x = 10; + for(i = 0; i < n; ++i) + { wins[i] = newwin(NLINES, NCOLS, y, x); + sprintf(label, "Window Number %d", i + 1); + win_show(wins[i], label, i + 1); + y += 3; + x += 7; + } +} + +/* Show the window with a border and a label */ +void win_show(WINDOW *win, char *label, int label_color) +{ int startx, starty, height, width; + + getbegyx(win, starty, startx); + getmaxyx(win, height, width); + + box(win, 0, 0); + mvwaddch(win, 2, 0, ACS_LTEE); + mvwhline(win, 2, 1, ACS_HLINE, width - 2); + mvwaddch(win, 2, width - 1, ACS_RTEE); + + print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color)); +} + +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(); +} + |