home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 568b.lha / PowerSource_v3.0 / source.lzh / source / set_flags.c < prev    next >
C/C++ Source or Header  |  1991-09-15  |  11KB  |  312 lines

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