home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / YADME10.LHA / YADME10 / src / replace.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-19  |  8.0 KB  |  244 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : -- Unnamed --
  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 <graphics/gfxmacros.h>
  18. #include <clib/exec_protos.h>
  19. #include <clib/intuition_protos.h>
  20. #include <clib/gadtools_protos.h>
  21. #include <clib/graphics_protos.h>
  22. #include <clib/utility_protos.h>
  23. #include <string.h>
  24.  
  25. #include "replace.h"
  26.  
  27. APTR                   RVisualInfo = NULL;
  28. struct Window         *ReplaceWnd = NULL;
  29. struct Gadget         *ReplaceGList = NULL;
  30. struct IntuiMessage    ReplaceMsg;
  31. struct Gadget         *ReplaceGadgets[6];
  32. UWORD                  ReplaceLeft = 0;
  33. UWORD                  ReplaceTop = 0;
  34. UWORD                  ReplaceWidth = 335;
  35. UWORD                  ReplaceHeight = 64;
  36. UBYTE                 *ReplaceWdt = (UBYTE *)"Replace text";
  37.  
  38. char SearchPattern[256];
  39. char ReplacePattern[256];
  40.  
  41. USHORT ditherData[] =
  42. {
  43.    0x5555, 0xAAAA
  44. };
  45.  
  46.  
  47. struct TextAttr topaz8 = {
  48.         ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
  49.  
  50. UWORD ReplaceGTypes[] = {
  51.         BUTTON_KIND,
  52.         BUTTON_KIND,
  53.         TEXT_KIND,
  54.         TEXT_KIND,
  55.         STRING_KIND,
  56.         STRING_KIND
  57. };
  58.  
  59. struct NewGadget ReplaceNGad[] = {
  60.         4, 42, 71, 16, (UBYTE *)"_OK", NULL, GD_ok, PLACETEXT_IN, NULL, NULL,
  61.         252, 42, 71, 16, (UBYTE *)"_Cancel", NULL, GD_cancel, PLACETEXT_IN, NULL, NULL,
  62.         4, 4, 64, 14, NULL, NULL, GD_searchtxt, 0, NULL, NULL,
  63.         4, 22, 64, 14, NULL, NULL, GD_replacetxt, 0, NULL, NULL,
  64.         70, 4, 253, 15, NULL, NULL, GD_search, 0, NULL, NULL,
  65.         70, 22, 253, 15, NULL, NULL, GD_replace, 0, NULL, NULL
  66. };
  67.  
  68. ULONG ReplaceGTags[] = {
  69.         (GT_Underscore), '_', (TAG_DONE),
  70.         (GT_Underscore), '_', (TAG_DONE),
  71.         (GTTX_Text), (ULONG)"   Find", (GTTX_Border), FALSE, (TAG_DONE),
  72.         (GTTX_Text), (ULONG)"Replace", (GTTX_Border), FALSE, (TAG_DONE),
  73.         (GTST_MaxChars), 256, (TAG_DONE),
  74.         (GTST_MaxChars), 256, (TAG_DONE)
  75. };
  76.  
  77. int HandleReplaceIDCMP( void )
  78. {
  79.     struct IntuiMessage *m;
  80.     struct Gadget *gad;
  81.     BOOL done = FALSE;
  82.     BOOL cancelled = FALSE;
  83.     char *strptr;
  84.  
  85.     while (! done)
  86.     {
  87.         Wait(1L << ReplaceWnd->UserPort->mp_SigBit);
  88.  
  89.         while( m = GT_GetIMsg( ReplaceWnd->UserPort ))
  90.         {
  91.             switch ( m->Class )
  92.             {
  93.  
  94.                 case IDCMP_REFRESHWINDOW:
  95.                    GT_BeginRefresh( ReplaceWnd );
  96.                    GT_EndRefresh( ReplaceWnd, TRUE );
  97.                    break;
  98.  
  99.                 case IDCMP_VANILLAKEY:
  100.                    switch (m->Code)
  101.                    {
  102.                       case 'O':
  103.                       case 'o':
  104.                          done = TRUE;
  105.                          break;
  106.                       case 'C':
  107.                       case 'c':
  108.                          cancelled = TRUE;
  109.                          done = TRUE;
  110.                          break;
  111.                       default:
  112.                          break;
  113.                    }
  114.                    break;
  115.  
  116.                 case IDCMP_GADGETUP:
  117.                    gad = (struct Gadget *)m->IAddress;
  118.                    switch(gad->GadgetID)
  119.                    {
  120.                       case GD_ok:
  121.                          done = TRUE;
  122.                          break;
  123.                       case GD_cancel:
  124.                          cancelled = TRUE;
  125.                          done = TRUE;
  126.                          break;
  127.                       case GD_search:
  128.                          ActivateGadget(ReplaceGadgets[GD_replace], ReplaceWnd, NULL);
  129.                          break;
  130.                       case GD_replace:
  131.                          strptr = (char *)GetString(ReplaceGadgets[GD_search]);
  132.                          /* If Code is 9 the gadget was deactivated with the TAB key */
  133.                          if ((strlen(strptr) > 0) && (m->Code != 9))
  134.                             done = TRUE;
  135.                          else
  136.                             ActivateGadget(ReplaceGadgets[GD_search], ReplaceWnd, NULL);
  137.                          break;
  138.                       default:
  139.                          break;
  140.                    }
  141.                    break;
  142.             }
  143.             GT_ReplyIMsg( m );
  144.         }
  145.     }
  146.     if (! cancelled)
  147.     {
  148.        strptr = (char *)GetString(ReplaceGadgets[GD_search]);
  149.        if (strptr)
  150.           strcpy(SearchPattern, strptr);
  151.        strptr = (char *)GetString(ReplaceGadgets[GD_replace]);
  152.        if (strptr)
  153.           strcpy(ReplacePattern, strptr);
  154.     }
  155.     return(! cancelled);
  156. }
  157.  
  158. int OpenReplaceWindow( struct Screen *RScr )
  159. {
  160.         struct NewGadget        ng;
  161.         struct Gadget   *g;
  162.         UWORD           lc, tc;
  163.         UWORD           offx = RScr->WBorLeft, offy = RScr->WBorTop + RScr->RastPort.TxHeight + 1;
  164.  
  165.         if ( ! ( g = CreateContext( &ReplaceGList )))
  166.                 return( 1L );
  167.  
  168.         RVisualInfo = GetVisualInfo(RScr, TAG_DONE );
  169.  
  170.         ReplaceLeft = RScr->MouseX - 290;
  171.         if (ReplaceLeft < 0) ReplaceLeft = 0;
  172.         ReplaceTop = RScr->MouseY - 42 - offy - 7;
  173.         if (ReplaceTop < 0) ReplaceTop = 0;
  174.  
  175.  
  176.         for( lc = 0, tc = 0; lc < Replace_CNT; lc++ ) {
  177.  
  178.                 CopyMem((char * )&ReplaceNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  179.  
  180.                 ng.ng_VisualInfo = RVisualInfo;
  181.                 ng.ng_TextAttr   = &topaz8;
  182.                 ng.ng_LeftEdge  += offx;
  183.                 ng.ng_TopEdge   += offy;
  184.  
  185.                 ReplaceGadgets[ lc ] = g = CreateGadgetA((ULONG)ReplaceGTypes[ lc ], g, &ng, ( struct TagItem * )&ReplaceGTags[ tc ] );
  186.  
  187.                 while( ReplaceGTags[ tc ] ) tc += 2;
  188.                 tc++;
  189.  
  190.                 if ( NOT g )
  191.                         return( 2L );
  192.         }
  193.  
  194.         if ( ! ( ReplaceWnd = OpenWindowTags( NULL,
  195.                                 WA_Left,        ReplaceLeft,
  196.                                 WA_Top,         ReplaceTop,
  197.                                 WA_Width,       ReplaceWidth,
  198.                                 WA_Height,      ReplaceHeight + offy,
  199.                                 WA_IDCMP,       BUTTONIDCMP|TEXTIDCMP|STRINGIDCMP|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  200.                                 WA_Flags,       WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  201.                                 WA_Title,       ReplaceWdt,
  202.                                 TAG_DONE )))
  203.         return( 4L );
  204.  
  205.         SetAPen(ReplaceWnd->RPort, 2);
  206.         SetAfPt(ReplaceWnd->RPort, ditherData, 1);
  207.         RectFill(ReplaceWnd->RPort, offx, offy,
  208.                                     ReplaceWidth - ReplaceWnd->BorderRight - 1,
  209.                                     ReplaceHeight + offy - ReplaceWnd->BorderBottom - 1);
  210.         SetAPen(ReplaceWnd->RPort, 0);
  211.         RectFill(ReplaceWnd->RPort, 70 + offx, 4 + offy, 70 + 252 + offx, 4 + 14 + offy);
  212.         RectFill(ReplaceWnd->RPort, 70 + offx, 22 + offy, 70 + 252 + offx, 22 + 14 + offy);
  213.  
  214.         AddGList(ReplaceWnd, ReplaceGList, 0, Replace_CNT + 1, NULL);
  215.         GT_SetGadgetAttrs(ReplaceGadgets[GD_search], ReplaceWnd, NULL,
  216.                           GTST_String, SearchPattern, TAG_DONE);
  217.         GT_SetGadgetAttrs(ReplaceGadgets[GD_replace], ReplaceWnd, NULL,
  218.                           GTST_String, ReplacePattern, TAG_DONE);
  219.         WaitBlit();
  220.         RefreshGList(ReplaceGList, ReplaceWnd, NULL, Replace_CNT + 1);
  221.         GT_RefreshWindow( ReplaceWnd, NULL );
  222.         ActivateGadget(ReplaceGadgets[GD_search], ReplaceWnd, NULL);
  223.         return( 0L );
  224. }
  225.  
  226. void CloseReplaceWindow( void )
  227. {
  228.         if ( ReplaceWnd        ) {
  229.                 CloseWindow( ReplaceWnd );
  230.                 ReplaceWnd = NULL;
  231.         }
  232.  
  233.         if ( ReplaceGList      ) {
  234.                 FreeGadgets( ReplaceGList );
  235.                 ReplaceGList = NULL;
  236.         }
  237.         if ( RVisualInfo ) {
  238.                 FreeVisualInfo( RVisualInfo );
  239.                 RVisualInfo = NULL;
  240.         }
  241.  
  242. }
  243.  
  244.