home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 344b.lha / plplot_v2.6 / Amiga / plmenu.c < prev    next >
C/C++ Source or Header  |  1990-01-27  |  16KB  |  647 lines

  1. #include "plplot.h"
  2. #include "plamiga.h"
  3. #include <math.h>
  4.  
  5. void eventwait()
  6. {
  7.    for(;;) {
  8.       /* Wait for message */
  9.       Wait(1<<PLWindow->UserPort->mp_SigBit);
  10.       if(procmess())
  11.          return;
  12.    }
  13. }
  14.  
  15. PLINT procmess()
  16. {
  17.    ULONG class;
  18.    USHORT code;
  19.    struct IntuiMessage *message;
  20.  
  21.    while(message = (struct IntuiMessage *)GetMsg(PLWindow->UserPort)) {
  22.       class = message->Class;
  23.       code = message->Code;
  24.       ReplyMsg((struct Message *)message);
  25.       if(eventhandler(class,code))
  26.          return((PLINT)1);
  27.    }
  28.    return((PLINT)0);
  29. }
  30.  
  31. PLINT eventhandler(class, code)
  32. ULONG class;
  33. USHORT code;
  34. {
  35.    switch (class) {
  36.       case CLOSEWINDOW:
  37.          return((PLINT)1);
  38.       case MENUPICK:
  39.          menuselect(class,code);
  40.          break;
  41.       case SIZEVERIFY:
  42.          break;
  43.       case NEWSIZE:
  44.          if(!(PLCurPrefs.WinType & PLCUST)) {
  45.             PLCurPrefs.WWidth = PLWindow->Width;
  46.             PLCurPrefs.WHeight = PLWindow->Height;
  47.          }
  48.          else {
  49.             PLCurPrefs.CWidth = PLWindow->Width;
  50.             PLCurPrefs.CHeight = PLWindow->Height;
  51.          }
  52.          setlimits();
  53.          disablegads(0);
  54.          disablemenus();
  55.          remakeplot();
  56.          enablemenus();
  57.          enablegads();
  58.          break;
  59.       default:
  60.          break;
  61.    }
  62.  
  63.    return((PLINT)0);
  64. }
  65.  
  66. struct IntuiText IText0ItemScrSubs[] = {
  67.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"WorkBench", NULL},
  68.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Custom", NULL}
  69. };
  70.  
  71. struct MenuItem Menu0ItemScrSubs[] = {
  72.    {
  73.       &Menu0ItemScrSubs[1],
  74.       0, 0, 0, 0,
  75.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  76.       0xFFFE,
  77.       (APTR)&IText0ItemScrSubs[0],
  78.       NULL,
  79.       NULL,
  80.       NULL,
  81.       NULL
  82.    },
  83.    {
  84.       NULL,
  85.       0, 0, 0, 0,
  86.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  87.       0xFFFD,
  88.       (APTR)&IText0ItemScrSubs[1],
  89.       NULL,
  90.       NULL,
  91.       NULL,
  92.       NULL
  93.    }
  94. };
  95.  
  96. struct IntuiText IText0ItemPriSubs[] = {
  97.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Bitmap Dump", NULL},
  98.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Full Page (Landscape)", NULL},
  99.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Full Page (Portrait)", NULL}
  100. };
  101.  
  102. struct MenuItem Menu0ItemPriSubs[] = {
  103.    {
  104.       &Menu0ItemPriSubs[1],
  105.       0, 0, 0, 0,
  106.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  107.       NULL,
  108.       (APTR)&IText0ItemPriSubs[0],
  109.       NULL,
  110.       NULL,
  111.       NULL,
  112.       NULL
  113.    },
  114.    {
  115.       &Menu0ItemPriSubs[2],
  116.       0, 0, 0, 0,
  117.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  118.       NULL,
  119.       (APTR)&IText0ItemPriSubs[1],
  120.       NULL,
  121.       NULL,
  122.       NULL,
  123.       NULL
  124.    },
  125.    {
  126.       NULL,
  127.       0, 0, 0, 0,
  128.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  129.       NULL,
  130.       (APTR)&IText0ItemPriSubs[2],
  131.       NULL,
  132.       NULL,
  133.       NULL,
  134.       NULL
  135.    }
  136. };
  137.  
  138. struct IntuiText IText0[] = {
  139.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Save Configuration",NULL},
  140.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Reset",NULL},
  141.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Maintain Plot Aspect",NULL},
  142.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Redraw Enabled",NULL},
  143.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Select Screen Type",NULL},
  144.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Print",NULL},
  145.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Save Bitmap as IFF file",NULL}
  146. };
  147.  
  148. struct MenuItem Menu0Items[] = {
  149.    {
  150.       &Menu0Items[1],
  151.       0, 0, 0, 0,
  152.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  153.       0,
  154.       (APTR)&IText0[0],
  155.       NULL,
  156.       NULL,
  157.       NULL,
  158.       NULL
  159.    },
  160.    {
  161.       &Menu0Items[2],
  162.       0, 0, 0, 0,
  163.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  164.       0,
  165.       (APTR)&IText0[1],
  166.       NULL,
  167.       NULL,
  168.       NULL,
  169.       NULL
  170.    },
  171.    {
  172.       &Menu0Items[3],
  173.       0, 0, 0, 0,
  174.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | MENUTOGGLE,
  175.       0,
  176.       (APTR)&IText0[2],
  177.       NULL,
  178.       NULL,
  179.       NULL,
  180.       NULL
  181.    },
  182.    {
  183.       &Menu0Items[4],
  184.       0, 0, 0, 0,
  185.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | MENUTOGGLE,
  186.       0,
  187.       (APTR)&IText0[3],
  188.       NULL,
  189.       NULL,
  190.       NULL,
  191.       NULL
  192.    },
  193.    {
  194.       &Menu0Items[5],
  195.       0, 0, 0, 0,
  196.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  197.       0,
  198.       (APTR)&IText0[4],
  199.       NULL,
  200.       NULL,
  201.       &Menu0ItemScrSubs[0],
  202.       NULL
  203.    },
  204.    {
  205.       &Menu0Items[6],
  206.       0, 0, 0, 0,
  207.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  208.       0,
  209.       (APTR)&IText0[5],
  210.       NULL,
  211.       NULL,
  212.       &Menu0ItemPriSubs[0],
  213.       NULL
  214.    },
  215.    {
  216.       NULL,
  217.       0, 0, 0, 0,
  218.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  219.       0,
  220.       (APTR)&IText0[6],
  221.       NULL,
  222.       NULL,
  223.       NULL,
  224.       NULL
  225.    }
  226. };
  227.  
  228. struct IntuiText IText1Item2Subs[] = {
  229.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)" 2", NULL},
  230.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)" 4", NULL},
  231.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)" 8", NULL},
  232.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"16", NULL}
  233. };
  234.  
  235. struct MenuItem Menu1Item2Subs[] = {
  236.    {
  237.       &Menu1Item2Subs[1],
  238.       0, 0, 0, 0,
  239.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  240.       0xFFFE,
  241.       (APTR)&IText1Item2Subs[0],
  242.       NULL,
  243.       NULL,
  244.       NULL,
  245.       NULL
  246.    },
  247.    {
  248.       &Menu1Item2Subs[2],
  249.       0, 0, 0, 0,
  250.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  251.       0xFFFD,
  252.       (APTR)&IText1Item2Subs[1],
  253.       NULL,
  254.       NULL,
  255.       NULL,
  256.       NULL
  257.    },
  258.    {
  259.       &Menu1Item2Subs[3],
  260.       0, 0, 0, 0,
  261.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  262.       0xFFFB,
  263.       (APTR)&IText1Item2Subs[2],
  264.       NULL,
  265.       NULL,
  266.       NULL,
  267.       NULL
  268.    },
  269.    {
  270.       NULL,
  271.       0, 0, 0, 0,
  272.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT,
  273.       0xFFF7,
  274.       (APTR)&IText1Item2Subs[3],
  275.       NULL,
  276.       NULL,
  277.       NULL,
  278.       NULL
  279.    }
  280. };
  281.  
  282. struct IntuiText IText1[] = {
  283.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Interlaced", NULL},
  284.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"High Resolution",NULL},
  285.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Number of Colors",NULL},
  286.    {0, 1, JAM1, 0, 0, NULL, (UBYTE *)"Set Color Palette",NULL}
  287. };
  288.  
  289.  
  290. struct MenuItem Menu1Items[] = {
  291.    {
  292.       &Menu1Items[1],
  293.       0, 0, 0, 0,
  294.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | MENUTOGGLE,
  295.       0,
  296.       (APTR)&IText1[0],
  297.       NULL,
  298.       NULL,
  299.       NULL,
  300.       NULL
  301.    },
  302.    {
  303.       &Menu1Items[2],
  304.       0, 0, 0, 0,
  305.       ITEMTEXT | ITEMENABLED | HIGHCOMP | CHECKIT | MENUTOGGLE,
  306.       0,
  307.       (APTR)&IText1[1],
  308.       NULL,
  309.       NULL,
  310.       NULL,
  311.       NULL
  312.    },
  313.    {
  314.       &Menu1Items[3],
  315.       0, 0, 0, 0,
  316.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  317.       0,
  318.       (APTR)&IText1[2],
  319.       NULL,
  320.       NULL,
  321.       &Menu1Item2Subs[0],
  322.       NULL
  323.    },
  324.    {
  325.       NULL,
  326.       0, 0, 0, 0,
  327.       ITEMTEXT | ITEMENABLED | HIGHCOMP,
  328.       0,
  329.       (APTR)&IText1[3],
  330.       NULL,
  331.       NULL,
  332.       NULL,
  333.       NULL
  334.    }
  335. };
  336.  
  337. struct Menu Menu[] = {
  338.    {
  339.       &Menu[1],
  340.       0, 0, 0, 0,
  341.       MENUENABLED,
  342.       "PLPlot",
  343.       &Menu0Items[0]
  344.    },
  345.    {
  346.       NULL,
  347.       0, 0, 0, 0,
  348.       MENUENABLED,
  349.       "Screen Format",
  350.       &Menu1Items[0]
  351.    }
  352. };
  353.  
  354. enum menus { PLMCONTROL, PLMSCREEN };
  355.  
  356. /* Control menu items */
  357. enum menu0items { PLMSAVECONFIG, PLMRECONFIG, PLMASPECT, PLMBUFF,
  358.                   PLMSCREENTYPE, PLMSCRDUMP, PLMSIFF };
  359. enum menu0itemscrsubs { PLMWBENCH, PLMCUSTOM };
  360. enum menu0itemprisubs { PLMPRWIN, PLMPRPLAN, PLMPRPPOR };
  361.  
  362. /* Custom screen menu items */
  363. enum menu1items { PLMLACE, PLMHIRES, PLMCOLORS, PLMCOLREQ };
  364. /* Number color subitems */
  365. enum menu1item2subs {PLMC2, PLMC4, PLMC8, PLMC16 };
  366.  
  367. void MakePLMenu()
  368. {
  369.    short mtx, mledge;
  370.    short itx, itxlen, itedge, ichk;
  371.    short stx, stxlen, stedge, schk;
  372.    short fheight;
  373.    char *string;
  374.    struct Menu *menu;
  375.    struct MenuItem *item, *subitem;
  376.    struct IntuiText *itext;
  377.  
  378.    fheight = PLScreen->Font->ta_YSize;
  379.  
  380.    if(PLCurPrefs.WinType & PLCUST)
  381.       Menu[0].NextMenu = &Menu[1];
  382.    else
  383.       Menu[0].NextMenu = NULL;
  384.  
  385.    mledge = 0;
  386.    for(menu=Menu; menu!=NULL; menu=menu->NextMenu) {
  387.       string = (char *)menu->MenuName;
  388.       mtx = (short)TextLength(PLSRPort,string,(long)strlen(string));
  389.       /* Leave two character space between menus */
  390.       mtx += (2*mtx)/strlen(string);
  391.       menu->LeftEdge = mledge;
  392.       menu->Width = mtx;
  393.       mledge += mtx;
  394.  
  395.       /* Find length of longest menuitem in this menu */
  396.       itxlen = 0;
  397.       ichk = 0;
  398.       for(item=menu->FirstItem; item!=NULL; item=item->NextItem) {
  399.          itext = (struct IntuiText *)item->ItemFill;
  400.          string = (char *)itext->IText;
  401.          itx = (short)TextLength(PLSRPort,string,(long)strlen(string));
  402.          itxlen = max(itxlen,itx);
  403.          if(item->Flags & CHECKIT)
  404.             ichk = 1;
  405.       }
  406.       itedge = 0;
  407.       for(item=menu->FirstItem; item!=NULL; item=item->NextItem) {
  408.          item->Width = itxlen;
  409.          item->LeftEdge = 0;
  410.          item->TopEdge = itedge;
  411.          item->Height = fheight;
  412.          if(ichk) {
  413.             item->Width += CHECKWIDTH;
  414.             itext = (struct IntuiTest *)item->ItemFill;
  415.             itext->LeftEdge = CHECKWIDTH;
  416.          }
  417.          itedge += fheight;
  418.          stxlen = 0;
  419.          schk = 0;
  420.          for(subitem=item->SubItem;subitem!=NULL;subitem=subitem->NextItem){
  421.             itext = (struct IntuiText *)subitem->ItemFill;
  422.             string = (char *)itext->IText;
  423.             stx = (short)TextLength(PLSRPort,string,(long)strlen(string));
  424.             stxlen = max(stxlen,stx);
  425.             if(subitem->Flags & CHECKIT)
  426.                schk = 1;
  427.          }
  428.          stedge = 0;
  429.          for(subitem=item->SubItem;subitem!=NULL;subitem=subitem->NextItem){
  430.             subitem->Width = stxlen;
  431.             subitem->LeftEdge = item->Width/2;
  432.             subitem->TopEdge = stedge;
  433.             subitem->Height = fheight;
  434.             if(schk) {
  435.                subitem->Width += CHECKWIDTH;
  436.                itext = (struct IntuiTest *)subitem->ItemFill;
  437.                itext->LeftEdge = CHECKWIDTH;
  438.             }
  439.             stedge += fheight;
  440.          }
  441.       }
  442.    }
  443.  
  444.    if(PLCurPrefs.WinType & PLCUST) {
  445.       Menu0ItemScrSubs[PLMCUSTOM].Flags |= CHECKED;
  446.       Menu0ItemScrSubs[PLMWBENCH].Flags &= ~CHECKED;
  447.       Menu1Items[PLMLACE].Flags |= ITEMENABLED;
  448.       Menu1Items[PLMHIRES].Flags |= ITEMENABLED;
  449.       Menu1Items[PLMCOLORS].Flags |= ITEMENABLED;
  450.    }
  451.    else {
  452.       Menu0ItemScrSubs[PLMCUSTOM].Flags &= ~CHECKED;
  453.       Menu0ItemScrSubs[PLMWBENCH].Flags |= CHECKED;
  454.    }
  455.  
  456.    Menu1Item2Subs[PLMC2].Flags &= ~CHECKED;
  457.    Menu1Item2Subs[PLMC4].Flags &= ~CHECKED;
  458.    Menu1Item2Subs[PLMC8].Flags &= ~CHECKED;
  459.    Menu1Item2Subs[PLMC16].Flags &= ~CHECKED;
  460.    Menu1Item2Subs[PLCurPrefs.Depth-1].Flags |= CHECKED;
  461.  
  462.    if(PLCurPrefs.ScrType & PLLACE)
  463.       Menu1Items[PLMLACE].Flags |= CHECKED;
  464.    else
  465.       Menu1Items[PLMLACE].Flags &= ~CHECKED;
  466.  
  467.    if(PLCurPrefs.ScrType & PLHIRES)
  468.       Menu1Items[PLMHIRES].Flags |= CHECKED;
  469.    else
  470.       Menu1Items[PLMHIRES].Flags &= ~CHECKED;
  471.  
  472.    if(PLCurPrefs.WinType & PLASP)
  473.       Menu0Items[PLMASPECT].Flags |= CHECKED;
  474.    else
  475.       Menu0Items[PLMASPECT].Flags &= ~CHECKED;
  476.  
  477.    if(PLCurPrefs.WinType & PLBUFF)
  478.       Menu0Items[PLMBUFF].Flags |= CHECKED;
  479.    else
  480.       Menu0Items[PLMBUFF].Flags &= ~CHECKED;
  481.  
  482.    SetMenuStrip(PLWindow,Menu);
  483. }
  484.  
  485. void disablemenus()
  486. {
  487.    OffMenu(PLWindow, PLMCONTROL | SHIFTITEM(NOITEM));
  488.    OffMenu(PLWindow, PLMSCREEN  | SHIFTITEM(NOITEM));
  489. }
  490.  
  491. void enablemenus()
  492. {
  493.    OnMenu(PLWindow, PLMCONTROL | SHIFTITEM(NOITEM));
  494.    OnMenu(PLWindow, PLMSCREEN  | SHIFTITEM(NOITEM));
  495. }
  496.  
  497. void menuselect(class, code)
  498. ULONG class;
  499. USHORT code;
  500. {
  501.    PLINT ItemNumber, MenuNumber, SubNumber;
  502.    PLINT remake=0;
  503.    struct MenuItem *Item;
  504.  
  505.    if(class == VANILLAKEY)
  506.       ;
  507.    else if(class == MENUPICK) {
  508.       while(code != MENUNULL) {
  509.          Item = ItemAddress(Menu,code);
  510.          MenuNumber = MENUNUM(code);
  511.          ItemNumber = ITEMNUM(code);
  512.          SubNumber = SUBNUM(code);
  513.          if(MenuNumber == PLMCONTROL) {
  514.             if(ItemNumber == PLMSAVECONFIG) {
  515.                if(!(PLCurPrefs.WinType & PLCUST)) {
  516.                   PLCurPrefs.WXPos = PLWindow->LeftEdge;
  517.                   PLCurPrefs.WYPos = PLWindow->TopEdge;
  518.                }
  519.                else {
  520.                   PLCurPrefs.CXPos = PLWindow->LeftEdge;
  521.                   PLCurPrefs.CYPos = PLWindow->TopEdge;
  522.                }
  523.                SetPLDefs();
  524.             }
  525.             else if(ItemNumber == PLMRECONFIG) {
  526.                RestorePrefs();
  527.                remake = 1;
  528.             }
  529.             else if(ItemNumber == PLMASPECT) {
  530.                if(Item->Flags & CHECKED) {
  531.                   PLCurPrefs.WinType |= PLASP;
  532.                }
  533.                else {
  534.                   PLCurPrefs.WinType &= ~PLASP;
  535.                }
  536.                setlimits();
  537.                disablegads(0);
  538.                disablemenus();
  539.                remakeplot();
  540.                enablemenus();
  541.                enablegads();
  542.             }
  543.             else if(ItemNumber == PLMBUFF) {
  544.                if(Item->Flags & CHECKED) {
  545.                   PLCurPrefs.WinType |= PLBUFF;
  546.                }
  547.                else {
  548.                   PLCurPrefs.WinType &= ~PLBUFF;
  549.                }
  550.             }
  551.             else if(ItemNumber == PLMSCREENTYPE) {
  552.                if(SubNumber == PLMWBENCH) {
  553.                   if(!(PLCurPrefs.WinType & PLCUST)) goto reselect;
  554.                   PLCurPrefs.CXPos = PLWindow->LeftEdge;
  555.                   PLCurPrefs.CYPos = PLWindow->TopEdge;
  556.                   PLCurPrefs.WinType &= ~PLCUST;
  557.                }
  558.                else if(SubNumber == PLMCUSTOM) {
  559.                   if(PLCurPrefs.WinType & PLCUST) goto reselect;
  560.                   /* Save wbench window position */
  561.                   PLCurPrefs.WXPos = PLWindow->LeftEdge;
  562.                   PLCurPrefs.WYPos = PLWindow->TopEdge;
  563.                   PLCurPrefs.WinType |= PLCUST;
  564.                }
  565.                remake = 1;
  566.             }
  567.             else if(ItemNumber == PLMSCRDUMP) {
  568.                /* Disable system gadgets */
  569.                disablegads(SubNumber);
  570.                disablemenus();
  571.                screendump(SubNumber);
  572.                enablemenus();
  573.                enablegads();
  574.             }
  575.             else if(ItemNumber == PLMSIFF) {
  576.                disablegads(0);
  577.                disablemenus();
  578.                saveiff();
  579.                enablemenus();
  580.                enablegads();
  581.             }
  582.          }
  583.          else if(MenuNumber == PLMSCREEN) {
  584.             if(ItemNumber == PLMLACE) {
  585.                if(Item->Flags & CHECKED)
  586.                   PLCurPrefs.ScrType |= PLLACE;
  587.                else
  588.                   PLCurPrefs.ScrType &= ~PLLACE;
  589.                PLCurPrefs.CWidth = 0;
  590.                PLCurPrefs.CHeight = 0;
  591.                remake = 1;
  592.             }
  593.             else if(ItemNumber == PLMHIRES) {
  594.                if(Item->Flags & CHECKED)
  595.                   PLCurPrefs.ScrType |= PLHIRES;
  596.                else
  597.                   PLCurPrefs.ScrType &= ~PLHIRES;
  598.                PLCurPrefs.CWidth = 0;
  599.                PLCurPrefs.CHeight = 0;
  600.                remake = 1;
  601.             }
  602.             else if(ItemNumber == PLMCOLORS) {
  603.                if(SubNumber == PLMC2) {
  604.                   if(PLCurPrefs.Depth == 1) goto reselect;
  605.                   PLCurPrefs.Depth = 1;
  606.                }
  607.                else if(SubNumber == PLMC4) {
  608.                   if(PLCurPrefs.Depth == 2) goto reselect;
  609.                   PLCurPrefs.Depth = 2;
  610.                }
  611.                else if(SubNumber == PLMC8) {
  612.                   if(PLCurPrefs.Depth == 3) goto reselect;
  613.                   PLCurPrefs.Depth = 3;
  614.                }
  615.                else if(SubNumber == PLMC16) {
  616.                   if(PLCurPrefs.Depth == 4) goto reselect;
  617.                   PLCurPrefs.Depth = 4;
  618.                }
  619.                PLCurPrefs.CXPos = PLWindow->LeftEdge;
  620.                PLCurPrefs.CYPos = PLWindow->TopEdge;
  621.                remake = 1;
  622.             }
  623.             else if(ItemNumber == PLMCOLREQ) {
  624.                disablegads(1);
  625.                disablemenus();
  626.                plcolreq();
  627.                enablemenus();
  628.                enablegads();
  629.             }
  630.          }
  631. reselect:
  632.          code = Item->NextSelect;
  633.       }
  634.    }
  635.    if(remake) {
  636.       ClosePLWind();
  637.       OpenPLWind();
  638.       setlimits();
  639.       disablegads(0);
  640.       disablemenus();
  641.       remakeplot();
  642.       enablemenus();
  643.       enablegads();
  644.    }
  645. }
  646.  
  647.