home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 13 / AACD13.ISO / AACD / Resources / System / BoingBag1 / Contributions / Workbench / RexxArpLib3p6 / src / sreq / menutest.c < prev    next >
C/C++ Source or Header  |  1998-06-17  |  11KB  |  346 lines

  1. #include <exec/types.h>
  2. #include <exec/exec.h>
  3. #include <intuition/intuition.h>
  4. #include <graphics/gfx.h>
  5. #include <functions.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <stdio.h>
  9.  
  10. #include <simpmenu.h>
  11. #include <simpreq.h>
  12.  
  13. #define MAXBAUDITEMS 7
  14. static struct MenuItem *baudi[MAXBAUDITEMS];
  15.  
  16. #define MAXPARIITEMS 15
  17. static struct MenuItem *parii[MAXPARIITEMS];
  18.  
  19. #define MAXPROTITEMS 4
  20. static struct MenuItem *proti[MAXPROTITEMS];
  21.  
  22. #define MAXECHOITEMS 2
  23. static struct MenuItem *echoi[MAXECHOITEMS];
  24.  
  25. #define MAXSTRIITEMS 2
  26. static struct MenuItem *strii[MAXSTRIITEMS];
  27.  
  28. #define MAXXFERITEMS 3
  29. static struct MenuItem *xferi[MAXXFERITEMS];
  30.  
  31. #define MAXKERMITEMS 3
  32. static struct MenuItem *kermi[MAXKERMITEMS];
  33.  
  34. #define MAXXMODITEMS 4
  35. static struct MenuItem *xmodi[MAXXMODITEMS];
  36.  
  37. #define MAXTRANITEMS 3
  38. static struct MenuItem *trani[MAXTRANITEMS];
  39.  
  40. #define MAXPROGITEMS 2
  41. static struct MenuItem *progi[MAXPROGITEMS];
  42.  
  43. #define MAXSCRNITEMS 4
  44. static struct MenuItem *scrni[MAXSCRNITEMS];
  45.  
  46. #define MAXDPTHITEMS 3
  47. static struct MenuItem *dpthi[MAXDPTHITEMS];
  48.  
  49. #define MAXRENDITEMS 4
  50. static struct MenuItem *rendi[MAXRENDITEMS];
  51.  
  52. #define MAXOPERITEMS 13
  53. static struct MenuItem *operi[MAXOPERITEMS];
  54.  
  55. #define MAXGRAPITEMS 1
  56. static struct MenuItem *grapi[MAXGRAPITEMS];
  57.  
  58. void TestRoutine(struct Window *);
  59. BOOL WaitForClose(struct Window *);
  60. void main(int, char **);
  61.  
  62. void TestRoutine( struct Window *w )
  63. {
  64.     struct Menu *menu = NULL;
  65.     
  66.     printf("Start\n");
  67.     
  68.     menu = SMenu(NULL, "VLT  ");
  69.     
  70.     SItem(menu, " Capture Session",      'O', 0L);
  71.     SItem(menu, " End Capture",          'E', 0L);
  72.     SItem(menu, " Open Console",          0 , 0L);
  73.     SItem(menu, " History Buffer",        0 , 0L);
  74.     SSItem(menu, " View",                'V', 0L);
  75.     SSItem(menu, " Edit / Send",         ')', 0L);
  76.     SItem(menu, " Save Configuration",    0 , 0L);
  77.     SItem(menu, " Version",               0 , 0L);
  78.     SItem(menu, " Exit",                  0 , 0L);
  79.     
  80.     SMenu(menu, "Comm ");
  81.     
  82.     SItem(menu, " Select Device",   0 , 0L);
  83.     SItem(menu, " Select Unit",     0 , 0L);
  84.     SItem(menu, " Baud",            0 , 0L);
  85.     baudi[0] = SSItem(menu, "     110",        0 , 0x7eL);
  86.     baudi[1] = SSItem(menu, "     300",        0 , 0x7dL);
  87.     baudi[2] = SSItem(menu, "    1200",        0 , 0x7bL);
  88.     baudi[3] = SSItem(menu, "    2400",        0 , 0x77L);
  89.     baudi[4] = SSItem(menu, "    4800",        0 , 0x6fL);
  90.     baudi[5] = SSItem(menu, "    9600",        0 , 0x5fL);
  91.     baudi[6] = SSItem(menu, "   19200",        0 , 0x3fL);
  92.     SItem(menu, " Parity",          0 , 0L);
  93.     /*
  94.      *   Notice the sequence of the array index! Needs to be this way for
  95.      *   proper checkmarking: use definition of p_parity, not "subnum".
  96.      */
  97.     parii[0] = SSItem(menu, "   8N1",          0 , 0x7ffeL);
  98.     parii[5] = SSItemB(menu, "   8N2",         0 , 0x7ffdL);
  99.     parii[10]= SSItemB(menu, "   7N2",         0 , 0x7ffbL);
  100.     parii[1] = SSItem(menu, "   8M1",          0 , 0x7ff7L);
  101.     parii[6] = SSItemB(menu, "   7M1",         0 , 0x7fefL);
  102.     parii[11]= SSItemB(menu, "   7M2",         0 , 0x7fdfL);
  103.     parii[2] = SSItem(menu, "   8S1",          0 , 0x7fbfL);
  104.     parii[7] = SSItemB(menu, "   7S1",         0 , 0x7f7fL);
  105.     parii[12]= SSItemB(menu, "   7S2",         0 , 0x7effL);
  106.     parii[3] = SSItem(menu, "   8E1",          0 , 0x7dffL);
  107.     parii[8] = SSItemB(menu, "   7E1",         0 , 0x7bffL);
  108.     parii[13]= SSItemB(menu, "   7E2",         0 , 0x77ffL);
  109.     parii[4] = SSItem(menu, "   8O1",          0 , 0x6fffL);
  110.     parii[9] = SSItemB(menu, "   7O1",         0 , 0x5fffL);
  111.     parii[14]= SSItemB(menu, "   7O2",         0 , 0x3fffL);
  112.     SItem(menu, " Protocol",        0 , 0L);
  113.     proti[0] = SSItem(menu, "   None",         0 , 0xeL);
  114.     proti[1] = SSItem(menu, "   Xon/Xoff",     0 , 0xdL);
  115.     proti[2] = SSItem(menu, "   7-Wire",       0 , 0xbL);
  116.     proti[3] = SSItem(menu, "   7-Wire/X",     0 , 0x7L);
  117.     SItem(menu, " Send Break",     'B', 0L);
  118.     SItem(menu, " Hangup",         'H', 0L);
  119.     SItem(menu, " Echo",            0 , 0L);
  120.     echoi[0] = SSItem(menu, "   Off",         '*', 0x2L);
  121.     echoi[1] = SSItem(menu, "   On",          '+', 0x1L);
  122.     SItem(menu, " Strip Bit 8",     0 , 0L);
  123.     strii[0] = SSItem(menu, "   Off",          0 , 0x2L);
  124.     strii[1] = SSItem(menu, "   On",           0 , 0x1L);
  125.     SItem(menu, " Set Break Time",  0 , 0L);
  126.     SItem(menu, " Set Buffer Size", 0 , 0L);
  127.     
  128.     SMenu(menu, "Transfer ");
  129.     
  130.     SItem(menu, " Send File",                  'S', 0L);
  131.     SItem(menu, " Receive File",               'R', 0L);
  132.     SItem(menu, " Change Directory",           'D', 0L);
  133.     SItem(menu, " Protocol",                    0 , 0L);
  134.     xferi[0] = SSItem(menu, "   External",                'T', 0x6L);
  135.     xferi[1] = SSItem(menu, "   Kermit",                  'K', 0x5L);
  136.     xferi[2] = SSItem(menu, "   XMODEM",                  'X', 0x3L);
  137.     SItem(menu, " Kermit Options",              0 , 0L);
  138.     kermi[0] = SSItem(menu, "   Send / Receive",          '-', 0x2L);
  139.     kermi[1] = SSItem(menu, "   Host is Server",          '=', 0x1L);
  140.     kermi[2] = SSItem(menu, "   Kermit Bye",              'Y', 0L);
  141.     SSItem(menu, "   Set Packet Size",          0 , 0L);
  142.     SItem(menu, " XMODEM Options",              0 , 0L);
  143.     xmodi[0] = SSItem(menu, "   Check Sum",               '[', 0xeL);
  144.     xmodi[1] = SSItem(menu, "   Check Sum / 1K Blocks",    0 , 0xdL);
  145.     xmodi[2] = SSItem(menu, "   CRC",                      0 , 0xbL);
  146.     xmodi[3] = SSItem(menu, "   CRC / 1K Blocks",         ']', 0x7L);
  147.     SItem(menu, " External Options",            0 , 0L);
  148.     SItem(menu, " Translate Options",           0 , 0L);
  149.     trani[0] = SSItem(menu, "   No Translation",          ',', 0x2L);
  150.     trani[1] = SSItem(menu, "   CR/LF -> LF",             '.', 0x1L);
  151.     trani[2] = SSItem(menu, "   Downcase File Names",     '/', -1L);
  152.     
  153.     SMenu(menu, "Macros ");
  154.     
  155.     SItem(menu, " ARexx Macro",           'A', 0L);
  156.     SItem(menu, " VLT Macro",             'M', 0L);
  157.     SItem(menu, " Abort VLT Macro  Esc ", (char) -1, 0L);
  158.     SItem(menu, " Keyboard Macros",        0 , 0L);
  159.     SSItem(menu,  " ",                    '1', 0L);
  160.     SSItemB(menu, " ",                    '2', 0L);
  161.     SSItem(menu,  " ",                    '3', 0L);
  162.     SSItemB(menu, " ",                    '4', 0L);
  163.     SSItem(menu,  " ",                    '5', 0L);
  164.     SSItemB(menu, " ",                    '6', 0L);
  165.     SSItem(menu,  " ",                    '7', 0L);
  166.     SSItemB(menu, " ",                    '8', 0L);
  167.     SSItem(menu,  " ",                    '9', 0L);
  168.     SSItemB(menu, " ",                    '0', 0L);
  169.     SItem(menu, " Program Mode",           0 , 0L);
  170.     progi[0] = SSItem(menu, "   On",                 '(', 0x2L);
  171.     progi[1] = SSItem(menu, "   Off",                ')', 0x1L);
  172.     
  173.     SMenu(menu, "Screen ");
  174.     
  175.     SItem(menu, " Clear Screen",        'C', 0L);
  176.     SItem(menu, " Screen to Back",      'J', 0L);
  177.     SItem(menu, " Select Screen Type",   0 , 0L);
  178.     scrni[0] = SSItem(menu, "   Custom Screen",     0 , 0x2L);
  179.     scrni[1] = SSItem(menu, "   Workbench",         0 , 0x1L);
  180.     scrni[2] = SSItem(menu, "   Interlaced",        0 , 0x8L);
  181.     scrni[3] = SSItem(menu, "   Non-Interlaced",    0 , 0x4L);
  182.     SItem(menu, " Number of Colors",     0 , 0L);
  183.     dpthi[0] = SSItem(menu, "   2",                 0 , 0x6L);
  184.     dpthi[1] = SSItem(menu, "   4",                 0 , 0x5L);
  185.     dpthi[2] = SSItem(menu, "   8",                 0 , 0x3L);
  186.     SItem(menu, " Select Colors",       'U', 0L);
  187.     SItem(menu, " Number of Lines",     'L', 0L);
  188.     SItem(menu, " Number of Columns",   'Z', 0L);
  189.     SItem(menu, " Amount of Prescroll",  0 , 0L);
  190.     SItem(menu, " Rendering Mode",       0 , 0L);
  191.     SItem(menu, " Cursor Height",        0 , 0L);
  192.     rendi[0] = SSItem(menu, "   Quick",            'Q', 0x6L);
  193.     rendi[1] = SSItem(menu, "   Normal",           'N', 0x5L);
  194.     rendi[2] = SSItem(menu, "   Color",            'G', 0x3L);
  195.     rendi[3] = SSItem(menu, "   ANSI Color",        0 , -1L);
  196.     
  197.     SMenu(menu, "Operation ");
  198.     
  199.     operi[0] = SItem(menu, "   Wrap",                 'W', -1L);
  200.     operi[1] = SItem(menu, "   Key Repeat",            0 , -1L);
  201.     operi[2] = SItem(menu, "   Numeric Keypad",        0 , -1L);
  202.     operi[3] = SItem(menu, "   Application Cursor",    0 , -1L);
  203.     operi[4] = SItem(menu, "   Swap BS <-> Delete",   'I', -1L);
  204.     operi[5] = SItem(menu, "   Destructive BS",        0 , -1L);
  205.     operi[6] = SItem(menu, "   Help Key = LF",         0 , -1L);
  206.     operi[7] = SItem(menu, "   Shift-Tab = ESC TAB",   0 , -1L);
  207.     operi[8] = SItem(menu, "   Function Key Gadgets", 'P', -1L);
  208.     operi[9] = SItem(menu, "   Mouse Support",        '\\',-1L);
  209.     SItem(menu, "   Beep Volume",           0 , 0L);
  210.     operi[10] = SItem(menu, "   CR Key: Echo CR/LF",    0 , -1L);
  211.     operi[11] = SItem(menu, "   CR Key: Send CR/LF",    0 , -1L);
  212.     operi[12] = SItem(menu, "   Auto-Screen to Back",   0 , -1L);
  213.     
  214.     SMenu(menu, "Graphics ");
  215.     
  216.     grapi[0] = SItem(menu, "   Lock Graphics", ';', -1L);
  217.     SItem(menu, "   To Graphics",   'F', 0L);
  218.     
  219.     AdjustItems(menu);
  220.     
  221.     printf("Stop\n");
  222.     
  223.     if (menu) 
  224.     {
  225.         SetMenuStrip(w, menu);
  226.         WaitForClose(w);
  227.         ClearMenuStrip(w);
  228.         FreeSMenu(menu);
  229.     }
  230.     
  231.     return;
  232. }
  233.  
  234.  
  235. /**
  236.  *
  237.  *   Generalized Intuition test routine. Opens a window.
  238.  *
  239. ***/
  240.  
  241. static struct NewWindow nw = 
  242. {
  243.     0,0,
  244.     640, 200,
  245.     0,1,
  246.     CLOSEWINDOW+MOUSEBUTTONS+GADGETUP+GADGETDOWN+INTUITICKS,
  247.     WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE,
  248.     NULL,
  249.     NULL,
  250.     (UBYTE *)"MBRTest",
  251.     NULL,
  252.     NULL,
  253.     5,5,
  254.     700,300,
  255.     WBENCHSCREEN
  256. };
  257.  
  258. struct IntuitionBase   *IntuitionBase = NULL;
  259. struct GfxBase         *GfxBase = NULL;
  260. struct Library         *ArpBase = NULL;
  261. struct Library         *ExpansionBase = NULL;
  262.  
  263. void main( int argc, char **argv )
  264. {
  265.     struct Window *w = NULL;
  266.     struct IntuiMessage *message = NULL;
  267.     struct TextFont *font = NULL;
  268.     
  269.     /*
  270.      *   Libraries
  271.      */
  272.     IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 0L);
  273.     if (IntuitionBase == NULL)
  274.         goto cleanup;
  275.     
  276.     GfxBase = (struct GfxBase *) OpenLibrary("graphics.library", 0L);
  277.     if (GfxBase == NULL)
  278.         goto cleanup;
  279.     
  280.     /*
  281.      *   Open window and set font
  282.      */
  283.     w = OpenWindow(&nw);
  284.     if (w == NULL)
  285.         goto cleanup;
  286.     
  287.     font = (struct TextFont *) OpenFont(Topaz80Equiv());
  288.     if (font == NULL)
  289.         goto cleanup;
  290.     SetFont(w->RPort, font);
  291.     /*
  292.      *   Test begins here.
  293.      */
  294.     TestRoutine(w);
  295.     
  296.     WaitForClose(w);
  297.     
  298.     cleanup:
  299.     if (font)
  300.         CloseFont(font);
  301.     if (w) 
  302.     {
  303.         while (message = (struct IntuiMessage *)
  304.             GetMsg(w->UserPort)) ReplyMsg((struct Message *) message);
  305.         CloseWindow(w);
  306.     }
  307.     if (GfxBase)
  308.         CloseLibrary((struct Library *) GfxBase);
  309.     if (IntuitionBase)
  310.         CloseLibrary((struct Library *) IntuitionBase);
  311.     
  312.     exit(0);
  313. }
  314.  
  315.  
  316. /**
  317.  *
  318.  *   Wait for a close message
  319.  *
  320. **/
  321. BOOL WaitForClose( struct Window *w )
  322. {
  323.     BOOL quit_flag = FALSE;
  324.     ULONG class;
  325.     struct IntuiMessage *message;
  326.     
  327.     while (quit_flag == FALSE) 
  328.     {
  329.         Wait(1L << w->UserPort->mp_SigBit);
  330.         /*
  331.          *  Handle messages from the window
  332.          */
  333.         while ( message = (struct IntuiMessage *) GetMsg(w->UserPort) ) 
  334.         {
  335.             class = message->Class;
  336.             ReplyMsg((struct Message *) message);
  337.             
  338.             if (class == CLOSEWINDOW)
  339.                 quit_flag = TRUE;
  340.         }
  341.     }
  342.     return(quit_flag);
  343. }
  344.  
  345.  
  346.