Files
harbour-core/harbour/tests/sbartest.prg
Viktor Szakats 23fd285891 2012-10-02 03:08 UTC+0200 Viktor Szakats (harbour syenar.net)
* utils/hbmk2/hbmk2.prg
    + added tricky feature which attempts to autodetect whether
      a script is meant to be run on an interactive CUI as
      opposed to the default command line (CLI, aka GTCGI) mode.
      It makes it possible to keep cmdline oriented scripts
      running using GTCGI, while full-screen apps are run
      using GTWIN and friends without code changes. F.e.
      /tests apps can be run this way easily.
    ; scripts can force to use CLI by using:
      'REQUEST HB_GT_CGI_DEFAULT'
    ; scripts can switch to CUI mode explicitly by running
      this code:
      #ifdef __HBSCRIPT__HBSHELL
         hbshell_gtInteractive()
      #endif
      Experimental, might change to something more elegant.

  * tests/db_brows.prg
    ! fixed CUI for unicode and readded CUI drawing elements

  * tests/sbartest.prg
    * comment deleted
2012-10-02 01:10:22 +00:00

123 lines
2.7 KiB
Plaintext

/*
* $Id$
*/
/*
* ScrollBar class test
*
* Harbour Project source code
* http://harbour-project.org/
*
* Example donated by Diego Pego,
* modified by Alejandro de Garate
*/
/* UTF-8 */
#include "directry.ch"
#include "achoice.ch"
#include "inkey.ch"
#ifdef __HARBOUR__
#define B_THIN hb_UTF8ToStrBox( "█▀███▄██" )
#else
#define B_THIN ( Chr( 219 ) + Chr( 223 ) + Chr( 219 ) + Chr( 219 ) + ;
Chr( 219 ) + Chr( 220 ) + Chr( 219 ) + Chr( 219 ) )
#endif
PROCEDURE Main()
InitScrlBar()
RETURN
FUNCTION InitScrlBar()
LOCAL tmpFileList, i
MEMVAR aFileList, filesScroll
PRIVATE aFileList := {}, filesScroll
CLS
SetBlink( .F. )
#ifdef __HARBOUR__
@ 0, 0, 24, 79 BOX Replicate( hb_UTF8ToStrBox( "▓" ), 9 ) COLOR "GR+/W*"
#else
@ 0, 0, 24, 79 BOX Replicate( Chr( 178 ), 9 ) COLOR "GR+/W*"
#endif
@ 4, 28 SAY " Directory " COLOR "W+/B"
@ 5, 28, 15, 60 BOX B_THIN + " " COLOR "W/W*"
// get the current folder files to display on the aChoice menu
tmpFileList := Directory()
FOR i := 1 TO Len( tmpFileList )
AAdd( aFileList, tmpFileList[ i ][ F_NAME ] )
NEXT
filesScroll := ScrollBar( 06, 14, 60, NIL, 1 )
filesScroll:total := Len( aFileList )
filesScroll:colorSpec( "W+/W, W+/W" )
SET COLOR TO "N/W*, W+/B,,,W/N"
filesScroll:display()
i := AChoice( 06, 29, 14, 59, aFileList, , "updateFilesScroll" )
@ 23, 0 SAY iif( i < 1, "", aFileList[ i ] ) COLOR "N/W*"
SET COLOR TO
@ 24, 0
RETURN 0
// function used to update scrollbar
FUNCTION updateFilesScroll( modo )
LOCAL newPos, valRet := AC_CONT // Default to continue
LOCAL ultTecla := LastKey()
MEMVAR filesScroll
newPos := filesScroll:current
DO CASE
CASE ultTecla == K_CTRL_PGUP
newPos := 1
CASE ultTecla == K_CTRL_PGDN
newPos := filesScroll:total
CASE ultTecla == K_CTRL_HOME
newPos := newPos - ( filesScroll:barLength + 1 )
CASE ultTecla == K_CTRL_END
newPos := newPos + ( filesScroll:barLength + 1 )
CASE ultTecla == K_PGUP
newPos := newPos - ( filesScroll:barLength + 1 )
CASE ultTecla == K_PGDN
newPos := newPos + ( filesScroll:barLength + 1 )
CASE ultTecla == K_UP
newPos--
CASE ultTecla == K_DOWN
newPos++
CASE modo == AC_EXCEPT
DO CASE
CASE ultTecla == K_RETURN
valRet := AC_SELECT
CASE ultTecla == K_ESC
valRet := AC_ABORT
OTHERWISE
valRet := AC_GOTO
ENDCASE
ENDCASE
IF newPos < 1
newPos := 1
ELSEIF newPos >= filesScroll:total
newPos := filesScroll:total
ENDIF
filesScroll:current := newPos
filesScroll:update()
RETURN valRet