home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / QBAS / WNDTOOL5.ZIP / TAGDIR.SUB < prev    next >
Text File  |  1989-04-26  |  5KB  |  112 lines

  1. '
  2. '$PAGE
  3. '
  4. '******************************************************************************
  5. '                    Function :                                               *
  6. '                                                                             *
  7. ' Purpose:                                                                    *
  8. '                                                                             *
  9. '                                                                             *
  10. ' Results:                                                                    *
  11. '                                                                             *
  12. ' Usage  :                                                                    *
  13. '                                                                             *
  14. '                                                                             *
  15. ' Date Written : 01/01/89 - Date Tested: 01/01/89 - Author: James P Morgan    *
  16. ' Date Modified:          -            :          -       :                   *
  17. '-----------------------------------------------------------------------------*
  18. ' NOTE:                                                                       *
  19. '******************************************************************************
  20. '                                                                             *
  21. '     SUB PROGRAM NAME          (PARAMETERS)                 STATIC/RECURSIVE *
  22. '-----------------------------------------------------------------------------*
  23. '                                                                             *
  24. '============================================================================
  25. '
  26. SUB    TAGDIR(SEARCH$,SHOWITEMS%,FORE%,BACK%,HFORE%,HBACK%,QUADRANT$,SHADOW%,NUMTAGGED%,TAG$(1)) STATIC
  27.  
  28.        DEFINT A-Z                               'make all short intergers by default
  29.  
  30.        TAG.MIN=LBOUND(TAG$)                     'adjust for callers OPTION BASE
  31.        TAG.MAX=UBOUND(TAG$)                     'user reserved spaces for this many tagged filenames
  32.  
  33.        REM $DYNAMIC                             'allocate arrays off far heap
  34.        DIM FILES$(1),TAGITEMS%(1)               'make each one ONLY 1 element to start with
  35.        REM $STATIC                              'default arrays back to Basics Data segment
  36.  
  37. TAGDIR.START:
  38.        ATTR=0
  39.  
  40.        COUNT=&HFF00 OR ATTR                     'Get number of filenames that match SEARCH$
  41.        I=INT(VARPTR(FILES$(0)))
  42.  
  43.        CALL DIR(SEARCH$,I,COUNT)
  44.  
  45.        IF (COUNT=-1) OR (COUNT = 0) THEN        'were any matching filenames found?
  46.            NUMFILES%=0                          'NO
  47.            SELECTFILE$="No Files Found"
  48.          GOTO TAGDIR.DONE
  49.        END IF
  50.  
  51.        IF COUNT <> 0 THEN                       're-alloacte filename array big
  52.            REDIM FILES$(COUNT),TAGITEMS%(COUNT) 'enough to hold all found
  53.        END IF
  54.  
  55.        HEADER$=SEARCH$                          'this was the search filename spec
  56.  
  57.        TEMPHDR$=SPACE$(16)
  58.        PAD=8-(LEN(HEADER$)/2)-.5
  59.        MID$(TEMPHDR$,PAD+1,LEN(HEADER$))=HEADER$
  60.        HEADER$=TEMPHDR$
  61.  
  62.        FOR I=0 TO COUNT-1                       'make each filename array element
  63.            FILES$(I)=SPACE$(LEN(HEADER$)-2)     'big enough to hold a filename
  64.        NEXT
  65.  
  66.  
  67.        COUNT=ATTR
  68.        I=INT(VARPTR(FILES$(0)))
  69.  
  70.        CALL DIR(SEARCH$,I,COUNT)                'load the filenames into the array
  71.  
  72.        FOR J=0 TO COUNT                         'allow for room in front of filename
  73.            FILES$(J)="  "+FILES$(J)             'to 'tag' it
  74.        NEXT
  75.  
  76.        MAXITEMS%=COUNT                          'we have this many filenames to display
  77.        SHOWFILES=SHOWITEMS%                     'but only display this many at a time
  78.  
  79.        NUMTAGGED%=TAG.MAX                       'allow only this many to be tagged (all we have room for)
  80.  
  81.        CALL TAGLIST(HEADER$,SHOWITEMS%,MAXITEMS%,NUMTAGGED%,FILES$(),TAGITEMS%(),FORE%,BACK%,HFORE%,HBACK%,QUADRANT$,SHADOW%)
  82.  
  83.        I=0                                      'number we actually found tagged
  84.  
  85.        I.BASE=0
  86.  
  87.        IF NUMTAGGED%<1 THEN                     'did user 'tag' any filenames
  88.            GOTO TAGDIR.DONE                     'NO
  89.        ENDIF
  90.  
  91. '
  92. ' Return the filenames tagged.
  93. '
  94.        FOR J=0 TO COUNT-1                       'look at all the filenames
  95.  
  96.            IF TAGITEMS%(J)=1 THEN               'was this one tagged?
  97.                TAG$((I-I.BASE)+TAG.MIN)=MID$(FILES$(J),3)
  98.                I=I+1                            'keep count of the number we found tagged
  99.            END IF
  100.  
  101.        NEXT
  102.  
  103. '      NUMTAGGED%=I
  104.  
  105. '
  106. TAGDIR.DONE:
  107.        ERASE FILES$                             'free memory allocated to arrays
  108.        ERASE TAGITEMS%
  109.  
  110.        EXIT SUB                                 'return to caller
  111. END SUB
  112.