Exemple #1
0
int default_action(int msg)
{
	switch(msg)
	{
	  case NEXT:deselectitem();nextitem();selectitem();break;
	  case PREV:deselectitem();previtem();selectitem();break;
	  case FORW:deselectitem();rightitem();selectitem();break;
	  case BACK:deselectitem();leftitem();selectitem();break;
	  case 'e':
	  case '\n':
	  case '\r':
			do_ok(msg);break;
	  case 0x1b:deselectitem();setup_flag=-1;break;
	  case UPDATE: default_update();break;
	  case UPDATE1: default_update1();break;
	  case TIMER:
	  case CLEAN:
	  	   	printmenu();break;
	  default:
	  if(msg>='1' && msg <= '9')default_digital(msg);
	  else return 0;
	  break;
	}
	return 1;
}
Exemple #2
0
static void edit_ok(int msg)
{
	if(item<=envs_local)
	{
	strcpy(myline,envp_local[item-1]);
	if(menu[item].arg)free(menu[item].arg);
	__cprint(INFO_Y,0,INFO_W,0x7,myline);
	edit_cmdline1(myline);
	__cprint(INFO_Y,0,INFO_W,0x70,myline);
	envp_local[item-1]=menu[item].arg=malloc(strlen(myline)+1);
	strcpy(menu[item].arg,myline);
	selectitem();
	}
	else if(item<items_edit) //run
	{
	 if(msg=='e')
	 {
	strcpy(myline,menu[item].arg);
	free(menu[item].arg);
	__cprint(INFO_Y,0,INFO_W,0x7,myline);
	edit_cmdline2(myline);
	menu[item].arg=malloc(strlen(myline)+1);
	strcpy(menu[item].arg,myline);
	__cprint(INFO_Y,0,INFO_W,0x70,expand(menu[item].arg));
	 }
	 else
	 {
	__popdown(POP_Y,POP_X,POP_H,popwidth);
		do_cmd(expand(menu[item].arg));
	__popup(POP_Y,POP_X,POP_H,popwidth);
	printmenu();
	 }
	}
}
Exemple #3
0
static void printmenu(void)
{
int olditem=item;
	for(item=0;menu[item].msg;item++)
	{
	if(item==olditem)continue;
	if(menu[item].action && menu[item].action(UPDATE))continue;
	if(Menu->action && Menu->action(UPDATE))continue;
	default_action(UPDATE);
	}
item=olditem;
	selectitem();
}
Exemple #4
0
static int default_digital(int msg)
{
char *p,*cmd;

 switch(menu[item].type)
 {
 case TYPE_CMD:
    if(!ischoice(menu[item].msg))return 1;
	p=getchoice(menu[item].msg,msg-'0');
    if(!p)return 1;
    cmd=expand(getItemCmd(p));
    do_cmd(cmd);
    selectitem();
	break;
 default:return 0;
}
return 1;
}
Exemple #5
0
static int gm_mode(int k, int *pos)
{
	const char *items[2] = {"A-type", "B-type"};
	union val v;
	int i;
	int ret;
	v.integ = getopt_int("", "mode");
	i = 1-!(v.integ & MODE_BTYPE);
	ret = selectitem(items, 2, &i, k);
	if (ret && k) {
		if (i)
			v.integ |= MODE_BTYPE;
		else
			v.integ &= ~MODE_BTYPE;
		setoption("", "mode", v, 0);
	}
	return ret;
}
Exemple #6
0
static int op_bgdot(int k, int *pos)
{
	const char *items[3] = {"dot", "bullet", "blank"};
	int n = 3;
	int i = 0;
	int j;
	if (isprintable(k)) {
		if (k == '0')
			bgdot = ' ';
		else if (k == '~')
			bgdot = BULLET;
		else
			bgdot = k;
		save_bgdot();
		k = 0;
	}
	if (_ASCII) {
		items[1] = items[2];
		n--;
	} else if (bgdot == BULLET)
		i = 1;
	if (bgdot == ' ')
		i = n-1;
	j = i;
	k = selectitem(items, n, &i, k);
	if (i != j) {
		if (i == 0)
			bgdot = '.';
		else if (i == n-1)
			bgdot = ' ';
		else
			bgdot = BULLET;
		save_bgdot();
	}
	if (k != 1)
		return k;
	putch(bgdot);
	putch(' ');
	return 1;
}