#include <picogui.h>

pghandle left, right, main_w;
pghandle ctx;

int add(struct pgEvent *evt){
	int i,q;
	pghandle line;
	ctx = pgEnterContext();

	for (q=0;q<3;q++) {
		line = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, left);
		pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_TOP, 0);
		for (i=0;i<5;i++) {
			pgNewWidget(PG_WIDGET_FIELD, PG_DERIVE_INSIDE, line);
			pgSetWidget(PGDEFAULT, 
					//PG_WP_SIDE, PG_S_LEFT, /* crash */
					PG_WP_TEXT, pgNewString("x"),
					0);
		}
	}
	return 0;
}

int rm(struct pgEvent *evt){
	pgDeleteHandleContext(ctx);
	return 0;
}

int update(struct pgEvent *evt){
	pgUpdate();
}

int main(){
	pgInit(0, NULL);
	main_w = pgRegisterApp(PG_APP_NORMAL, NULL, 0);

	/* without this, buttons just flick instead of nice stretch */
	main_w = pgNewWidget(PG_WIDGET_BOX, 0, 0);

	left = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, main_w);
	pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_LEFT, 0);

	right = pgNewWidget(PG_WIDGET_LABEL, PG_DERIVE_INSIDE, main_w);
	pgSetWidget(PGDEFAULT, PG_WP_SIDE, PG_S_RIGHT, 0);

	pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, right);
	pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("add"), 0);
	pgBind(PGDEFAULT, PGBIND_ANY, add, NULL);

	pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, right);
	pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("rm"), 0);
	pgBind(PGDEFAULT, PGBIND_ANY, rm, NULL);

	pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, right);
	pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("update"), 0);
	pgBind(PGDEFAULT, PGBIND_ANY, update, NULL);

	pgNewWidget(PG_WIDGET_BUTTON, PG_DERIVE_INSIDE, right);
	pgSetWidget(PGDEFAULT, PG_WP_TEXT, pgNewString("dummy"), 0);

	pgUpdate();

	while (1) pgEventPoll();

	pgEventLoop();

	return 0;
}

Reply via email to