- extras/guestbk/cgi.ch
- extras/guestbk/guestbk.hbp
- extras/guestbk/guestbk.txt
* .gitattributes
* contrib/hbgd/tests/counter.prg
* contrib/hbhttpd/core.prg
* contrib/hbgd/tests/digits/57chevy.gif -> contrib/hbgd/tests/imgs_in/57chevy.gif
* contrib/hbgd/tests/digits/7seg.gif -> contrib/hbgd/tests/imgs_in/7seg.gif
* contrib/hbgd/tests/digits/brsd.gif -> contrib/hbgd/tests/imgs_in/brsd.gif
* contrib/hbgd/tests/digits/digib.gif -> contrib/hbgd/tests/imgs_in/digib.gif
* contrib/hbgd/tests/digits/fdb.gif -> contrib/hbgd/tests/imgs_in/fdb.gif
* contrib/hbgd/tests/digits/jelly.gif -> contrib/hbgd/tests/imgs_in/jelly.gif
* contrib/hbgd/tests/digits/odb.gif -> contrib/hbgd/tests/imgs_in/odb.gif
* contrib/hbgd/tests/digits/odw.gif -> contrib/hbgd/tests/imgs_in/odw.gif
* contrib/hbgd/tests/digits/pdg.gif -> contrib/hbgd/tests/imgs_in/pdg.gif
* contrib/hbgd/tests/digits/pdw.gif -> contrib/hbgd/tests/imgs_in/pdw.gif
* contrib/hbhttpd/tests/tpl/_main.tpl -> contrib/hbhttpd/tests/tpl/_main.html
* contrib/hbhttpd/tests/tpl/app/account/edit.tpl -> contrib/hbhttpd/tests/tpl/app/account/edit.html
* contrib/hbhttpd/tests/tpl/app/account.tpl -> contrib/hbhttpd/tests/tpl/app/account.html
* contrib/hbhttpd/tests/tpl/app/cart.tpl -> contrib/hbhttpd/tests/tpl/app/cart.html
* contrib/hbhttpd/tests/tpl/app/login.tpl -> contrib/hbhttpd/tests/tpl/app/login.html
* contrib/hbhttpd/tests/tpl/app/logout.tpl -> contrib/hbhttpd/tests/tpl/app/logout.html
* contrib/hbhttpd/tests/tpl/app/main.tpl -> contrib/hbhttpd/tests/tpl/app/main.html
* contrib/hbhttpd/tests/tpl/app/register.tpl -> contrib/hbhttpd/tests/tpl/app/register.html
* contrib/hbhttpd/tests/tpl/app/shopping.tpl -> contrib/hbhttpd/tests/tpl/app/shopping.html
* extras/gtwvw/docs/funclist.txt -> contrib/gtwvw/doc/funclist.txt
* extras/gtwvw/docs/gtwvw.txt -> contrib/gtwvw/doc/gtwvw.txt
* extras/gtwvw/docs/whatsnew.txt -> contrib/gtwvw/doc/ChangeLog.txt
* extras/gtwvw/gtwvw.hbc -> contrib/gtwvw/gtwvw.hbc
* extras/gtwvw/gtwvw.hbx -> contrib/gtwvw/gtwvw.hbx
* extras/gtwvw/gtwvwd.c -> contrib/gtwvw/gtwvwd.c
* extras/gtwvw/hbgtwvw.h -> contrib/gtwvw/hbgtwvw.h
* extras/gtwvw/hbole.h -> contrib/gtwvw/hbole.h
* extras/gtwvw/tests/_wvwmous.prg -> contrib/gtwvw/tests/_wvwmous.prg
* extras/gtwvw/tests/def2.bmp -> contrib/gtwvw/tests/def2.bmp
* extras/gtwvw/tests/dia_excl.ico -> contrib/gtwvw/tests/dia_excl.ico
* extras/gtwvw/tests/drawimg.prg -> contrib/gtwvw/tests/drawimg.prg
* extras/gtwvw/tests/ebtest7.prg -> contrib/gtwvw/tests/eb7.prg
* extras/gtwvw/tests/hbmk.hbm -> contrib/gtwvw/tests/hbmk.hbm
* extras/gtwvw/tests/vouch1.bmp -> contrib/gtwvw/tests/vouch1.bmp
* extras/gtwvw/tests/vouch1.gif -> contrib/gtwvw/tests/vouch1.gif
* extras/gtwvw/wvt2wvw.ch -> contrib/gtwvw/wvt2wvw.ch
* extras/gtwvw/wvwcheck.c -> contrib/gtwvw/checkbox.c
* extras/gtwvw/wvwdraw.c -> contrib/gtwvw/wvwdraw.c
* extras/gtwvw/wvwedit.c -> contrib/gtwvw/editbox.c
* extras/gtwvw/wvwfuncs.c -> contrib/gtwvw/wvwutils.c
* extras/gtwvw/wvwmenu.c -> contrib/gtwvw/menubar.c
* extras/gtwvw/wvwpush.c -> contrib/gtwvw/pushbut.c
* extras/gtwvw/wvwstbar.c -> contrib/gtwvw/statbar.c
* extras/gtwvw/wvwtbar.c -> contrib/gtwvw/toolbar.c
* extras/guestbk/guestbk.html -> tests/guestbk.html
* extras/hbdoc/hbdoc.css -> contrib/hbdoc/hbdoc.css
* extras/gtwvw/gtwvw.hbp -> contrib/gtwvw/gtwvw.hbp
* extras/gtwvw/tests/cbtest1.prg -> contrib/gtwvw/tests/cb1.prg
* extras/gtwvw/tests/cbtest6.prg -> contrib/gtwvw/tests/cb6.prg
* extras/gtwvw/tests/inpfocus.prg -> contrib/gtwvw/tests/inpfocus.prg
* extras/gtwvw/tests/maincoor.prg -> contrib/gtwvw/tests/maincoor.prg
* extras/gtwvw/tests/maximize.prg -> contrib/gtwvw/tests/maximize.prg
* extras/gtwvw/tests/prog0.prg -> contrib/gtwvw/tests/prog0.prg
* extras/gtwvw/tests/prog1.prg -> contrib/gtwvw/tests/prog1.prg
* extras/gtwvw/tests/prog2.prg -> contrib/gtwvw/tests/prog2.prg
* extras/gtwvw/tests/readme.txt -> contrib/gtwvw/tests/readme.txt
* extras/gtwvw/tests/wvwtest9.prg -> contrib/gtwvw/tests/demo.prg
* extras/guestbk/_cgi.prg -> tests/cgi.prg
* extras/guestbk/_inifile.prg -> tests/inifile.prg
* extras/guestbk/guestbk.ini -> tests/guestbk.ini
* extras/guestbk/guestbk.prg -> tests/guestbk.prg
* extras/hbdoc/_genbase.prg -> contrib/hbdoc/_base.prg
* extras/hbdoc/_genhtml.prg -> contrib/hbdoc/_html.prg
* extras/hbdoc/_gentxt.prg -> contrib/hbdoc/_txt.prg
* extras/hbdoc/_genxml.prg -> contrib/hbdoc/_xml.prg
* extras/hbdoc/hbdoc.hbp -> contrib/hbdoc/hbdoc.hbp
* extras/hbdoc/hbdoc.prg -> contrib/hbdoc/hbdoc.prg
* more file/dir rename sync with 3.4 fork, plus some related file content
421 lines
10 KiB
Plaintext
421 lines
10 KiB
Plaintext
/* Copyright 2004 Budyanto Dj. <budyanto@centrin.net.id>
|
|
|
|
This is prog0.prg modified in a quick and dirty fashion to convert
|
|
pseudo-windows in prog0.prg into real windows of GTWVW.
|
|
|
|
This quick and dirty approach is making use of GTWVW's MainCoord Mode.
|
|
Instead of specifying to which window we are writing output, we simply
|
|
specify "screen-wide" coordinates like we do in Cl*pper. In GTWVW's
|
|
MainCoord Mode, a coordinate (row,col) are processed to find which window
|
|
does it belong to and the output commands then is directed to operate on
|
|
that window.
|
|
|
|
This way we don't have to change a single coordinate from the original
|
|
Cl*pper code.
|
|
|
|
Since the original Cl*pper code uses ZNEWWINDOW() and ZREVWINDOW() to
|
|
open and close any window, we only have to change these two functions
|
|
and let all other functions unchanged (xGet1(), xBrowse1(), ...). */
|
|
|
|
#require "gtwvw"
|
|
|
|
#include "inkey.ch"
|
|
#include "setcurs.ch"
|
|
|
|
STATIC s_zwin := {}
|
|
STATIC s_cStdColor := "N/W,N/GR*,,,N/W*"
|
|
|
|
PROCEDURE Main()
|
|
|
|
LOCAL i, j
|
|
LOCAL lMainCoord
|
|
|
|
#if defined( __HBSCRIPT__HBSHELL ) .AND. defined( __PLATFORM__WINDOWS )
|
|
hbshell_gtSelect( "GTWVW" )
|
|
#endif
|
|
|
|
lMainCoord := wvw_SetMainCoord( .T. )
|
|
|
|
wvw_SetCodepage( , 255 )
|
|
|
|
SET SCOREBOARD OFF
|
|
SetColor( s_cStdColor )
|
|
SetCursor( SC_NONE )
|
|
CLS
|
|
@ 0, 0 SAY PadC( "This is the Main Window", MaxCol() + 1 )
|
|
|
|
// screen background
|
|
DispBegin()
|
|
FOR i := 1 TO MaxRow() - 1
|
|
FOR j := 0 TO MaxCol()
|
|
hb_DispOutAtBox( i, j, hb_UTF8ToStrBox( "▒" ) )
|
|
NEXT
|
|
NEXT
|
|
DispEnd()
|
|
|
|
lboxmessage( "Welcome to our test program." + hb_eol() + ;
|
|
"This program will show typical GET and BROWSE dialogs " + ;
|
|
"with brief help on the bottom of the screen." )
|
|
xGet1()
|
|
xBrowse1()
|
|
lboxmessage( "That's all folks" )
|
|
|
|
// restore state
|
|
SetCursor( SC_NORMAL )
|
|
|
|
RETURN
|
|
|
|
PROCEDURE xGet1()
|
|
|
|
LOCAL cName := PadR( "Name", 20 )
|
|
LOCAL cAddr := PadR( "Address", 25 )
|
|
LOCAL cPhone := PadR( "Phone", 15 )
|
|
LOCAL cFax := PadR( "Fax", 15 )
|
|
LOCAL lDone := .F.
|
|
LOCAL getlist := {}
|
|
LOCAL oldCurs := SetCursor( SC_NORMAL )
|
|
|
|
znewwindow( hb_UTF8ToStrBox( "┌─┐│┘─└│" ), 10, 20, 22, 59, "Some Window" )
|
|
|
|
#if 0
|
|
@ 21, 21 SAY "Inside the window" COLOR "R/W"
|
|
@ 23, 0 SAY "Outside the window" COLOR "R/W"
|
|
#endif
|
|
|
|
DO WHILE ! lDone
|
|
@ 12, 22 SAY "Name : " GET cName PICT "@!K" WHEN lMessage( "Please enter your name" )
|
|
@ 14, 22 SAY "Address : " GET cAddr PICT "@!K" WHEN lMessage( "Please enter your address" )
|
|
@ 16, 22 SAY "Phone : " GET cPhone PICT "@K" WHEN lMessage( "Please enter your phone number" )
|
|
@ 18, 22 SAY "Fax : " GET cFax PICT "@K" WHEN lMessage( "Please enter your fax number" )
|
|
READ
|
|
|
|
lMessage( "" )
|
|
lDone := lyesno( "Done?" )
|
|
ENDDO
|
|
|
|
zrevwindow()
|
|
|
|
SetCursor( oldCurs )
|
|
|
|
RETURN // xGet1()
|
|
|
|
/* the following is adapted from wvtgui.prg by Pritpal Bedi
|
|
for illustration purposes only */
|
|
|
|
FUNCTION xBrowse1()
|
|
|
|
LOCAL nKey, bBlock, oBrowse, i
|
|
LOCAL lEnd := .F.
|
|
LOCAL info_
|
|
LOCAL nTop := 6
|
|
LOCAL nLeft := 3
|
|
LOCAL nBottom := MaxRow() - 2
|
|
LOCAL nRight := MaxCol() - 3
|
|
LOCAL nCursor := SetCursor( SC_NONE )
|
|
|
|
USE "..\..\..\tests\test" NEW
|
|
IF NetErr()
|
|
RETURN NIL
|
|
ENDIF
|
|
info_ := dbStruct()
|
|
|
|
SetColor( "N/W*,N/GR*,,,N/W* " )
|
|
oBrowse := TBrowseNew( nTop + 1, nLeft + 1, nBottom - 1, nRight - 1 )
|
|
|
|
oBrowse:ColSep := hb_UTF8ToStrBox( "│" )
|
|
oBrowse:HeadSep := hb_UTF8ToStrBox( "═" )
|
|
oBrowse:GoTopBlock := {|| dbGoTop() }
|
|
oBrowse:GoBottomBlock := {|| dbGoBottom() }
|
|
oBrowse:SkipBlock := {| nSkip | dbSkipBlock( nSkip, oBrowse ) }
|
|
|
|
FOR i := 1 TO Len( info_ )
|
|
bBlock := VouBlockField( i )
|
|
oBrowse:AddColumn( TBColumnNew( info_[ i, 1 ], bBlock ) )
|
|
NEXT
|
|
|
|
oBrowse:configure()
|
|
|
|
znewwindow( hb_UTF8ToStrBox( "┌─┐│┘─└│" ), nTop, nLeft, nBottom, nRight, "test.dbf" )
|
|
|
|
WHILE ! lEnd
|
|
oBrowse:ForceStable()
|
|
|
|
lMessage( "Record #" + hb_ntos( RecNo() ) )
|
|
|
|
nKey := Inkey( 0 )
|
|
|
|
DO CASE
|
|
CASE nKey == K_ESC .OR. nKey == K_ENTER
|
|
lEnd := lYesNo( "Done?" )
|
|
CASE nKey == K_DOWN
|
|
oBrowse:Down()
|
|
CASE nKey == K_UP
|
|
oBrowse:Up()
|
|
CASE nKey == K_LEFT
|
|
oBrowse:Left()
|
|
CASE nKey == K_RIGHT
|
|
oBrowse:Right()
|
|
CASE nKey == K_PGDN
|
|
oBrowse:pageDown()
|
|
CASE nKey == K_PGUP
|
|
oBrowse:pageUp()
|
|
CASE nKey == K_CTRL_PGUP
|
|
oBrowse:goTop()
|
|
CASE nKey == K_CTRL_PGDN
|
|
oBrowse:goBottom()
|
|
CASE nKey == K_HOME
|
|
oBrowse:home()
|
|
CASE nKey == K_END
|
|
oBrowse:end()
|
|
CASE nKey == K_CTRL_LEFT
|
|
oBrowse:panLeft()
|
|
CASE nKey == K_CTRL_RIGHT
|
|
oBrowse:panRight()
|
|
CASE nKey == K_CTRL_HOME
|
|
oBrowse:panHome()
|
|
CASE nKey == K_CTRL_END
|
|
oBrowse:panEnd()
|
|
ENDCASE
|
|
ENDDO
|
|
|
|
lMessage( "" )
|
|
|
|
zrevwindow()
|
|
|
|
// restore state
|
|
SetCursor( nCursor )
|
|
|
|
dbCloseArea()
|
|
|
|
RETURN NIL
|
|
|
|
//
|
|
|
|
STATIC FUNCTION DbSkipBlock( n, oTbr )
|
|
|
|
LOCAL nSkipped := 0
|
|
|
|
HB_SYMBOL_UNUSED( oTbr )
|
|
|
|
IF n == 0
|
|
dbSkip( 0 )
|
|
ELSEIF n > 0
|
|
DO WHILE nSkipped != n .AND. TBNext( oTbr )
|
|
nSkipped++
|
|
ENDDO
|
|
ELSE
|
|
DO WHILE nSkipped != n .AND. TBPrev( oTbr )
|
|
nSkipped--
|
|
ENDDO
|
|
ENDIF
|
|
|
|
RETURN nSkipped
|
|
|
|
//
|
|
|
|
STATIC FUNCTION TBNext( oTbr )
|
|
|
|
LOCAL nSaveRecNum := RecNo()
|
|
LOCAL lMoved := .T.
|
|
|
|
HB_SYMBOL_UNUSED( oTbr )
|
|
|
|
IF Eof()
|
|
lMoved := .F.
|
|
ELSE
|
|
dbSkip( 1 )
|
|
IF Eof()
|
|
lMoved := .F.
|
|
dbGoto( nSaveRecNum )
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN lMoved
|
|
|
|
//
|
|
|
|
STATIC FUNCTION TBPrev( oTbr )
|
|
|
|
LOCAL nSaveRecNum := RecNo()
|
|
LOCAL lMoved := .T.
|
|
|
|
HB_SYMBOL_UNUSED( oTbr )
|
|
|
|
dbSkip( -1 )
|
|
IF Bof()
|
|
dbGoto( nSaveRecNum )
|
|
lMoved := .F.
|
|
ENDIF
|
|
|
|
RETURN lMoved
|
|
|
|
//
|
|
|
|
STATIC FUNCTION VouBlockField( i )
|
|
|
|
RETURN {|| FieldGet( i ) }
|
|
|
|
// supporting functions ***************************
|
|
|
|
FUNCTION lMessage( cMsg )
|
|
|
|
// displays a message on MaxRow() and returns .T.
|
|
LOCAL cOldColor := SetColor( s_cStdColor )
|
|
@ MaxRow(), 0 SAY PadC( cMsg, MaxCol() + 1 )
|
|
SetColor( cOldColor )
|
|
|
|
RETURN .T.
|
|
|
|
FUNCTION lYesNo( cMsg )
|
|
|
|
// display cmsg with Yes/No option, returns .T. if Yes selected
|
|
LOCAL nTopLine, ;
|
|
nLeft := 5, ;
|
|
nBotLine := MaxRow() - 2, ;
|
|
nRight := MaxCol() - 5
|
|
LOCAL nChoice, nWidth
|
|
LOCAL oldCurs := SetCursor( SC_NONE )
|
|
LOCAL oldColor := SetColor( s_cStdColor )
|
|
|
|
hb_default( @cMsg, "Please Confirm" )
|
|
|
|
cmsg := " " + AllTrim( cmsg ) + " "
|
|
nWidth := Max( Len( cmsg ), Len( "Yes" ) )
|
|
nTopLine := nBotLine - 2 - 1
|
|
|
|
nLeft := Max( nLeft, ( ( nRight + nLeft ) * .5 ) - ( nWidth * .5 ) - 1 )
|
|
nRight := nLeft + nWidth + 1
|
|
|
|
// open window
|
|
znewwindow( hb_UTF8ToStrBox( "┌─┐│┘─└│" ), nTopLine, nLeft, nBotLine, nRight, cMsg )
|
|
|
|
@ nTopLine + 1, nLeft + 1 PROMPT PadR( "Yes", nWidth )
|
|
@ nTopLine + 2, nLeft + 1 PROMPT PadR( "No", nWidth )
|
|
MENU TO nChoice
|
|
|
|
// close window
|
|
zrevwindow()
|
|
|
|
SetCursor( oldCurs )
|
|
SetColor( oldColor )
|
|
|
|
RETURN nChoice == 1
|
|
|
|
FUNCTION lBoxMessage( cMsg, cTitle )
|
|
|
|
LOCAL nTopLine, ;
|
|
nLeft := 5, ;
|
|
nBotLine := MaxRow() - 2, ;
|
|
nRight := MaxCol() - 5
|
|
LOCAL nwidth, nmaxwidth, i, nNumLines, cAline
|
|
LOCAL oldCurs := SetCursor( SC_NONE )
|
|
LOCAL oldColor := SetColor( s_cStdColor )
|
|
|
|
hb_default( @cTitle, "Info" )
|
|
|
|
cmsg := AllTrim( cmsg )
|
|
nNumLines := MLCount( cmsg, ( nright - nleft ) - 1 )
|
|
nWidth := iif( nNumLines < 2, Len( cmsg ), nRight - nLeft - 1 )
|
|
nTopLine := nBotLine - nNumLines - 1
|
|
IF nTopLine < 0 // too many lines to display
|
|
nNumLines += nTopLine
|
|
nTopLine := 0
|
|
ENDIF
|
|
|
|
nMaxWidth := 0
|
|
FOR i := 1 TO nNumLines
|
|
nMaxWidth := Max( nMaxWidth, Len( RTrim( MemoLine( cmsg, nwidth, i ) ) ) )
|
|
NEXT
|
|
|
|
nLeft := Max( nLeft, Int( ( ( nRight + nLeft ) / 2 ) - ( nMaxWidth / 2 ) - 1 ) )
|
|
nRight := nLeft + nMaxWidth + 1
|
|
|
|
// open window
|
|
znewwindow( hb_UTF8ToStrBox( "┌─┐│┘─└│" ), nTopLine, nLeft, nBotLine, nRight, cTitle )
|
|
DispBegin()
|
|
FOR i := 1 TO nNumLines
|
|
cAline := MemoLine( cMsg, nWidth, i )
|
|
hb_DispOutAt( nTopLine + i, nLeft + 1, PadC( AllTrim( cAline ), nMaxWidth ) )
|
|
NEXT
|
|
DispEnd()
|
|
|
|
Inkey( 0 )
|
|
|
|
// close window
|
|
zrevwindow()
|
|
|
|
SetCursor( oldCurs )
|
|
SetColor( oldColor )
|
|
|
|
RETURN .T.
|
|
|
|
// Draw a new window on screen and register it in window list
|
|
// wtype : Window border type, eg. "┌─┐│┘─└│"
|
|
// r1,c1,r2,c2 : coordinates
|
|
// Return : Numeric id of the new window
|
|
FUNCTION ZNEWWINDOW( wtype, r1, c1, r2, c2, ctitle, ccolor )
|
|
|
|
LOCAL i := Len( s_zwin )
|
|
LOCAL cScreen := SaveScreen( r1, c1, r2, c2 )
|
|
LOCAL cOldColor := SetColor()
|
|
LOCAL nrow := Row(), ncol := Col()
|
|
|
|
hb_default( @ctitle, "" )
|
|
hb_default( @ccolor, s_cStdColor )
|
|
|
|
SetColor( ccolor )
|
|
|
|
wvw_nOpenWindow( ctitle, r1, c1, r2, c2 )
|
|
|
|
AAdd( s_zwin, { i + 1, r1, c1, r2, c2, cScreen, ctitle, nrow, ncol, coldcolor } )
|
|
|
|
SetColor( ccolor )
|
|
|
|
hb_Scroll( r1, c1, r2, c2 )
|
|
|
|
// GTWVW doesn't need box or textual title
|
|
hb_DispBox( r1, c1, r2, c2, wtype )
|
|
IF ! Empty( ctitle )
|
|
cTitle := " " + AllTrim( ctitle ) + " "
|
|
hb_DispOutAt( r1, nCeiling( ( c2 + c1 - Len( cTitle ) ) / 2 ), cTitle )
|
|
ENDIF
|
|
|
|
SetColor( cOldColor )
|
|
|
|
RETURN i + 1
|
|
|
|
// Closes the last window and remove it from window list
|
|
FUNCTION ZREVWINDOW()
|
|
|
|
LOCAL i := Len( s_zwin )
|
|
|
|
IF i == 0
|
|
// no window to close
|
|
RETURN NIL
|
|
ENDIF
|
|
|
|
wvw_lCloseWindow()
|
|
|
|
// restore states
|
|
RestScreen( s_zwin[ i ][ 2 ], s_zwin[ i ][ 3 ], s_zwin[ i ][ 4 ], s_zwin[ i ][ 5 ], s_zwin[ i ][ 6 ] )
|
|
SetPos( s_zwin[ i ][ 8 ], s_zwin[ i ][ 9 ] )
|
|
SetColor( s_zwin[ i ][ 10 ] )
|
|
|
|
// remove window from list
|
|
hb_ADel( s_zwin, i, .T. )
|
|
|
|
RETURN NIL
|
|
|
|
FUNCTION nCeiling( nNumber )
|
|
|
|
LOCAL nTemp
|
|
|
|
nTemp := nNumber - Int( nNumber ) // right of dec point
|
|
IF nTemp > 0
|
|
nNumber := Int( nNumber ) + 1
|
|
ELSE
|
|
nNumber := Int( nNumber )
|
|
ENDIF
|
|
|
|
RETURN nNumber
|