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