Plan 9 from Bell Labs’s /usr/web/sources/contrib/fgb/root/sys/src/ape/lib/curses/demos/ptest.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


/* $Id: ptest.c,v 1.23 2007/06/25 15:33:32 wmcbrine Exp $ */

#include <curses.h>
#include <panel.h>
#include <stdlib.h>

PANEL *p1, *p2, *p3, *p4, *p5;
WINDOW *w4, *w5;

long nap_msec = 1;

char *mod[] = 
{
	"test ", "TEST ", "(**) ", "*()* ", "<--> ", "LAST "
};

void pflush(void)
{
	update_panels();
	doupdate();
}

void backfill(void)
{
	int y, x;

	erase();

	for (y = 0; y < LINES - 1; y++)
		for (x = 0; x < COLS; x++)
			printw("%d", (y + x) % 10);
}

void wait_a_while(long msec)
{
	int c;

	if (msec != 1)
		timeout(msec);

	c = getch();

	if (c == 'q')
	{
		endwin();
		exit(1);
	}
}

void saywhat(const char *text)
{
	mvprintw(LINES - 1, 0, "%-20.20s", text);
}

/* mkpanel - alloc a win and panel and associate them */

PANEL *mkpanel(int rows, int cols, int tly, int tlx)
{
	WINDOW *win = newwin(rows, cols, tly, tlx);
	PANEL *pan = (PANEL *)0;

	if (win)
	{
		pan = new_panel(win);

		if (!pan)
			delwin(win);
	}

	return pan;
}

void rmpanel(PANEL *pan)
{
	WINDOW *win = pan->win;

	del_panel(pan);
	delwin(win);
}

void fill_panel(PANEL *pan)
{
	WINDOW *win = pan->win;
	char num = *((char *)pan->user + 1);
	int y, x, maxy, maxx;

	box(win, 0, 0);  
	mvwprintw(win, 1, 1, "-pan%c-", num);
	getmaxyx(win, maxy, maxx);

	for (y = 2; y < maxy - 1; y++)
		for (x = 1; x < maxx - 1; x++)
			mvwaddch(win, y, x, num);
}

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 */

/* end of ptest.c */

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.