home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d07xx / d0727.lha / Format / Source / GUI.c < prev    next >
C/C++ Source or Header  |  1992-09-04  |  10KB  |  363 lines

  1. /*
  2.  *  Source generated with GadToolsBox V1.3
  3.  *  which is (c) Copyright 1991,92 Jaba Development
  4.  */
  5.  
  6. #define GT_Underscore    (GT_TagBase+64)
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <string.h>
  22.  
  23. #include "GUI.h"
  24.  
  25. struct Screen         *Scr = NULL;
  26. APTR              VisualInfo = NULL;
  27. struct Window         *PrepWnd = NULL;
  28. struct Window         *StatusWnd = NULL;
  29. struct Gadget         *PrepGList = NULL;
  30. struct Gadget         *StatusGList = NULL;
  31. struct Gadget         *PrepGadgets[8];
  32. struct Gadget         *StatusGadgets[2];
  33. UWORD              PrepLeft = 0;
  34. UWORD              PrepTop = 23;
  35. UWORD              PrepWidth = 321;
  36. UWORD              PrepHeight = 77;
  37. UWORD              StatusLeft = 0;
  38. UWORD              StatusTop = 23;
  39. UWORD              StatusWidth = 318;
  40. UWORD              StatusHeight = 69;
  41. UBYTE             *PrepWdt = (UBYTE *)"NewFormat";
  42. UBYTE             *StatusWdt = (UBYTE *)"Status";
  43. extern struct GfxBase *GfxBase;
  44. struct TextAttr      *Font, Attr;
  45. UWORD              FontX, FontY;
  46. UWORD              OffX, OffY;
  47.  
  48. Rect box;
  49.  
  50. struct IntuiText  StatusIText[] = {
  51.     1, 0, JAM1,3, 2, NULL, (UBYTE *)"Formatting Drive...", &StatusIText[1],
  52.     1, 0, JAM1,3, 12, NULL, (UBYTE *)"Status:", NULL };
  53.  
  54. static UWORD ComputeX( UWORD value )
  55. {
  56.     return(( UWORD )(( FontX * value ) / 8 ));
  57. }
  58.  
  59. static UWORD ComputeY( UWORD value )
  60. {
  61.     return(( UWORD )(( FontY * value ) / 8 ));
  62. }
  63.  
  64. static void ComputeFont( UWORD width, UWORD height )
  65. {
  66.     Font = &Attr;
  67.     Font->ta_Name = GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  68.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  69.     FontX = GfxBase->DefaultFont->tf_XSize;
  70.  
  71.     OffY = Scr->Font->ta_YSize + Scr->WBorTop + 1;
  72.     OffX = Scr->WBorLeft;
  73.  
  74.     if ( width && height ) {
  75.     if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  76.         goto UseTopaz;
  77.     if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  78.         goto UseTopaz;
  79.     }
  80.     return;
  81.  
  82. UseTopaz:
  83.     Font->ta_Name = (STRPTR)"topaz.font";
  84.     FontX = FontY = Font->ta_YSize = 8;
  85. }
  86.  
  87. int SetupScreen( void )
  88. {
  89.     if ( ! ( Scr = LockPubScreen( NULL )))
  90.     return( 1L );
  91.  
  92.     ComputeFont( 0L, 0L );
  93.  
  94.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  95.     return( 2L );
  96.  
  97.     return( 0L );
  98. }
  99.  
  100. void CloseDownScreen( void )
  101. {
  102.     if ( VisualInfo ) {
  103.     FreeVisualInfo( VisualInfo );
  104.     VisualInfo = NULL;
  105.     }
  106.  
  107.     if ( Scr        ) {
  108.     UnlockPubScreen( NULL, Scr );
  109.     Scr = NULL;
  110.     }
  111. }
  112.  
  113. int OpenPrepWindow( char *volumeName )
  114. {
  115.     struct NewGadget     ng;
  116.     struct Gadget    *g;
  117.     UWORD        wleft = PrepLeft, wtop = PrepTop, ww, wh;
  118.  
  119.     ComputeFont( PrepWidth, PrepHeight );
  120.  
  121.     ww = ComputeX( PrepWidth );
  122.     wh = ComputeY( PrepHeight );
  123.  
  124.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  125.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  126.  
  127.     if ( ! ( g = CreateContext( &PrepGList )))
  128.     return( 1L );
  129.  
  130.     ng.ng_LeftEdge      =    OffX + ComputeX( 5 );
  131.     ng.ng_TopEdge      =    OffY + ComputeY( 33 );
  132.     ng.ng_Width       =    ComputeX( 26 );
  133.     ng.ng_Height      =    ComputeY( 11 );
  134.     ng.ng_GadgetText      =    (UBYTE *)"_Fast File System";
  135.     ng.ng_TextAttr      =    Font;
  136.     ng.ng_GadgetID      =    GD_FFSGadget;
  137.     ng.ng_Flags       =    PLACETEXT_RIGHT;
  138.     ng.ng_VisualInfo      =    VisualInfo;
  139.  
  140.     g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked, FALSE, GT_Underscore, '_', TAG_DONE );
  141.  
  142.     PrepGadgets[ 0 ] = g;
  143.  
  144.     ng.ng_LeftEdge      =    OffX + ComputeX( 68 );
  145.     ng.ng_TopEdge      =    OffY + ComputeY( 16 );
  146.     ng.ng_Width       =    ComputeX( 249 );
  147.     ng.ng_Height      =    ComputeY( 13 );
  148.     ng.ng_GadgetText      =    (UBYTE *)"_Name:";
  149.     ng.ng_GadgetID      =    GD_NameGadget;
  150.     ng.ng_Flags       =    PLACETEXT_LEFT;
  151.  
  152.     g = CreateGadget( STRING_KIND, g, &ng, GTST_String, "Empty", GTST_MaxChars, 30, GT_Underscore, '_', TAG_DONE );
  153.  
  154.     PrepGadgets[ 1 ] = g;
  155.  
  156.     ng.ng_LeftEdge      =    OffX + ComputeX( 188 );
  157.     ng.ng_TopEdge      =    OffY + ComputeY( 46 );
  158.     ng.ng_GadgetText      =    (UBYTE *)"C_reate Icons";
  159.     ng.ng_GadgetID      =    GD_IconGadget;
  160.     ng.ng_Flags       =    PLACETEXT_RIGHT;
  161.  
  162.     g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked, TRUE, GT_Underscore, '_', TAG_DONE );
  163.  
  164.     PrepGadgets[ 2 ] = g;
  165.  
  166.     ng.ng_TopEdge      =    OffY + ComputeY( 33 );
  167.     ng.ng_GadgetText      =    (UBYTE *)"_Quick Format";
  168.     ng.ng_GadgetID      =    GD_QuickFmtGadget;
  169.  
  170.     g = CreateGadget( CHECKBOX_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  171.  
  172.     PrepGadgets[ 3 ] = g;
  173.  
  174.     ng.ng_LeftEdge      =    OffX + ComputeX( 5 );
  175.     ng.ng_TopEdge      =    OffY + ComputeY( 46 );
  176.     ng.ng_GadgetText      =    (UBYTE *)"_Verify Format";
  177.     ng.ng_GadgetID      =    GD_VerifyGadget;
  178.  
  179.     g = CreateGadget( CHECKBOX_KIND, g, &ng, GTCB_Checked, TRUE, GT_Underscore, '_', TAG_DONE );
  180.  
  181.     PrepGadgets[ 4 ] = g;
  182.  
  183.     ng.ng_TopEdge      =    OffY + ComputeY( 62 );
  184.     ng.ng_Width       =    ComputeX( 56 );
  185.     ng.ng_Height      =    ComputeY( 12 );
  186.     ng.ng_GadgetText      =    (UBYTE *)"_OK";
  187.     ng.ng_GadgetID      =    GD_OKGadget;
  188.     ng.ng_Flags       =    PLACETEXT_IN;
  189.  
  190.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  191.  
  192.     PrepGadgets[ 5 ] = g;
  193.  
  194.     ng.ng_LeftEdge      =    OffX + ComputeX( 260 );
  195.     ng.ng_GadgetText      =    (UBYTE *)"_Cancel";
  196.     ng.ng_GadgetID      =    GD_CancelGadget;
  197.  
  198.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  199.  
  200.     PrepGadgets[ 6 ] = g;
  201.  
  202.     ng.ng_LeftEdge      =    OffX + ComputeX( 69 );
  203.     ng.ng_TopEdge      =    OffY + ComputeY( 2 );
  204.     ng.ng_Width       =    ComputeX( 248 );
  205.     ng.ng_GadgetText      =    (UBYTE *)"Device:";
  206.     ng.ng_GadgetID      =    GD_DeviceGad;
  207.     ng.ng_Flags       =    PLACETEXT_LEFT;
  208.  
  209.     g = CreateGadget( TEXT_KIND, g, &ng, GTTX_Text, volumeName, GTTX_Border, TRUE, TAG_DONE );
  210.  
  211.     PrepGadgets[ 7 ] = g;
  212.  
  213.     if ( ! g )
  214.     return( 2L );
  215.  
  216.     if ( ! ( PrepWnd = OpenWindowTags( NULL,
  217.             WA_Left,          wleft,
  218.             WA_Top,          wtop,
  219.             WA_Width,          ww + OffX + Scr->WBorRight,
  220.             WA_Height,          wh + OffY + Scr->WBorBottom,
  221.             WA_IDCMP,          IDCMP_VANILLAKEY|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|BUTTONIDCMP|CHECKBOXIDCMP,
  222.             WA_Flags,          WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_RMBTRAP,
  223.             WA_Gadgets,       PrepGList,
  224.             WA_Title,          PrepWdt,
  225.             WA_ScreenTitle,   "NewFormat V1.00 ⌐1992 by Dave Schreiber",
  226.             WA_PubScreen,     Scr,
  227.             TAG_DONE )))
  228.     return( 4L );
  229.  
  230.     GT_RefreshWindow( PrepWnd, NULL );
  231.  
  232.     return( 0L );
  233. }
  234.  
  235. void ClosePrepWindow( void )
  236. {
  237.     if ( PrepWnd        ) {
  238.     CloseWindow( PrepWnd );
  239.     PrepWnd = NULL;
  240.     }
  241.  
  242.     if ( PrepGList      ) {
  243.     FreeGadgets( PrepGList );
  244.     PrepGList = NULL;
  245.     }
  246. }
  247.  
  248. void StatusRender( void )
  249. {
  250.     ULONG leftEdge[2],topEdge[2];
  251.     ComputeFont( StatusWidth, StatusHeight );
  252.  
  253.     leftEdge[0]=StatusIText[0].LeftEdge;
  254.     leftEdge[1]=StatusIText[1].LeftEdge;
  255.     topEdge[0]=StatusIText[0].TopEdge;
  256.     topEdge[1]=StatusIText[1].TopEdge;
  257.  
  258.     StatusIText[0].LeftEdge=ComputeX(StatusIText[0].LeftEdge);
  259.     StatusIText[0].TopEdge=ComputeY(StatusIText[0].TopEdge);
  260.     StatusIText[1].LeftEdge=ComputeX(StatusIText[1].LeftEdge);
  261.     StatusIText[1].TopEdge=ComputeY(StatusIText[1].TopEdge);
  262.  
  263.     PrintIText(StatusWnd->RPort,StatusIText,OffX,OffY);
  264.  
  265.     StatusIText[0].LeftEdge=leftEdge[0];
  266.     StatusIText[0].TopEdge=topEdge[0];
  267.     StatusIText[1].LeftEdge=leftEdge[1];
  268.     StatusIText[1].TopEdge=topEdge[1];
  269.  
  270.     DrawBevelBox( StatusWnd->RPort, OffX + ComputeX( 3 ),
  271.     OffY + ComputeY( 38 ),
  272.     ComputeX( 312 ),
  273.     ComputeY( 13 ),
  274.     GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  275.  
  276.     box.left=OffX+ComputeX(3);
  277.     box.top=OffY+ComputeY(38);
  278.     box.width=ComputeX(312);
  279.     box.height=ComputeY(13);
  280.     box.center=box.left+box.width/2;
  281.  
  282. }
  283.  
  284. int OpenStatusWindow(char *bufPointer)
  285. {
  286.     struct NewGadget     ng;
  287.     struct Gadget    *g;
  288.     UWORD        wleft = StatusLeft, wtop = StatusTop, ww, wh;
  289.  
  290.     ComputeFont( StatusWidth, StatusHeight );
  291.  
  292.     ww = ComputeX( StatusWidth );
  293.     wh = ComputeY( StatusHeight );
  294.  
  295.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  296.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  297.  
  298.     if ( ! ( g = CreateContext( &StatusGList )))
  299.     return( 1L );
  300.  
  301.     ng.ng_LeftEdge      =    OffX + ComputeX( 3 );
  302.     ng.ng_TopEdge      =    OffY + ComputeY( 22 );
  303.     ng.ng_Width       =    ComputeX( 312 );
  304.     ng.ng_Height      =    ComputeY( 13 );
  305.     ng.ng_GadgetText      =    NULL;
  306.     ng.ng_TextAttr      =    Font;
  307.     ng.ng_GadgetID      =    GD_StatusGadget;
  308.     ng.ng_Flags       =    0;
  309.     ng.ng_VisualInfo      =    VisualInfo;
  310.  
  311.     g = CreateGadget( TEXT_KIND, g, &ng, GTTX_Border, TRUE, TAG_DONE );
  312.  
  313.     StatusGadgets[ 0 ] = g;
  314.  
  315.     ng.ng_LeftEdge      =    OffX + ComputeX( 125 );
  316.     ng.ng_TopEdge      =    OffY + ComputeY( 54 );
  317.     ng.ng_Width       =    ComputeX( 69 );
  318.     ng.ng_GadgetText      =    (UBYTE *)"_Stop";
  319.     ng.ng_GadgetID      =    GD_StopGadget;
  320.     ng.ng_Flags       =    PLACETEXT_IN;
  321.  
  322.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  323.  
  324.     StatusGadgets[ 1 ] = g;
  325.  
  326.     if ( ! g )
  327.     return( 2L );
  328.  
  329.     if ( ! ( StatusWnd = OpenWindowTags( NULL,
  330.             WA_Left,          wleft,
  331.             WA_Top,          wtop,
  332.             WA_Width,          ww + OffX + Scr->WBorRight,
  333.             WA_Height,          wh + OffY + Scr->WBorBottom,
  334.             WA_IDCMP,          IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|BUTTONIDCMP,
  335.             WA_Flags,          WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH,
  336.             WA_Gadgets,       StatusGList,
  337.             WA_Title,          StatusWdt,
  338.             WA_ScreenTitle,   "NewFormat V1.00 ⌐1992 by Dave Schreiber",
  339.             WA_PubScreen,     Scr,
  340.             TAG_DONE )))
  341.     return( 4L );
  342.  
  343.     GT_RefreshWindow( StatusWnd, NULL );
  344.  
  345.     StatusRender();
  346.  
  347.     return( 0L );
  348. }
  349.  
  350. void CloseStatusWindow( void )
  351. {
  352.     if ( StatusWnd        ) {
  353.     CloseWindow( StatusWnd );
  354.     StatusWnd = NULL;
  355.     }
  356.  
  357.     if ( StatusGList      ) {
  358.     FreeGadgets( StatusGList );
  359.     StatusGList = NULL;
  360.     }
  361. }
  362.  
  363.