home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume4 / gnumacs-blit / part01 / 5620m / menu.c < prev    next >
C/C++ Source or Header  |  1989-02-03  |  2KB  |  99 lines

  1. /*
  2.  * 5620_mouse - A layers program able to send mouse coordinates but otherwise
  3.  *              behaving like a normal layer
  4.  *
  5.  * Version 2.2
  6.  *
  7.  * Public domain software.
  8.  * Written by Gernot Heiser (heiser@ethz.uucp) in April 1987
  9.  * based on the vt100 terminal emulator by Leif Samuelsson
  10.  *    as modified by Peter Lamb
  11.  * History :
  12.  *   Version 1.3, Gernot Heiser, Stefan Zeiger, July 1987:
  13.  *      selection feedback
  14.  *   Version 1.4, Gernot Heiser, August 1987:
  15.  *      different selection kinds; special ESC-sequence for selection
  16.  *   Version 1.5, Gernot Heiser, September 1987:
  17.  *      define characteristics of layers to clone in startup file
  18.  *      ensure mouse coordinates are sent "as seen"
  19.  *      box cursor when layer is inactive
  20.  *   Version 1.6, Gernot Heiser, September 1987:
  21.  *      scroll bars
  22.  *   Version 2.1, Gernot Heiser, 1988-05-29:
  23.  *      fixed several problems with mux version
  24.  *   Version 2.2, Gernot Heiser, 1988-07-13:
  25.  *      small fixes
  26.  */
  27.  
  28. /* 5620 menu stuff */
  29.  
  30. #include "5620.h"
  31.  
  32. #define CLONE 0
  33. #define INVERT 1
  34. #define RESET 2
  35. #if FALSE
  36. #define SENDSN 3
  37. #define EXIT 4
  38. #else /* ! FALSE */
  39. #define EXIT 3
  40. #endif /* ! FALSE */
  41.  
  42. char Clone[]   = "clone";
  43. char Invert[]  = "invert";
  44. char Reset[]   = "reset";
  45. char Send[]    = "send";
  46. char Exit[]    = "exit";
  47.  
  48. init_menu(t)
  49. register struct tstat *t;
  50. {
  51.     menu.item   = menustrs;
  52.     menu.prevhit = menu.prevtop = 0;
  53.     menu.generator = 0;
  54.     menustrs[CLONE]  = Clone;
  55.     menustrs[INVERT] = Invert;
  56. #ifdef MUX
  57.     menustrs[RESET]  = Reset;
  58. #if FALSE
  59.         menustrs[SENDSN] = Send;
  60. #endif /* FALSE */
  61.         menustrs[EXIT]   = Exit;
  62. #else
  63.     menustrs[RESET]  = 0;
  64.         menustrs[EXIT]   = 0;
  65. #endif
  66.         menustrs[NMENU]  = 0;
  67. }
  68.  
  69. do_menu(t, n)
  70. register struct tstat *t;
  71. {
  72.     extern void clone_0();
  73.  
  74.     switch(menuhit(&menu, n)) {
  75.     case CLONE:
  76.         if (!cloned)
  77.             ((char **)P->text)[-1] = 0;
  78.         clone_info = *t;
  79.         newwindow (clone_0);
  80.         break;
  81.     case INVERT:
  82.         inverse_vid (t, clr == F_CLR);
  83.         break;
  84.         case RESET:
  85.                 do_reset (t);
  86.         break;
  87. #if FALSE
  88. #ifdef MUX
  89.         case SENDSN:
  90.                 send_snarf (t);
  91.         break;
  92. #endif /* MUX */
  93. #endif /* FALSE */
  94.     case EXIT:
  95.         exit ();
  96.         break;
  97.     }
  98. }
  99.