home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 514b.lha / GadgetED_v2.3 / Source / setmenus.c < prev    next >
C/C++ Source or Header  |  1991-06-08  |  11KB  |  264 lines

  1. /*----------------------------------------------------------------------*
  2.   setmenus.c Version 2.3 -  © Copyright 1990-91 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.   0,1,JAM1,0,1,NULL,(UBYTE *)"OS-2 Border colors      ",NULL
  56.  };
  57.  
  58. static struct MenuItem SubItems[] =
  59. { &SubItems[1],150,0,108,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  60.   0,(APTR)&SubText[0],NULL,'C',NULL,NULL,
  61.   NULL,150,10,108,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  62.   0,(APTR)&SubText[1],NULL,'A',NULL,NULL,
  63.   &SubItems[3],110,0,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  64.   0,(APTR)&SubText[2],NULL,NULL,NULL,NULL,
  65.   &SubItems[4],110,10,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  66.   0,(APTR)&SubText[3],NULL,NULL,NULL,NULL,
  67.   &SubItems[5],110,20,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  68.   0,(APTR)&SubText[4],NULL,NULL,NULL,NULL,
  69.   NULL,110,30,132,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  70.   0,(APTR)&SubText[5],NULL,NULL,NULL,NULL,
  71.   &SubItems[7],80,0,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  72.   0,(APTR)&SubText[6],NULL,NULL,NULL,NULL,
  73.   &SubItems[8],80,10,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  74.   0,(APTR)&SubText[7],NULL,NULL,NULL,NULL,
  75.   NULL,80,20,164,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  76.   0,(APTR)&SubText[8],NULL,NULL,NULL,NULL
  77.  };
  78.  
  79. static struct MenuItem Items[] =
  80. { &Items[1],0,0,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  81.   0,(APTR)&ItemText[0],NULL,'?',NULL,NULL,
  82.   &Items[2],0,10,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  83.   0,(APTR)&ItemText[1],NULL,'N',NULL,NULL,
  84.   &Items[3],0,20,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  85.   0,(APTR)&ItemText[2],NULL,'L',NULL,NULL,
  86.   &Items[4],0,30,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  87.   0,(APTR)&ItemText[3],NULL,'S',NULL,NULL,
  88.   &Items[5],0,40,151,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  89.   0,(APTR)&ItemText[4],NULL,NULL,&SubItems[0],NULL,
  90.   &Items[6],0,50,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  91.   0,(APTR)&ItemText[5],NULL,'P',NULL,NULL,
  92.   &Items[7],0,60,151,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  93.   0,(APTR)&ItemText[6],NULL,NULL,NULL,NULL,
  94.   NULL,0,70,151,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  95.   0,(APTR)&ItemText[7],NULL,'Q',NULL,NULL,
  96.  
  97.   &Items[9],0,0,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  98.   0,(APTR)&ItemText[8],NULL,NULL,NULL,NULL,
  99.   &Items[10],0,10,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  100.   0,(APTR)&ItemText[9],NULL,NULL,NULL,NULL,
  101.   &Items[11],0,20,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  102.   0,(APTR)&ItemText[10],NULL,NULL,NULL,NULL,
  103.   &Items[12],0,30,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  104.   0,(APTR)&ItemText[11],NULL,NULL,NULL,NULL,
  105.   &Items[13],0,40,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  106.   0,(APTR)&ItemText[12],NULL,NULL,NULL,NULL,
  107.   &Items[14],0,50,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  108.   0,(APTR)&ItemText[13],NULL,NULL,&SubItems[2],NULL,
  109.   &Items[15],0,60,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  110.   0,(APTR)&ItemText[14],NULL,NULL,&SubItems[6],NULL,
  111.   &Items[16],0,70,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  112.   0,(APTR)&ItemText[15],NULL,NULL,NULL,NULL,
  113.   &Items[17],0,80,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  114.   0,(APTR)&ItemText[16],NULL,NULL,NULL,NULL,
  115.   &Items[18],0,90,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  116.   0,(APTR)&ItemText[17],NULL,NULL,NULL,NULL,
  117.   NULL,0,100,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  118.   0,(APTR)&ItemText[18],NULL,NULL,NULL,NULL,
  119.  };
  120.  
  121. struct Menu Titles[] =
  122.  { &Titles[1],0,0,60,10,MENUENABLED,(BYTE *)"Project",&Items[0],0,0,0,0,
  123.    &Titles[2],60,0,60,10,MENUENABLED,(BYTE *)"Gadgets",&Items[8],0,0,0,0,
  124.    &Titles[3],120,0,36,10,MENUENABLED,(BYTE *)"FPen",NULL,0,0,0,0,
  125.    NULL,156,0,36,10,MENUENABLED,(BYTE *)"BPen",NULL,0,0,0,0
  126.  };
  127.  
  128. static struct IntuiText TTT[] =
  129.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Add a text",NULL,
  130.    0,1,JAM1,0,1,NULL,(UBYTE *)"Modify a text",NULL,
  131.    0,1,JAM1,0,1,NULL,(UBYTE *)"Delete a text",NULL,
  132.    0,1,JAM1,0,1,NULL,(UBYTE *)"Move a text",NULL
  133.  };
  134.  
  135. static struct IntuiText WindowText[] =
  136.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Window",NULL,
  137.    0,1,JAM1,0,1,NULL,(UBYTE *)"Edit Flags",NULL,
  138.    0,1,JAM1,0,1,NULL,(UBYTE *)"Edit IDCMP",NULL,
  139.    0,1,JAM1,0,1,NULL,(UBYTE *)"Set BackFill",NULL
  140.  };
  141.  
  142. static struct MenuItem WindowSubs[] =
  143.  { &WindowSubs[1],110,0,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  144.    0,(APTR)&WindowText[1],NULL,'F',NULL,NULL,
  145.    &WindowSubs[2],110,10,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  146.    0,(APTR)&WindowText[2],NULL,'I',NULL,NULL,
  147.    &WindowSubs[3],110,20,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  148.    0,(APTR)&WindowText[3],NULL,'B',NULL,NULL,
  149.    &WindowSubs[4],110,30,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  150.    0,(APTR)&TTT[0],NULL,NULL,NULL,NULL,
  151.    &WindowSubs[5],110,40,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  152.    0,(APTR)&TTT[1],NULL,NULL,NULL,NULL,
  153.    &WindowSubs[6],110,50,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  154.    0,(APTR)&TTT[2],NULL,NULL,NULL,NULL,
  155.    NULL,110,60,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  156.    0,(APTR)&TTT[3],NULL,NULL,NULL,NULL
  157.  };
  158.  
  159. static struct MenuItem WindowItem =
  160.  { NULL,0,110,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  161.    0,(APTR)&WindowText[0],NULL,NULL,&WindowSubs[0],NULL
  162.  };
  163.  
  164. static struct IntuiText ReqText[] =
  165.  { 0,1,JAM1,0,1,NULL,(UBYTE *)"Requester",NULL,
  166.    0,1,JAM1,0,1,NULL,(UBYTE *)"Set BackFill",NULL
  167.  };
  168.  
  169. static struct MenuItem ReqSubs[] =
  170.  { &ReqSubs[1],110,0,142,10,ITEMENABLED+ITEMTEXT+COMMSEQ+HIGHCOMP,
  171.    0,(APTR)&ReqText[1],NULL,'B',NULL,NULL,
  172.    &ReqSubs[2],110,10,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  173.    0,(APTR)&TTT[0],NULL,NULL,NULL,NULL,
  174.    &ReqSubs[3],110,20,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  175.    0,(APTR)&TTT[1],NULL,NULL,NULL,NULL,
  176.    &ReqSubs[4],110,30,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  177.    0,(APTR)&TTT[2],NULL,NULL,NULL,NULL,
  178.    NULL,110,40,142,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  179.    0,(APTR)&TTT[3],NULL,NULL,NULL,NULL
  180.  };
  181.  
  182. static struct MenuItem ReqItem =
  183.  { NULL,0,110,196,10,ITEMENABLED+ITEMTEXT+HIGHCOMP,
  184.    0,(APTR)&ReqText[0],NULL,NULL,&ReqSubs[0],NULL
  185.  };
  186.  
  187. extern BOOL REQUESTER, WORKBENCH, WBSCREEN;
  188. extern USHORT FrontPen, BackPen;
  189.  
  190. /*
  191.  * set the extra window or requester items
  192.  */
  193. VOID set_extra_items(w)
  194.    struct Window *w;
  195. {
  196.    ClearMenuStrip(w);
  197.    if(REQUESTER == TRUE) Items[18].NextItem = &ReqItem;
  198.    else Items[18].NextItem = &WindowItem;
  199.    SetMenuStrip(w,&Titles[0]);
  200. }
  201.  
  202. /*
  203.  * set up the menu strip for the edit window
  204.  */
  205. VOID SetMenu(window)
  206.     struct Window *window;
  207. {
  208.     register COUNT i;
  209.     SHORT am_col = (1 << window->WScreen->BitMap.Depth);
  210.     LONG mutexf = NULL, mutexb = NULL;
  211.  
  212.     for(i=0;i<am_col;i++) mutexf += (1 << i);
  213.     mutexb = mutexf;
  214.     for(i=0;i<16;i++)
  215.     {   fpen_text[i]                 =   pen_text;
  216.         fpen_text[i+16]              =   pen_text;
  217.         fpen_text[i].BackPen         =   i;
  218.         fpen_text[i+16].BackPen      =   i+16;
  219.         bpen_text[i]                 =   fpen_text[i];
  220.         bpen_text[i+16]              =   fpen_text[i+16];
  221.  
  222.         fpen_item[i]                 =   pen_item;
  223.         fpen_item[i+16]              =   pen_item;
  224.         fpen_item[i].ItemFill        =   (APTR)&fpen_text[i];
  225.         fpen_item[i+16].ItemFill     =   (APTR)&fpen_text[i+16];
  226.         fpen_item[i].TopEdge         =   i*10;
  227.         fpen_item[i+16].TopEdge      =   i*10;
  228.         fpen_item[i+16].LeftEdge     =   70;
  229.         fpen_item[i].MutualExclude   =   mutexf - (1 << i);
  230.         fpen_item[i+16].MutualExclude =  mutexf - (1 << (i+16));
  231.         fpen_item[i].NextItem        =   &fpen_item[i+1];
  232.         fpen_item[i+16].NextItem     =   &fpen_item[i+17];
  233.     }
  234.     for(i=0;i<16;i++)
  235.     {   bpen_item[i]                 =   pen_item;
  236.         bpen_item[i+16]              =   pen_item;
  237.         bpen_item[i].ItemFill        =   (APTR)&bpen_text[i];
  238.         bpen_item[i+16].ItemFill     =   (APTR)&bpen_text[i+16];
  239.         bpen_item[i].TopEdge         =   i*10;
  240.         bpen_item[i+16].TopEdge      =   i*10;
  241.         bpen_item[i+16].LeftEdge     =   70;
  242.         bpen_item[i].MutualExclude   =   mutexb - (1 << i);
  243.         bpen_item[i+16].MutualExclude =  mutexb - (1 << (i+16));
  244.         bpen_item[i].NextItem        =   &bpen_item[i+1];
  245.         bpen_item[i+16].NextItem     =   &bpen_item[i+17];
  246.     }
  247.     bpen_item[BackPen].Flags |= CHECKED;
  248.     fpen_item[FrontPen].Flags |= CHECKED;
  249.     bpen_item[am_col-1].NextItem = NULL;
  250.     fpen_item[am_col-1].NextItem = NULL;
  251.  
  252.     Titles[2].FirstItem = &fpen_item[0];
  253.     Titles[3].FirstItem = &bpen_item[0];
  254.  
  255.     if(WORKBENCH == TRUE) strcpy((char *)&wbb,"Open WorkBench");
  256.     else                  strcpy((char *)&wbb,"Close WorkBench");
  257.  
  258.     if(WBSCREEN)  Items[15].Flags = Items[16].Flags = ITEMTEXT+HIGHCOMP;
  259.     else          Items[15].Flags = Items[16].Flags = ITEMTEXT+HIGHCOMP+ITEMENABLED;
  260.  
  261.     SetMenuStrip(window,&Titles[0]);
  262.     set_extra_items(window);
  263. }
  264.