home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / dnalib7a.zip / BROWSE.BAS < prev    next >
BASIC Source File  |  1994-05-14  |  6KB  |  204 lines

  1. DECLARE SUB Popwind(Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%)
  2. DECLARE SUB RestoreScreen(ScreenID$,TopRow%,LeftColumn%)
  3. DECLARE SUB SaveScreen(ScreenID$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%)
  4. DECLARE SUB SplitPath(FilePath$, Path$, FileName$)
  5. DECLARE SUB CalcByte(Attr%,LowByte%,HiByte%)
  6. DECLARE SUB Clicked(Rgt%,Lft%,Row%,Col%)
  7. DECLARE SUB HideCursor()
  8. DECLARE SUB ShowCursor()
  9. DECLARE FUNCTION LeftButtonReleased%()
  10.  
  11. SUB BROWSE(FileName$,Mouse%,TextColor%,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Attr%,Shadow%,Border%) PUBLIC
  12.  
  13. $CODE SEG "DNASEG1"
  14.  
  15. CalcByte Attr%,FGround%,BGround%
  16.  
  17. LeftSide% = LeftColumn% + 2:RightSide% = RightColumn% - 2:Top% = TopRow% + 1
  18. Bottom% = BottomRow% - 1:TextWidth% = RightSide% - (LeftSide% - 1):Pointer% = 1
  19. Offset% = 0
  20.  
  21. Test$ = DIR$(FileName$)
  22.  
  23. IF Mouse% THEN HideCursor
  24.  
  25. IF LEN(Test$) THEN
  26.   SplitPath FileName$,Path$,Title$
  27.   FileNumber% = FREEFILE
  28.   OPEN FileName$ FOR BINARY AS FileNumber%
  29.   IF LOF(FileNumber%) > 32000 THEN
  30.     GET$ FileNumber%, 32000, FileName$
  31.   ELSE
  32.     GET$ FileNumber%, LOF(FileNumber%), FileName$
  33.   END IF
  34.   CLOSE FileNumber%
  35. ELSE
  36.   EXIT SUB
  37. END IF
  38.  
  39. REPLACE ANY CHR$(9) WITH CHR$(32) IN FileName$
  40. FileName$ = RTRIM$(FileName$,CHR$(13,10))
  41. FileName$ = FileName$ + " "
  42.  
  43. IF LEN(Title$) >= TextWidth% - 6 THEN
  44.   Title$ = ""
  45. END IF
  46.  
  47. SaveScreen BrowseScreen$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%
  48.  
  49. Popwind Title$,Toprow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%
  50.  
  51. IF Mouse% THEN
  52.   COLOR FGround%,BGround%
  53.   LOCATE BottomRow%,RightColumn% - 10
  54.   PRINT CHR$(91,17,32,30,32,31,32,16,93);
  55.   LOCATE TopRow%,LeftColumn% + 1
  56.   PRINT CHR$(91,254,93);
  57. END IF
  58.  
  59. COLOR TextColor%,BGround%
  60.  
  61. DO
  62.  
  63. IF Mouse% THEN HideCursor
  64.  
  65.     TempPointer% = Pointer%
  66.     Temp% = Top%
  67.     DO
  68.       EndOfLine% = INSTR(MID$(FileName$, TempPointer%),CHR$(13))
  69.       IF EndOfLine% = 0 THEN
  70.         EndOfLine% = LEN(FileName$)
  71.        ELSE
  72.         DECR EndOfLine%
  73.       END IF
  74.       CurrentLine$ = MID$(FileName$, TempPointer%, EndOfLine%)
  75.       LOCATE Temp%, LeftSide%
  76.       PRINT MID$(CurrentLine$ + SPACE$(TextWidth% + Offset%), 1 + Offset%, TextWidth%)
  77.       TempPointer% = INSTR(TempPointer%, FileName$, CHR$(13)) + 2 '+2 for CRLF pair
  78.       IF TempPointer% = 2 THEN TempPointer% = LEN(FileName$)
  79.       INCR Temp%
  80.       IF Temp% > Bottom% THEN EXIT LOOP
  81.     LOOP
  82.  
  83.  
  84.  
  85. WHILE NOT INSTAT
  86.   IF Mouse% THEN
  87.     ShowCursor
  88.     Rgt% = 0:Lft% = 0:MRow% = 0:MCol% = 0
  89.     Clicked Rgt%,Lft%,MRow%,MCol%
  90.     IF  MRow% >= TopRow% AND MRow% <= BottomRow% AND MCol% >= LeftColumn% AND MCol% <= RightColumn% THEN
  91.       SELECT CASE MRow%
  92.         CASE TopRow%
  93.           IF MCol% = LeftColumn% + 2 THEN
  94.             IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
  95.           END IF
  96.         CASE BottomRow%
  97.           SELECT CASE MCol%
  98.             CASE RightColumn% - 3
  99.               IF Lft% THEN Chose% = -77: GOTO KeyBoardRoutine
  100.             CASE RightColumn% - 5
  101.               IF Lft% THEN Chose% = -80: GOTO KeyBoardRoutine
  102.             CASE RightColumn% - 7
  103.               IF Lft% THEN Chose% = -72: GOTO KeyBoardRoutine
  104.             CASE RightColumn% - 9
  105.               IF Lft% THEN Chose% = -75: GOTO KeyBoardRoutine
  106.           END SELECT
  107.       END SELECT
  108.     ELSE
  109.       IF LeftButtonReleased% THEN Chose% = 27: GOTO KeyBoardRoutine
  110.     END IF
  111.   END IF
  112. WEND
  113. Ky$ = INKEY$
  114.  
  115. IF LEN(Ky$) = 1 THEN
  116.   Chose% = ASC(Ky$)
  117. ELSE
  118.   Chose% = -ASC(RIGHT$(Ky$,1))
  119. END IF
  120.  
  121. KeyBoardRoutine:
  122.  
  123.   SELECT CASE Chose%
  124.  
  125.        CASE -80 'down arrow
  126.         IF TempPointer% < LEN(FileName$) THEN
  127.           Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
  128.         END IF
  129.  
  130.        CASE -72 ' up arrow
  131.         IF Pointer% > 1 THEN
  132.           DECR Pointer%,2
  133.           DO
  134.             DECR Pointer%
  135.           LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  136.           IF Pointer% > 1 THEN INCR Pointer%,2
  137.         END IF
  138.  
  139.        CASE -71 ' home
  140.         IF Offset% THEN
  141.           Offset% = 0
  142.         ELSE
  143.           Pointer% = 1
  144.         END IF
  145.  
  146.        CASE -77 ' right arrow
  147.         INCR Offset%
  148.  
  149.        CASE -75 ' left arrow
  150.         IF Offset% THEN DECR Offset%
  151.  
  152.        CASE -81 ' page down
  153.         FOR PageLenght% = Top% TO (Bottom% - 1)
  154.           Oldptr% = Pointer%
  155.           Pointer% = INSTR(Pointer%, FileName$, CHR$(13)) + 2
  156.           IF Pointer% = 2 THEN
  157.             Pointer% = Oldptr%
  158.             EXIT FOR
  159.           END IF
  160.         NEXT PageLenght%
  161.  
  162.        CASE -73 ' page up
  163.         FOR PageLenght% = Top% TO (Bottom% - 1)
  164.           IF Pointer% > 1 THEN
  165.             DECR Pointer%,2
  166.             DO
  167.               DECR Pointer%
  168.             LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  169.             IF Pointer% > 1 THEN INCR Pointer%,2
  170.           ELSE
  171.             EXIT FOR
  172.           END IF
  173.         NEXT PageLenght%
  174.  
  175.        CASE -79  'EndKey
  176.          Pointer% = LEN(FileName$)
  177.          FOR PageLenght% = Top% TO (Bottom% - 1)
  178.           IF Pointer% > 1 THEN
  179.             DECR Pointer%,2
  180.             DO
  181.               DECR Pointer%
  182.             LOOP UNTIL MID$(FileName$, Pointer%, 1) = CHR$(13) OR Pointer% = 1
  183.             IF Pointer% > 1 THEN INCR Pointer%,2
  184.           ELSE
  185.             EXIT FOR
  186.           END IF
  187.         NEXT PageLenght%
  188.  
  189.        CASE 27
  190.          EXIT LOOP
  191.  
  192.        CASE ELSE
  193.          BEEP
  194.  
  195.   END SELECT
  196.  
  197. LOOP
  198.  
  199. IF Mouse% THEN HideCursor
  200.  
  201. RestoreScreen BrowseScreen$,TopRow%,LeftColumn%
  202.  
  203. END SUB
  204.