/* This file contains the function that is responsible for the
 * choice from the menus. This code was extracted from DW's VT100
 * emulation's main() function.
 * T.Whelan Oct 1986
 */

/*  all includes defines and globals */
#include "vt100.h"

extern int XMODEM_Send_File(), XMODEM_Read_File(), doksend(), dokreceive();
menupick(code)
int code;
{
int menunum, itemnum;

     menunum = MENUNUM( code );
     itemnum = ITEMNUM( code );
     switch( menunum )
         {
         case 0:
         switch( itemnum )
             {
             case 0:
               do_capture(NULL);
             break;
             case 1:
               do_send(NULL);
             break;
             case 2:
               emits("\nXmodem Receive:");
               filename(name);
               multi_xfer(name,XMODEM_Read_File,0);
             break;
             case 3:
               emits("\nXmodem Send:");
               filename(name);
               multi_xfer(name,XMODEM_Send_File,1);
             break;
             case 4:
               server = TRUE;
               itemnum = 5;
             case 5:
               emits("\nKermit Receive local name:");
               filename(name);
               multi_xfer(name,dokreceive,0);
             break;
             case 6:
               server = TRUE;
               emits("\nKermit Send local name:");
               filename(name);
               multi_xfer(name,doksend,1);
             break;
             case 7:
               saybye();
             break;
             }
         break;

         case 1:
         AbortIO(Read_Request);
         switch( itemnum )
             {
             case 0:
               Read_Request->io_Baud = 300;
             break;
             case 1:
               Read_Request->io_Baud = 1200;
             break;
             case 2:
               Read_Request->io_Baud = 2400;
             break;
             case 3:
               Read_Request->io_Baud = 4800;
             break;
             case 4:
               Read_Request->io_Baud = 9600;
	     break;
	     case 5:
	       Read_Request->io_Baud = 19200;
             break;
             }
         Read_Request->IOSer.io_Command = SDCMD_SETPARAMS;
         DoIO(Read_Request);
         Read_Request->IOSer.io_Command = CMD_READ;
         BeginIO(Read_Request);
         break;

         case 2:
         p_mode = itemnum;
         break;

         case 3:
         if (!itemnum && !script_on) {
             emits("Script file name: ");
             filename(name);
             script_start(name);
             }
         if (itemnum && script_on) {
             exit_script();
             }
         break;
         case 4: /* screen selection */
            switch(itemnum) {
            case 0:
                doremote(24); /* force VT100 mode */
            break;
            case 1:
                doremote(29);
                doremote(31); /* use alpha mode */
             break;
             case 2: /* reset and clear screens */
                doremote(24);
                doremote(29); /* tek screen */
                doremote(27);
                doremote(12);
                doremote(24); /* vt100 screen */
                doremote(27);
                doremote('c');
             break;
     	}
          break;
          case 5: /* about or quit */
            switch(itemnum) {
            case 0:
			       KeepGoing = FALSE;
            break;
            case 1:
                about();
             break;
     	}
         break;
         case 6:
            TekScale = itemnum;
         break;
         
         } /* end of switch ( menunum ) */
}
