home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 1 / FFMCD01.bin / bbs / libdisks / d700t799 / disk711.lha / WindowTool / source / gadgets.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-19  |  8.9 KB  |  299 lines

  1. #include <exec/types.h>
  2. #include <intuition/intuition.h>
  3. #include <intuition/gadgetclass.h>
  4. #include <libraries/gadtools.h>
  5. #include <graphics/displayinfo.h>
  6. #include <clib/exec_protos.h>
  7. #include <clib/intuition_protos.h>
  8. #include <clib/gadtools_protos.h>
  9.  
  10. #define GD_Gadget0                             0
  11. #define GD_Gadget1                             1
  12. #define GD_Gadget2                             2
  13. #define GD_Gadget3                             3
  14. #define GD_Gadget4                             4
  15. #define GD_Gadget5                             5
  16. #define GD_Gadget6                             6
  17. #define GD_Gadget7                             7
  18. #define GD_Gadget8                             8
  19. #define GD_Gadget9                             9
  20. #define GD_Gadget10                            10
  21. #define GD_Gadget11                            11
  22. #define GD_GadgetSave                            50        /* Save */
  23. #define GD_GadgetHide                            51        /* Hide */
  24. #define GD_GadgetQuit                            52        /* Quit */
  25. #define GD_GadgetCancel                          53        /* Cancel */
  26.  
  27. #define KEYNUMMER 12
  28. extern char keys[KEYNUMMER][256];
  29.  
  30. int windowopen=FALSE;
  31. char windowtitle[80]="WindowTool 1.0 : Hotkey = ";    /* 25 */
  32.  
  33. struct Window        *Wnd        = 0l;
  34. struct Screen        *Scr        = 0l;
  35. APTR                  VisualInfo = 0l;
  36. struct Gadget        *GList      = 0l;
  37. struct Gadget        *Gadgets[16];
  38. struct Menu          *Menus      = 0l;
  39. UWORD                 Zoom[4]    = { 0, 0, 200, 11 };
  40.  
  41. struct TextAttr topaz8 = {
  42.     ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
  43.  
  44. struct TagItem    WindowTags[] = {
  45.     WA_Left,          -10,
  46.     WA_Top,           -10,
  47.     WA_Width,         610,
  48.     WA_Height,        138,
  49.     WA_IDCMP,         IDCMP_GADGETUP|IDCMP_MENUPICK|IDCMP_VANILLAKEY|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_CHANGEWINDOW,
  50.     WA_Flags,         WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  51.     WA_Gadgets,       0l,
  52.     WA_Title,         (LONG)windowtitle,
  53.     WA_MinWidth,      200,
  54.     WA_MinHeight,     11,
  55.     WA_MaxWidth,      611,
  56.     WA_MaxHeight,     137,
  57.     WA_Zoom,          (Tag)Zoom,
  58.     TAG_DONE };
  59.  
  60. struct IntuiText  IText[] = {
  61.     2, 0, JAM1,45, 17, &topaz8, (UBYTE *)"Hotkeys:", NULL };
  62.  
  63. struct NewMenu NewMenu[] = {
  64.     NM_TITLE, "Project", 0l, 0, 0, 0l,
  65.     NM_ITEM, "New", "N", 0, 0, 0l,
  66.     NM_ITEM, "Open...", "O", 0, 0, 0l,
  67.     NM_ITEM, "Open .Info", 0, 0, 0, 0l,
  68.     NM_ITEM, NM_BARLABEL, 0l, 0, 0l, 0l,
  69.     NM_ITEM, "Save", "S", 0, 0, 0l,
  70.     NM_ITEM, "Save As...", "A", 0, 0, 0l,
  71.     NM_ITEM, "Save As .info",0, 0, 0, 0l,
  72.     NM_ITEM, NM_BARLABEL, 0l, 0, 0l, 0l,
  73.     NM_ITEM, "About...", 0, 0, 0, 0l,
  74.     NM_ITEM, NM_BARLABEL, 0l, 0, 0l, 0l,
  75.     NM_ITEM, "Hide", "H", 0, 0, 0l,
  76.     NM_ITEM, "Cancel", "C", 0, 0, 0l,
  77.     NM_ITEM, NM_BARLABEL, 0l, 0, 0l, 0l,
  78.     NM_ITEM, "Quit...", "Q", 0, 0, 0l,
  79.     NM_END, 0l, 0l, 0, 0l, 0l };
  80.  
  81. long InitStuff( void )
  82. {
  83.     struct NewGadget     ng;
  84.     struct Gadget       *g;
  85.  
  86.     if(windowopen==TRUE)
  87.     {
  88.         WindowToFront(Wnd);
  89.         ActivateWindow(Wnd);
  90.         return(0);
  91.     }
  92.  
  93.     if ( NOT( Scr = LockPubScreen( "Workbench" )))
  94.         return( 1l );
  95.  
  96.     if ( NOT( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  97.         return( 2l );
  98.  
  99.     if ( NOT( g = CreateContext( &GList )))
  100.         return( 3l );
  101.  
  102.     ng.ng_LeftEdge        =    110;
  103.     ng.ng_TopEdge         =    29;
  104.     ng.ng_Width           =    173;
  105.     ng.ng_Height          =    13;
  106.     ng.ng_GadgetText      =    "St_op";
  107.     ng.ng_TextAttr        =    &topaz8;
  108.     ng.ng_GadgetID        =    GD_Gadget0;
  109.     ng.ng_Flags           =    PLACETEXT_LEFT;
  110.     ng.ng_VisualInfo      =    VisualInfo;
  111.  
  112.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[0], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  113.  
  114.     Gadgets[ 0 ] = g;
  115.  
  116.     ng.ng_TopEdge         =    44;
  117.     ng.ng_GadgetText      =    "_Newshell";
  118.     ng.ng_GadgetID        =    GD_Gadget1;
  119.  
  120.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[1], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  121.  
  122.     Gadgets[ 1 ] = g;
  123.  
  124.     ng.ng_TopEdge         =    59;
  125.     ng.ng_GadgetText      =    "Q_uit";
  126.     ng.ng_GadgetID        =    GD_Gadget2;
  127.  
  128.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[2], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  129.  
  130.     Gadgets[ 2 ] = g;
  131.  
  132.     ng.ng_TopEdge         =    74;
  133.     ng.ng_GadgetText      =    "C_ycle";
  134.     ng.ng_GadgetID        =    GD_Gadget3;
  135.  
  136.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[3], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  137.  
  138.     Gadgets[ 3 ] = g;
  139.  
  140.     ng.ng_TopEdge         =    89;
  141.     ng.ng_GadgetText      =    "Wo_rkbench";
  142.     ng.ng_GadgetID        =    GD_Gadget4;
  143.  
  144.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[4], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  145.  
  146.     Gadgets[ 4 ] = g;
  147.  
  148.     ng.ng_TopEdge        =    104;
  149.     ng.ng_GadgetText      =    "C_loseWindow";
  150.     ng.ng_GadgetID        =    GD_Gadget5;
  151.  
  152.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[5], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  153.  
  154.     Gadgets[ 5 ] = g;
  155.  
  156.     ng.ng_LeftEdge        =    409;
  157.     ng.ng_TopEdge         =    29;
  158.     ng.ng_GadgetText      =    "_ActivateFront";
  159.     ng.ng_GadgetID        =    GD_Gadget6;
  160.  
  161.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[6], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  162.  
  163.     Gadgets[ 6 ] = g;
  164.  
  165.     ng.ng_TopEdge         =    44;
  166.     ng.ng_GadgetText      =    "Make_Big";
  167.     ng.ng_GadgetID        =    GD_Gadget7;
  168.  
  169.     g = CreateGadget( STRING_KIND, g, &ng, GTST_String,keys[7],GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  170.  
  171.     Gadgets[ 7 ] = g;
  172.  
  173.     ng.ng_TopEdge         =    59;
  174.     ng.ng_GadgetText      =    "MakeS_mall";
  175.     ng.ng_GadgetID        =    GD_Gadget8;
  176.  
  177.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[8], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  178.  
  179.     Gadgets[ 8 ] = g;
  180.  
  181.     ng.ng_TopEdge         =    74;
  182.     ng.ng_GadgetText      =    "_Zip";
  183.     ng.ng_GadgetID        =    GD_Gadget9;
  184.  
  185.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[9], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  186.  
  187.     Gadgets[ 9 ] = g;
  188.  
  189.     ng.ng_TopEdge         =    89;
  190.     ng.ng_GadgetText      =    "Sho_w";
  191.     ng.ng_GadgetID        =    GD_Gadget10;
  192.  
  193.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[10], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  194.  
  195.     Gadgets[ 10 ] = g;
  196.  
  197.     ng.ng_GadgetText      =    "Ac_tiveToFront";
  198.     ng.ng_TopEdge         =    104;
  199.     ng.ng_GadgetID        =    GD_Gadget11;
  200.  
  201.     g = CreateGadget( STRING_KIND, g, &ng,GTST_String,keys[11], GTST_MaxChars, 256, GT_Underscore, '_', TAG_DONE );
  202.  
  203.     Gadgets[ 11 ] = g;
  204.  
  205.     ng.ng_LeftEdge        =    110;
  206.     ng.ng_TopEdge         =    120;
  207.     ng.ng_Width           =    83;
  208.     ng.ng_GadgetText      =    "_Save";
  209.     ng.ng_GadgetID        =    GD_GadgetSave;
  210.     ng.ng_Flags           =    PLACETEXT_IN;
  211.  
  212.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  213.  
  214.     Gadgets[ 12 ] = g;
  215.  
  216.     ng.ng_LeftEdge        =    201;
  217.     ng.ng_GadgetText      =    "_Hide";
  218.     ng.ng_GadgetID        =    GD_GadgetHide;
  219.  
  220.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  221.  
  222.     Gadgets[ 13 ] = g;
  223.  
  224.     ng.ng_LeftEdge        =    381;
  225.     ng.ng_GadgetText      =    "_Quit";
  226.     ng.ng_GadgetID        =    GD_GadgetQuit;
  227.  
  228.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  229.  
  230.     Gadgets[ 14 ] = g;
  231.  
  232.     ng.ng_LeftEdge        =    292;
  233.     ng.ng_GadgetText      =    "_Cancel";
  234.     ng.ng_GadgetID        =    GD_GadgetCancel;
  235.  
  236.     g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  237.  
  238.     Gadgets[ 15 ] = g;
  239.  
  240.     if ( NOT g )
  241.         return( 4l );
  242.  
  243.     WindowTags[ 6 ].ti_Data = (LONG)GList;
  244.  
  245.     if ( NOT( Menus = CreateMenus( NewMenu, GTMN_FrontPen, 0l, TAG_DONE )))
  246.         return( 6l );
  247.  
  248.     LayoutMenus( Menus, VisualInfo, GTMN_TextAttr, &topaz8, TAG_DONE );
  249.  
  250.     if(WindowTags[0].ti_Data==-10)    /* Bei -10 1.Aufruf und in die mitte */
  251.     {                                                                                /* setzen */
  252.         WindowTags[0].ti_Data=(Scr->Width-WindowTags[2].ti_Data)/2;
  253.         WindowTags[1].ti_Data=(Scr->Height-WindowTags[3].ti_Data)/2;
  254.     }
  255.  
  256.     strcpy(&windowtitle[26],keys[10]);
  257.  
  258.     if ( NOT( Wnd = OpenWindowTagList( 0l, WindowTags )))
  259.         return( 5l );
  260.  
  261.     SetMenuStrip( Wnd, Menus );
  262.     GT_RefreshWindow( Wnd, 0l );
  263.  
  264.     PrintIText( Wnd->RPort, IText, 0l, 0l );
  265.  
  266.     windowopen=TRUE;
  267.  
  268.     return( 0l );
  269. }
  270.  
  271. void CleanStuff( void )
  272. {
  273.     if(windowopen==FALSE)return;
  274.     
  275.     if ( Menus      ) {
  276.         ClearMenuStrip( Wnd );
  277.         FreeMenus( Menus );
  278.     }
  279.  
  280.     if ( Wnd        )
  281.         {
  282.             WindowTags[0].ti_Data = (LONG)Wnd->LeftEdge;
  283.             WindowTags[1].ti_Data = (LONG)Wnd->TopEdge;
  284.             WindowTags[2].ti_Data = (LONG)Wnd->Width;
  285.             WindowTags[3].ti_Data = (LONG)Wnd->Height;
  286.         CloseWindow( Wnd );
  287.         }
  288.  
  289.     if ( GList      )
  290.         FreeGadgets( GList );
  291.  
  292.     if ( VisualInfo )
  293.         FreeVisualInfo( VisualInfo );
  294.  
  295.     if ( Scr        )
  296.         UnlockPubScreen( 0l, Scr );
  297.     windowopen=FALSE;
  298. }
  299.