home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / gcc / ixemulsrc.lha / ixemul / utils / ixprefs.c < prev    next >
C/C++ Source or Header  |  1996-12-11  |  9KB  |  323 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Kriton Kyrimis
  6.  */
  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 <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include <pragmas/exec_pragmas.h>
  26. #include <pragmas/intuition_pragmas.h>
  27. #include <pragmas/gadtools_pragmas.h>
  28. #include <pragmas/graphics_pragmas.h>
  29. #include <pragmas/utility_pragmas.h>
  30.  
  31. #include "ixprefs.h"
  32.  
  33. struct Screen         *Scr = NULL;
  34. UBYTE                 *PubScreenName = NULL;
  35. APTR                   VisualInfo = NULL;
  36. struct Window         *ixprefsWnd = NULL;
  37. struct Gadget         *ixprefsGList = NULL;
  38. struct Menu           *ixprefsMenus = NULL;
  39. struct IntuiMessage    ixprefsMsg;
  40. struct Gadget         *ixprefsGadgets[14];
  41. UWORD                  ixprefsLeft = 0;
  42. UWORD                  ixprefsTop = 11;
  43. UWORD                  ixprefsWidth = 515;
  44. UWORD                  ixprefsHeight = 129;
  45. UBYTE                 *ixprefsWdt = (UBYTE *)"ixprefs";
  46. struct TextAttr       *Font, Attr;
  47. UWORD                  FontX, FontY;
  48. UWORD                  OffX, OffY;
  49. struct TextFont       *ixprefsFont = NULL;
  50.  
  51. UBYTE *networking0Labels[] = {
  52.     (UBYTE *)"Auto detect",
  53.     (UBYTE *)"No networking",
  54.     (UBYTE *)"AS225",
  55.     (UBYTE *)"AmiTCP",
  56.     NULL };
  57.  
  58. UBYTE *profilemethod0Labels[] = {
  59.     (UBYTE *)"Only in program",
  60.     (UBYTE *)"Only in task",
  61.     (UBYTE *)"Profile always",
  62.     NULL };
  63.  
  64. struct NewMenu ixprefsNewMenu[] = {
  65.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  66.     NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)ixprefssave,
  67.     NM_ITEM, (STRPTR)"Use", (STRPTR)"U", 0, 0L, (APTR)ixprefsuse,
  68.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  69.     NM_ITEM, (STRPTR)"About", (STRPTR)"?", 0, 0L, (APTR)ixprefsabout,
  70.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  71.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)ixprefsquit,
  72.     NM_TITLE, (STRPTR)"Edit", NULL, 0, NULL, NULL,
  73.     NM_ITEM, (STRPTR)"Reset to defaults", (STRPTR)"D", 0, 0L, (APTR)ixprefsreset,
  74.     NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, (APTR)ixprefslast,
  75.     NM_ITEM, (STRPTR)"Restore", (STRPTR)"R", 0, 0L, (APTR)ixprefsrestore,
  76.     NM_END, NULL, NULL, 0, 0L, NULL };
  77.  
  78. UWORD ixprefsGTypes[] = {
  79.     BUTTON_KIND,
  80.     BUTTON_KIND,
  81.     BUTTON_KIND,
  82.     CHECKBOX_KIND,
  83.     INTEGER_KIND,
  84.     INTEGER_KIND,
  85.     CHECKBOX_KIND,
  86.     CHECKBOX_KIND,
  87.     CHECKBOX_KIND,
  88.     CHECKBOX_KIND,
  89.     CHECKBOX_KIND,
  90.     CYCLE_KIND,
  91.     CHECKBOX_KIND,
  92.     CYCLE_KIND
  93. };
  94.  
  95. struct NewGadget ixprefsNGad[] = {
  96.     6, 116, 63, 11, (UBYTE *)"Save", NULL, GD_savegad, PLACETEXT_IN, NULL, (APTR)savegadClicked,
  97.     222, 116, 63, 11, (UBYTE *)"Use", NULL, GD_usegad, PLACETEXT_IN, NULL, (APTR)usegadClicked,
  98.     443, 116, 63, 11, (UBYTE *)"Cancel", NULL, GD_cancelgad, PLACETEXT_IN, NULL, (APTR)cancelgadClicked,
  99.     4, 15, 26, 11, (UBYTE *)"Translate /", NULL, GD_translateslash, PLACETEXT_RIGHT, NULL, (APTR)translateslashClicked,
  100.     4, 70, 60, 12, (UBYTE *)"Membuf size", NULL, GD_membuf, PLACETEXT_RIGHT, NULL, (APTR)membufClicked,
  101.     5, 57, 60, 12, (UBYTE *)"Physical blocks build one logical block (for stdio)", NULL, GD_blocks, PLACETEXT_RIGHT, NULL, (APTR)blocksClicked,
  102.     215, 2, 26, 11, (UBYTE *)"Case sensitive pattern matching", NULL, GD_case, PLACETEXT_RIGHT, NULL, (APTR)caseClicked,
  103.     4, 41, 26, 11, (UBYTE *)"Suppress the \"Insert volume in drive\" requester", NULL, GD_suppress, PLACETEXT_RIGHT, NULL, (APTR)suppressClicked,
  104.     4, 2, 26, 11, (UBYTE *)"Allow Amiga wildcards", NULL, GD_amigawildcard, PLACETEXT_RIGHT, NULL, (APTR)amigawildcardClicked,
  105.     215, 15, 26, 11, (UBYTE *)"Do not flush library", NULL, GD_noflush, PLACETEXT_RIGHT, NULL, (APTR)noflushClicked,
  106.     215, 28, 26, 11, (UBYTE *)"Ignore global environment (ENV:)", NULL, GD_ignoreenv, PLACETEXT_RIGHT, NULL, (APTR)ignoreenvClicked,
  107.     4, 84, 162, 13, (UBYTE *)"Network support", NULL, GD_networking, PLACETEXT_RIGHT, NULL, (APTR)networkingClicked,
  108.     214, 70, 26, 11, (UBYTE *)"Create Enforcer hit on trap", NULL, GD_enforcerhit, PLACETEXT_RIGHT, NULL, (APTR)enforcerhitClicked,
  109.     4, 99, 162, 13, (UBYTE *)"Profiling method", NULL, GD_profilemethod, PLACETEXT_RIGHT, NULL, (APTR)profilemethodClicked
  110. };
  111.  
  112. ULONG ixprefsGTags[] = {
  113.     (TAG_DONE),
  114.     (TAG_DONE),
  115.     (TAG_DONE),
  116.     (TAG_DONE),
  117.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  118.     (GTIN_Number), 0, (GTIN_MaxChars), 10, (TAG_DONE),
  119.     (TAG_DONE),
  120.     (TAG_DONE),
  121.     (TAG_DONE),
  122.     (TAG_DONE),
  123.     (TAG_DONE),
  124.     (GTCY_Labels), (ULONG)&networking0Labels[ 0 ], (TAG_DONE),
  125.     (TAG_DONE),
  126.     (GTCY_Labels), (ULONG)&profilemethod0Labels[ 0 ], (TAG_DONE)
  127. };
  128.  
  129. static UWORD ComputeX( UWORD value )
  130. {
  131.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  132. }
  133.  
  134. static UWORD ComputeY( UWORD value )
  135. {
  136.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  137. }
  138.  
  139. static void ComputeFont( UWORD width, UWORD height )
  140. {
  141.     Forbid();
  142.     Font = &Attr;
  143.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  144.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  145.     FontX = GfxBase->DefaultFont->tf_XSize;
  146.     Permit();
  147.  
  148.     OffX = Scr->WBorLeft;
  149.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  150.  
  151.     if ( width && height ) {
  152.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  153.             goto UseTopaz;
  154.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  155.             goto UseTopaz;
  156.     }
  157.     return;
  158.  
  159. UseTopaz:
  160.     Font->ta_Name = (STRPTR)"topaz.font";
  161.     FontX = FontY = Font->ta_YSize = 8;
  162. }
  163.  
  164. int SetupScreen( void )
  165. {
  166.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  167.         return( 1L );
  168.  
  169.     ComputeFont( 0, 0 );
  170.  
  171.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  172.         return( 2L );
  173.  
  174.     return( 0L );
  175. }
  176.  
  177. void CloseDownScreen( void )
  178. {
  179.     if ( VisualInfo ) {
  180.         FreeVisualInfo( VisualInfo );
  181.         VisualInfo = NULL;
  182.     }
  183.  
  184.     if ( Scr        ) {
  185.         UnlockPubScreen( NULL, Scr );
  186.         Scr = NULL;
  187.     }
  188. }
  189.  
  190. int HandleixprefsIDCMP( void )
  191. {
  192.     struct IntuiMessage    *m;
  193.     struct MenuItem        *n;
  194.     int            (*func)();
  195.     BOOL            running = TRUE;
  196.  
  197.     while( m = GT_GetIMsg( ixprefsWnd->UserPort )) {
  198.  
  199.         CopyMem(( char * )m, ( char * )&ixprefsMsg, (long)sizeof( struct IntuiMessage ));
  200.  
  201.         GT_ReplyIMsg( m );
  202.  
  203.         switch ( ixprefsMsg.Class ) {
  204.  
  205.             case    IDCMP_REFRESHWINDOW:
  206.                 GT_BeginRefresh( ixprefsWnd );
  207.                 GT_EndRefresh( ixprefsWnd, TRUE );
  208.                 break;
  209.  
  210.             case    IDCMP_CLOSEWINDOW:
  211.                 running = ixprefsCloseWindow();
  212.                 break;
  213.  
  214.             case    IDCMP_GADGETUP:
  215.                 func = ( void * )(( struct Gadget * )ixprefsMsg.IAddress )->UserData;
  216.                 running = func();
  217.                 break;
  218.  
  219.             case    IDCMP_MENUPICK:
  220.                 while( ixprefsMsg.Code != MENUNULL ) {
  221.                     n = ItemAddress( ixprefsMenus, ixprefsMsg.Code );
  222.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  223.                     running = func();
  224.                     ixprefsMsg.Code = n->NextSelect;
  225.                 }
  226.                 break;
  227.         }
  228.     }
  229.     return( running );
  230. }
  231.  
  232. int OpenixprefsWindow( void )
  233. {
  234.     struct NewGadget    ng;
  235.     struct Gadget    *g;
  236.     UWORD        lc, tc;
  237.     UWORD        wleft = ixprefsLeft, wtop = ixprefsTop, ww, wh;
  238.  
  239.     ComputeFont( ixprefsWidth, ixprefsHeight );
  240.  
  241.     ww = ComputeX( ixprefsWidth );
  242.     wh = ComputeY( ixprefsHeight );
  243.  
  244.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  245.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  246.  
  247.     if ( ! ( ixprefsFont = OpenDiskFont( Font )))
  248.         return( 5L );
  249.  
  250.     if ( ! ( g = CreateContext( &ixprefsGList )))
  251.         return( 1L );
  252.  
  253.     for( lc = 0, tc = 0; lc < ixprefs_CNT; lc++ ) {
  254.  
  255.         CopyMem((char * )&ixprefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  256.  
  257.         ng.ng_VisualInfo = VisualInfo;
  258.         ng.ng_TextAttr   = Font;
  259.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  260.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  261.         ng.ng_Width      = ComputeX( ng.ng_Width );
  262.         ng.ng_Height     = ComputeY( ng.ng_Height);
  263.  
  264.         ixprefsGadgets[ lc ] = g = CreateGadgetA((ULONG)ixprefsGTypes[ lc ], g, &ng, ( struct TagItem * )&ixprefsGTags[ tc ] );
  265.  
  266.         while( ixprefsGTags[ tc ] ) tc += 2;
  267.         tc++;
  268.  
  269.         if ( NOT g )
  270.             return( 2L );
  271.     }
  272.  
  273.     if ( ! ( ixprefsMenus = CreateMenus( ixprefsNewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  274.         return( 3L );
  275.  
  276.     LayoutMenus( ixprefsMenus, VisualInfo, TAG_DONE );
  277.  
  278.     if ( ! ( ixprefsWnd = OpenWindowTags( NULL,
  279.                 WA_Left,    wleft,
  280.                 WA_Top,        wtop,
  281.                 WA_Width,    ww + OffX + Scr->WBorRight,
  282.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  283.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|CYCLEIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  284.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  285.                 WA_Gadgets,    ixprefsGList,
  286.                 WA_Title,    ixprefsWdt,
  287.                 WA_ScreenTitle,    "ixprefs",
  288.                 WA_PubScreen,    Scr,
  289.                 WA_AutoAdjust,    TRUE,
  290.                 WA_PubScreenFallBack,    TRUE,
  291.                 TAG_DONE )))
  292.     return( 4L );
  293.  
  294.     SetMenuStrip( ixprefsWnd, ixprefsMenus );
  295.     GT_RefreshWindow( ixprefsWnd, NULL );
  296.  
  297.     return( 0L );
  298. }
  299.  
  300. void CloseixprefsWindow( void )
  301. {
  302.     if ( ixprefsMenus      ) {
  303.         ClearMenuStrip( ixprefsWnd );
  304.         FreeMenus( ixprefsMenus );
  305.         ixprefsMenus = NULL;    }
  306.  
  307.     if ( ixprefsWnd        ) {
  308.         CloseWindow( ixprefsWnd );
  309.         ixprefsWnd = NULL;
  310.     }
  311.  
  312.     if ( ixprefsGList      ) {
  313.         FreeGadgets( ixprefsGList );
  314.         ixprefsGList = NULL;
  315.     }
  316.  
  317.     if ( ixprefsFont ) {
  318.         CloseFont( ixprefsFont );
  319.         ixprefsFont = NULL;
  320.     }
  321. }
  322.  
  323.