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

  1. /*----------------------------------------------------------------------*
  2.    set_flags.c Version 2.0 -  © Copyright 1990 Jaba Development
  3.  
  4.    Author  : Jan van den Baard
  5.    Purpose : The window flags requester
  6.  *----------------------------------------------------------------------*/
  7.  
  8. static SHORT MainPairs2[] =
  9.  { 0,0,254,0
  10.  };
  11. static struct Border MainBorder2 =
  12.  { 2,12,0,0,JAM1,2,MainPairs2,NULL
  13.  };
  14. static SHORT MainPairs1[] =
  15.  { 0,0,254,0,254,139,0,139,0,0
  16.  };
  17. static struct Border MainBorder1 =
  18.  { 2,1,0,0,JAM1,5,MainPairs1,&MainBorder2
  19.  };
  20.  
  21. static SHORT OCPairs[] =
  22.  { 0,0,115,0,115,16,0,16,0,0
  23.  };
  24. static struct Border OCBorder =
  25.  { -1,-1,0,0,JAM1,5,OCPairs,NULL
  26.  };
  27.  
  28. static struct IntuiText CNCText =
  29.  { 0,0,JAM1,33,4,NULL,(UBYTE *)"CANCEL",NULL
  30.  };
  31. static struct Gadget CNC =
  32.  { NULL,132,122,114,15,NULL,RELVERIFY,BOOLGADGET,
  33.    (APTR)&OCBorder,NULL,&CNCText,NULL,NULL,17,NULL
  34.  };
  35.  
  36. static struct IntuiText OKText =
  37.  { 0,0,JAM1,48,4,NULL,(UBYTE *)"OK",NULL
  38.  };
  39. static struct Gadget OK =
  40.  { &CNC,12,122,114,15,NULL,RELVERIFY,BOOLGADGET,
  41.    (APTR)&OCBorder,NULL,&OKText,NULL,NULL,16,NULL
  42.  };
  43.  
  44. static SHORT FPairs[] =
  45.  { 0,0,115,0,115,10,0,10,0,0
  46.  };
  47. static struct Border FBorder =
  48.  { -1,-1,0,0,JAM1,5,FPairs,NULL
  49.  };
  50.  
  51. static struct IntuiText RMTText =
  52.  { 0,0,JAM1,28,1,NULL,(UBYTE *)"RMBTRAP",NULL
  53.  };
  54. static struct Gadget RMT =
  55.  { &OK,132,106,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  56.    (APTR)&FBorder,NULL,&RMTText,NULL,NULL,15,NULL
  57.  };
  58.  
  59. static struct IntuiText RPMText =
  60.  { 0,0,JAM1,13,1,NULL,(UBYTE *)"REPORTMOUSE",NULL
  61.  };
  62. static struct Gadget RPM =
  63.  { &RMT,132,93,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  64.    (APTR)&FBorder,NULL,&RPMText,NULL,NULL,14,NULL
  65.  };
  66.  
  67. static struct IntuiText ACTText =
  68.  { 0,0,JAM1,24,1,NULL,(UBYTE *)"ACTIVATE",NULL
  69.  };
  70. static struct Gadget ACT =
  71.  { &RPM,132,80,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  72.    (APTR)&FBorder,NULL,&ACTText,NULL,NULL,13,NULL
  73.  };
  74.  
  75. static struct IntuiText BDLText =
  76.  { 0,0,JAM1,16,1,NULL,(UBYTE *)"BORDERLESS",NULL
  77.  };
  78. static struct Gadget BDL =
  79.  { &ACT,132,67,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  80.    (APTR)&FBorder,NULL,&BDLText,NULL,NULL,12,NULL
  81.  };
  82.  
  83. static struct IntuiText GZZText =
  84.  { 0,0,JAM1,5,1,NULL,(UBYTE *)"GIMMEZEROZERO",NULL
  85.  };
  86. static struct Gadget GZZ =
  87.  { &BDL,132,54,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  88.    (APTR)&FBorder,NULL,&GZZText,NULL,NULL,11,NULL
  89.  };
  90.  
  91. static struct IntuiText BDRText =
  92.  { 0,0,JAM1,25,1,NULL,(UBYTE *)"BACKDROP",NULL
  93.  };
  94. static struct Gadget BDR =
  95.  { &GZZ,132,41,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  96.    (APTR)&FBorder,NULL,&BDRText,NULL,NULL,10,NULL
  97.  };
  98.  
  99. static struct IntuiText SBMText =
  100.  { 0,0,JAM1,8,1,NULL,(UBYTE *)"SUPER_BITMAP",NULL
  101.  };
  102. static struct Gadget SBM =
  103.  { &BDR,132,28,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  104.    (APTR)&FBorder,NULL,&SBMText,3L,NULL,9,NULL
  105.  };
  106.  
  107. static struct IntuiText SMFText =
  108.  { 0,0,JAM1,4,1,NULL,(UBYTE *)"SMART_REFRESH",NULL
  109.  };
  110. static struct Gadget SMF =
  111.  { &SBM,132,15,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  112.    (APTR)&FBorder,NULL,&SMFText,5L,NULL,8,NULL
  113.  };
  114.  
  115. static struct IntuiText SRFText =
  116.  { 0,0,JAM1,0,1,NULL,(UBYTE *)"SIMPLE_REFRESH",NULL
  117.  };
  118. static struct Gadget SRF =
  119.  { &SMF,12,106,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  120.    (APTR)&FBorder,NULL,&SRFText,6L,NULL,7,NULL
  121.  };
  122.  
  123. static struct IntuiText NCRText =
  124.  { 0,0,JAM1,6,1,NULL,(UBYTE *)"NOCAREREFRESH",NULL
  125.  };
  126. static struct Gadget NCR =
  127.  { &SRF,12,93,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  128.    (APTR)&FBorder,NULL,&NCRText,NULL,NULL,6,NULL
  129.  };
  130.  
  131. static struct IntuiText SBBText =
  132.  { 0,0,JAM1,13,1,NULL,(UBYTE *)"SIZEBBOTTOM",NULL
  133.  };
  134. static struct Gadget SBB =
  135.  { &NCR,12,80,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  136.    (APTR)&FBorder,NULL,&SBBText,NULL,NULL,5,NULL
  137.  };
  138.  
  139. static struct IntuiText SBRText =
  140.  { 0,0,JAM1,17,1,NULL,(UBYTE *)"SIZEBRIGHT",NULL
  141.  };
  142. static struct Gadget SBR =
  143.  { &SBB,12,67,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  144.    (APTR)&FBorder,NULL,&SBRText,NULL,NULL,4,NULL
  145.  };
  146.  
  147. static struct IntuiText WDCText =
  148.  { 0,0,JAM1,13,1,NULL,(UBYTE *)"WINDOWCLOSE",NULL
  149.  };
  150. static struct Gadget WDC =
  151.  { &SBR,12,54,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  152.    (APTR)&FBorder,NULL,&WDCText,NULL,NULL,3,NULL
  153.  };
  154.  
  155. static struct IntuiText WDDText =
  156.  { 0,0,JAM1,13,1,NULL,(UBYTE *)"WINDOWDEPTH",NULL
  157.  };
  158. static struct Gadget WDD =
  159.  { &WDC,12,41,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  160.    (APTR)&FBorder,NULL,&WDDText,NULL,NULL,2,NULL
  161.  };
  162.  
  163. static struct IntuiText WDRText =
  164.  { 0,0,JAM1,18,1,NULL,(UBYTE *)"WINDOWDRAG",NULL
  165.  };
  166. static struct Gadget WDR =
  167.  { &WDD,12,28,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  168.    (APTR)&FBorder,NULL,&WDRText,NULL,NULL,1,NULL
  169.  };
  170.  
  171. static struct IntuiText WDSText =
  172.  { 0,0,JAM1,10,1,NULL,(UBYTE *)"WINDOWSIZING",NULL
  173.  };
  174. static struct Gadget WDS =
  175.  { &WDR,12,15,114,9,NULL,GADGIMMEDIATE+TOGGLESELECT,BOOLGADGET,
  176.    (APTR)&FBorder,NULL,&WDSText,NULL,NULL,0,NULL
  177.  };
  178.  
  179. static struct IntuiText EText =
  180.  { 0,0,JAM1,55,3,NULL,(UBYTE *)"Edit Window Flags",NULL
  181.  };
  182.  
  183. static struct NewWindow sf_req =
  184.  { 30,15,259,142,0,1,GADGETDOWN+GADGETUP,
  185.    ACTIVATE+RMBTRAP+NOCAREREFRESH+SMART_REFRESH,
  186.    NULL,NULL,NULL,NULL,NULL,0,0,0,0,CUSTOMSCREEN
  187.  };
  188.  
  189. extern struct Window     *MainWindow;
  190. extern struct Screen     *MainScreen;
  191. extern struct NewWindow   nw_main;
  192. extern struct RastPort   *MainRP;
  193. extern struct GadgetList  Gadgets;
  194. extern struct Gadget     *Gadget;
  195. extern ULONG              WindowFlags;
  196. extern USHORT             GadgetCount;
  197. extern BOOL               Saved;
  198.  
  199. struct Gadget *re_arrange();
  200.  
  201. /*
  202.  * clear all selected flags
  203.  */
  204. static VOID clear()
  205. {
  206.     register struct Gadget *g;
  207.  
  208.     g = &WDS;
  209.     while(1)
  210.     {   if(g == &OK) break;
  211.         g->Flags = NULL;
  212.         g = g->NextGadget;
  213.     }
  214. }
  215.  
  216. /*
  217.  * open the flags window
  218.  */
  219. VOID set_flags()
  220. {
  221.     struct Window *sfw, *w;
  222.     struct NewWindow nw;
  223.  
  224.     sf_req.Screen = MainScreen;
  225.     clear();
  226.     if(NOT(sfw = OpenWindow(&sf_req))) return;
  227.  
  228.     draw(sfw,&WDS,&MainBorder1,&EText);
  229.     disable_window();
  230.  
  231.     if(TestBits(WindowFlags,WINDOWSIZING))   SelectGadget(sfw,&WDS,NULL);
  232.     if(TestBits(WindowFlags,WINDOWDRAG))     SelectGadget(sfw,&WDR,NULL);
  233.     if(TestBits(WindowFlags,WINDOWDEPTH))    SelectGadget(sfw,&WDD,NULL);
  234.     if(TestBits(WindowFlags,WINDOWCLOSE))    SelectGadget(sfw,&WDC,NULL);
  235.     if(TestBits(WindowFlags,SIZEBRIGHT))     SelectGadget(sfw,&SBR,NULL);
  236.     if(TestBits(WindowFlags,SIZEBBOTTOM))    SelectGadget(sfw,&SBB,NULL);
  237.     if(TestBits(WindowFlags,NOCAREREFRESH))  SelectGadget(sfw,&NCR,NULL);
  238.     if(TestBits(WindowFlags,SIMPLE_REFRESH)) SelectGadget(sfw,&SRF,NULL);
  239.     if(TestBits(WindowFlags,SMART_REFRESH))  SelectGadget(sfw,&SMF,NULL);
  240.     if(TestBits(WindowFlags,SUPER_BITMAP))   SelectGadget(sfw,&SBM,NULL);
  241.     if(TestBits(WindowFlags,BACKDROP))       SelectGadget(sfw,&BDR,NULL);
  242.     if(TestBits(WindowFlags,GIMMEZEROZERO))  SelectGadget(sfw,&GZZ,NULL);
  243.     if(TestBits(WindowFlags,BORDERLESS))     SelectGadget(sfw,&BDL,NULL);
  244.     if(TestBits(WindowFlags,ACTIVATE))       SelectGadget(sfw,&ACT,NULL);
  245.     if(TestBits(WindowFlags,REPORTMOUSE))    SelectGadget(sfw,&RPM,NULL);
  246.     if(TestBits(WindowFlags,RMBTRAP))        SelectGadget(sfw,&RMT,NULL);
  247.  
  248.     do
  249.     {   Wait(1 << sfw->UserPort->mp_SigBit);
  250.         while(read_msg(sfw))
  251.         {   switch(Gadget->GadgetID)
  252.             {   case 7:
  253.                 case 8:
  254.                 case 9: MutualExclude(sfw,Gadget,&SRF,NULL);
  255.                         SelectGadget(sfw,Gadget,NULL);
  256.                         break;
  257.             }
  258.         }
  259.     } while(Gadget->GadgetID < 16);
  260.     CloseWindow(sfw);
  261.     enable_window();
  262.     if(Gadget->GadgetID == 16)
  263.     {   WindowFlags = NULL;
  264.         if(SelectTest(&WDS)) WindowFlags |= WINDOWSIZING;
  265.         if(SelectTest(&WDR)) WindowFlags |= WINDOWDRAG;
  266.         if(SelectTest(&WDD)) WindowFlags |= WINDOWDEPTH;
  267.         if(SelectTest(&WDC)) WindowFlags |= WINDOWCLOSE;
  268.         if(SelectTest(&SBR)) WindowFlags |= SIZEBRIGHT;
  269.         if(SelectTest(&SBB)) WindowFlags |= SIZEBBOTTOM;
  270.         if(SelectTest(&NCR)) WindowFlags |= NOCAREREFRESH;
  271.         if(SelectTest(&SRF)) WindowFlags |= SIMPLE_REFRESH;
  272.         if(SelectTest(&SMF)) WindowFlags |= SMART_REFRESH;
  273.         if(SelectTest(&SBM)) WindowFlags |= SUPER_BITMAP;
  274.         if(SelectTest(&BDR)) WindowFlags |= BACKDROP;
  275.         if(SelectTest(&GZZ)) WindowFlags |= GIMMEZEROZERO;
  276.         if(SelectTest(&BDL)) WindowFlags |= BORDERLESS;
  277.         if(SelectTest(&ACT)) WindowFlags |= ACTIVATE;
  278.         if(SelectTest(&RPM)) WindowFlags |= REPORTMOUSE;
  279.         if(SelectTest(&RMT)) WindowFlags |= RMBTRAP;
  280.  
  281.         nw_main.LeftEdge  = MainWindow->LeftEdge;
  282.         nw_main.TopEdge   = MainWindow->TopEdge;
  283.         nw_main.Width     = MainWindow->Width;
  284.         nw_main.Height    = MainWindow->Height;
  285.         nw_main.DetailPen = MainWindow->DetailPen;
  286.         nw_main.BlockPen  = MainWindow->BlockPen;
  287.         nw_main.Flags     = NULL;
  288.         nw_main.Screen    = MainScreen;
  289.         nw_main.MinWidth  = MainWindow->MinWidth;
  290.         nw_main.MinHeight = MainWindow->MinHeight;
  291.         nw_main.MaxWidth  = MainWindow->MaxWidth;
  292.         nw_main.MaxHeight = MainWindow->MaxHeight;
  293.  
  294.         if(TestBits(WindowFlags,WINDOWSIZING))
  295.               nw_main.Flags |= WINDOWSIZING;
  296.         else if(TestBits(nw_main.Flags,WINDOWSIZING))
  297.               nw_main.Flags ^= WINDOWSIZING;
  298.  
  299.         if(TestBits(WindowFlags,WINDOWDRAG))
  300.               nw_main.Flags |= WINDOWDRAG;
  301.         else if(TestBits(nw_main.Flags,WINDOWDRAG))
  302.               nw_main.Flags ^= WINDOWDRAG;
  303.  
  304.         if(TestBits(WindowFlags,WINDOWDEPTH))
  305.               nw_main.Flags |= WINDOWDEPTH;
  306.         else if(TestBits(nw_main.Flags,WINDOWDEPTH))
  307.               nw_main.Flags ^= WINDOWDEPTH;
  308.  
  309.         if(TestBits(WindowFlags,WINDOWCLOSE))
  310.               nw_main.Flags |= WINDOWCLOSE;
  311.         else if(TestBits(nw_main.Flags,WINDOWCLOSE))
  312.               nw_main.Flags ^= WINDOWCLOSE;
  313.  
  314.         if(TestBits(WindowFlags,SIZEBRIGHT))
  315.               nw_main.Flags |= SIZEBRIGHT;
  316.         else if(TestBits(nw_main.Flags,SIZEBRIGHT))
  317.               nw_main.Flags ^= SIZEBRIGHT;
  318.  
  319.         if(TestBits(WindowFlags,SIZEBBOTTOM))
  320.               nw_main.Flags |= SIZEBBOTTOM;
  321.         else if(TestBits(nw_main.Flags,SIZEBBOTTOM))
  322.               nw_main.Flags ^= SIZEBBOTTOM;
  323.  
  324.         nw_main.Flags |= NOCAREREFRESH+SMART_REFRESH+ACTIVATE;
  325.  
  326.         add_bo();
  327.         nw_main.FirstGadget = re_arrange();
  328.  
  329.         if(NOT(w = OpenWindow(&nw_main)))
  330.         {   Error("Can't change window !");
  331.             return;
  332.         }
  333.         ClearMenuStrip(MainWindow);
  334.         CloseWindow(MainWindow);
  335.         MainWindow = w;
  336.         MainRP     = MainWindow->RPort;
  337.         SetMenu(MainWindow);
  338.         rem_bo();
  339.         refresh();
  340.         Saved = FALSE;
  341.     }
  342. }
  343.