Exemplo n.º 1
0
static void
my_create_panel(PANEL ** pans, int which, FillPanel myFill)
{
    PANEL *pan = 0;
    int code;
    short pair = (short) which;
    short fg = (short) ((pair == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK);
    short bg = pair;
    int x0, y0, x1, y1;

    init_pair(pair, fg, bg);

    /* remove the old panel, if any */
    my_remove_panel(pans, which);

    /* get the position of one corner */
    wmove(stdscr, getmaxy(stdscr) / 2, getmaxx(stdscr) / 2);
    getyx(stdscr, y0, x0);
    while ((code = get_position("First corner", "", which, &x0, &y0)) == 0) {
	;
    }

    if (code > 0) {
	char also[80];
	sprintf(also, " (first %d,%d)", y0, x0);
	/* get the position of the opposite corner */
	while ((code = get_position("Opposite corner",
				    also, which, &x1, &y1)) == 0) {
	    ;
	}

	if (code > 0) {
	    int tly = MIN(y0, y1);
	    int tlx = MIN(x0, x1);
	    pan = mkpanel(pair, ABS(y1 - y0) + 1, ABS(x1 - x0) + 1, tly, tlx);
	    /* finish */
	    myFill(pan);
	    pans[which] = pan;
	    pflush();
	    wmove(stdscr, y1, x1);
	}
    }
}
Exemplo n.º 2
0
int main(int argc, char **argv)
{
    int itmp, y;

    if (argc > 1 && atol(argv[1]))
        nap_msec = atol(argv[1]);

#ifdef XCURSES
    Xinitscr(argc, argv);
#else
    initscr();
#endif
    backfill();

    for (y = 0; y < 5; y++)
    {
        p1 = mkpanel(10, 10, 0, 0);
        set_panel_userptr(p1, "p1");

        p2 = mkpanel(14, 14, 5, 5);
        set_panel_userptr(p2, "p2");

        p3 = mkpanel(6, 8, 12, 12);
        set_panel_userptr(p3, "p3");

        p4 = mkpanel(10, 10, 10, 30);
        w4 = panel_window(p4);
        set_panel_userptr(p4, "p4");

        p5 = mkpanel(10, 10, 13, 37);
        w5 = panel_window(p5);
        set_panel_userptr(p5, "p5");

        fill_panel(p1);
        fill_panel(p2);
        fill_panel(p3);
        fill_panel(p4);
        fill_panel(p5);
        hide_panel(p4);
        hide_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("h3 s1 s2 s4 s5;");
        move_panel(p1, 0, 0);
        hide_panel(p3);
        show_panel(p1);
        show_panel(p2);
        show_panel(p4);
        show_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s1;");
        show_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s2;");
        show_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("m2;");
        move_panel(p2, 10, 10);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s3;");
        show_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("m3;");
        move_panel(p3, 5, 5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("b3;");
        bottom_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s4;");
        show_panel(p4);
        pflush();
        wait_a_while(nap_msec);

        saywhat("s5;");
        show_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t3;");
        top_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t1;");
        top_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t2;");
        top_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t3;");
        top_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t4;");
        top_panel(p4);
        pflush();
        wait_a_while(nap_msec);

        for (itmp = 0; itmp < 6; itmp++)
        {
            saywhat("m4;");
            mvwaddstr(w4, 3, 1, mod[itmp]);
            move_panel(p4, 4, itmp * 10);
            mvwaddstr(w5, 4, 1, mod[itmp]);
            pflush();
            wait_a_while(nap_msec);

            saywhat("m5;");
            mvwaddstr(w4, 4, 1, mod[itmp]);
            move_panel(p5, 7, itmp * 10 + 6);
            mvwaddstr(w5, 3, 1, mod[itmp]);
            pflush();
            wait_a_while(nap_msec);
        }

        saywhat("m4;");
        move_panel(p4, 4, itmp * 10);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t5;");
        top_panel(p5);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t2;");
        top_panel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("t1;");
        top_panel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d2;");
        rmpanel(p2);
        pflush();
        wait_a_while(nap_msec);

        saywhat("h3;");
        hide_panel(p3);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d1;");
        rmpanel(p1);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d4; ");
        rmpanel(p4);
        pflush();
        wait_a_while(nap_msec);

        saywhat("d5; ");
        rmpanel(p5);
        pflush();
        wait_a_while(nap_msec);

        if (nap_msec == 1)
            break;

        nap_msec = 100L;
    }

    endwin();

    return 0;
}   /* end of main */
Exemplo n.º 3
0
static void
demo_panels(void (*myInit) (void), void (*myFill) (PANEL *))
{
    int itmp;
    PANEL *px[MAX_PANELS + 1];

    scrollok(stdscr, FALSE);	/* we don't want stdscr to scroll! */
    refresh();

    myInit();
    for (itmp = 1; itmp <= MAX_PANELS; ++itmp)
	px[itmp] = 0;

    px[1] = mkpanel(COLOR_RED,
		    LINES / 2 - 2,
		    COLS / 8 + 1,
		    0,
		    0);

    px[2] = mkpanel(COLOR_GREEN,
		    LINES / 2 + 1,
		    COLS / 7,
		    LINES / 4,
		    COLS / 10);

    px[3] = mkpanel(COLOR_YELLOW,
		    LINES / 4,
		    COLS / 10,
		    LINES / 2,
		    COLS / 9);

    px[4] = mkpanel(COLOR_BLUE,
		    LINES / 2 - 2,
		    COLS / 8,
		    LINES / 2 - 2,
		    COLS / 3);

    px[5] = mkpanel(COLOR_MAGENTA,
		    LINES / 2 - 2,
		    COLS / 8,
		    LINES / 2,
		    COLS / 2 - 2);

    myFill(px[1]);
    myFill(px[2]);
    myFill(px[3]);
    myFill(px[4]);
    myFill(px[5]);

    hide_panel(px[4]);
    hide_panel(px[5]);
    pflush();
    saywhat("");
    wgetch(stdscr);

    saywhat("h3 s1 s2 s4 s5");
    move_panel(px[1], 0, 0);
    hide_panel(px[3]);
    show_panel(px[1]);
    show_panel(px[2]);
    show_panel(px[4]);
    show_panel(px[5]);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "s1");
    canned_panel(px, "s2");

    saywhat("m2");
    move_panel(px[2], LINES / 3 + 1, COLS / 8);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "s3");

    saywhat("m3");
    move_panel(px[3], LINES / 4 + 1, COLS / 15);
    pflush();
    wgetch(stdscr);

    canned_panel(px, "b3");
    canned_panel(px, "s4");
    canned_panel(px, "s5");
    canned_panel(px, "t3");
    canned_panel(px, "t1");
    canned_panel(px, "t2");
    canned_panel(px, "t3");
    canned_panel(px, "t4");

    for (itmp = 0; itmp < 6; itmp++) {
	WINDOW *w4 = panel_window(px[4]);
	WINDOW *w5 = panel_window(px[5]);

	saywhat("m4");
	wmove(w4, LINES / 8, 1);
	waddstr(w4, mod[itmp]);
	move_panel(px[4], LINES / 6, itmp * (COLS / 8));
	wmove(w5, LINES / 6, 1);
	waddstr(w5, mod[itmp]);
	pflush();
	wgetch(stdscr);

	saywhat("m5");
	wmove(w4, LINES / 6, 1);
	waddstr(w4, mod[itmp]);
	move_panel(px[5], LINES / 3 - 1, (itmp * 10) + 6);
	wmove(w5, LINES / 8, 1);
	waddstr(w5, mod[itmp]);
	pflush();
	wgetch(stdscr);
    }

    saywhat("m4");
    move_panel(px[4], LINES / 6, itmp * (COLS / 8));
    pflush();
    wgetch(stdscr);

    canned_panel(px, "t5");
    canned_panel(px, "t2");
    canned_panel(px, "t1");
    canned_panel(px, "d2");
    canned_panel(px, "h3");
    canned_panel(px, "d1");
    canned_panel(px, "d4");
    canned_panel(px, "d5");
    canned_panel(px, "d3");

    wgetch(stdscr);

    erase();
    endwin();
}