home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / gadgeted_438.lzh / GadgetED / Source / setmenus.c < prev    next >
C/C++ Source or Header  |  1991-01-17  |  10KB  |  258 lines

  1. /*----------------------------------------------------------------------*
  2.   setmenus.c Version 2.0 -  © Copyright 1990 Jaba Development
  3.  
  4.   Author : jan van den Baard
  5.   Purpose: set the menus according to the screen depth and edit type
  6.            in the main window
  7.  *----------------------------------------------------------------------*/
  8.  
  9. static struct IntuiText fpen_text[32];
  10. static struct IntuiText bpen_text[32];
  11. static struct MenuItem  fpen_item[32];
  12. static struct MenuItem  bpen_item[32];
  13.  
  14. static struct IntuiText pen_text =
  15.  { 0,0,JAM2,20,1,NULL,(UBYTE *)"      ",NULL
  16.  };
  17. static struct MenuItem pen_item =
  18.  { NULL,4,0,68,10,HIGHBOX+CHECKIT+ITEMENABLED+ITEMTEXT,
  19.    NULL,NULL,NULL,0,NULL,NULL
  20.  };
  21.  
  22. UBYTE wbb[20];
  23.  
  24. static struct IntuiText SubText[] =
  25. { 0,1,JAM1,0,1,NULL,(UBYTE *)"C", NULL,
  26.   0,1,JAM1,0,1,NULL,(UBYTE *)"Assembler",NULL,
  27.   0,1,JAM1,0,1,NULL,(UBYTE *)"Add a text    F6",NULL,
  28.   0,1,JAM1,0,1,NULL,(UBYTE *)"Modify a text",NULL,
  29.   0,1,JAM1,0,1,NULL,(UBYTE *)"Delete a text",NULL,
  30.   0,1,JAM1,0,1,NULL,(UBYTE *)"Move a text",NULL,
  31.   0,1,JAM1,0,1,NULL,(UBYTE *)"Load Gadget Image F7",NULL,
  32.   0,1,JAM1,0,1,NULL,(UBYTE *)"Load Select Image F8",NULL,
  33.   0,1,JAM1,0,1,NULL,(UBYTE *)"Delete Images", NULL
  34.  };
  35.  
  36. static struct IntuiText ItemText[] =
  37. { 0,1,JAM1,0,1,NULL,(UBYTE *)"About",NULL,
  38.   0,1,JAM1,0,1,NULL,(UBYTE *)"New", NULL,
  39.   0,1,JAM1,0,1,NULL,(UBYTE *)"Load",NULL,
  40.   0,1,JAM1,0,1,NULL,(UBYTE *)"Save",NULL,
  41.   0,1,JAM1,0,1,NULL,(UBYTE *)"Generate Source",NULL,
  42.   0,1,JAM1,0,1,NULL,(UBYTE *)"Preferences",NULL,
  43.   0,1,JAM1,0,1,NULL,(UBYTE *)&wbb,NULL,
  44.   0,1,JAM1,0,1,NULL,(UBYTE *)"Quit",NULL,
  45.   0,1,JAM1,0,1,NULL,(UBYTE *)"Move a gadget         F1",NULL,
  46.   0,1,JAM1,0,1,NULL,(UBYTE *)"Size a gadget         F2",NULL,
  47.   0,1,JAM1,0,1,NULL,(UBYTE *)"Copy a gadget         F3",NULL,
  48.   0,1,JAM1,0,1,NULL,(UBYTE *)"Delete a gadget       F4",NULL,
  49.   0,1,JAM1,0,1,NULL,(UBYTE *)"Edit a gadget         F5",NULL,
  50.   0,1,JAM1,0,1,NULL,(UBYTE *)"Gadget text",NULL,
  51.   0,1,JAM1,0,1,NULL,(UBYTE *)"IFF Image render",NULL,
  52.   0,1,JAM1,0,1,NULL,(UBYTE *)"Load (IFF) ColorMap   F9",NULL,
  53.   0,1,JAM1,0,1,NULL,(UBYTE *)"Edit ColorMap        F10",NULL,
  54.   0,1,JAM1,0,1,NULL,(UBYTE *)"Refresh all gadgets HELP",NULL
  55.  };
  56.  
  57. static struct MenuItem SubItems[] =
  58. { &SubItems[1],150,0,108,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  59.   0,(APTR)&SubText[0],NULL,'C',NULL,NULL,
  60.   NULL,150,10,108,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  61.   0,(APTR)&SubText[1],NULL,'A',NULL,NULL,
  62.   &SubItems[3],110,0,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  63.   0,(APTR)&SubText[2],NULL,NULL,NULL,NULL,
  64.   &SubItems[4],110,10,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  65.   0,(APTR)&SubText[3],NULL,NULL,NULL,NULL,
  66.   &SubItems[5],110,20,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  67.   0,(APTR)&SubText[4],NULL,NULL,NULL,NULL,
  68.   NULL,110,30,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  69.   0,(APTR)&SubText[5],NULL,NULL,NULL,NULL,
  70.   &SubItems[7],80,0,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  71.   0,(APTR)&SubText[6],NULL,NULL,NULL,NULL,
  72.   &SubItems[8],80,10,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  73.   0,(APTR)&SubText[7],NULL,NULL,NULL,NULL,
  74.   NULL,80,20,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  75.   0,(APTR)&SubText[8],NULL,NULL,NULL,NULL
  76.  };
  77.  
  78. static struct MenuItem Items[] =
  79. { &Items[1],0,0,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  80.   0,(APTR)&ItemText[0],NULL,'?',NULL,NULL,
  81.   &Items[2],0,10,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  82.   0,(APTR)&ItemText[1],NULL,'N',NULL,NULL,
  83.   &Items[3],0,20,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  84.   0,(APTR)&ItemText[2],NULL,'L',NULL,NULL,
  85.   &Items[4],0,30,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  86.   0,(APTR)&ItemText[3],NULL,'S',NULL,NULL,
  87.   &Items[5],0,40,151,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  88.   0,(APTR)&ItemText[4],NULL,NULL,&SubItems[0],NULL,
  89.   &Items[6],0,50,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  90.   0,(APTR)&ItemText[5],NULL,'P',NULL,NULL,
  91.   &Items[7],0,60,151,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  92.   0,(APTR)&ItemText[6],NULL,NULL,NULL,NULL,
  93.   NULL,0,70,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  94.   0,(APTR)&ItemText[7],NULL,'Q',NULL,NULL,
  95.  
  96.   &Items[9],0,0,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  97.   0,(APTR)&ItemText[8],NULL,NULL,NULL,NULL,
  98.   &Items[10],0,10,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  99.   0,(APTR)&ItemText[9],NULL,NULL,NULL,NULL,
  100.   &Items[11],0,20,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  101.   0,(APTR)&ItemText[10],NULL,NULL,NULL,NULL,
  102.   &Items[12],0,30,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  103.   0,(APTR)&ItemText[11],NULL,NULL,NULL,NULL,
  104.   &Items[13],0,40,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  105.   0,(APTR)&ItemText[12],NULL,NULL,NULL,NULL,
  106.   &Items[14],0,50,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  107.   0,(APTR)&ItemText[13],NULL,NULL,&SubItems[2],NULL,
  108.   &Items[15],0,60,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  109.   0,(APTR)&ItemText[14],NULL,NULL,&SubItems[6],NULL,
  110.   &Items[16],0,70,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  111.   0,(APTR)&ItemText[15],NULL,NULL,NULL,NULL,
  112.   &Items[17],0,80,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  113.   0,(APTR)&ItemText[16],NULL,NULL,NULL,NULL,
  114.   NULL,0,90,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  115.   0,(APTR)&ItemText[17],NULL,NULL,NULL,NULL
  116.  };
  117.  
  118. struct Menu Titles[] =
  119.  { &Titles[1],0,0,60,10,MENUENABLED,(BYTE *)"Project",&Items[0],0,0,0,0,
  120.    &Titles[2],60,0,60,10,MENUENABLED,(BYTE *)"Gadgets",&Items[8],0,0,0,0,
  121.    &Titles[3],120,0,36,10,MENUENABLED,(BYTE *)"FPen",NULL,0,0,0,0,
  122.    NULL,156,0,36,10,MENUENABLED,(BYTE *)"BPen",NULL,0,0,0,0
  123.  };
  124.  
  125. static struct IntuiText TTT[] =
  126.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Add a text",NULL,
  127.    0,1,JAM1,0,1,NULL,(UBYTE *)"Modify a text",NULL,
  128.    0,1,JAM1,0,1,NULL,(UBYTE *)"Delete a text",NULL,
  129.    0,1,JAM1,0,1,NULL,(UBYTE *)"Move a text",NULL
  130.  };
  131.  
  132. static struct IntuiText WindowText[] =
  133.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Window",NULL,
  134.    0,1,JAM1,0,1,NULL,(UBYTE *)"Edit Flags",NULL,
  135.    0,1,JAM1,0,1,NULL,(UBYTE *)"Edit IDCMP",NULL
  136.  };
  137.  
  138. static struct MenuItem WindowSubs[] =
  139.  { &WindowSubs[1],110,0,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  140.    0,(APTR)&WindowText[1],NULL,'F',NULL,NULL,
  141.    &WindowSubs[2],110,10,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  142.    0,(APTR)&WindowText[2],NULL,'I',NULL,NULL,
  143.    &WindowSubs[3],110,20,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  144.    0,(APTR)&TTT[0],NULL,NULL,NULL,NULL,
  145.    &WindowSubs[4],110,30,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  146.    0,(APTR)&TTT[1],NULL,NULL,NULL,NULL,
  147.    &WindowSubs[5],110,40,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  148.    0,(APTR)&TTT[2],NULL,NULL,NULL,NULL,
  149.    NULL,110,50,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  150.    0,(APTR)&TTT[3],NULL,NULL,NULL,NULL
  151.  };
  152.  
  153. static struct MenuItem WindowItem =
  154.  { NULL,0,100,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  155.    0,(APTR)&WindowText[0],NULL,NULL,&WindowSubs[0],NULL
  156.  };
  157.  
  158. static struct IntuiText ReqText[] =
  159.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Requester",NULL,
  160.    0,1,JAM1,0,1,NULL,(UBYTE *)"Set BackFill",NULL
  161.  };
  162.  
  163. static struct MenuItem ReqSubs[] =
  164.  { &ReqSubs[1],110,0,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  165.    0,(APTR)&ReqText[1],NULL,'B',NULL,NULL,
  166.    &ReqSubs[2],110,10,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  167.    0,(APTR)&TTT[0],NULL,NULL,NULL,NULL,
  168.    &ReqSubs[3],110,20,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  169.    0,(APTR)&TTT[1],NULL,NULL,NULL,NULL,
  170.    &ReqSubs[4],110,30,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  171.    0,(APTR)&TTT[2],NULL,NULL,NULL,NULL,
  172.    NULL,110,40,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  173.    0,(APTR)&TTT[3],NULL,NULL,NULL,NULL
  174.  };
  175.  
  176. static struct MenuItem ReqItem =
  177.  { NULL,0,100,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  178.    0,(APTR)&ReqText[0],NULL,NULL,&ReqSubs[0],NULL
  179.  };
  180.  
  181. extern BOOL REQUESTER, WORKBENCH, WBSCREEN;
  182. extern USHORT FrontPen, BackPen;
  183.  
  184. /*
  185.  * set the extra window or requester items
  186.  */
  187. VOID set_extra_items(w)
  188.    struct Window *w;
  189. {
  190.    ClearMenuStrip(w);
  191.    if(REQUESTER == TRUE) Items[17].NextItem = &ReqItem;
  192.    else Items[17].NextItem = &WindowItem;
  193.    SetMenuStrip(w,&Titles[0]);
  194. }
  195.  
  196. /*
  197.  * set up the menu strip for the edit window
  198.  */
  199. VOID SetMenu(window)
  200.     struct Window *window;
  201. {
  202.     register COUNT i;
  203.     SHORT am_col = (1 << window->WScreen->BitMap.Depth);
  204.     LONG mutexf = NULL, mutexb = NULL;
  205.  
  206.     for(i=0;i<am_col;i++) mutexf += (1 << i);
  207.     mutexb = mutexf;
  208.     for(i=0;i<16;i++)
  209.     {   fpen_text[i]                 =   pen_text;
  210.         fpen_text[i+16]              =   pen_text;
  211.         fpen_text[i].BackPen         =   i;
  212.         fpen_text[i+16].BackPen      =   i+16;
  213.         bpen_text[i]                 =   fpen_text[i];
  214.         bpen_text[i+16]              =   fpen_text[i+16];
  215.  
  216.         fpen_item[i]                 =   pen_item;
  217.         fpen_item[i+16]              =   pen_item;
  218.         fpen_item[i].ItemFill        =   (APTR)&fpen_text[i];
  219.         fpen_item[i+16].ItemFill     =   (APTR)&fpen_text[i+16];
  220.         fpen_item[i].TopEdge         =   i*10;
  221.         fpen_item[i+16].TopEdge      =   i*10;
  222.         fpen_item[i+16].LeftEdge     =   70;
  223.         fpen_item[i].MutualExclude   =   mutexf - (1 << i);
  224.         fpen_item[i+16].MutualExclude =  mutexf - (1 << (i+16));
  225.         fpen_item[i].NextItem        =   &fpen_item[i+1];
  226.         fpen_item[i+16].NextItem     =   &fpen_item[i+17];
  227.     }
  228.     for(i=0;i<16;i++)
  229.     {   bpen_item[i]                 =   pen_item;
  230.         bpen_item[i+16]              =   pen_item;
  231.         bpen_item[i].ItemFill        =   (APTR)&bpen_text[i];
  232.         bpen_item[i+16].ItemFill     =   (APTR)&bpen_text[i+16];
  233.         bpen_item[i].TopEdge         =   i*10;
  234.         bpen_item[i+16].TopEdge      =   i*10;
  235.         bpen_item[i+16].LeftEdge     =   70;
  236.         bpen_item[i].MutualExclude   =   mutexb - (1 << i);
  237.         bpen_item[i+16].MutualExclude =  mutexb - (1 << (i+16));
  238.         bpen_item[i].NextItem        =   &bpen_item[i+1];
  239.         bpen_item[i+16].NextItem     =   &bpen_item[i+17];
  240.     }
  241.     bpen_item[BackPen].Flags |= CHECKED;
  242.     fpen_item[FrontPen].Flags |= CHECKED;
  243.     bpen_item[am_col-1].NextItem = NULL;
  244.     fpen_item[am_col-1].NextItem = NULL;
  245.  
  246.     Titles[2].FirstItem = &fpen_item[0];
  247.     Titles[3].FirstItem = &bpen_item[0];
  248.  
  249.     if(WORKBENCH == TRUE) strcpy((char *)&wbb,"Open WorkBench");
  250.     else                  strcpy((char *)&wbb,"Close WorkBench");
  251.  
  252.     if(WBSCREEN)  Items[15].Flags = Items[16].Flags = ITEMTEXT+HIGHCOMP;
  253.     else          Items[15].Flags = Items[16].Flags = ITEMTEXT+HIGHCOMP+ITEMENABLED;
  254.  
  255.     SetMenuStrip(window,&Titles[0]);
  256.     set_extra_items(window);
  257. }
  258.