diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 61d066a3b4..1340746df9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,32 @@ The license applies to all entries newer than 2009-04-28. */ +2012-10-03 22:45 UTC+0200 Viktor Szakats (harbour syenar.net) + * website/* + + set eol-style to native for all text files + ! fixed inconsistent EOL in 3rd party .js files + + * contrib/hbct/tests/addascii.prg + * contrib/hbct/tests/ctwtest.prg + * contrib/hbct/tests/math.prg + * contrib/hbct/tests/num1.prg + * contrib/hbct/tests/trig.prg + * contrib/hbnf/clrsel.prg + * contrib/hbnf/menu1.prg + * contrib/hbnf/sqzn.prg + * tests/db_brows.prg + * tests/fsplit.prg + * tests/mathtest.prg + * tests/newrdd.prg + * tests/round.prg + * tests/say.prg + * tests/scroll.prg + * tests/teststr.prg + * tests/transtst.prg + * tests/wvtext.prg + ! fixed to use inkey.ch macros instead of literals + * corrected hbformat mistakes + 2012-10-03 16:01 UTC-0300 Vailton Renato (vailtom gmail com) * website/mailing.html * website/menu/harbour-menu.js diff --git a/harbour/contrib/hbct/tests/addascii.prg b/harbour/contrib/hbct/tests/addascii.prg index 141182a392..3fec35fb4c 100644 --- a/harbour/contrib/hbct/tests/addascii.prg +++ b/harbour/contrib/hbct/tests/addascii.prg @@ -66,39 +66,39 @@ PROCEDURE Main() ? "Simple tests:" ? [ This should be "1000": ] + addascii( "0000", 1, 1 ) ? [ This should be "0001": ] + addascii( "0000", 1 ) - ? [ This should be "BAAA": ] + addascii( "AAAA", - 255, 1 ) - ? [ This should be "AAAB": ] + addascii( "AAAA", - 255 ) + ? [ This should be "BAAA": ] + addascii( "AAAA", -255, 1 ) + ? [ This should be "AAAB": ] + addascii( "AAAA", -255 ) // csetref() tests ? ? "CSETREF tests:" ? " current csetref setting(should be .F.)................: ", csetref() - ? " return value of addascii([A],1,1) call(should be 'B'): ", addascii( "A",1,1 ) + ? " return value of addascii([A],1,1) call(should be 'B'): ", addascii( "A", 1, 1 ) ? " value of cStr..........................................: ", cStr - ? " return value of addascii(cStr,1,1) call...............: ", addascii( cStr,1,1 ) + ? " return value of addascii(cStr,1,1) call...............: ", addascii( cStr, 1, 1 ) ? " value of cStr is now...................................: ", cStr - ? " return value of addascii(@cStr,1,1) call..............: ", addascii( @cStr,1,1 ) + ? " return value of addascii(@cStr,1,1) call..............: ", addascii( @cStr, 1, 1 ) ? " value of cStr is now...................................: ", cStr - ? " return value of addascii(@cStr,-1,1) call.............: ", addascii( @cStr, - 1,1 ) + ? " return value of addascii(@cStr,-1,1) call.............: ", addascii( @cStr, -1, 1 ) ? " value of cStr is now...................................: ", cStr ? " return value of csetref(.T.)..........................: ", csetref( .T. ) - ? " return value of addascii([A],1,1) call................: ", addascii( "A",1,1 ) - ? " return value of addascii(cStr,1,1) call...............: ", addascii( cStr,1,1 ) + ? " return value of addascii([A],1,1) call................: ", addascii( "A", 1, 1 ) + ? " return value of addascii(cStr,1,1) call...............: ", addascii( cStr, 1, 1 ) ? " value of cStr is now...................................: ", cStr - ? " return value of addascii(@cStr,1,1) call..............: ", addascii( @cStr,1,1 ) + ? " return value of addascii(@cStr,1,1) call..............: ", addascii( @cStr, 1, 1 ) ? " value of cStr is now...................................: ", cStr - ? " return value of addascii(@cStr,-1,1) call.............: ", addascii( @cStr, - 1,1 ) + ? " return value of addascii(@cStr,-1,1) call.............: ", addascii( @cStr, -1, 1 ) ? " value of cStr is now...................................: ", cStr ? " return value of csetref(.F.)..........................: ", csetref( .F. ) // tests for the new 4th parameter ? ? "Carryover tests(new 4th parameter):" - ? " return value of addascii([AAAA],1,2,.T.) call('ABAA')....:", addascii( "AAAA",1,2, .T. ) - ? " return value of addascii([AAAA],257,2,.T.) call('BBAA')..:", addascii( "AAAA",257,2, .T. ) - ? " return value of addascii([AAAA],257,2,.F.) call('ABAA')..:", addascii( "AAAA",257,2, .F. ) - ? " return value of addascii([AAAA],258,,.T.) call('AABC')...:", addascii( "AAAA",258,, .T. ) - ? " return value of addascii([ABBA],-257,3,.T.) call('AAAA').:", addascii( "ABBA", - 257,3, .T. ) + ? " return value of addascii([AAAA],1,2,.T.) call('ABAA')....:", addascii( "AAAA", 1, 2, .T. ) + ? " return value of addascii([AAAA],257,2,.T.) call('BBAA')..:", addascii( "AAAA", 257, 2, .T. ) + ? " return value of addascii([AAAA],257,2,.F.) call('ABAA')..:", addascii( "AAAA", 257, 2, .F. ) + ? " return value of addascii([AAAA],258,,.T.) call('AABC')...:", addascii( "AAAA", 258,, .T. ) + ? " return value of addascii([ABBA],-257,3,.T.) call('AAAA').:", addascii( "ABBA", -257,3, .T. ) ? "End test of ADDASCII()" ? diff --git a/harbour/contrib/hbct/tests/ctwtest.prg b/harbour/contrib/hbct/tests/ctwtest.prg index 71f05e8571..a850cc150e 100644 --- a/harbour/contrib/hbct/tests/ctwtest.prg +++ b/harbour/contrib/hbct/tests/ctwtest.prg @@ -48,7 +48,7 @@ PROCEDURE Main() aWin[ i ] := wopen( y, x, y + 10, x + 20 ) wbox() - @ - 1, 0 SAY "TITLE " + hb_ntos( aWin[ i ] ) + @ -1, 0 SAY "TITLE " + hb_ntos( aWin[ i ] ) ? hb_ntos( Row() ) + ":" + hb_ntos( Col() ), "/", hb_ntos( MaxRow() ) + ":" + hb_ntos( MaxCol() ), "" ? hb_ntos( wrow() ) + ":" + hb_ntos( wcol() ), "/", hb_ntos( MaxRow( .T. ) ) + ":" + hb_ntos( MaxCol( .T. ) ), "" ? hb_ntos( wfrow() ) + ":" + hb_ntos( wfcol() ), "/", ; diff --git a/harbour/contrib/hbct/tests/math.prg b/harbour/contrib/hbct/tests/math.prg index 075e8b096b..b43788ff01 100644 --- a/harbour/contrib/hbct/tests/math.prg +++ b/harbour/contrib/hbct/tests/math.prg @@ -63,53 +63,53 @@ PROCEDURE Main() ? "Test of mathematical functions" ? - ? "FLOOR( 1.9) = 1 // CT3" + ? "FLOOR( 1.9 ) = 1 // CT3" ? Space( 4 ), FLOOR( 1.9 ), " <-- CT for Harbour" ? - ? "FLOOR( 1.1) = 1 // CT3" + ? "FLOOR( 1.1 ) = 1 // CT3" ? Space( 4 ), FLOOR( 1.1 ), " <-- CT for Harbour" ? - ? "FLOOR( 0.9) = 0 // CT3" + ? "FLOOR( 0.9 ) = 0 // CT3" ? Space( 4 ), FLOOR( 0.9 ), " <-- CT for Harbour" ? - ? "FLOOR( -0.1) = -1 // CT3" - ? Space( 6 ), FLOOR( - 0.1 ), " <-- CT for Harbour" + ? "FLOOR( -0.1 ) = -1 // CT3" + ? Space( 6 ), FLOOR( -0.1 ), " <-- CT for Harbour" ? - ? "FLOOR( -0.9) = -1 // CT3" - ? Space( 6 ), FLOOR( - 0.9 ), " <-- CT for Harbour" + ? "FLOOR( -0.9 ) = -1 // CT3" + ? Space( 6 ), FLOOR( -0.9 ), " <-- CT for Harbour" ? - ? "FLOOR( -1.1) = -2 // CT3" - ? Space( 6 ), FLOOR( - 1.1 ), " <-- CT for Harbour" + ? "FLOOR( -1.1 ) = -2 // CT3" + ? Space( 6 ), FLOOR( -1.1 ), " <-- CT for Harbour" ? WAIT4() - ? "CEILING( 1.9) = 2 // CT3" + ? "CEILING( 1.9 ) = 2 // CT3" ? Space( 6 ), CEILING( 1.9 ), " <-- CT for Harbour" ? - ? "CEILING( 1.1) = 2 // CT3" + ? "CEILING( 1.1 ) = 2 // CT3" ? Space( 6 ), CEILING( 1.1 ), " <-- CT for Harbour" ? - ? "CEILING( 0.9) = 1 // CT3" + ? "CEILING( 0.9 ) = 1 // CT3" ? Space( 6 ), CEILING( 0.9 ), " <-- CT for Harbour" ? - ? "CEILING( -0.1) = 0 // CT3" - ? Space( 7 ), CEILING( - 0.1 ), " <-- CT for Harbour" + ? "CEILING( -0.1 ) = 0 // CT3" + ? Space( 7 ), CEILING( -0.1 ), " <-- CT for Harbour" ? - ? "CEILING( -0.9) = 0 // CT3" - ? Space( 7 ), CEILING( - 0.9 ), " <-- CT for Harbour" + ? "CEILING( -0.9 ) = 0 // CT3" + ? Space( 7 ), CEILING( -0.9 ), " <-- CT for Harbour" ? - ? "CEILING( -1.1) = -1 // CT3" - ? Space( 8 ), CEILING( - 1.1 ), " <-- CT for Harbour" + ? "CEILING( -1.1 ) = -1 // CT3" + ? Space( 8 ), CEILING( -1.1 ), " <-- CT for Harbour" ? WAIT4() @@ -133,7 +133,7 @@ PROCEDURE Main() ? ? "SIGN( -258 ) = -1 // CT3" - ? Space( 6 ), SIGN( - 258 ), " <-- CT for Harbour" + ? Space( 6 ), SIGN( -258 ), " <-- CT for Harbour" ? WAIT4() diff --git a/harbour/contrib/hbct/tests/num1.prg b/harbour/contrib/hbct/tests/num1.prg index ea58c187bb..df52f6c778 100644 --- a/harbour/contrib/hbct/tests/num1.prg +++ b/harbour/contrib/hbct/tests/num1.prg @@ -68,12 +68,12 @@ PROCEDURE Main() ? Space( 11 ), CELSIUS( 338.0 ), " <-- CT for Harbour " ? - ? "CELSIUS( 3380.0) = 1860 // CT3" + ? "CELSIUS( 3380.0 ) = 1860 // CT3" ? Space( 12 ), CELSIUS( 3380.0 ), " <-- CT for Harbour " ? - ? "CELSIUS( -33.8) = -36.5555.. // CT3" - ? Space( 10 ), CELSIUS( - 33.8 ), " <-- CT for Harbour " + ? "CELSIUS( -33.8 ) = -36.5555.. // CT3" + ? Space( 10 ), CELSIUS( -33.8 ), " <-- CT for Harbour " ? ? "FAHRENHEIT( 12.5 ) = 54.5 // CT3" @@ -88,7 +88,7 @@ PROCEDURE Main() ? Space( 14 ), FAHRENHEIT( 1250 ), " <-- CT for Harbour " ? ? "FAHRENHEIT( -155 ) = -247 // CT3" - ? Space( 14 ), FAHRENHEIT( - 155 ), " <-- CT for Harbour " + ? Space( 14 ), FAHRENHEIT( -155 ), " <-- CT for Harbour " ? ? " PRESS ANY KEY" diff --git a/harbour/contrib/hbct/tests/trig.prg b/harbour/contrib/hbct/tests/trig.prg index 4589b7d7cc..de45ec0e73 100644 --- a/harbour/contrib/hbct/tests/trig.prg +++ b/harbour/contrib/hbct/tests/trig.prg @@ -73,19 +73,19 @@ PROCEDURE Main() ? ? "PI = " + Str( PI(), 18, 15 ) - ? "STR( SIN( PI() /4 ), 18, 15 ) = 0.707106781186548 // CT3" - ? Space( 32 ) + Str( SIN( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( SIN( PI() / 4 ), 18, 15 ) = 0.707106781186548 // CT3" + ? Space( 32 ) + Str( SIN( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( SIN( PI() /2 ), 18, 15 ) = 1.000000000000000 // CT3" - ? Space( 32 ) + Str( SIN( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( SIN( PI() / 2 ), 18, 15 ) = 1.000000000000000 // CT3" + ? Space( 32 ) + Str( SIN( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( SIN( PI() *99.5 ), 18, 15 ) = -1.000000000000000 // CT3" + ? "STR( SIN( PI() * 99.5 ), 18, 15 ) = -1.000000000000000 // CT3" ? Space( 35 ) + Str( SIN( PI() * 99.5 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( SIN( PI() /9 ), 18, 15 ) = 0.342020143325669 // CT3" + ? "STR( SIN( PI() / 9 ), 18, 15 ) = 0.342020143325669 // CT3" ? Space( 32 ) + Str( SIN( PI() / 9 ), 18, 15 ) + " <-- CT for Harbour" WAIT4() @@ -95,19 +95,19 @@ PROCEDURE Main() ? Space( 26 ) + Str( COS( 0 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COS( PI() /4 ), 18, 15 ) = 0.707106781186548 // CT3" - ? Space( 32 ) + Str( COS( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COS( PI() / 4 ), 18, 15 ) = 0.707106781186548 // CT3" + ? Space( 32 ) + Str( COS( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COS( PI() /2 ), 18, 15 ) = 0.000000000000000 // CT3" - ? Space( 32 ) + Str( COS( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COS( PI() / 2 ), 18, 15 ) = 0.000000000000000 // CT3" + ? Space( 32 ) + Str( COS( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COS( PI() *99.5 ), 18, 15 ) = 0.000000000000000 // CT3" + ? "STR( COS( PI() * 99.5 ), 18, 15 ) = 0.000000000000000 // CT3" ? Space( 34 ) + Str( COS( PI() * 99.5 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COS( PI() /9 ), 18, 15 ) = 0.939692620785908 // CT3" + ? "STR( COS( PI() / 9 ), 18, 15 ) = 0.939692620785908 // CT3" ? Space( 32 ) + Str( COS( PI() / 9 ), 18, 15 ) + " <-- CT for Harbour" ? @@ -119,11 +119,11 @@ PROCEDURE Main() ? Space( 26 ) + Str( TAN( 0 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( TAN( PI() /4 ), 18, 15 ) = 1.000000000000000 // CT3" - ? Space( 32 ) + Str( TAN( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( TAN( PI() / 4 ), 18, 15 ) = 1.000000000000000 // CT3" + ? Space( 32 ) + Str( TAN( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( TAN( PI() /9 ), 18, 15 ) = 0.363970234266202 // CT3" + ? "STR( TAN( PI() / 9 ), 18, 15 ) = 0.363970234266202 // CT3" ? Space( 32 ) + Str( TAN( PI() / 9 ), 18, 15 ) + " <-- CT for Harbour" ? ? @@ -137,22 +137,22 @@ PROCEDURE Main() ? Space( 29 ) + Str( ACOS( 0.7 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( ATAN( PI() /4 ), 18, 15 ) = 0.665773750028354 // CT3" - ? Space( 33 ) + Str( ATAN( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( ATAN( PI() / 4 ), 18, 15 ) = 0.665773750028354 // CT3" + ? Space( 33 ) + Str( ATAN( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? WAIT4() - ? "STR( COT( PI() /4 ), 18, 15 ) = 1.000000000000000 // CT3" - ? Space( 32 ) + Str( COT( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COT( PI() / 4 ), 18, 15 ) = 1.000000000000000 // CT3" + ? Space( 32 ) + Str( COT( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COT( PI() /2 ), 18, 15 ) = 0.000000000000000 // CT3" - ? Space( 32 ) + Str( COT( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COT( PI() / 2 ), 18, 15 ) = 0.000000000000000 // CT3" + ? Space( 32 ) + Str( COT( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COT( PI() /9 ), 18, 15 ) = 2.747477419454622 // CT3" + ? "STR( COT( PI() / 9 ), 18, 15 ) = 2.747477419454622 // CT3" ? Space( 32 ) + Str( COT( PI() / 9 ), 18, 15 ) + " <-- CT for Harbour" ? @@ -160,55 +160,55 @@ PROCEDURE Main() ?? "Testing Hiperbolic Sine..." ? - ? "STR( SINH( PI() /2 ), 18, 15 ) = 2.301298902307295 // CT3" - ? Space( 33 ) + Str( SINH( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( SINH( PI() / 2 ), 18, 15 ) = 2.301298902307295 // CT3" + ? Space( 33 ) + Str( SINH( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( SINH( PI() /4 ), 18, 15 ) = 0.868670961486010 // CT3" - ? Space( 33 ) + Str( SINH( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( SINH( PI() / 4 ), 18, 15 ) = 0.868670961486010 // CT3" + ? Space( 33 ) + Str( SINH( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? ? "Testing Hiperbolic Cosine..." ? - ? "STR( COSH( PI() /2 ), 18, 15 ) = 2.509178478658057 // CT3" - ? Space( 33 ) + Str( COSH( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COSH( PI() / 2 ), 18, 15 ) = 2.509178478658057 // CT3" + ? Space( 33 ) + Str( COSH( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( COSH( PI() /4 ), 18, 15 ) = 1.324609089252006 // CT3" - ? Space( 33 ) + Str( COSH( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( COSH( PI() / 4 ), 18, 15 ) = 1.324609089252006 // CT3" + ? Space( 33 ) + Str( COSH( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? ? "Testing Hiperbolic Tangent..." ? - ? "STR( TANH( PI() /2 ), 18, 15 ) = 0.917152335667274 // CT3" - ? Space( 33 ) + Str( TANH( PI() /2 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( TANH( PI() / 2 ), 18, 15 ) = 0.917152335667274 // CT3" + ? Space( 33 ) + Str( TANH( PI() / 2 ), 18, 15 ) + " <-- CT for Harbour" ? - ? "STR( TANH( PI() /4 ), 18, 15 ) = 0.655794202632672 // CT3" - ? Space( 33 ) + Str( TANH( PI() /4 ), 18, 15 ) + " <-- CT for Harbour" + ? "STR( TANH( PI() / 4 ), 18, 15 ) = 0.655794202632672 // CT3" + ? Space( 33 ) + Str( TANH( PI() / 4 ), 18, 15 ) + " <-- CT for Harbour" ? WAIT4() ? "Testing Degree TO Radian..." ? - ? "STR( DTOR( 360), 18, 15 ) = 6.283185307179588 // CT3" + ? "STR( DTOR( 360 ), 18, 15 ) = 6.283185307179588 // CT3" ? Space( 27 ) + Str( DTOR( 360 ), 18, 15 ), " <-- CT for Harbour " ? - ? "STR( DTOR( 180), 18, 15 ) = 3.141592653589794 // CT3" + ? "STR( DTOR( 180 ), 18, 15 ) = 3.141592653589794 // CT3" ? Space( 27 ) + Str( DTOR( 180 ), 18, 15 ), " <-- CT for Harbour " ? - ? "STR( DTOR( 180.5), 18, 15 ) = 3.150319299849766 // CT3" + ? "STR( DTOR( 180.5 ), 18, 15 ) = 3.150319299849766 // CT3" ? Space( 29 ) + Str( DTOR( 180.5 ), 18, 15 ), " <-- CT for Harbour " ? - ? "STR( DTOR( 720), 18, 15 ) = 12.566370614359180 // CT3" + ? "STR( DTOR( 720 ), 18, 15 ) = 12.566370614359180 // CT3" ? Space( 28 ) + Str( DTOR( 720 ), 18, 15 ), " <-- CT for Harbour " ? - ? "STR( DTOR( -180), 18, 15 ) = -3.141592653589794 // CT3" - ? Space( 29 ) + Str( DTOR( - 180 ), 18, 15 ), " <-- CT for Harbour " + ? "STR( DTOR( -180 ), 18, 15 ) = -3.141592653589794 // CT3" + ? Space( 29 ) + Str( DTOR( -180 ), 18, 15 ), " <-- CT for Harbour " WAIT4() @@ -218,14 +218,14 @@ PROCEDURE Main() ? "RTOD( PI() ) = 180 // CT3 " ? Space( 7 ), RTOD( PI() ), " <-- CT for Harbour " - ? "RTOD( 2 * PI()) = 360 // CT3 " + ? "RTOD( 2 * PI() ) = 360 // CT3 " ? Space( 10 ), RTOD( 2 * PI() ), " <-- CT for Harbour " - ? "RTOD( 4 * PI()) = 720 // CT3 " + ? "RTOD( 4 * PI() ) = 720 // CT3 " ? Space( 10 ), RTOD( 4 * PI() ), " <-- CT for Harbour " ? "RTOD( -PI() ) = -180 // CT3" - ? Space( 9 ), RTOD( - PI() ), " <-- CT for Harbour " + ? Space( 9 ), RTOD( -PI() ), " <-- CT for Harbour " ? WAIT4() @@ -243,10 +243,10 @@ PROCEDURE Main() ? "x = SIN( DTOR( 30 ) ) =", x ? "y = COS( DTOR( 30 ) ) =", y ? - ? "STR( ATN2( x, y ), 18, 15 ) = 0.523598775598299 // CT3" + ? "STR( ATN2( x, y ), 18, 15 ) = 0.523598775598299 // CT3" ? Space( 31 ) + Str( ATN2( x, y ), 18, 15 ) + " <-- CT for Harbour" ? - ? "RTOD( ATN2( x, y)) =" + Str( RTOD( ATN2( x,y ) ), 18, 4 ) + " <-- CT for Harbour" + ? "RTOD( ATN2( x, y ) ) =" + Str( RTOD( ATN2( x,y ) ), 18, 4 ) + " <-- CT for Harbour" ? WAIT4() diff --git a/harbour/contrib/hbnf/clrsel.prg b/harbour/contrib/hbnf/clrsel.prg index 4eb1732f77..2c9aed9f89 100644 --- a/harbour/contrib/hbnf/clrsel.prg +++ b/harbour/contrib/hbnf/clrsel.prg @@ -138,9 +138,9 @@ FUNCTION FT_ClrSel( aClrs, lColour, cChr ) ) //.... determine co-ordinates for the achoice window - nT := Max( Int( ( 18 - Len( aPrompt ) ) /2 ) - 1, 1 ) + nT := Max( Int( ( 18 - Len( aPrompt ) ) / 2 ) - 1, 1 ) nB := Min( nT + Len( aPrompt ) + 1, 17 ) - nL := Max( Int( ( 27 - nLen ) /2 ) - 2, 1 ) + nL := Max( Int( ( 27 - nLen ) / 2 ) - 2, 1 ) nR := Min( nL + nLen + 3, 26 ) //.... set up the window for aChoice @@ -232,7 +232,7 @@ STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) nLen := Max( nLen, Len( aOpt[ C_NAME ] ) + 2 ) nT := iif( aOpt[ C_TYPE ] == "M", 18, 19 ) nB := nT + Len( aPrompt ) + 1 - nL := Max( Int( ( 27 - nLen ) /2 ) - 2, 1 ) + nL := Max( Int( ( 27 - nLen ) / 2 ) - 2, 1 ) nR := Min( nL + nLen + 3, 26 ) //.... set up the window for prompt diff --git a/harbour/contrib/hbnf/menu1.prg b/harbour/contrib/hbnf/menu1.prg index 3897246a30..d84be878ac 100644 --- a/harbour/contrib/hbnf/menu1.prg +++ b/harbour/contrib/hbnf/menu1.prg @@ -240,7 +240,7 @@ STATIC FUNCTION _ftBailOut( cBorder, cBox ) sOldScreen := SaveScreen( t_nMaxRow / 2 - 1, 24, t_nMaxRow / 2 + 2, 55 ) cOldColor := SetColor( cBorder ) hb_Shadow( t_nMaxRow / 2 - 1, 24, t_nMaxRow / 2 + 2, 55 ) - @ t_nMaxRow / 2 - 1, 24, t_nMaxRow/2 + 2, 55 BOX hb_UTF8ToStrBox( "╔═╗║╝═╚║ " ) + @ t_nMaxRow / 2 - 1, 24, t_nMaxRow / 2 + 2, 55 BOX hb_UTF8ToStrBox( "╔═╗║╝═╚║ " ) SetColor( cBox ) @ t_nMaxRow / 2, 26 SAY "Press ESCape To Confirm Exit" @ t_nMaxRow / 2 + 1, 27 SAY "Or Any Other Key To Resume" diff --git a/harbour/contrib/hbnf/sqzn.prg b/harbour/contrib/hbnf/sqzn.prg index d5d859176f..2bc9991aae 100644 --- a/harbour/contrib/hbnf/sqzn.prg +++ b/harbour/contrib/hbnf/sqzn.prg @@ -44,7 +44,7 @@ FUNCTION ft_unsqzn( cCompressed, nSize, nDecimals ) nSize := iif( nSize == NIL, 10, nSize ) nDecimals := iif( nDecimals == NIL, 0, nDecimals ) - cCompressed := iif( multi == - 1, hb_BSubStr( cCompressed, 2 ), cCompressed ) + cCompressed := iif( multi == -1, hb_BSubStr( cCompressed, 2 ), cCompressed ) nSize := iif( nSize / 2 != Int( nSize / 2 ), nSize + 1, nSize ) IF hb_BCode( cCompressed ) > 127 tmp := Str( hb_BCode( cCompressed ) - 128, 2 ) diff --git a/harbour/tests/db_brows.prg b/harbour/tests/db_brows.prg index 083c398606..72669e36fd 100644 --- a/harbour/tests/db_brows.prg +++ b/harbour/tests/db_brows.prg @@ -33,8 +33,8 @@ /* UTF-8 */ #include "fileio.ch" +#include "inkey.ch" -#define LI_LEN 42 #define LI_NSTR mslist[ 1 ] #define LI_CLR mslist[ 2 ] // Color of a window #define LI_CLRV mslist[ 3 ] // Color of a current line @@ -77,6 +77,7 @@ #define LI_XPOS mslist[ 40 ] #define LI_MSED mslist[ 41 ] #define LI_COLCOUNT mslist[ 42 ] +#define LI_LEN 42 MEMVAR str_barbox MEMVAR str_bar @@ -102,11 +103,11 @@ PROCEDURE Main( filename ) DO WHILE vybkey != 0 vybkey := DBFLIST( , 3, 1, 76, 20, filename ) DO CASE - CASE vybkey == 13 // Enter + CASE vybkey == K_ENTER // ... - CASE vybkey == - 2 // F3 + CASE vybkey == K_F3 // ... - CASE vybkey == - 4 // F5 + CASE vybkey == K_F5 // ... ENDCASE ENDDO @@ -205,7 +206,7 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) @ LI_Y1, ( LI_X2 - LI_X1 - 1 - Len( title ) ) / 2 + LI_X1 SAY " " + title + " " ENDIF IF title != NIL .AND. LI_NAMES != NIL - LI_Y1 ++ + LI_Y1++ ENDIF razmer := LI_Y2 - LI_Y1 - 1 IF ! LI_PRFLT @@ -262,14 +263,14 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) #endif // IF LI_LVIEW - xkey := 27 + xkey := K_ESC ELSE #ifdef VER_MOUSE xkey := IN_KM( .F. ) IF xkey == 502 DO WHILE M_STAT() != 0 ENDDO - xkey := 27 + xkey := K_ESC ELSEIF xkey == 501 ym := M_YTEXT() xm := M_XTEXT() @@ -308,11 +309,11 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) VIVSTR( mslist, LI_NSTR + LI_Y1, 0 ) IF xkey < 500 DO CASE - CASE xkey == 24 + CASE xkey == K_DOWN IF ( LI_KOLZ > 0 .OR. predit == 3 ) .AND. ( LI_KOLZ == 0 .OR. ! Eval( LI_BEOF, mslist ) ) Eval( LI_BSKIP, mslist, 1 ) IF Eval( LI_BEOF, mslist ) .AND. ( predit < 3 .OR. LI_PRFLT ) - Eval( LI_BSKIP, mslist, - 1 ) + Eval( LI_BSKIP, mslist, -1 ) ELSE IF Eval( LI_BEOF, mslist ) vartmp := LI_NLEFT @@ -320,14 +321,14 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) LI_COLPOS := LI_LEFTVISIBLE LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT ) IF vartmp > LI_LEFTVISIBLE - Eval( LI_BSKIP, mslist, - 1 ) - Eval( LI_BSKIP, mslist, - ( LI_NSTR - 1 ) ) + Eval( LI_BSKIP, mslist, -1 ) + Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) ) WNDVIVOD( mslist ) Eval( LI_BSKIP, mslist, LI_NSTR - 1 ) Eval( LI_BSKIP, mslist ) ENDIF ENDIF - LI_NSTR ++ + LI_NSTR++ IF LI_NSTR > razmer LI_NSTR := razmer Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, 1 ) @@ -338,29 +339,29 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) ENDIF ENDIF ENDIF - CASE xkey == 5 .AND. LI_KOLZ > 0 - Eval( LI_BSKIP, mslist, - 1 ) + CASE xkey == K_UP .AND. LI_KOLZ > 0 + Eval( LI_BSKIP, mslist, -1 ) IF Eval( LI_BBOF, mslist ) Eval( LI_BGTOP, mslist ) ELSE - LI_NSTR -- + LI_NSTR-- IF LI_NSTR == 0 LI_NSTR := 1 - Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, - 1 ) + Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, -1 ) VIVSTR( mslist, LI_Y1 + 1, 0 ) ENDIF ENDIF - CASE xkey == 4 .AND. LI_KOLZ != 0 + CASE xkey == K_RIGHT .AND. LI_KOLZ != 0 IF predit > 1 IF LI_COLPOS < LI_NCOLUMNS - LI_COLPOS ++ + LI_COLPOS++ LOOP ENDIF ENDIF IF LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT i := LI_NLEFT + LI_NCOLUMNS DO WHILE LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT .AND. LI_NLEFT + LI_NCOLUMNS == i - LI_NLEFT ++ + LI_NLEFT++ // DO MSFNEXT WITH mslist,LI_NLEFT LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT ) ENDDO @@ -370,58 +371,58 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) Eval( LI_BSKIP, mslist, LI_NSTR - 1 ) ENDIF VIVNAMES( mslist, LI_NLEFT ) - CASE xkey == 19 + CASE xkey == K_LEFT IF predit > 1 IF LI_COLPOS != 1 - LI_COLPOS -- + LI_COLPOS-- LOOP ENDIF ENDIF IF LI_NLEFT > LI_LEFTVISIBLE - LI_NLEFT -- + LI_NLEFT-- // DO MSFBACK WITH mslist,LI_NLEFT LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT ) LI_COLPOS := 1 - Eval( LI_BSKIP, mslist, - ( LI_NSTR - 1 ) ) + Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) ) WNDVIVOD( mslist ) Eval( LI_BSKIP, mslist, LI_NSTR - 1 ) ENDIF VIVNAMES( mslist, LI_NLEFT ) - CASE xkey == 3 // PgDn + CASE xkey == K_PGDN Eval( LI_BSKIP, mslist, razmer - LI_NSTR + 1 ) LI_NSTR := 1 IF Eval( LI_BEOF, mslist ) - Eval( LI_BSKIP, mslist, - 1 ) + Eval( LI_BSKIP, mslist, -1 ) ENDIF WNDVIVOD( mslist ) - CASE xkey == 18 // PgUp + CASE xkey == K_PGUP IF LI_NSTR > 1 - Eval( LI_BSKIP, mslist, - ( LI_NSTR - 1 ) ) + Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) ) LI_NSTR := 1 ELSE - Eval( LI_BSKIP, mslist, - razmer ) + Eval( LI_BSKIP, mslist, -razmer ) IF Eval( LI_BBOF, mslist ) Eval( LI_BGTOP, mslist ) ENDIF WNDVIVOD( mslist ) ENDIF - CASE xkey == 6 .AND. LI_KOLZ > 0 // End + CASE xkey == K_END .AND. LI_KOLZ > 0 Eval( LI_BGBOT, mslist ) - Eval( LI_BSKIP, mslist, - ( razmer - 1 ) ) + Eval( LI_BSKIP, mslist, -( razmer - 1 ) ) IF Eval( LI_BBOF, mslist ) Eval( LI_BGTOP, mslist ) ENDIF LI_NSTR := WNDVIVOD( mslist ) Eval( LI_BSKIP, mslist, LI_NSTR - 1 ) - CASE xkey == 1 .AND. LI_KOLZ > 0 // Home + CASE xkey == K_HOME .AND. LI_KOLZ > 0 LI_NSTR := 1 Eval( LI_BGTOP, mslist ) WNDVIVOD( mslist ) - CASE xkey == 13 .AND. predit < 2 // Enter + CASE xkey == K_ENTER .AND. predit < 2 rez := .F. rezproc := xkey - CASE ( xkey == 13 .OR. ( xkey > 47 .AND. xkey < 58 ) .OR. ( xkey > 64 .AND. xkey < 91 ) ; - .OR. ( xkey > 96 .AND. xkey < 123 ) .OR. ( xkey > 127 .AND. xkey < 176 ) .OR. ( xkey > 223 .AND. xkey < 240 ) ) .AND. predit > 1 // Enter + CASE ( xkey == K_ENTER .OR. ( xkey > 47 .AND. xkey < 58 ) .OR. ( xkey > 64 .AND. xkey < 91 ) ; + .OR. ( xkey > 96 .AND. xkey < 123 ) .OR. ( xkey > 127 .AND. xkey < 176 ) .OR. ( xkey > 223 .AND. xkey < 240 ) ) .AND. predit > 1 fipos := LI_COLPOS + LI_NLEFT - 1 - LI_FREEZE IF LI_WHEN == NIL .OR. Len( LI_WHEN ) < fipos .OR. LI_WHEN[ fipos ] == NIL .OR. Eval( LI_WHEN[ fipos ] ) IF ValType( LI_MSED ) != "N" @@ -436,7 +437,7 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) ENDIF SET CURSOR ON SetColor( LI_CLRV + "," + LI_CLRV ) - IF xkey != 13 + IF xkey != K_ENTER KEYBOARD Chr( xkey ) + GetBuf() ENDIF vartmp := ReadExit( .T. ) @@ -446,7 +447,7 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) Getlist[ 1 ] :postBlock := LI_VALID[ fipos ] ENDIF READ - IF LastKey() != 27 .AND. Updated() + IF LastKey() != K_ESC .AND. Updated() IF Eval( LI_BEOF, mslist ) APPEND BLANK LI_KOLZ := Eval( LI_RCOU, mslist ) @@ -466,23 +467,23 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey ) UNLOCK ENDIF ENDIF - IF ( LastKey() == 27 .OR. ! Updated() ) .AND. Eval( LI_BEOF, mslist ) + IF ( LastKey() == K_ESC .OR. ! Updated() ) .AND. Eval( LI_BEOF, mslist ) SetColor( LI_CLR ) @ LI_NSTR + LI_Y1, LI_X1 + 1 CLEAR TO LI_NSTR + LI_Y1, LI_X2 - 1 - LI_NSTR -- - Eval( LI_BSKIP, mslist, - 1 ) + LI_NSTR-- + Eval( LI_BSKIP, mslist, -1 ) ELSE - IF ( vartmp := LastKey() ) != 13 .AND. vartmp != 27 .AND. vartmp < 32 + IF ( vartmp := LastKey() ) != K_ENTER .AND. vartmp != K_ESC .AND. vartmp < 32 KEYBOARD Chr( vartmp ) ENDIF ENDIF ReadExit( vartmp ) SET CURSOR OFF ENDIF - CASE xkey == 27 // Esc + CASE xkey == K_ESC rez := .F. rezproc := 0 - CASE xkey == - 1 .AND. ( maskey == NIL .OR. AScan( maskey, xkey ) == 0 ) // F2 + CASE xkey == K_F2 .AND. ( maskey == NIL .OR. AScan( maskey, xkey ) == 0 ) IF predit == 1 predit := predxx ELSEIF predit > 1 @@ -560,7 +561,7 @@ FUNCTION FLDCOUNT( mslist, xstrt, xend, fld1 ) IF xstrt > xend EXIT ENDIF - klf ++ + klf++ i := iif( i == LI_FREEZE, fld1, i + 1 ) xstrt += 2 IF i > LI_COLCOUNT @@ -598,7 +599,7 @@ FUNCTION VIVNAMES( mslist ) x := x + Max( Len( FLDSTR( mslist, fif ) ), Len( LI_NAMES[ fif ] ) ) + 1 fif := iif( fif == LI_FREEZE, LI_NLEFT, fif + 1 ) // DO MSFNEXT WITH mslist,fif - i ++ + i++ ENDDO IF LI_NMCLR != NIL SetColor( oldc ) @@ -628,7 +629,7 @@ FUNCTION WNDVIVOD( mslist ) @ LI_Y1 + 1, LI_X1 + 1 CLEAR TO LI_Y2 - 1, LI_X2 - 1 DO WHILE .T. VIVSTR( mslist, nstr + LI_Y1, 0 ) - nstr ++ + nstr++ Eval( LI_BSKIP, mslist, 1 ) IF nstr > LI_Y2 - LI_Y1 - 1 .OR. Eval( LI_BEOF, mslist ) EXIT @@ -839,4 +840,4 @@ FUNCTION NUM_STR( NOM, KOLZN ) NOM := Int( NOM ) - RETURN Replicate( "0", KOLZN - Len( LTrim( Str( NOM ) ) ) ) + LTrim( Str( NOM ) ) + RETURN Replicate( "0", KOLZN - Len( hb_ntos( NOM ) ) ) + hb_ntos( NOM ) diff --git a/harbour/tests/fsplit.prg b/harbour/tests/fsplit.prg index 9aecc679be..8cdff12bfe 100644 --- a/harbour/tests/fsplit.prg +++ b/harbour/tests/fsplit.prg @@ -52,9 +52,9 @@ FUNCTION fsplit( csource, csplit, nbyte ) // open the source file BEGIN SEQUENCE - IF ( hsource := FOpen( csource,FO_READ + FO_SHARED ) ) != F_ERROR + IF ( hsource := FOpen( csource, FO_READ + FO_SHARED ) ) != F_ERROR // is file size smaller than chunk size ? - IF ( nfilesize := FSeek( hsource, 0 , FS_END ) ) <= nbyte + IF ( nfilesize := FSeek( hsource, 0, FS_END ) ) <= nbyte Alert( "***** Error *****;File Size Is Smaller Than Chunk Size;" + "Source Size = " + hb_ntos( nfilesize ) + " Chunk Size = " + hb_ntos( nbyte ), { " Okay " }, "w+/b" ) FClose( hsource ) break @@ -71,7 +71,7 @@ FUNCTION fsplit( csource, csplit, nbyte ) ccommand := "copy /b " // line in join.bat ccommand += cdestination + "+" // line in join.bat hdestination := FCreate( cdestination ) // create 1st split file - IF hdestination != - 1 + IF hdestination != F_ERROR nbufsize *= 1024 // buffer size cbuffer := Space( nbufsize ) // buffer read/write AAdd( afile, cbat ) @@ -96,7 +96,7 @@ FUNCTION fsplit( csource, csplit, nbyte ) ENDDO FClose( hsource ) // close source file FClose( hdestination ) // close split file - ccommand := Left( ccommand, RAt( "+",ccommand ) - 1 ) + " " // line in join.bat + ccommand := Left( ccommand, RAt( "+", ccommand ) - 1 ) + " " // line in join.bat ccommand += csource + cret // line in join.bat ctmp += "rem the following files should be placed in a directory" + Chr( 13 ) + Chr( 10 ) FOR i := 2 TO Len( afile ) @@ -113,7 +113,7 @@ FUNCTION fsplit( csource, csplit, nbyte ) ctmp += "goto end" + cret FOR i := 2 TO nfile ctmp += ":error" + hb_ntos( i - 1 ) + cret - ctmp += "echo " + cret + ctmp += "echo " + Chr( 7 ) + cret ctmp += "echo missing file " + afile[ i ] + cret ctmp += "goto end" + cret NEXT @@ -129,10 +129,10 @@ FUNCTION fsplit( csource, csplit, nbyte ) ? "Done in " + hb_ntos( Seconds() - nseconds ) + " seconds." ? "To restore, type JOIN" ELSE - break + BREAK ENDIF ELSE - break + BREAK ENDIF RECOVER ? Chr( 7 ) diff --git a/harbour/tests/mathtest.prg b/harbour/tests/mathtest.prg index 30761871e0..a680ce7567 100644 --- a/harbour/tests/mathtest.prg +++ b/harbour/tests/mathtest.prg @@ -14,7 +14,7 @@ PROCEDURE Main() ? " I) Test with correct arguments:" ? " exp(0.0) == 1.00 ? ", Exp( 0.0 ) ? " exp(1.0) == 2.71(8)... ? ", Exp( 1.0 ) - ? " exp(-1.0) == 0.36(7)... ? ", Exp( - 1.0 ) + ? " exp(-1.0) == 0.36(7)... ? ", Exp( -1.0 ) ? ? " log(1.0) == 0.00 ? ", Log( 1.0 ) ? " log(2.7) == 0.99(3)... ? ", Log( 2.7 ) diff --git a/harbour/tests/newrdd.prg b/harbour/tests/newrdd.prg index 0f85b67ce0..cc859be84e 100644 --- a/harbour/tests/newrdd.prg +++ b/harbour/tests/newrdd.prg @@ -54,12 +54,12 @@ PROCEDURE Main() TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) @@ -89,12 +89,12 @@ PROCEDURE Main() TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) @@ -117,12 +117,12 @@ PROCEDURE Main() TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) ? "dbSkip( -1 ):" - dbSkip( - 1 ) + dbSkip( -1 ) ? "Bof Eof Found Deleted RecNo:", TESTDBF->( BOF() ), TESTDBF->( EOF() ), ; TESTDBF->( Found() ), TESTDBF->( Deleted() ), TESTDBF->( Deleted() ), ; TESTDBF->( RecNo() ) @@ -366,7 +366,7 @@ PROCEDURE Main() NEXT ? "..." NEWRDD->( dbGoBottom() ) - NEWRDD->( dbSkip( - 8 ) ) + NEWRDD->( dbSkip( -8 ) ) FOR nI := 1 TO 8 ? NEWRDD->FIRST, NEWRDD->AGE NEWRDD->( dbSkip() ) diff --git a/harbour/tests/round.prg b/harbour/tests/round.prg index cf75563944..f828c429a2 100644 --- a/harbour/tests/round.prg +++ b/harbour/tests/round.prg @@ -10,7 +10,7 @@ PROCEDURE Main() - LOCAL n, value := - 5 + LOCAL n, value := -5 FOR n := 1 TO 100 ? value,; diff --git a/harbour/tests/say.prg b/harbour/tests/say.prg index 40d975ec0c..a51e435fb0 100644 --- a/harbour/tests/say.prg +++ b/harbour/tests/say.prg @@ -12,8 +12,8 @@ PROCEDURE Main() @ 0, 0 SAY "Testing @ SAY with and without PICTURE clauses" @ 0, 60 SAY Date() SET CENTURY OFF - @ 2, 1 SAY - 1.25 - @ 2, 41 SAY - 1.25 PICTURE "@( 99,999.99" + @ 2, 1 SAY -1.25 + @ 2, 41 SAY -1.25 PICTURE "@( 99,999.99" @ 3, 1 SAY 1.25 PICTURE "@( 9,999.99" @ 3, 41 SAY 1.25 PICTURE "@( $9,999.99" @ 5, 1 SAY Date() diff --git a/harbour/tests/scroll.prg b/harbour/tests/scroll.prg index 5cdcf13850..07dee1d7e0 100644 --- a/harbour/tests/scroll.prg +++ b/harbour/tests/scroll.prg @@ -49,23 +49,23 @@ PROCEDURE Main() RestScreen( 10, 40, 23, 71, cT ) pause() - Scroll ( 1, 1, 11, 30, - 2, - 5 ) + Scroll( 1, 1, 11, 30, -2, -5 ) pause() - Scroll ( 1, 1, 11, 30, 2, 5 ) + Scroll( 1, 1, 11, 30, 2, 5 ) pause() - Scroll ( 1, 1, 11, 30, - 5, 2 ) + Scroll( 1, 1, 11, 30, -5, 2 ) pause() - Scroll ( 1, 1, 11, 30, 7, - 12 ) + Scroll( 1, 1, 11, 30, 7, -12 ) pause() SET COLOR TO "W+/R" - Scroll ( 1, 1, 11, 30, 0, 0 ) + Scroll( 1, 1, 11, 30, 0, 0 ) pause() RETURN FUNCTION pause() - DevPos ( MaxRow() - 2, 0 ) - __Accept ( "pause: " ) + DevPos( MaxRow() - 2, 0 ) + __Accept( "pause: " ) RETURN NIL diff --git a/harbour/tests/teststr.prg b/harbour/tests/teststr.prg index 644112b394..dcd2b5e7fa 100644 --- a/harbour/tests/teststr.prg +++ b/harbour/tests/teststr.prg @@ -100,11 +100,11 @@ PROCEDURE test() ? ?? "33: " - ?? Str( b, 20, - 10 ) + ?? Str( b, 20, -10 ) ? ?? "34: " - ?? Str( b, - 12, 7 ) + ?? Str( b, -12, 7 ) ? ?? "35: " diff --git a/harbour/tests/transtst.prg b/harbour/tests/transtst.prg index 3e135cf8a2..626835c372 100644 --- a/harbour/tests/transtst.prg +++ b/harbour/tests/transtst.prg @@ -52,17 +52,17 @@ PROC test() ? ? transtest( 134.24, "99,999.99", " 134.24" ) ? transtest( 134.24, "@E 99,999.99", " 134,24" ) - ? transtest( - 134.24, "@E 99,999.99", " -134,24" ) + ? transtest( -134.24, "@E 99,999.99", " -134,24" ) ? transtest( 134.24, "@E99,999.99", " 134,24" ) - ? transtest( - 134.24, "@E99,999.99", " -134,24" ) + ? transtest( -134.24, "@E99,999.99", " -134,24" ) ? - ? transtest( - 7, "@X 9999", " 7 DB" ) + ? transtest( -7, "@X 9999", " 7 DB" ) ? transtest( SToD( "19920509" ), "@E", "09/05/92" ) ? transtest( Val( "3.10" ), "@X", "3.10" ) ? transtest( 0.80, ".9999", ".8000" ) - ? transtest( - 0.80, ".9999", ".****" ) + ? transtest( -0.80, ".9999", ".****" ) ? transtest( 12345.123, "@X99", " 12345.123" ) - ? transtest( - 12345.123, "@X99", " 12345.123 DB" ) + ? transtest( -12345.123, "@X99", " 12345.123 DB" ) ? transtest( 123456.78, "@E", " 123456,78" ) ? transtest( 0, "@C 9.99", "0.00" ) stop() @@ -91,9 +91,9 @@ PROC test() stop() #endif - ? transtest( - 5, "@(Z $###,##9.99", "( 5.00)" ) - ? transtest( - 10, "@)Z $###,##9.99", "$ (10.00)" ) - ? transtest( - 20, "@Z $###,##9.99", "$ -20.00" ) + ? transtest( -5, "@(Z $###,##9.99", "( 5.00)" ) + ? transtest( -10, "@)Z $###,##9.99", "$ (10.00)" ) + ? transtest( -20, "@Z $###,##9.99", "$ -20.00" ) ? transtest( 100, "9999.", " 100." ) ? transtest( 1.1, "@B!99.99", "1.1 " ) ? transtest( 12.345, "@R 99/99", " /12" ) @@ -107,24 +107,24 @@ PROC test() ? transtest( 99, "*.***", "*.***" ) ? transtest( 12345, "9999.", "****." ) stop() - ? transtest( - 12345.00, "@(", "( 12345.00)" ) - ? transtest( - 12345.00, "@)", " (12345.00)" ) - ? transtest( - 123456789.00, "@(", "(123456789.00)" ) - ? transtest( - 123456789.00, "@)", "(123456789.00)" ) - ? transtest( - 1234567890, "@(", "( 1234567890)" ) - ? transtest( - 1234567890, "@)", " (1234567890)" ) - ? transtest( - 12345, "@( [999999]", "( 12345])" ) - ? transtest( - 12345, "@) [999999]", "[(12345])" ) - ? transtest( - 12345, "@( $999999", "( 12345)" ) - ? transtest( - 12345, "@) $999999", "$(12345)" ) - ? transtest( - 12345, "@( #999999", "( 12345)" ) - ? transtest( - 12345, "@) #999999", " (12345)" ) - ? transtest( - 12345, "@( $99999", "(12345)" ) - ? transtest( - 12345, "@) $99999", "(12345)" ) - ? transtest( - 12345, "@( #99999", "(12345)" ) - ? transtest( - 12345, "@) #99999", "(12345)" ) - ? transtest( - 12345, "@( 6798^999", "(7*8^***)" ) - ? transtest( - 12345, "@( 9798^9999", "(718^2345)" ) + ? transtest( -12345.00, "@(", "( 12345.00)" ) + ? transtest( -12345.00, "@)", " (12345.00)" ) + ? transtest( -123456789.00, "@(", "(123456789.00)" ) + ? transtest( -123456789.00, "@)", "(123456789.00)" ) + ? transtest( -1234567890, "@(", "( 1234567890)" ) + ? transtest( -1234567890, "@)", " (1234567890)" ) + ? transtest( -12345, "@( [999999]", "( 12345])" ) + ? transtest( -12345, "@) [999999]", "[(12345])" ) + ? transtest( -12345, "@( $999999", "( 12345)" ) + ? transtest( -12345, "@) $999999", "$(12345)" ) + ? transtest( -12345, "@( #999999", "( 12345)" ) + ? transtest( -12345, "@) #999999", " (12345)" ) + ? transtest( -12345, "@( $99999", "(12345)" ) + ? transtest( -12345, "@) $99999", "(12345)" ) + ? transtest( -12345, "@( #99999", "(12345)" ) + ? transtest( -12345, "@) #99999", "(12345)" ) + ? transtest( -12345, "@( 6798^999", "(7*8^***)" ) + ? transtest( -12345, "@( 9798^9999", "(718^2345)" ) stop() ? tofix() @@ -134,43 +134,43 @@ PROC test() PROC tofix() ? transtest( 134.24, "@E99,999.99", " 134,24" ) - ? transtest( - 134.24, "@E99,999.99", " -134,24" ) + ? transtest( -134.24, "@E99,999.99", " -134,24" ) ? transtest( 0.80, ".9999", ".8000" ) - ? transtest( - 0.80, ".9999", ".****" ) + ? transtest( -0.80, ".9999", ".****" ) ? transtest( 12345.123, "@X99", " 12345.123" ) - ? transtest( - 12345.123, "@X99", " 12345.123 DB" ) + ? transtest( -12345.123, "@X99", " 12345.123 DB" ) ? transtest( 123456.78, "@E", " 123456,78" ) ? transtest( 0, "@C 9.99", "0.00" ) ? transtest( 1.1, "@B!99.99", "1.1 " ) - ? transtest( - 12345, "@) [999999]", "[(12345])" ) - ? transtest( - 12345, "@) $999999", "$(12345)" ) - ? transtest( - 12345, "@) *999999", "*(12345)" ) - ? transtest( - 12345, "@) #999999", " (12345)" ) - ? transtest( - 12345, "@) *9$9*999]", "*($12345])" ) - ? transtest( - 12345, "@) *999*999]", "* (12345])" ) - ? transtest( - 12345, "@) 0999*999]", "0 (12345])" ) - ? transtest( - 12345, "@) 1999*999]", "1 (12345])" ) - ? transtest( - 12345, "@) *[99*999]", "([ 12345])" ) - ? transtest( - 12345, "@) *****999]", "(**12345])" ) - ? transtest( - 12345, "@) *1***999]", "(1*12345])" ) - ? transtest( - 12345, "@) * 999999]", "* (12345])" ) - ? transtest( - 5, "@(Z $###,##9.99", "( 5.00)" ) - ? transtest( - 10, "@)Z $###,##9.99", "$ (10.00)" ) - ? transtest( - 5, "@(Z $999,999.99", "( 5.00)" ) - ? transtest( - 10, "@)Z $999,999.99", "$ (10.00)" ) - ? transtest( - 5, "@(Z 999,999.99", "( 5.00)" ) - ? transtest( - 10, "@)Z 999,999.99", " (10.00)" ) - ? transtest( - 20, "@Z $###,##9.99", "$ -20.00" ) + ? transtest( -12345, "@) [999999]", "[(12345])" ) + ? transtest( -12345, "@) $999999", "$(12345)" ) + ? transtest( -12345, "@) *999999", "*(12345)" ) + ? transtest( -12345, "@) #999999", " (12345)" ) + ? transtest( -12345, "@) *9$9*999]", "*($12345])" ) + ? transtest( -12345, "@) *999*999]", "* (12345])" ) + ? transtest( -12345, "@) 0999*999]", "0 (12345])" ) + ? transtest( -12345, "@) 1999*999]", "1 (12345])" ) + ? transtest( -12345, "@) *[99*999]", "([ 12345])" ) + ? transtest( -12345, "@) *****999]", "(**12345])" ) + ? transtest( -12345, "@) *1***999]", "(1*12345])" ) + ? transtest( -12345, "@) * 999999]", "* (12345])" ) + ? transtest( -5, "@(Z $###,##9.99", "( 5.00)" ) + ? transtest( -10, "@)Z $###,##9.99", "$ (10.00)" ) + ? transtest( -5, "@(Z $999,999.99", "( 5.00)" ) + ? transtest( -10, "@)Z $999,999.99", "$ (10.00)" ) + ? transtest( -5, "@(Z 999,999.99", "( 5.00)" ) + ? transtest( -10, "@)Z 999,999.99", " (10.00)" ) + ? transtest( -20, "@Z $###,##9.99", "$ -20.00" ) ? transtest( 0.1, ".9", ".1" ) ? transtest( 0.0, ".9", ".0" ) ? transtest( 1, ".9", ".*" ) ? transtest( .456, ".9", ".5" ) ? transtest( 123, "99.-", "**.-" ) stop() - ? transtest( - 123.45, "999,999.99", " -123.45" ) - ? transtest( - 123456.78, "999,999,999.99", " -123,456.78" ) - ? transtest( - 123456.78, "$$$,$$$,$$$.$$", "$$ -123,456.78" ) - ? transtest( - 123456.78, "***,***,***.**", "***-123,456.78" ) + ? transtest( -123.45, "999,999.99", " -123.45" ) + ? transtest( -123456.78, "999,999,999.99", " -123,456.78" ) + ? transtest( -123456.78, "$$$,$$$,$$$.$$", "$$ -123,456.78" ) + ? transtest( -123456.78, "***,***,***.**", "***-123,456.78" ) ? transtest( 123456.78, "@E 888,$$$,$$$.$$", "888.123.456,78" ) ? transtest( 123456.78, "@E 888x,$$$,$$$.$$", "888xx123.456,78" ) ? transtest( 123456.78, "@E 888x,,$$$,$$$.$$", "888xxx123.456,78" ) @@ -205,10 +205,10 @@ PROC tofix() ? transtest( 123.345678912, "@E 999.99.99,99.99.", "123,34,67.89, ." ) #ifdef __HARBOUR__ ? transtest( 1234567890123456789, "99999999999999999999", " 1234567890123456789" ) - ? transtest( - 1234567890123456789, "99999999999999999999", "-1234567890123456789" ) + ? transtest( -1234567890123456789, "99999999999999999999", "-1234567890123456789" ) #else ? transtest( 1234567890123456789, "99999999999999999999", " 1234567890123457000" ) - ? transtest( - 1234567890123456789, "99999999999999999999", "-1234567890123457000" ) + ? transtest( -1234567890123456789, "99999999999999999999", "-1234567890123457000" ) #endif stop() SET( _SET_DATEFORMAT, "YYYY/MM/DD" ) @@ -233,8 +233,8 @@ PROC tofix() ? transtest( 1234, "" , " 1234" ) ? transtest( 1234, "@" , " 1234" ) ? transtest( 1234, "@!", " 1234" ) - ? transtest( - 1234, , " -1234" ) - ? transtest( - 1234, "@" , " -1234" ) + ? transtest( -1234, , " -1234" ) + ? transtest( -1234, "@" , " -1234" ) #ifdef HB_CLP_STRICT ? transtest( Round( 123,0 ), , " 123.00" ) ? transtest( Round( 123,0 ), "@!", " 123.00" ) @@ -246,8 +246,8 @@ PROC tofix() ? transtest( 1234.567, "", " 1234.57" ) ? transtest( 1234.567, "@" , " 1234.57" ) ? transtest( 1234.567, "@!", " 1234.57" ) - ? transtest( - 1234.567, , " -1234.57" ) - ? transtest( - 1234.567, "@", " -1234.57" ) + ? transtest( -1234.567, , " -1234.57" ) + ? transtest( -1234.567, "@", " -1234.57" ) ? transtest( Val( "-1.0" ), , "-1.00" ) ? transtest( Val( "-1.0" ), "@", "-1.00" ) ? transtest( Val( "-123" ), , " -123" ) @@ -273,12 +273,12 @@ PROC tofix() ? transtest( Val( "1234" ), , " 1234" ) SET FIXED OFF stop() - ? transtest( - 1234, , " -1234" ) - ? transtest( - 1234, "@B", "-1234 " ) - ? transtest( - 1234, "@(", "( 1234)" ) - ? transtest( - 1234, "@)", " (1234)" ) - ? transtest( - 1234, "@B)", "(1234) " ) - ? transtest( - 1234, "@B(", "(1234) " ) + ? transtest( -1234, , " -1234" ) + ? transtest( -1234, "@B", "-1234 " ) + ? transtest( -1234, "@(", "( 1234)" ) + ? transtest( -1234, "@)", " (1234)" ) + ? transtest( -1234, "@B)", "(1234) " ) + ? transtest( -1234, "@B(", "(1234) " ) ? transtest( "( 12)", "@B(", "( 12)" ) ? transtest( "( 12)", "@B)", "( 12)" ) ? transtest( " 12", "@B(", "12 " ) @@ -288,18 +288,18 @@ PROC tofix() ? transtest( 1234, "@0", "0000001234" ) ? transtest( 1234, "@L(", "0000001234" ) ? transtest( 1234, "@0)", "0000001234" ) - ? transtest( - 1234, "@L(", "(000001234)" ) - ? transtest( - 1234, "@0)", "(000001234)" ) + ? transtest( -1234, "@L(", "(000001234)" ) + ? transtest( -1234, "@0)", "(000001234)" ) /* please test it with FoxPro and Xbase++ to check if they give the same result */ - ? transtest( - 1234, "@L", "-000001234" ) - ? transtest( - 1234, "@0", "-000001234" ) + ? transtest( -1234, "@L", "-000001234" ) + ? transtest( -1234, "@0", "-000001234" ) #endif /* FlagShip extensions */ - ? transtest( - 1234, "@Z", " -1234" ) + ? transtest( -1234, "@Z", " -1234" ) ? transtest( 1234, "@Z", " 1234" ) - ? transtest( - 1234, "@F", " -1234" ) + ? transtest( -1234, "@F", " -1234" ) ? transtest( 1234, "@F", " 1234" ) - ? transtest( - 1234, "@T", " -1234" ) + ? transtest( -1234, "@T", " -1234" ) ? transtest( 1234, "@T", " 1234" ) ? transtest( 123456789.12, "@,39 999,999,999.99", "123,456,789.12" ) diff --git a/harbour/tests/wvtext.prg b/harbour/tests/wvtext.prg index b4af328bad..bca3a6be20 100644 --- a/harbour/tests/wvtext.prg +++ b/harbour/tests/wvtext.prg @@ -347,9 +347,9 @@ FUNCTION SetPalette( nMode ) THREAD STATIC t_nG := 198 THREAD STATIC t_nB := 198 - t_nR += iif( nMode == 0, - 5, 5 ) - t_nG += iif( nMode == 0, - 5, 5 ) - t_nB += iif( nMode == 0, - 5, 5 ) + t_nR += iif( nMode == 0, -5, 5 ) + t_nG += iif( nMode == 0, -5, 5 ) + t_nB += iif( nMode == 0, -5, 5 ) // Change "W" to slightly gray everytime you press F5 // @@ -513,7 +513,7 @@ STATIC FUNCTION TBPrev( oTbr ) HB_SYMBOL_UNUSED( oTbr ) - dbSkip( - 1 ) + dbSkip( -1 ) IF Bof() dbGoto( nSaveRecNum ) diff --git a/harbour/website/about.html b/harbour/website/about.html index cf074ee9b6..57255396ab 100644 --- a/harbour/website/about.html +++ b/harbour/website/about.html @@ -1,111 +1,111 @@ - - - - -Harbour Project - About - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - - - -
 
- - - - - - - - - - -
 About Harbour 
 Harbour is a compiler for the xBase superset language often referred to as Clipper (the language that is implemented by the compiler CA-Clipper). Harbour is a cross-platform compiler and is known to compile and run on:
    -
  • MS-DOS,
  • -
  • Windows (32 & 64),
  • -
  • Windows CE,
  • -
  • Pocket PC,
  • -
  • OS/2,
  • -
  • GNU/Linux,
  • -
  • Mac OSX.
  • -
- Harbour is a free and open-source project. It can be used to make open source applications, free or commercial products. To learn more about Harbour licence click here.
 
 
- - - - - - - - - - -
Why use it? 
 
    -
  • Because it is free software 100% compatible with Clipper compilers
  • -
  • Because it removes some of the limits imposed by the base implementation but the extent of this will depend on your chosen platform.
  • -
  • Because Harbour is proven to be stable, robust and efficient.
  • -
  • Because Harbour supports RDDs (Replaceable Database Drivers) to allow multiple data sources which allows an application to scale.
  • -
  • Because Harbour is portable across multiple operating systems with the same code base.
  • -
  • Because Harbour's architecture is fully open and supports a third-party add on market.
  • -
  • Because Harbour is open-source and therefore you are not at the mercy of the decisions of a private company.
  • -
  • Because Harbour is developed by a very experienced and capable team of developers.
    -
    - Most importantly, try Harbour for yourself, decide for yourself why it has advantages for you. This product will be an harbour for clipper.
  • -
 
 
- - - - - -
- - + + + + +Harbour Project - About + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 About Harbour 
 Harbour is a compiler for the xBase superset language often referred to as Clipper (the language that is implemented by the compiler CA-Clipper). Harbour is a cross-platform compiler and is known to compile and run on:
    +
  • MS-DOS,
  • +
  • Windows (32 & 64),
  • +
  • Windows CE,
  • +
  • Pocket PC,
  • +
  • OS/2,
  • +
  • GNU/Linux,
  • +
  • Mac OSX.
  • +
+ Harbour is a free and open-source project. It can be used to make open source applications, free or commercial products. To learn more about Harbour licence click here.
 
 
+ + + + + + + + + + +
Why use it? 
 
    +
  • Because it is free software 100% compatible with Clipper compilers
  • +
  • Because it removes some of the limits imposed by the base implementation but the extent of this will depend on your chosen platform.
  • +
  • Because Harbour is proven to be stable, robust and efficient.
  • +
  • Because Harbour supports RDDs (Replaceable Database Drivers) to allow multiple data sources which allows an application to scale.
  • +
  • Because Harbour is portable across multiple operating systems with the same code base.
  • +
  • Because Harbour's architecture is fully open and supports a third-party add on market.
  • +
  • Because Harbour is open-source and therefore you are not at the mercy of the decisions of a private company.
  • +
  • Because Harbour is developed by a very experienced and capable team of developers.
    +
    + Most importantly, try Harbour for yourself, decide for yourself why it has advantages for you. This product will be an harbour for clipper.
  • +
 
 
+ + + + + +
+ + diff --git a/harbour/website/changelog.html b/harbour/website/changelog.html index 0b87bf068e..ed11f1ed11 100644 --- a/harbour/website/changelog.html +++ b/harbour/website/changelog.html @@ -1,80 +1,80 @@ - - - - -Harbour Project - Changelog - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - -
 Changelog 
 Through the ChangeLog you can give a list of amendments that were added to the repository project. This list is updated frequently by developers and is available at:
-
- http://harbour-project.svn.sourceforge.net/viewvc/harbour-project/trunk/harbour/ChangeLog
 
 
 
- - - - - -
- - + + + + +Harbour Project - Changelog + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 Changelog 
 Through the ChangeLog you can give a list of amendments that were added to the repository project. This list is updated frequently by developers and is available at:
+
+ http://harbour-project.svn.sourceforge.net/viewvc/harbour-project/trunk/harbour/ChangeLog
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/contact.html b/harbour/website/contact.html index 1510403fd0..ab45f4f0c1 100644 --- a/harbour/website/contact.html +++ b/harbour/website/contact.html @@ -1,120 +1,120 @@ - - - - -Harbour Project - Contact US - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Contact us 
 Important: Note that this program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. -This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Read more » 
   
 Webmaster
- Do you have a question or concern regarding the functionality of this site? Click here and send an email to the webmaster or post a topic in our mailing with the subject "website".
 
   
 Suggestions?
- To contribute to the project by sending us suggestions or other contributions, just register in our mailling and submit your topic. To access our mailing list clicking here.
 
   
 Need support?
- Although this is an open project and without any implicit or explicit support, some professionals have joined our mailing lists with the intention of voluntarily helping users. For more info visit our list clicking here.
 
 
 
- - - - - -
- - + + + + +Harbour Project - Contact US + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Contact us 
 Important: Note that this program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. +This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Read more » 
   
 Webmaster
+ Do you have a question or concern regarding the functionality of this site? Click here and send an email to the webmaster or post a topic in our mailing with the subject "website".
 
   
 Suggestions?
+ To contribute to the project by sending us suggestions or other contributions, just register in our mailling and submit your topic. To access our mailing list clicking here.
 
   
 Need support?
+ Although this is an open project and without any implicit or explicit support, some professionals have joined our mailing lists with the intention of voluntarily helping users. For more info visit our list clicking here.
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/credits.html b/harbour/website/credits.html index 101456b8f1..2f7249f35a 100644 --- a/harbour/website/credits.html +++ b/harbour/website/credits.html @@ -1,78 +1,78 @@ - - - - -Harbour Project - Empty - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - -
 Title Here 
 Another long text here 
 
 
- - - - - -
- - + + + + +Harbour Project - Empty + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 Title Here 
 Another long text here 
 
 
+ + + + + +
+ + diff --git a/harbour/website/crew.html b/harbour/website/crew.html index ccea3ad097..f7e3d81bab 100644 --- a/harbour/website/crew.html +++ b/harbour/website/crew.html @@ -1,774 +1,774 @@ - - - - -Harbour Project - The Crew - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - -
- - - - - - - - -
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The Harbour Crew
Per country in alphabetic order:
 
 
Australia
- Matt Hamilton   
- Captain of Strings.c & Math.c
- A VIP shipmaster! A Admiral actual!
-
- Peter Townsend 
- cephas@tpgi.com.au

 
Belgium
- Patrick Mast   
- eMail@PatrickMast.com
- Harbour WebMaster
- Harbour public relations and
- real-life application tester.
-
- Jean-Francois Lefebvre   
- jfl@mafact.com
- 1st Classes Master
-
- Richard-Alexandre Cuylen   
- racuylen@altern.org
- 2nd Classes Master

 
Brazil
- Felipe Coury   
- fcoury@creation.com.br
- Harbour Internet Integration Captain Radio operator
- and Brazilian Harbour Community Informant.
-
- Luiz Rafael Culik   
- culik@sl.conex.net
- Harbour Norton Guide Captain
-
- Vailton Renato   
- vailtom@gmail.com
-Trainee for Webdesigner

 
Canada
- April White
- awhite@mail.rosecom.ca
-
-Bil Simser

- bsimser@home.com
- Pascal Captain
- The Dread Pirate Pascal.
-
- Leslee Griffith
- les.griffith@vantagesystems.ca
-
- Luis Krause Mantilla
- lkrausem@shaw.ca
-
- Paul Tucker   
- ptucker@sympatico.ca
-MSVC and GTAPI Master

 
Chile
- Gonzalo Diethelm
- gonzalo.diethelm@iname.com
- GNU Tools Pusher
- Harbour standard GNU tools pusher.

 
Germany
- Martin Vogel   
- vogel@inttec.de
- Cl*pper Tools Captain

 
Hungary
- Viktor Szakáts
- syenar.net
- Error & Regression Test Captain
- Coding Style Guide

 
India
- Pritpal Bedi
- pritpal@vouchcac.com
- A student of software
- analysis & design

 
Indonesia
- Andi Jahja
- andij@aonlippo.co.id
- The Janitor

 
Israel
- Chen Kedem   
- niki@synel.co.il
- The Documentor
- Harbour documentation writer

 
Italy
- Francesco Saverio Giudice
-
info/at/fsgiudice.com
- Contrib Developer -
-
-Matteo Baccan   
- baccan@isanet.it
- Tester and Java interface developer
-
-
- Massimo Belgrano
- Massimo.belgrano@gmail.com
- Fleet Admiral of Newsgroup, Lieutenant of
- application tester, - and Half - soldier developer.
-
- Maurilio Longo   
- maurilio.longo@libero.it
- OS/2 Pirate and Harbour sailor.

 
Korea
- Kwon, Oh-Chul   
- ohchul@fivetech.net
- Asian Harbour Captain

 
Netherlands
- Eddie Runia
- eddie@runia.com
- Resident Medic
- Debug doctor with a bought fake diploma.

 
Poland
- Przemysław Czerpak
- druzus/at/priv.onet.pl
- Harbour Master
-
- Robert Arseniuk
- roberta@jmpolska.com
- Arrays Captain
- Captain of the Harbour Arrays.
-
- Ryszard Glab
- rglab@imid.med.pl
- 2nd Harbour Master
- Nearest to the Harbour Master!

 
Russia
- Alexander S. Kresin
- alex@belacy.belgorod.su
- Preprocessor Captain
-
- Vladimir Kazimirchik   
- v_kazimirchik@yahoo.com
- Harbour for OS/2 fanatic

 
Scotland
- Rab Thomson
- Ship's Rat
- Gnawing at the leftovers, and did someone
- say something about sinking ships?

 
Spain
- Antonio Linares    
- alinares@fivetech.com
- Harbour Starter
- The Great Man who started the engines!
-
- Ignacio Ortiz de Zuniga   
- ignacio@fivetech.com
- Harbour GET Captain
-
- Bruno Cantero    
- bruno@issnet.net
- RDD Captain
- Happy C and Clipper developer
-
- Jose Lalin
- Towboat Skipper
- Helping ships to come alongside.
-
- Manuel Ruiz
- mrt@joca.es
-
- Nicolas del Pozo
- niko@geroa.com

 
USA
- Brian Hays
- bhays@abacuslaw.com
- Ship's Carpenter
- Roving Editor, Barnacle Scraper and Window Cleaner
-
- David G. Holm    
- dholm@jsd-llc.com
- Set Captain
- The Clipper Compatibility Fanatic.
-
- Mark W. Schumann
- Animal Trainer
- Trainer of the Harbour Animal.
-
- Phil Barnett    
- philb@philb.us
- Harbour Manager
- Keeper of Pieces and Parts.
-
- Ron Pinkas    
- ron@profit-master.com
- Clipper-Head
- The Clipper-Head who doesn't mind becoming
- a 'c'-man to keep Clipper sailing into the future.
-
- Tim Stone    
- timstone@mstrlink.com
- List House Keeper
- List House Keeper and Manual Captain.
-
- Jon Berg
- Stoker
- Just keep shoveling coal into the harbor engine. (Tester)
- Held a higher rank on the old Clipper ships before I got
- busted with the advent of steam engines.

 
Country - unknown
- Ross Presser
- Captain Boy
- Unreliable Yet Sometimes Helpful Cabin Boy.
-
- Janica Lubos
- janica@fornax.elf.stuba.sk

 
  - - - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - -
 Countries 
 
 
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Australia
Belgium
Brazil
Canada
Chile
Germany
Hungary
India
Indonesia
Israel
Italy
Korea
Netherlands
Poland
Russia
Scotland
Spain
USA
Unknown
 
   
 
- - - - - - - - - - - - - - - - - - - - -
 First Name Alphabetic 
 
 
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Alexander S. Kresin
Andi Jahja
Antonio Linares
April White
Bil Simser
Brian Hays
Bruno Cantero
Chen Kedem
David G. Holm
Eddie Runia
Francesco Saverio Giudice
Felipe Coury
Gonzalo Diethelm
Ignacio Ortiz
- de Zuniga
Janica Lubos
Jean-Francois Lefebvre
Jon Berg
Jose Lalin
Kwon, Oh-Chul
Leslee Griffith
Luis Krause Mantilla
Luiz Rafael Culik
Manuel Ruiz
Mark W. Schumann
Martin Vogel
Massimo Belgrano
Matt Hamilton
Matteo Baccan
Maurilio Longo
Nicolas del Pozo
Patrick Mast
Paul Tucker
Peter Townsend
Phil Barnett
Pritpal Bedi
Przemysław Czerpak
Rab Thomson
Richard Alexandre Cuylen
Robert Arseniuk
Ron Pinkas
Ross Presser
Ryszard Glab
Tim Stone
Vailton Renato
Viktor Szakáts
Vladimir Kazimirchik
 
   
 
 
- - - - - -
- - + + + + +Harbour Project - The Crew + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + +
+ + + + + + + + +
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
The Harbour Crew
Per country in alphabetic order:
 
 
Australia
+ Matt Hamilton   
+ Captain of Strings.c & Math.c
+ A VIP shipmaster! A Admiral actual!
+
+ Peter Townsend 
+ cephas@tpgi.com.au

 
Belgium
+ Patrick Mast   
+ eMail@PatrickMast.com
+ Harbour WebMaster
+ Harbour public relations and
+ real-life application tester.
+
+ Jean-Francois Lefebvre   
+ jfl@mafact.com
+ 1st Classes Master
+
+ Richard-Alexandre Cuylen   
+ racuylen@altern.org
+ 2nd Classes Master

 
Brazil
+ Felipe Coury   
+ fcoury@creation.com.br
+ Harbour Internet Integration Captain Radio operator
+ and Brazilian Harbour Community Informant.
+
+ Luiz Rafael Culik   
+ culik@sl.conex.net
+ Harbour Norton Guide Captain
+
+ Vailton Renato   
+ vailtom@gmail.com
+Trainee for Webdesigner

 
Canada
+ April White
+ awhite@mail.rosecom.ca
+
+Bil Simser

+ bsimser@home.com
+ Pascal Captain
+ The Dread Pirate Pascal.
+
+ Leslee Griffith
+ les.griffith@vantagesystems.ca
+
+ Luis Krause Mantilla
+ lkrausem@shaw.ca
+
+ Paul Tucker   
+ ptucker@sympatico.ca
+MSVC and GTAPI Master

 
Chile
+ Gonzalo Diethelm
+ gonzalo.diethelm@iname.com
+ GNU Tools Pusher
+ Harbour standard GNU tools pusher.

 
Germany
+ Martin Vogel   
+ vogel@inttec.de
+ Cl*pper Tools Captain

 
Hungary
+ Viktor Szakáts
+ syenar.net
+ Error & Regression Test Captain
+ Coding Style Guide

 
India
+ Pritpal Bedi
+ pritpal@vouchcac.com
+ A student of software
+ analysis & design

 
Indonesia
+ Andi Jahja
+ andij@aonlippo.co.id
+ The Janitor

 
Israel
+ Chen Kedem   
+ niki@synel.co.il
+ The Documentor
+ Harbour documentation writer

 
Italy
+ Francesco Saverio Giudice
+
info/at/fsgiudice.com
+ Contrib Developer +
+
+Matteo Baccan   
+ baccan@isanet.it
+ Tester and Java interface developer
+
+
+ Massimo Belgrano
+ Massimo.belgrano@gmail.com
+ Fleet Admiral of Newsgroup, Lieutenant of
+ application tester, + and Half + soldier developer.
+
+ Maurilio Longo   
+ maurilio.longo@libero.it
+ OS/2 Pirate and Harbour sailor.

 
Korea
+ Kwon, Oh-Chul   
+ ohchul@fivetech.net
+ Asian Harbour Captain

 
Netherlands
+ Eddie Runia
+ eddie@runia.com
+ Resident Medic
+ Debug doctor with a bought fake diploma.

 
Poland
+ Przemysław Czerpak
+ druzus/at/priv.onet.pl
+ Harbour Master
+
+ Robert Arseniuk
+ roberta@jmpolska.com
+ Arrays Captain
+ Captain of the Harbour Arrays.
+
+ Ryszard Glab
+ rglab@imid.med.pl
+ 2nd Harbour Master
+ Nearest to the Harbour Master!

 
Russia
+ Alexander S. Kresin
+ alex@belacy.belgorod.su
+ Preprocessor Captain
+
+ Vladimir Kazimirchik   
+ v_kazimirchik@yahoo.com
+ Harbour for OS/2 fanatic

 
Scotland
+ Rab Thomson
+ Ship's Rat
+ Gnawing at the leftovers, and did someone
+ say something about sinking ships?

 
Spain
+ Antonio Linares    
+ alinares@fivetech.com
+ Harbour Starter
+ The Great Man who started the engines!
+
+ Ignacio Ortiz de Zuniga   
+ ignacio@fivetech.com
+ Harbour GET Captain
+
+ Bruno Cantero    
+ bruno@issnet.net
+ RDD Captain
+ Happy C and Clipper developer
+
+ Jose Lalin
+ Towboat Skipper
+ Helping ships to come alongside.
+
+ Manuel Ruiz
+ mrt@joca.es
+
+ Nicolas del Pozo
+ niko@geroa.com

 
USA
+ Brian Hays
+ bhays@abacuslaw.com
+ Ship's Carpenter
+ Roving Editor, Barnacle Scraper and Window Cleaner
+
+ David G. Holm    
+ dholm@jsd-llc.com
+ Set Captain
+ The Clipper Compatibility Fanatic.
+
+ Mark W. Schumann
+ Animal Trainer
+ Trainer of the Harbour Animal.
+
+ Phil Barnett    
+ philb@philb.us
+ Harbour Manager
+ Keeper of Pieces and Parts.
+
+ Ron Pinkas    
+ ron@profit-master.com
+ Clipper-Head
+ The Clipper-Head who doesn't mind becoming
+ a 'c'-man to keep Clipper sailing into the future.
+
+ Tim Stone    
+ timstone@mstrlink.com
+ List House Keeper
+ List House Keeper and Manual Captain.
+
+ Jon Berg
+ Stoker
+ Just keep shoveling coal into the harbor engine. (Tester)
+ Held a higher rank on the old Clipper ships before I got
+ busted with the advent of steam engines.

 
Country + unknown
+ Ross Presser
+ Captain Boy
+ Unreliable Yet Sometimes Helpful Cabin Boy.
+
+ Janica Lubos
+ janica@fornax.elf.stuba.sk

 
  + + + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + +
 Countries 
 
 
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Australia
Belgium
Brazil
Canada
Chile
Germany
Hungary
India
Indonesia
Israel
Italy
Korea
Netherlands
Poland
Russia
Scotland
Spain
USA
Unknown
 
   
 
+ + + + + + + + + + + + + + + + + + + + +
 First Name Alphabetic 
 
 
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Alexander S. Kresin
Andi Jahja
Antonio Linares
April White
Bil Simser
Brian Hays
Bruno Cantero
Chen Kedem
David G. Holm
Eddie Runia
Francesco Saverio Giudice
Felipe Coury
Gonzalo Diethelm
Ignacio Ortiz
+ de Zuniga
Janica Lubos
Jean-Francois Lefebvre
Jon Berg
Jose Lalin
Kwon, Oh-Chul
Leslee Griffith
Luis Krause Mantilla
Luiz Rafael Culik
Manuel Ruiz
Mark W. Schumann
Martin Vogel
Massimo Belgrano
Matt Hamilton
Matteo Baccan
Maurilio Longo
Nicolas del Pozo
Patrick Mast
Paul Tucker
Peter Townsend
Phil Barnett
Pritpal Bedi
Przemysław Czerpak
Rab Thomson
Richard Alexandre Cuylen
Robert Arseniuk
Ron Pinkas
Ross Presser
Ryszard Glab
Tim Stone
Vailton Renato
Viktor Szakáts
Vladimir Kazimirchik
 
   
 
 
+ + + + + +
+ + diff --git a/harbour/website/download_contrib.html b/harbour/website/download_contrib.html index c3781bb1a6..54bf22fcdd 100644 --- a/harbour/website/download_contrib.html +++ b/harbour/website/download_contrib.html @@ -1,456 +1,456 @@ - - - - -Harbour Project - Contribution - - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Harbour Contributions 
 Contributions are 3rd party libraries, sources or other products, which are bundled with the main Harbour distribution. The contrib is available in the ZIP package that contains the sources of Harbour Project.
-
- Important: Common to all contributions is that you can download them freely but please note the licensing terms, which are included in the distribution folder.
 
   
 gtAlleg
- Author: Mauricio Abre <maurifull@datafull.com>
-
Allegro based virtual GT with graphic extensions. This GT driver uses the powerful Allegro library to create windows also Allegro library is mostly used for game programming.
 
 
 
 
- gtwvg

- Author: Pritpal Bedi <pritpal@vouchcac.com>
-This library can be used for pure console applications instead of GTWVT. But if used with GUI extensions, very appealing Windows screens without sacrificing the Clipper syntax. Additionally GTWVG has a nice set of Wvt*Classes() which employ the common event loop.

-You can create high performance dialogs with multiple Tbrowe, Reads, Bitmaps, Buttons, i.e. all GUI elements you can think of.
 
 
 
 
- hbbmcdx

- RDD bmdbfcdx compatible with dbfcdx of harbour, with bitmap filters and other extensions. 
 
 
 
 
- hbct

- This library has functions and procedures compatible with the famous Clipper Tools for CA-Clipper (CT.LIB).
 
 
 
 
- hbcurl

- Authors: Viktor Szakáts / Luiz Rafael Culik Guimaraes
- This is a Harbour interface for libcurl. Note what libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE.
-
- libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more! See more info at http://curl.haxx.se/libcurl.
 
 
 
 
- hbfbird

- Author: Rodrigo Moreno <rodrigo_moreno@yahoo.com>
- Harbour Low Level api for Firebird and Interbase RDBMS, including classes and functions to work with these RDBMS.
 
 
 
 
- hbfimage

- Author: Francesco Saverio Giudice <info@fsgiudice.com>
- FreeImage graphic library low level (client api) interface code for Harbour. FreeImage Library is a porting to Harbour of famous FreeImage Project library. FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications.
-
- FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit versions of Windows, and cross-platform (works both with Linux and Mac ). See more at http://freeimage.sourceforge.net/
 
 
 
 
- hbgd

- Authors: Francesco Saverio Giudice <info@fsgiudice.com> / Laverson Espíndola <laverson.espindola@gmail.com>
- HBGD is basically a wrapper of Thomas Boutell's GD Library version 2.0.33 for Harbour. The GD Library is a powerfull graphic library very usefull expecially under CGI environment. HBGD actually contains almost all GD functions, more a set of functions that extends original library and a set of classes that make easier to work with this library. More info at http://www.boutell.com/gd/
 
 
 
 
- hbgf

- Portable functions for creating GUI objects like windows, menus, buttons, etc. inside prg source code. Supports Win32, GTK & OS /2.
 
 
 
 
- hbgt

Several functions for manipulation of strings and some generic compatible with Flagship.
 
 
 
 
- hbhpdf

- Author: Pritpal Bedi <pritpal@hotmail.com>
- HaruLib wrappers for Harbour. Haru is a free, cross platform, open-sourced software library for generating PDF written in ANSI-C. More info at http://www.libharu.org and http://sourceforge.net/projects/libharu
 
 
 
 
- hbmisc

- Misc functions for manipulating strings, numbers, type conversions, classes for working with HTML and files, etc.
 
 
 
 
- hbmysql
-
Author: Maurilio Longo <maurilio.longo@libero.it>
- Harbour MySQL access classes. Includes a dbf2mysql.prg utility to converts a .dbf file into a MySQL table.
 
 
 
 
- hbmzip

- This library contains compression related functions to work with zip file support based on minizip library (http://www.winimage.com/zLibDll/minizip.html) including: -
    -
  • minizip version 1.01e source files
  • -
  • wrapper functions for minizip
  • -
  • some additionl functions to provide a higher level API for zip files
  • -
 
 
 
 
- hbNF
-
A port in Harbour of the Nanforum Library for Clipper.
 
 
 
 
- hbodbc
-
Harbour ODBC Library. Includes functions, procedures and classes to work with various RDBMS.
 
 
 
 
- hbpgsql
-
Author: Maurilio Longo <maurilio.longo@libero.it>
- Harbour Low Level api for Postgres RDBMS. Includes a dbf2pg.prg utility to converts a .dbf file into a Postgres table.
 
 
 
 
- hbsqlit3
-
Author: P.Chornyj <myorg63@mail.ru>
- Harbour interface for SQLite version 3. This library allow access a sqlite database using Harbour.
 
 
 
 
- hbssl
-
Author: Viktor Szakáts
- OpenSSL API Harbour interface. Supports SSL, SSL_CIPHER, SSL_CTX, RAND, SSL_SESSION functions.
 
 
 
 
- hbtip
-
- TIP Class oriented Internet protocol library for Harbour. Supports FTP, POP3, HTTP and more.
 
 
 
 
- hbtpathy
-
Author: Maurilio Longo <maurilio.longo@libero.it>
- Telepathy emulation library. Telepathy is the best serial communication library for Nantucket/CA Clipper and this library has a significant amount of the functionality contained in Telepathy in - this Harbour port.
 
 
 
 
- hbvpdf
-
Author: Victor K. <http://www.ihaveparts.com>
- This is a pure Clipper Pdf Library what includes Harbour support and runs without the need for external files.
 
 
 
 
- hbwin
-
This library has functions, procedures and classes to access Win32 API. - Among these features are: -
    -
  • Windows registry
  • -
  • Printing subsystem for Win32 using GUI printing
  • -
  • Support for OLE objects
  • -
  • DLL handling functions
    - and more.
    -
  • -
 
 
 
 
- rddado
-
Author: Fernando Mancera <fmancera@viaopen.com> / Antonio Linares <alinares@fivetechsoft.com>
- ADORDD - RDD to automatically manage Microsoft ADO databases.
 
 
 
 
- rddads
-
Author: Alexander Kresin <alex@belacy.belgorod.su>
- RDDADS is an RDD for the Advantage Database Server, an xBase data server by Extended Systems. With this library your Harbour application can access a remote database server for a -true client/server architecture, or it can use the "local server" ADSLOC32.DLL for stand-alone or even small network installations. For more info visit http://www.advantagedatabase.com
 
 
 
 
- rddsql
-
Author: Mindaugas Kavaliauskas <dbtopas at dbtopas.lt>
- SQL MIX (Memory Index) Database Driver. This library provides access to FB, MySQL and PostgreSQL servers.
 
 
 
 
- xhb
-
Files containing functions, procedures and defines for cross-compatibility with xHarbour project.
 
 
 
- - - - - -
- - + + + + +Harbour Project - Contribution + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Harbour Contributions 
 Contributions are 3rd party libraries, sources or other products, which are bundled with the main Harbour distribution. The contrib is available in the ZIP package that contains the sources of Harbour Project.
+
+ Important: Common to all contributions is that you can download them freely but please note the licensing terms, which are included in the distribution folder.
 
   
 gtAlleg
+ Author: Mauricio Abre <maurifull@datafull.com>
+
Allegro based virtual GT with graphic extensions. This GT driver uses the powerful Allegro library to create windows also Allegro library is mostly used for game programming.
 
 
 
 
+ gtwvg

+ Author: Pritpal Bedi <pritpal@vouchcac.com>
+This library can be used for pure console applications instead of GTWVT. But if used with GUI extensions, very appealing Windows screens without sacrificing the Clipper syntax. Additionally GTWVG has a nice set of Wvt*Classes() which employ the common event loop.

+You can create high performance dialogs with multiple Tbrowe, Reads, Bitmaps, Buttons, i.e. all GUI elements you can think of.
 
 
 
 
+ hbbmcdx

+ RDD bmdbfcdx compatible with dbfcdx of harbour, with bitmap filters and other extensions. 
 
 
 
 
+ hbct

+ This library has functions and procedures compatible with the famous Clipper Tools for CA-Clipper (CT.LIB).
 
 
 
 
+ hbcurl

+ Authors: Viktor Szakáts / Luiz Rafael Culik Guimaraes
+ This is a Harbour interface for libcurl. Note what libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE.
+
+ libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more! See more info at http://curl.haxx.se/libcurl.
 
 
 
 
+ hbfbird

+ Author: Rodrigo Moreno <rodrigo_moreno@yahoo.com>
+ Harbour Low Level api for Firebird and Interbase RDBMS, including classes and functions to work with these RDBMS.
 
 
 
 
+ hbfimage

+ Author: Francesco Saverio Giudice <info@fsgiudice.com>
+ FreeImage graphic library low level (client api) interface code for Harbour. FreeImage Library is a porting to Harbour of famous FreeImage Project library. FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications.
+
+ FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit versions of Windows, and cross-platform (works both with Linux and Mac ). See more at http://freeimage.sourceforge.net/
 
 
 
 
+ hbgd

+ Authors: Francesco Saverio Giudice <info@fsgiudice.com> / Laverson Espíndola <laverson.espindola@gmail.com>
+ HBGD is basically a wrapper of Thomas Boutell's GD Library version 2.0.33 for Harbour. The GD Library is a powerfull graphic library very usefull expecially under CGI environment. HBGD actually contains almost all GD functions, more a set of functions that extends original library and a set of classes that make easier to work with this library. More info at http://www.boutell.com/gd/
 
 
 
 
+ hbgf

+ Portable functions for creating GUI objects like windows, menus, buttons, etc. inside prg source code. Supports Win32, GTK & OS /2.
 
 
 
 
+ hbgt

Several functions for manipulation of strings and some generic compatible with Flagship.
 
 
 
 
+ hbhpdf

+ Author: Pritpal Bedi <pritpal@hotmail.com>
+ HaruLib wrappers for Harbour. Haru is a free, cross platform, open-sourced software library for generating PDF written in ANSI-C. More info at http://www.libharu.org and http://sourceforge.net/projects/libharu
 
 
 
 
+ hbmisc

+ Misc functions for manipulating strings, numbers, type conversions, classes for working with HTML and files, etc.
 
 
 
 
+ hbmysql
+
Author: Maurilio Longo <maurilio.longo@libero.it>
+ Harbour MySQL access classes. Includes a dbf2mysql.prg utility to converts a .dbf file into a MySQL table.
 
 
 
 
+ hbmzip

+ This library contains compression related functions to work with zip file support based on minizip library (http://www.winimage.com/zLibDll/minizip.html) including: +
    +
  • minizip version 1.01e source files
  • +
  • wrapper functions for minizip
  • +
  • some additionl functions to provide a higher level API for zip files
  • +
 
 
 
 
+ hbNF
+
A port in Harbour of the Nanforum Library for Clipper.
 
 
 
 
+ hbodbc
+
Harbour ODBC Library. Includes functions, procedures and classes to work with various RDBMS.
 
 
 
 
+ hbpgsql
+
Author: Maurilio Longo <maurilio.longo@libero.it>
+ Harbour Low Level api for Postgres RDBMS. Includes a dbf2pg.prg utility to converts a .dbf file into a Postgres table.
 
 
 
 
+ hbsqlit3
+
Author: P.Chornyj <myorg63@mail.ru>
+ Harbour interface for SQLite version 3. This library allow access a sqlite database using Harbour.
 
 
 
 
+ hbssl
+
Author: Viktor Szakáts
+ OpenSSL API Harbour interface. Supports SSL, SSL_CIPHER, SSL_CTX, RAND, SSL_SESSION functions.
 
 
 
 
+ hbtip
+
+ TIP Class oriented Internet protocol library for Harbour. Supports FTP, POP3, HTTP and more.
 
 
 
 
+ hbtpathy
+
Author: Maurilio Longo <maurilio.longo@libero.it>
+ Telepathy emulation library. Telepathy is the best serial communication library for Nantucket/CA Clipper and this library has a significant amount of the functionality contained in Telepathy in + this Harbour port.
 
 
 
 
+ hbvpdf
+
Author: Victor K. <http://www.ihaveparts.com>
+ This is a pure Clipper Pdf Library what includes Harbour support and runs without the need for external files.
 
 
 
 
+ hbwin
+
This library has functions, procedures and classes to access Win32 API. + Among these features are: +
    +
  • Windows registry
  • +
  • Printing subsystem for Win32 using GUI printing
  • +
  • Support for OLE objects
  • +
  • DLL handling functions
    + and more.
    +
  • +
 
 
 
 
+ rddado
+
Author: Fernando Mancera <fmancera@viaopen.com> / Antonio Linares <alinares@fivetechsoft.com>
+ ADORDD - RDD to automatically manage Microsoft ADO databases.
 
 
 
 
+ rddads
+
Author: Alexander Kresin <alex@belacy.belgorod.su>
+ RDDADS is an RDD for the Advantage Database Server, an xBase data server by Extended Systems. With this library your Harbour application can access a remote database server for a +true client/server architecture, or it can use the "local server" ADSLOC32.DLL for stand-alone or even small network installations. For more info visit http://www.advantagedatabase.com
 
 
 
 
+ rddsql
+
Author: Mindaugas Kavaliauskas <dbtopas at dbtopas.lt>
+ SQL MIX (Memory Index) Database Driver. This library provides access to FB, MySQL and PostgreSQL servers.
 
 
 
 
+ xhb
+
Files containing functions, procedures and defines for cross-compatibility with xHarbour project.
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/empty_template.html b/harbour/website/empty_template.html index 1f9c1a301c..2dd9de7ada 100644 --- a/harbour/website/empty_template.html +++ b/harbour/website/empty_template.html @@ -1,78 +1,78 @@ - - - - -Harbour Project - Empty - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - -
 Title Here 
 Another long text here 
 
 
- - - - - -
- - + + + + +Harbour Project - Empty + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 Title Here 
 Another long text here 
 
 
+ + + + + +
+ + diff --git a/harbour/website/faq/harbour23.html b/harbour/website/faq/harbour23.html index c4c8fe2589..42cb7a8aef 100644 --- a/harbour/website/faq/harbour23.html +++ b/harbour/website/faq/harbour23.html @@ -1,140 +1,140 @@ - - - - - -What other tools do I need? - - - -Frequently Asked Questions about Harbour - : Helping develop Harbour - : What other tools do I need?
-Previous: What C compiler should I use?
-Next: Where can I find the source? - - -
-

3.3. What other tools do I need?

-

To build Harbour you'll need the following tools:

-

-

-

- -
-Frequently Asked Questions about Harbour - : Helping develop Harbour - : What other tools do I need?
-Previous: What C compiler should I use?
-Next: Where can I find the source? - - - - - + + + + + +What other tools do I need? + + + +Frequently Asked Questions about Harbour + : Helping develop Harbour + : What other tools do I need?
+Previous: What C compiler should I use?
+Next: Where can I find the source? + + +
+

3.3. What other tools do I need?

+

To build Harbour you'll need the following tools:

+

+

+

+ +
+Frequently Asked Questions about Harbour + : Helping develop Harbour + : What other tools do I need?
+Previous: What C compiler should I use?
+Next: Where can I find the source? + + + + + diff --git a/harbour/website/faq/harbour24.html b/harbour/website/faq/harbour24.html index 7e1c7fef60..902fd10cca 100644 --- a/harbour/website/faq/harbour24.html +++ b/harbour/website/faq/harbour24.html @@ -1,67 +1,67 @@ - - - - - -Where can I find the source? - - - -Frequently Asked Questions about Harbour - : Helping develop Harbour - : Where can I find the source?
-Previous: What other tools do I need?
-Next: What is CVS and how do I use it? - - -
-

3.4. Where can I find the source?

-

There are three methods of getting the source for harbour, which method you -use will depend on how up-to-date you feel you need to be. -

-

-

Please note that if you do want to help develop Harbour then the last option -is the best option (and, in the long term, the only useful option for all -concerned).

- -
-Frequently Asked Questions about Harbour - : Helping develop Harbour - : Where can I find the source?
-Previous: What other tools do I need?
-Next: What is CVS and how do I use it? - - - - - + + + + + +Where can I find the source? + + + +Frequently Asked Questions about Harbour + : Helping develop Harbour + : Where can I find the source?
+Previous: What other tools do I need?
+Next: What is CVS and how do I use it? + + +
+

3.4. Where can I find the source?

+

There are three methods of getting the source for harbour, which method you +use will depend on how up-to-date you feel you need to be. +

+

+

Please note that if you do want to help develop Harbour then the last option +is the best option (and, in the long term, the only useful option for all +concerned).

+ +
+Frequently Asked Questions about Harbour + : Helping develop Harbour + : Where can I find the source?
+Previous: What other tools do I need?
+Next: What is CVS and how do I use it? + + + + + diff --git a/harbour/website/faq/harbour43.html b/harbour/website/faq/harbour43.html index a4e8429a64..1c2b4028d6 100644 --- a/harbour/website/faq/harbour43.html +++ b/harbour/website/faq/harbour43.html @@ -1,59 +1,59 @@ - - - - - -Where can I get pre-built binaries? - - - -Frequently Asked Questions about Harbour - : Installing Harbour - : Where can I get pre-built binaries?
-Previous: Installing Harbour
-Next: General Harbour questions - - -
-

5.1. Where can I get pre-built binaries?

-

While Harbour is still in development the preferred method of getting a -Harbour binary is to download the source and build it yourself because this -aids the development effort.

-

However, the -Harbour developers also -appreciate the efforts of people who don't want to develop Harbour itself -but do want to test it and report bugs. To this end some people maintain -Harbour binaries that are ready to be installed.

-

Please keep in mind that the following may not be the very latest cut of -Harbour (Harbour changes by the hour while in this early phase of -development) and that some platforms might be better supported than others. -If you see that a platform isn't supported or is out of date please consider -stepping in and making available binaries for that platform.

-

-

-

-

If you can't find binaries for your environment via the above links then -this means that someone isn't contributing for that environment, perhaps -you'd care to step in and fill that gap?

- -
-Frequently Asked Questions about Harbour - : Installing Harbour - : Where can I get pre-built binaries?
-Previous: Installing Harbour
-Next: General Harbour questions - - - - - + + + + + +Where can I get pre-built binaries? + + + +Frequently Asked Questions about Harbour + : Installing Harbour + : Where can I get pre-built binaries?
+Previous: Installing Harbour
+Next: General Harbour questions + + +
+

5.1. Where can I get pre-built binaries?

+

While Harbour is still in development the preferred method of getting a +Harbour binary is to download the source and build it yourself because this +aids the development effort.

+

However, the +Harbour developers also +appreciate the efforts of people who don't want to develop Harbour itself +but do want to test it and report bugs. To this end some people maintain +Harbour binaries that are ready to be installed.

+

Please keep in mind that the following may not be the very latest cut of +Harbour (Harbour changes by the hour while in this early phase of +development) and that some platforms might be better supported than others. +If you see that a platform isn't supported or is out of date please consider +stepping in and making available binaries for that platform.

+

+

+

+

If you can't find binaries for your environment via the above links then +this means that someone isn't contributing for that environment, perhaps +you'd care to step in and fill that gap?

+ +
+Frequently Asked Questions about Harbour + : Installing Harbour + : Where can I get pre-built binaries?
+Previous: Installing Harbour
+Next: General Harbour questions + + + + + diff --git a/harbour/website/faq/harbour49.html b/harbour/website/faq/harbour49.html index 78bddd197a..4c961be9fb 100644 --- a/harbour/website/faq/harbour49.html +++ b/harbour/website/faq/harbour49.html @@ -1,38 +1,38 @@ - - - - - -Will Harbour support existing CA-Clipper 3rd party products? - - - -Frequently Asked Questions about Harbour - : General Harbour questions - : Will Harbour support existing CA-Clipper 3rd party products?
-Previous: What advantages do other Clipper compilers have over Harbour?
-Next: Is Harbour a Windows development tool? - - -
-

6.5. Will Harbour support existing CA-Clipper 3rd party products?

-

No, but the above is the wrong question to ask. The question to ask is -"will existing -CA-Clipper 3rd party -products support Harbour?", that's a question you should ask of the -product author.

-

See the Harbour web site -for details of which 3rd party product authors are currently developing for -Harbour or intend to support Harbour in the near future.

- -
-Frequently Asked Questions about Harbour - : General Harbour questions - : Will Harbour support existing CA-Clipper 3rd party products?
-Previous: What advantages do other Clipper compilers have over Harbour?
-Next: Is Harbour a Windows development tool? - - - - - + + + + + +Will Harbour support existing CA-Clipper 3rd party products? + + + +Frequently Asked Questions about Harbour + : General Harbour questions + : Will Harbour support existing CA-Clipper 3rd party products?
+Previous: What advantages do other Clipper compilers have over Harbour?
+Next: Is Harbour a Windows development tool? + + +
+

6.5. Will Harbour support existing CA-Clipper 3rd party products?

+

No, but the above is the wrong question to ask. The question to ask is +"will existing +CA-Clipper 3rd party +products support Harbour?", that's a question you should ask of the +product author.

+

See the Harbour web site +for details of which 3rd party product authors are currently developing for +Harbour or intend to support Harbour in the near future.

+ +
+Frequently Asked Questions about Harbour + : General Harbour questions + : Will Harbour support existing CA-Clipper 3rd party products?
+Previous: What advantages do other Clipper compilers have over Harbour?
+Next: Is Harbour a Windows development tool? + + + + + diff --git a/harbour/website/faq/harbour53.html b/harbour/website/faq/harbour53.html index 1e895afd24..0e89cb7842 100644 --- a/harbour/website/faq/harbour53.html +++ b/harbour/website/faq/harbour53.html @@ -1,40 +1,40 @@ - - - - - -Harbour related links - - - -Frequently Asked Questions about Harbour - : Pointers and links - : Harbour related links
-Previous: Pointers and links
-Next: Articles about Harbour - - -
-

7.1. Harbour related links

-

-

-

- -
-Frequently Asked Questions about Harbour - : Pointers and links - : Harbour related links
-Previous: Pointers and links
-Next: Articles about Harbour - - - - - + + + + + +Harbour related links + + + +Frequently Asked Questions about Harbour + : Pointers and links + : Harbour related links
+Previous: Pointers and links
+Next: Articles about Harbour + + +
+

7.1. Harbour related links

+

+

+

+ +
+Frequently Asked Questions about Harbour + : Pointers and links + : Harbour related links
+Previous: Pointers and links
+Next: Articles about Harbour + + + + + diff --git a/harbour/website/faq/harbour60.html b/harbour/website/faq/harbour60.html index 5f797c2581..6731a522b0 100644 --- a/harbour/website/faq/harbour60.html +++ b/harbour/website/faq/harbour60.html @@ -1,41 +1,41 @@ - - - - - -Document URL. - - - -Frequently Asked Questions about Harbour - : Administrative information - : Document URL.
-Previous: Administrative information
-Next: Downloading this document. - - -
-

8.1. Document URL.

-

The primary location of this document is /faq/. There is every -chance that you might be reading this document from another location, this -is perfectly fine. However, keep in mind that only the above URL can be -relied upon to be the most up-to-date copy.

-

Alejandro de Garate has -translated portions of this document for inclusion in his Spanish harbour web site. Please note that I can't vouch for the correctness of the content -because I don't speak Spanish.

-

dongming wang has translated this -FAQ into Chinese. See -http://www.xbase.8u8.com/html/xbase/harbour/harbour-faq/harbour.html. -Once again, please note that I can't vouch for the correctness of the translation.

- -
-Frequently Asked Questions about Harbour - : Administrative information - : Document URL.
-Previous: Administrative information
-Next: Downloading this document. - - - - - + + + + + +Document URL. + + + +Frequently Asked Questions about Harbour + : Administrative information + : Document URL.
+Previous: Administrative information
+Next: Downloading this document. + + +
+

8.1. Document URL.

+

The primary location of this document is /faq/. There is every +chance that you might be reading this document from another location, this +is perfectly fine. However, keep in mind that only the above URL can be +relied upon to be the most up-to-date copy.

+

Alejandro de Garate has +translated portions of this document for inclusion in his Spanish harbour web site. Please note that I can't vouch for the correctness of the content +because I don't speak Spanish.

+

dongming wang has translated this +FAQ into Chinese. See +http://www.xbase.8u8.com/html/xbase/harbour/harbour-faq/harbour.html. +Once again, please note that I can't vouch for the correctness of the translation.

+ +
+Frequently Asked Questions about Harbour + : Administrative information + : Document URL.
+Previous: Administrative information
+Next: Downloading this document. + + + + + diff --git a/harbour/website/faq/harbour9.html b/harbour/website/faq/harbour9.html index 135bd0f8ca..d025e84bab 100644 --- a/harbour/website/faq/harbour9.html +++ b/harbour/website/faq/harbour9.html @@ -1,37 +1,37 @@ - - - - - -Who is developing Harbour? - - - -Frequently Asked Questions about Harbour - : About Harbour - : Who is developing Harbour?
-Previous: Why develop Harbour?
-Next: Who owns Harbour? - - -
-

2.3. Who is developing Harbour?

-

Many people. There are a small handful of people who could be called the -"core development team" but the actual set of people who are -contributing to the project is constantly in flux. Anyone can join the -"development team" and, if you've got something to offer the -project, you'll be more than welcome.

-

Anyone wondering who the core developers are should pop over to the Harbour project web site and -look at the crew list.

- -
-Frequently Asked Questions about Harbour - : About Harbour - : Who is developing Harbour?
-Previous: Why develop Harbour?
-Next: Who owns Harbour? - - - - - + + + + + +Who is developing Harbour? + + + +Frequently Asked Questions about Harbour + : About Harbour + : Who is developing Harbour?
+Previous: Why develop Harbour?
+Next: Who owns Harbour? + + +
+

2.3. Who is developing Harbour?

+

Many people. There are a small handful of people who could be called the +"core development team" but the actual set of people who are +contributing to the project is constantly in flux. Anyone can join the +"development team" and, if you've got something to offer the +project, you'll be more than welcome.

+

Anyone wondering who the core developers are should pop over to the Harbour project web site and +look at the crew list.

+ +
+Frequently Asked Questions about Harbour + : About Harbour + : Who is developing Harbour?
+Previous: Why develop Harbour?
+Next: Who owns Harbour? + + + + + diff --git a/harbour/website/index.html b/harbour/website/index.html index 15c62fbe35..4973bb00e0 100644 --- a/harbour/website/index.html +++ b/harbour/website/index.html @@ -1,443 +1,443 @@ - - - - -Harbour Project - Home - - - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
- - - - - - - - - - - - - - - -
 Overview 
 The Harbour Project is a Free Open Source Software effort to build a multiplatform Clipper language compiler. Harbour consists of the xBase language compiler and the runtime libraries with different terminal plugins and different databases (not just DBF).
-
-Harbour is a cross-platform compiler and is known to compile and run on MS-DOS, Windows (32 & 64), Windows CE, Pocket PC, OS/2, GNU/Linux and Mac OS X. -More features »
 
   
- - - - - - - - - - - - - - - - - - - - - - -
 Why use it? Project Status: 
 • Harbour is free software 100% compatible with Clipper compilers
• Harbour is proven to be stable, robust and efficient.
• Harbour is portable across multiple operating systems with the same code base.
• You can use it to develop either open source or commercial applications. Learn more»
- - - - - - - -
Current release: v3.0.0
- Release Date: 2011-07-17
- Nightly source: zip  tgz  bz2  xz
- Nightly binary: exe  7z (win)
-
 
     
 
- - - - - - - - - - -
 Featured resources: 
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
     
Native SQL, ADO & ODBC - SupportSupport modern tecnologies: XML, FTP, TCP/IP, etc.Cross-platform: 32/64-bit, Mobile, Mac, etc.Create Console, GUI, Service & Web ApplicationsContains many third party libs with additional featuresDeveloped by a very experienced and capable team of developers
 
 
- - - - - - - - - - - - - - - -
 Licensing   
 Harbour is a free and open-source project. It can be used to make open source applications, free or commercial products. Read more»
- - - - -
SourceForge.net Logo
 
 
- - - - - - - - - - - - - - -
    
  - - - - - - - - - - - - - - - - - - -
Harbour Project Development News

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
July 17, 2011 Harbour 3.0.0 released
  After 1.5 years of strong development and 3600 commits, new stable version 3.0.0 is released. Sources are available on sf.net file area, prebuilt binaries will follow shortly.
   
Aug 2, 2010 Harbour successfully ported to VxWorks RTOS
  In 2010 July with few days of development effort, Harbour has been ported successfully to VxWorks 6.8 Real-Time Operating System (x86 CPU target for now) for both GNU GCC and Wind River C Compiler. Many thanks to Wind River Inc. for making their development package available to our open source compiler project. This means now Harbour can run on cars, planes, rockets and robots. :) See more about the technical details in ChangeLog entry '2010-07-16 18:22 UTC+0200 Viktor Szakats' here
   
Jun 3, 2010 Harbour Mailing Lists address change
  Thanking Phil Barnett for providing the Harbour community a great mailing list - for so many years, today, due to server problems, we have migrated the mailing - lists to Google Groups in agreement with Phil and Harbour admins. - Make sure to revise your subscription settings...
   
Dec 23, 2009 Harbour 2.0.0 unified Windows binary release
  Harbour 2.0.0 (Revision 13372) source archives and Windows binary releases are available for download on sourceforge.net. more»
   
Dec 22, 2009 Harbour v2.0.0 is released!
  After 16 months of intensive development the final version 2.0.0 is finally released. There are many highlights and news in this new release, check out some details and download your copy free. more»
   
May 13, 2009 SourceForge Community Choice Awards!
   - - - - -
The SourceForge.net announced the opening of nominations for the fourth annual SourceForge Community Choice Awards. The Harbour project is candidate - nominate us! more»
   
February 15, 2009 New website released!
  Released the new layout for our site. This includes details about the project, several examples and will soon include some tutorials. more»
   
September 17, 2008 Harbour v1.0.1 is released!
  Many deployment fixes into General, Core & Contrib sessions. All users should upgrade to receive the latest fixes. more»
   
August 10, 2008 Harbour Release v1.0.0
  Many deployment fixes into General, Core & Contrib sessions. All users should upgrade to receive the latest fixes. more»
 
See the news archive for past news articles.
  - - - - - - - - - - - - - - - -
 Sample Applications 
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Hello world
Hello world A single Hello World with a typical welcome message.
 
FOR EACH example
This example demonstrates how to use the FOR EACH command.
 
CGI/HTML-Generator class
This example shows how to work with Web pages using a custom class to manipulate data coming from a file and returns it to web browser.
 
Ini file reading/writing
Test for Ini files reading/writing using native Harbour functions.
 
TBrowse and TBColumn sample
A simple example demonstrating the use of classes TBrowse and TBColumn.
 
   
 
- - - - - -
- - + + + + +Harbour Project - Home + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + + + + + + + + + + +
 Overview 
 The Harbour Project is a Free Open Source Software effort to build a multiplatform Clipper language compiler. Harbour consists of the xBase language compiler and the runtime libraries with different terminal plugins and different databases (not just DBF).
+
+Harbour is a cross-platform compiler and is known to compile and run on MS-DOS, Windows (32 & 64), Windows CE, Pocket PC, OS/2, GNU/Linux and Mac OS X. +More features »
 
   
+ + + + + + + + + + + + + + + + + + + + + + +
 Why use it? Project Status: 
 • Harbour is free software 100% compatible with Clipper compilers
• Harbour is proven to be stable, robust and efficient.
• Harbour is portable across multiple operating systems with the same code base.
• You can use it to develop either open source or commercial applications. Learn more»
+ + + + + + + +
Current release: v3.0.0
+ Release Date: 2011-07-17
+ Nightly source: zip  tgz  bz2  xz
+ Nightly binary: exe  7z (win)
+
 
     
 
+ + + + + + + + + + +
 Featured resources: 
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
     
Native SQL, ADO & ODBC + SupportSupport modern tecnologies: XML, FTP, TCP/IP, etc.Cross-platform: 32/64-bit, Mobile, Mac, etc.Create Console, GUI, Service & Web ApplicationsContains many third party libs with additional featuresDeveloped by a very experienced and capable team of developers
 
 
+ + + + + + + + + + + + + + + +
 Licensing   
 Harbour is a free and open-source project. It can be used to make open source applications, free or commercial products. Read more»
+ + + + +
SourceForge.net Logo
 
 
+ + + + + + + + + + + + + + +
    
  + + + + + + + + + + + + + + + + + + +
Harbour Project Development News

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
July 17, 2011 Harbour 3.0.0 released
  After 1.5 years of strong development and 3600 commits, new stable version 3.0.0 is released. Sources are available on sf.net file area, prebuilt binaries will follow shortly.
   
Aug 2, 2010 Harbour successfully ported to VxWorks RTOS
  In 2010 July with few days of development effort, Harbour has been ported successfully to VxWorks 6.8 Real-Time Operating System (x86 CPU target for now) for both GNU GCC and Wind River C Compiler. Many thanks to Wind River Inc. for making their development package available to our open source compiler project. This means now Harbour can run on cars, planes, rockets and robots. :) See more about the technical details in ChangeLog entry '2010-07-16 18:22 UTC+0200 Viktor Szakats' here
   
Jun 3, 2010 Harbour Mailing Lists address change
  Thanking Phil Barnett for providing the Harbour community a great mailing list + for so many years, today, due to server problems, we have migrated the mailing + lists to Google Groups in agreement with Phil and Harbour admins. + Make sure to revise your subscription settings...
   
Dec 23, 2009 Harbour 2.0.0 unified Windows binary release
  Harbour 2.0.0 (Revision 13372) source archives and Windows binary releases are available for download on sourceforge.net. more»
   
Dec 22, 2009 Harbour v2.0.0 is released!
  After 16 months of intensive development the final version 2.0.0 is finally released. There are many highlights and news in this new release, check out some details and download your copy free. more»
   
May 13, 2009 SourceForge Community Choice Awards!
   + + + + +
The SourceForge.net announced the opening of nominations for the fourth annual SourceForge Community Choice Awards. The Harbour project is candidate - nominate us! more»
   
February 15, 2009 New website released!
  Released the new layout for our site. This includes details about the project, several examples and will soon include some tutorials. more»
   
September 17, 2008 Harbour v1.0.1 is released!
  Many deployment fixes into General, Core & Contrib sessions. All users should upgrade to receive the latest fixes. more»
   
August 10, 2008 Harbour Release v1.0.0
  Many deployment fixes into General, Core & Contrib sessions. All users should upgrade to receive the latest fixes. more»
 
See the news archive for past news articles.
  + + + + + + + + + + + + + + + +
 Sample Applications 
  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Hello world
Hello world A single Hello World with a typical welcome message.
 
FOR EACH example
This example demonstrates how to use the FOR EACH command.
 
CGI/HTML-Generator class
This example shows how to work with Web pages using a custom class to manipulate data coming from a file and returns it to web browser.
 
Ini file reading/writing
Test for Ini files reading/writing using native Harbour functions.
 
TBrowse and TBColumn sample
A simple example demonstrating the use of classes TBrowse and TBColumn.
 
   
 
+ + + + + +
+ + diff --git a/harbour/website/legalnotes.html b/harbour/website/legalnotes.html index e29a1e75da..32fc8abfe4 100644 --- a/harbour/website/legalnotes.html +++ b/harbour/website/legalnotes.html @@ -1,107 +1,107 @@ - - - - -Harbour Project - Legal Notes - Terms of Service - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - - - -
 Legal Notes 
  Copyright
- The website HTML, text, images audio, video, software or other content that is made available on this website are the property of someone - the author in the case of content produced elsewhere and reproduced here with permission, or Harbour or its content suppliers. Before you use this content in some way please take care to ensure that you have the relevant rights and permissions from the copyright holder.
-
-You are welcome to display on your computer, download and print pages from this website provided the content is only used for personal, educational and non-commercial use. You must retain copyright and other notices on any copies or printouts you make. Certain of the materials available on this site are "open source" materials subject to the GNU General Public License ("GPL") or other open source license and are so marked - use of those materials is governed by the individual applicable license.
-
-Using the software
- Your use of any software obtained from this site is subject to the terms of any license agreement provided with the software. Some of these agreements incorporate the terms of the GPL or other open source licences. Please read these agreements before installing and using the software; by installing and using the software, you will have accepted the terms of the agreements.
-
- Trademarks
- Any trademarks and logos displayed on this website are the property of their owners. For example, Linux is a registered trademark of Linus Torvalds. Debian is a trademark of Software in the Public Interest, Inc. Windows is allegedly a trademark of Microsoft Corporation. - All rights reserved.
-
- Privacy policy
- If this site makes forums, message boards, and/or news groups available to its users, please remember that any information that is disclosed in these areas becomes public information and you should exercise caution when deciding to disclose your personal information.
-
- Links to other websites
- This website may contain links to other websites and resources. The links are provided for convenience only and Harbour Project is not responsible for the content of any linked websites. The inclusion of any link to a website does not imply endorsement by Harbour of the website or their entities, products or services.
-
- Disclaimer
- This website and all information, products and services on it are provided on an "as is" basis, without warranty of any kind, either express or implied. Your use of this website is at your own risk. The Harbour Project disclaims all warranties, express or implied, including without limitation, warranties of merchantability and fitness for a particular purpose. -
-
- Harbour Project and our developers disclaims liability for any direct, indirect, incidental, special, consequential, exemplary, punitive or other damages, or lost profits, that may result directly or indirectly from the use of this website and any material that is downloaded or obtained through the use of this website. -
-
- This includes, without limitation, any damage to computer systems, hardware or software, loss of data, or any other performance failures, any errors, bugs, viruses or other defects that result from, or are associated with the use of this website.
-
- Any doubts about the content on this site, please post a topic in our mailing list that we will assist you.
 
 
 
- - - - - -
- - + + + + +Harbour Project - Legal Notes - Terms of Service + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + + + +
 Legal Notes 
  Copyright
+ The website HTML, text, images audio, video, software or other content that is made available on this website are the property of someone - the author in the case of content produced elsewhere and reproduced here with permission, or Harbour or its content suppliers. Before you use this content in some way please take care to ensure that you have the relevant rights and permissions from the copyright holder.
+
+You are welcome to display on your computer, download and print pages from this website provided the content is only used for personal, educational and non-commercial use. You must retain copyright and other notices on any copies or printouts you make. Certain of the materials available on this site are "open source" materials subject to the GNU General Public License ("GPL") or other open source license and are so marked - use of those materials is governed by the individual applicable license.
+
+Using the software
+ Your use of any software obtained from this site is subject to the terms of any license agreement provided with the software. Some of these agreements incorporate the terms of the GPL or other open source licences. Please read these agreements before installing and using the software; by installing and using the software, you will have accepted the terms of the agreements.
+
+ Trademarks
+ Any trademarks and logos displayed on this website are the property of their owners. For example, Linux is a registered trademark of Linus Torvalds. Debian is a trademark of Software in the Public Interest, Inc. Windows is allegedly a trademark of Microsoft Corporation. + All rights reserved.
+
+ Privacy policy
+ If this site makes forums, message boards, and/or news groups available to its users, please remember that any information that is disclosed in these areas becomes public information and you should exercise caution when deciding to disclose your personal information.
+
+ Links to other websites
+ This website may contain links to other websites and resources. The links are provided for convenience only and Harbour Project is not responsible for the content of any linked websites. The inclusion of any link to a website does not imply endorsement by Harbour of the website or their entities, products or services.
+
+ Disclaimer
+ This website and all information, products and services on it are provided on an "as is" basis, without warranty of any kind, either express or implied. Your use of this website is at your own risk. The Harbour Project disclaims all warranties, express or implied, including without limitation, warranties of merchantability and fitness for a particular purpose. +
+
+ Harbour Project and our developers disclaims liability for any direct, indirect, incidental, special, consequential, exemplary, punitive or other damages, or lost profits, that may result directly or indirectly from the use of this website and any material that is downloaded or obtained through the use of this website. +
+
+ This includes, without limitation, any damage to computer systems, hardware or software, loss of data, or any other performance failures, any errors, bugs, viruses or other defects that result from, or are associated with the use of this website.
+
+ Any doubts about the content on this site, please post a topic in our mailing list that we will assist you.
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/license.html b/harbour/website/license.html index 03855391d7..a1cf8113fd 100644 --- a/harbour/website/license.html +++ b/harbour/website/license.html @@ -1,217 +1,217 @@ - - - - -Harbour Project - License - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
 
- - - - - - - - - - -
 The Harbour Project Compiler License 
 Note: This license applies to most of the files in the source/compiler - directory.
-
- This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit - their web site at http://www.gnu.org/).
 
 
- - - - - - - - - - -
 The Harbour Project Library License
 
  Note: This license applies to most of the files in the include directory, - source directory, and subdirectories.
-
- This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version.
-
- This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License - along with this software; see the file COPYING. If not, write to - the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
-
- As a special exception, the Harbour Project gives permission for - additional uses of the text contained in its release of Harbour.
-
- The exception is that, if you link the Harbour libraries with other - files to produce an executable, this does not by itself cause the - resulting executable to be covered by the GNU General Public License. - Your use of that executable is in no way restricted on account of - linking the Harbour library code into it.
-
- This exception does not however invalidate any other reasons why - the executable file might be covered by the GNU General Public License.
-
- This exception applies only to the code released by the Harbour - Project under the name Harbour. If you copy code from other - Harbour Project or Free Software Foundation releases into a copy of - Harbour, as the General Public License permits, the exception does - not apply to the code that you add in this way. To avoid isleading
- anyone as to the status of such modified files, you must delete - this exception notice from them.
-
- If you write modifications of your own for Harbour, it is your choice - whether to permit this exception to apply to your modifications. - If you do not wish that, delete this exception notice.
 
 
- - - - - - - - - - -
 The Old Harbour Project Library License
 
 Note: This license only applies to the following files:
-
-    source\rtl\philes.c
-    source\rtl\binnum.c
-    source\lang\msgeu.c
-    source\lang\msgsl437.c
-    source\lang\msgsl852.c
-    source\lang\msgsliso.c
-    source\lang\msgslwin.c
-    source\lang\msgsr852.c
-    source\lang\msgsriso.c

-
- This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version, with one exception:
-
- The exception is that if you link the Harbour Runtime Library (HRL) - and/or the Harbour Virtual Machine (HVM) with other files to produce - an executable, this does not by itself cause the resulting executable - to be covered by the GNU General Public License. Your use of that - executable is in no way restricted on account of linking the HRL - and/or HVM code into it.
-
- This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit - their web site at http://www.gnu.org/).
 
 
- - - - - - - - - - -
 The Harbour Project Contrib License
 
 There is no one single license that applies to the Harbour Project - contrib files. Some files use the Harbour Project Compiler license. - Some files use the Harbour Project Library license. Some files use - the old Harbour Project Library license. Some files may even use other - types of free software or open source software licenses. Some files - have been donated to the public domain. If you use any of the contrib - files, you need to investigate the license that applies to each file. 
 
- - - - - -
- - + + + + +Harbour Project - License + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 The Harbour Project Compiler License 
 Note: This license applies to most of the files in the source/compiler + directory.
+
+ This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + their web site at http://www.gnu.org/).
 
 
+ + + + + + + + + + +
 The Harbour Project Library License
 
  Note: This license applies to most of the files in the include directory, + source directory, and subdirectories.
+
+ This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version.
+
+ This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License + along with this software; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
+
+ As a special exception, the Harbour Project gives permission for + additional uses of the text contained in its release of Harbour.
+
+ The exception is that, if you link the Harbour libraries with other + files to produce an executable, this does not by itself cause the + resulting executable to be covered by the GNU General Public License. + Your use of that executable is in no way restricted on account of + linking the Harbour library code into it.
+
+ This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License.
+
+ This exception applies only to the code released by the Harbour + Project under the name Harbour. If you copy code from other + Harbour Project or Free Software Foundation releases into a copy of + Harbour, as the General Public License permits, the exception does + not apply to the code that you add in this way. To avoid isleading
+ anyone as to the status of such modified files, you must delete + this exception notice from them.
+
+ If you write modifications of your own for Harbour, it is your choice + whether to permit this exception to apply to your modifications. + If you do not wish that, delete this exception notice.
 
 
+ + + + + + + + + + +
 The Old Harbour Project Library License
 
 Note: This license only applies to the following files:
+
+    source\rtl\philes.c
+    source\rtl\binnum.c
+    source\lang\msgeu.c
+    source\lang\msgsl437.c
+    source\lang\msgsl852.c
+    source\lang\msgsliso.c
+    source\lang\msgslwin.c
+    source\lang\msgsr852.c
+    source\lang\msgsriso.c

+
+ This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version, with one exception:
+
+ The exception is that if you link the Harbour Runtime Library (HRL) + and/or the Harbour Virtual Machine (HVM) with other files to produce + an executable, this does not by itself cause the resulting executable + to be covered by the GNU General Public License. Your use of that + executable is in no way restricted on account of linking the HRL + and/or HVM code into it.
+
+ This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit + their web site at http://www.gnu.org/).
 
 
+ + + + + + + + + + +
 The Harbour Project Contrib License
 
 There is no one single license that applies to the Harbour Project + contrib files. Some files use the Harbour Project Compiler license. + Some files use the Harbour Project Library license. Some files use + the old Harbour Project Library license. Some files may even use other + types of free software or open source software licenses. Some files + have been donated to the public domain. If you use any of the contrib + files, you need to investigate the license that applies to each file. 
 
+ + + + + +
+ + diff --git a/harbour/website/logos.html b/harbour/website/logos.html index 46467a2260..6d5d9eadb4 100644 --- a/harbour/website/logos.html +++ b/harbour/website/logos.html @@ -1,179 +1,179 @@ - - - - -Harbour Project - Official logos - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Official logos  
 Below offer several images containing reference to the Harbour project for use in its software and its Web site. 
   
  - - - - - - - - -
The Harbour - logo was created by Patrick - Mast. Download the Harbour - logo - in PDF, EPS & AI formats with high - resolution (829Kb).Harbour icon in Win/Mac format (5.74KB)
- Created by Vailton Renato with Axialis IconWorkshop®.
 
 
 
 
 
 Harbour Banners
- To put Harbour Banner on your webpage, save the image on your computer, then copy and paste the code that is below the desired image in your HTML page.
 
  - - - - - - - - - - - - - - - - - - -

 
 
 
 
 
 
 
 Harbour Buttons 
 Right-click the mouse and select "Save As" to save the images below on your computer.
-

- Harbour button in GIF format. (2.09Kb) -


- "Harbour the future of xBase" (16.8Kb)

-


- "Powered by HScript" (2.95Kb) -
-

 
 
 
 
 
 
- - - - - -
- - + + + + +Harbour Project - Official logos + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Official logos  
 Below offer several images containing reference to the Harbour project for use in its software and its Web site. 
   
  + + + + + + + + +
The Harbour + logo was created by Patrick + Mast. Download the Harbour + logo + in PDF, EPS & AI formats with high + resolution (829Kb).Harbour icon in Win/Mac format (5.74KB)
+ Created by Vailton Renato with Axialis IconWorkshop®.
 
 
 
 
 
 Harbour Banners
+ To put Harbour Banner on your webpage, save the image on your computer, then copy and paste the code that is below the desired image in your HTML page.
 
  + + + + + + + + + + + + + + + + + + +

 
 
 
 
 
 
 
 Harbour Buttons 
 Right-click the mouse and select "Save As" to save the images below on your computer.
+

+ Harbour button in GIF format. (2.09Kb) +


+ "Harbour the future of xBase" (16.8Kb)

+


+ "Powered by HScript" (2.95Kb) +
+

 
 
 
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/menu/harbour-menu.js b/harbour/website/menu/harbour-menu.js index b547f64dcc..eb08f4c4b9 100644 --- a/harbour/website/menu/harbour-menu.js +++ b/harbour/website/menu/harbour-menu.js @@ -53,7 +53,7 @@ stm_aix("p0i16","p0i2",[]); stm_aix("p0i17","p0i3",[2,"","language_en.png","language_en.png",62,65,0,""]); stm_bpx("p7","p1",[1,4,0,-3,2,0,28]); stm_aix("p7i0","p1i0",[0," English ","","",-1,-1,0,"/","_self","","","flageua.png","flageua.png",28,17]); -stm_aix("p7i1","p7i0",[0," Español ","","",-1,-1,0,"http://alex-degarate.110mb.com/harbour/","_self","","","flages.png","flages.png"]); +stm_aix("p7i1","p7i0",[0," Espanol ","","",-1,-1,0,"http://alex-degarate.110mb.com/harbour/","_self","","","flages.png","flages.png"]); stm_aix("p7i2","p7i0",[0," Portugués ","","",-1,-1,0,"http://www.harbour-project.com.br","_self","","","flagbr.png","flagbr.png"]); stm_ep(); stm_ep(); diff --git a/harbour/website/menu/stcode.js b/harbour/website/menu/stcode.js index 8a697c95df..64bfeec562 100644 --- a/harbour/website/menu/stcode.js +++ b/harbour/website/menu/stcode.js @@ -4,4 +4,4 @@ Copyright 2008 by SourceTec Software Co.,LTD For more information, see:www.sothink.com ================================================================*/ -if(typeof _STNS!="undefined"&&!_STNS.UI){_STNS.UI={UNIUID:0,DOMEVENTS:["mouseover","mouseout","mousemove","mousedown","mouseup","click","keypress","keydown","keyup","dblclick"],foGetUIById:function(id){var o;while(id){if(o=_STNS.UI.oUIs[id]){return o;}id=id.substr(0,id.lastIndexOf("_"));}},fsGetUid:function(){this.iIdNo++;if(_STNS.UI.UNIUID){return "stUI"+_STNS.UI.UNIUID+this.iIdNo;}else{if(window.name){return "stUI"+(_STNS.fsTranD2X(36,(new Date).getTime()))+this.iIdNo;}else{return "stUI"+this.iIdNo;}}},iIdNo:0,oUIs:{},fbDmEnt:function(e,o){var _5=o.id,ob,r=-1;if(!_5){return true;}if(ob=_STNS.UI.foGetUIById(_5)){if(ob.fbGetEnt){r=ob.fbGetEnt(e,o);}}return r;},fsGetEnt:function(o,t,n,_b){var s;if(n==null){var n="";}if(!_b){var _b="";}if(o._oEs[t+n]&&o._oEs[t+n].length){for(var i=0;i<_STNS.UI.DOMEVENTS.length;i++){if(_STNS.UI.DOMEVENTS[i]==t){return "on"+t+"='return "+_b+"_STNS.UI.fbDmEnt(event,this)'";}}}return "";}};with(_STNS.UI){_STNS.UI.CUIObj=_STNS.Class();CUIObj.register("UI/CUIObj");CUIObj.construct=function(){this._oMs={};this._oEs={};this.oParent=null;this.sUid=_STNS.UI.fsGetUid();this.fbGetEnt=_STNS.fbTrue();with(_STNS.UI.CUIObj){this.fvDestroy=fvDestroy;this.fvGetMsg=fvGetMsg;this.fbSetMsg=fbSetMsg;this.fbAttachEnt=fbAttachEnt;this.fbDetachEnt=fbDetachEnt;this.fbDetachAll=fbDetachAll;this.fbFireEnt=fbFireEnt;this.fbCheckEnt=fbCheckEnt;this.foClone=foClone;}_STNS.UI.oUIs[this.sUid]=this;this.sSelf="_STNS.UI.oUIs['"+this.sUid+"']";};CUIObj.fvDestroy=function(){delete _STNS.UI.oUIs[this.sUid];};CUIObj.fvGetMsg=function(m,d){var f,r=true;if(f=this._oMs[m]){if(typeof f=="string"){f=_STNS.ffGetFun(f);}if(f){r=f.call(this,d);}}if(r==true&&this.oParent){this.oParent.fvGetMsg(m,d);}};CUIObj.fbSetMsg=function(m,f){if(typeof f!="function"&&typeof f!="string"){_STNS.fvThrow(new Error("Attach invalid function to "+t+" message."));return false;}this._oMs[m]=f;return true;};CUIObj.fbCheckEnt=function(t){if(this._oEs[t]){return true;}};CUIObj.fbAttachEnt=function(t,f){if(typeof f!="function"&&typeof f!="string"){_STNS.fvThrow(new Error("Attach invalid function to "+t+" event."));return false;}if(this._oEs[t]){for(var i=0;iCUIMenu");CUIMenu.construct=function(){this.sJsPth="";this.sVer=0;this.iTyp=0;this.aPopups=[];this.sId=0;this.iNid=-1;this.iX=0;this.iY=0;this.iWid=0;this.iHei=0;this.iHal=0;this.sImgPth=0;this.sLnkPre=0;this.sBlank=0;this.iClk=0;this.bClked=0;this.iStat=0;this.iDelaySV=250;this.iDelaySH=0;this.iDelayHd=1000;this.iDelayTk=0;this.bHdPopup=true;this.aHdTags=[];this.bRTL=false;this.aCursors=[];this.sSiteRoot="";this.bRunEff=true;this.iTracks=0;this.iTrackLevel=-1;this.oTracks={};this.aScBars=[];this.aMaxSizes=[-1,-1];this.iScType=0;this.bCfm=false;this.bCfShow=false;this.sTarFm="";this.sSrcFm="";this.iCfX=0;this.iCfY=0;this.iCfD=0;this.oFocus=0;this.OutItem=0;with(_STNS.UI.CUIMenu){this.fvDestroy=fvDestroy;this.fsGetImg=fsGetImg;this.fsGetLnk=fsGetLnk;this.fsGetHTML=fsGetHTML;this.fsGetImgTag=fsGetImgTag;this.fsGetEnt=fsGetEnt;this.fsGetStyle=fsGetStyle;this.fdmGetTarFm=fdmGetTarFm;this.fsGetSrcFm=fsGetSrcFm;this.fbShow=fbShow;this.foInsPopup=foInsPopup;this.fbDelPopup=fbDelPopup;this.fvMvto=fvMvto;this.fnGsp=fnGsp;this.fvSsc=fvSsc;this.fbTrack=fbTrack;this.fbCkLnk=fbCkLnk;this.fbClick=fbClick;this.fbKeydown=fbKeydown;}};CUIMenu.MOUSEOVER=1;with(CUIMenu){CUIMenu.MAXSTATE=MOUSEOVER;}CUIMenu.ALIGNS=["left","center","right"];CUIMenu.VALGINS=["top","middle","bottom"];CUIMenu.REPEATS=["no-repeat","repeat-x","repeat-y","repeat"];CUIMenu.BORDERS=["none","solid","double","dotted","dashed","groove","ridge","outset","inset"];CUIMenu.fsGetHTML=function(){var s="";if(this.aPopups.length){return this.aPopups[0].fsGetHTML();}return "";};CUIMenu.fsGetImg=function(s){if(!s){return "";}if(!_STNS.fbIsAbsPth(s)){s=this.sImgPth+s;}if((s.charAt(0)=="/")&&_STNS.bLocal&&this.sSiteRoot){s=this.sSiteRoot+s;}if(s&&_STNS.bBufImg){var p=_STNS.fsGetAbsPth(s);if(!_STNS.oImgs[p]){_STNS.oImgs[p]=1;}}return s;};CUIMenu.fsGetLnk=function(l){if(!_STNS.fbIsAbsPth(l)){l=this.sLnkPre+l;}if((l.charAt(0)=="/")&&_STNS.bLocal&&this.sSiteRoot){l=this.sSiteRoot+l;}if(!l.toLowerCase().indexOf("javascript:")){l+=";void(0)";}l=_STNS.fsGetAbsPth(l);return l;};CUIMenu.fvDestroy=function(){for(var i=0;i0?pos[0]+xs:pos[0]-xs,y=dy>0?pos[1]+ys:pos[1]-ys;this.fvMvto([x,y],p);}};CUIMenu.fbShow=function(){_STNS.fvLoadLib();if(_STNS.bLoaded){var o=document.body,w="beforeEnd";_STNS.fbInsHTML(o,w,this.fsGetHTML());this.aPopups[0].fbInit();this.aPopups[0].fbShow();}else{if(STM_BIMG){_STNS.fvBufImgs();}if(this.iTracks&&(!this.iTyp||this.iTyp==1)){_STNS.fvAddCk(new Function(this.sSelf+".fbTrack()"));}if(!this.iTyp){var s="";document.write(this.fsGetHTML()+s);}else{if(this.iTyp==1){var t=this,p=this.aPopups[0];if(isNaN(this.iX)||isNaN(this.iY)){_STNS.fvAddCk(new Function(this.sSelf+".fvSsc()"));}else{var pos=p.faGetXY();t.iX=pos[0];t.iY=pos[1];}p.fbShow();}else{if(this.iTyp==3){var t=this,p=this.aPopups[0];document.oncontextmenu=function(e){var s,pos;if(!e){e=window.event;pos=_STNS.faCP2PP([e.clientX,e.clientY]);}else{pos=[e.pageX,e.pageY];}t.iX=pos[0];t.iY=pos[1];p.fbHide();p.fbShow();p.fbHide(t.iDelayHd);return false;};}}}}};CUIMenu.fsGetImgTag=function(s,w,h,b,id,f,nw,nh){if(!s){s=this.sBlank;}if(f){s=_STNS.fsGetAbsPth(s);}return _STNS.fsGetImgTag(s,w,h,b,id,nw,nh);};CUIMenu.fsGetEnt=function(o,t,n,f){var sfm="";if(f){var sfm=this.fsGetSrcFm();if(sfm){sfm+=".";}else{sfm="";}}return _STNS.UI.fsGetEnt(o,t,n,sfm);};CUIMenu.fsGetStyle=function(t,f,c){var s="",_r=_STNS;if(!f&&_r.bShield){if(_r.oDefCSS[t]){s="class='st"+t+"'";}if(c){s+=" style=\""+c+"\"";}}else{if(!c&&_r.oDefCSS[t]){s="style=\""+_r.oDefCSS[t]+"\"";}else{if(_r.oDefCSS[t]){s="style=\"";var a=_r.foCss2Obj(c),b=_r.foCss2Obj(_r.oDefCSS[t]);for(var i in b){if(typeof a[i]=="undefined"){a[i]=b[i];}}s+=_r.fsObj2Css(a);s+="\"";}}}return s;};CUIMenu.fsGetSrcFm=function(){var s="",a=this.sSrcFm?("parent."+this.sTarFm).split("."):this.sTarFm.split("."),n=[],f=0;for(var j=0;j=0;j--){s+=n[j]+".";}if(this.sSrcFm){s+=this.sSrcFm;}else{s+="parent";}return s;};CUIMenu.fdmGetTarFm=function(){var j,s=this.sSrcFm?"parent."+this.sTarFm:this.sTarFm,w;try{w=eval(s);return w;}catch(e){return;}};CUIMenu.fbTrack=function(){var _r=_STNS,_c=_r.UI.CUIMenu,is={},ps=[],_ic=_r.UI.CUIItem,d=0,it,ts=[];if(this.iDelayTk>0){this.iDelayTk-=_r.nCkTime;return false;}if(this.iStat&_c.MOUSEOVER){return false;}if(this.oFocus){return false;}var c=this.iTracks&33554432;for(var i=0;i0;i--){if(ps[i]&&this.aPopups[i].oParPopup){ps[this.aPopups[i].oParPopup.iNid]=1;}else{if(typeof ps[i]=="undefined"){ps[i]=0;}}}for(var i=1;i=1){for(var i=d;i>0;i--){pp=pp.oParPopup;pp.fbHide();}}var ri=o.fbRotItem(),si=ri.oSubPopup;if(si){si.fbHide();}ri.fbFireEnt("mouseout");m.oFocus=0;}}}};CUIMenu.fbKeydown=function(_7b){var e=_7b?_7b:window.event;if(e.altKey&&e.keyCode==113){if(typeof (_STNS.index)=="undefined"){_STNS.index=0;}else{if(_STNS.index<_STNS._aStMenus.length-1){_STNS.index++;}else{_STNS.index=0;}}var x=_STNS.index,_r=_STNS,m=_r._aStMenus[x],p=m.aPopups[0],o=m.oFocus;m.bRunEff=false;m.fbClick();if(o){o.fbFireEnt("mouseout");}if(m.iClk&1){m.bClked=true;}for(var j=0;jCUIPopup");CUIPopup.construct=function(){this._tTid=0;this.iTyp=0;this.iNid=-1;this.aItems=[];this.sId=0;this.iDirect=1;this.iWid=-1;this.iHei=-1;this.iOffX=0;this.iOffY=0;this.iSpace=0;this.iPad=0;this.sBgClr="";this.sBgImg="";this.iBgRep=0;this.iBdStyle=0;this.iBdWid=0;this.sBdClr="";this.iZid=1000;this.iStat=0;this.oParItem=0;this.oParMenu=0;this.oParPopup=0;this.iHal=0;this.iDepth=0;this.iOpac=100;this.iShadow=0;this.iSdSize=0;this.sSdClr="";this.iEffDur=0;this.bShInit=false;this.bHdInit=false;this.sShEff=0;this.iShEff=-1;this.sHdEff=0;this.iHdEff=-1;this.aRounds=[];this.aRWids=[];this.aRHeis=[];this.aRdb=[];this.aRBgClrs=[];this.aRBgImgs=[];this.aRBgReps=[];this.aCorners=[];this.aCorWHs=[];this.aScBars=[];this.iMaxSize=-1;this.iScr=0;this.bflg=true;this.bMul=false;this.iMl=2;this.sMBgClrs="#000000";this.sMOpc=0;this.iMSpc=1;this.sMBgImgs="";this.sMBgReps="no-repeat";with(_STNS.UI.CUIPopup){this.fsGetHTML=fsGetHTML;this.fbGetEnt=fbGetEnt;this.fbSetOver=fbSetOver;this.fbSetOut=fbSetOut;this.fbCreate=fbCreate;this.fbInit=fbInit;this.fbShow=fbShow;this.fbShowX=fbShowX;this.fbHide=fbHide;this.fbHideX=fbHideX;this.fbOnShow=fbOnShow;this.fbOnHide=fbOnHide;this.faGetXY=faGetXY;this.foInsItem=foInsItem;this.fbDelItem=fbDelItem;this.fvDestroy=fvDestroy;this.faGetSwh=faGetSwh;this.fvScr=fvScr;this.fvClearScr=fvClearScr;this.fbCheckClkSet=fbCheckClkSet;this.fvHdWels=fvHdWels;this.fvShWels=fvShWels;this.fvWtag=fvWtag;this.fbWover=fbWover;}};CUIPopup.CROSSFRAME=1;CUIPopup.SHOW=2;CUIPopup.MOUSEOVER=4;with(CUIPopup){CUIPopup.MAXSTATE=CROSSFRAME|SHOW|MOUSEOVER;}CUIPopup.VERTICAL=1;CUIPopup.STATIC=2;CUIPopup.DIRECTION_LEFT=1;CUIPopup.DIRECTION_RIGHT=2;CUIPopup.DIRECTION_UPLEFT=3;CUIPopup.DIRECTION_DOWNLEFT=4;CUIPopup.DIRECTION_UPRIGHT=5;CUIPopup.DIRECTION_DOWNRIGHT=6;CUIPopup.fsGetHTML=function(){var _r=_STNS,_c=_r.UI.CUIPopup,m=this.oParMenu,_mc=_r.UI.CUIMenu,s="",scs,its,cf=this.iStat&_c.CROSSFRAME,fs="",v=this.iTyp&_c.VERTICAL,sc=this.aScBars.length?this.aScBars:m.aScBars,_8f=m.iWid&&!this.iNid&&!v;with(this){var _90=_91=isAllSW=0,_92,_93=_r.bIsSF&&this.bMul;for(var i=0;i";if(_96){var _tc=0;for(var c=0;c<_9a;c++){its+="";for(var j=_tc;j<_tc+_9d;j++){if(_99>0){if(!c){var ad=false;for(var t=0;t"+aItems[j].fsGetHTML()+"";if(_93){if(!this.tr[c]){this.tr[c]=[];}this.tr[c].push(aItems[j].iNid);}_99--;}}_tc=_tc+_9d;its+="";_99>0&&_98>0?its+="":"";}}else{if(_95){var _a5=_r.bIsFX&&_r.oNav.version<=20021130;_tprs=_9a==_9b?0:aItems.length%_ml;for(var c=0;c<_9d;c++){its+="";var _a6=0;for(var j=0;j<(_9c==0?_9a:_tprs>0?_9a:_9b);j++){if(_99>0){_a6=j==0?c:_a6+_9d;its+=""+aItems[_a6].fsGetHTML()+"";if(_93){if(!this.tr[c]){this.tr[c]=[];}this.tr[c].push(aItems[_a6].iNid);}_99--;}c==0&&j<_9a-1&&_98>0?(its+="
"):"";}_tprs>0?_tprs--:"";its+="";}}else{for(var j=0;j":"")+""+aItems[j].fsGetHTML()+""+(v?"":"");}else{its+=(v?"":"")+""+aItems[j].fsGetHTML()+""+(v?"":"");}}}}its+="";scs=sc[0]&&sc[1]?(""+(v?"":"")+""+(v?"":"")+""+(v?"":"")+""+(v?"":"")+"
"+sc[0].fsGetHTML()+"
"+"
"+its+"
"+"
"+sc[1].fsGetHTML()+"
"):its;if(_STNS.bIsIE&&(iOpac<100&&iOpac>-1||_STNS.oNav.version>=5.5&&iShadow&&iSdSize)){fs="filter:"+(iOpac<100&&iOpac>-1?"Alpha(opacity="+iOpac+") ":"")+(_STNS.oNav.version>=5.5&&iShadow&&iSdSize?(iShadow==1?"progid:DXImageTransform.Microsoft.dropshadow(color="+sSdClr+",offx="+iSdSize+",offy="+iSdSize+",positive=1)":"progid:DXImageTransform.Microsoft.Shadow(color="+sSdClr+",direction=135,strength="+iSdSize+")"):"")+";";}else{if(_STNS.oNav.name=="gecko"&&_STNS.oNav.version>=20060414){fs=iOpac<100&&iOpac>-1?"-moz-opacity:"+iOpac/100+";":"";}}s+=(iTyp&_c.STATIC?"":"
")+"0&&iBdWid>0?"border-width:"+iBdWid+"px;border-style:"+_mc.BORDERS[iBdStyle]+";border-color:"+sBdClr+";":"")+(!m.iTyp&&iWid&&iWid!=-1?"width:"+_r.fsGetLen("tb",iWid,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1)+";":"")+(!m.iTyp&&iHei&&iHei!=-1?"height:"+_r.fsGetLen("tb",iHei,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1,0)+";":""))+" "+(!m.iTyp&&!this.iNid&&m.iHal?"align="+_mc.ALIGNS[m.iHal]:"")+" "+m.fsGetEnt(this,"mouseover","",cf)+" "+m.fsGetEnt(this,"mouseout","",cf)+">"+(aRHeis[0]&&aRHeis[0]!=-1||(aRHeis[0]==-1&&(aCorners[0]||aCorners[1]||aRounds[0]))?""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+"":"")+""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+""+(aRHeis[2]&&aRHeis[2]!=-1||(aRHeis[2]==-1&&(aCorners[3]||aCorners[2]||aRounds[2]))?""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+"":"")+"
"+m.fsGetImgTag(aCorners[0],aRWids[3],aRHeis[0],0,null,cf,aCorWHs[0],aCorWHs[1])+""+m.fsGetImgTag(aRounds[0],aRWids[0],aRHeis[0],0,null,cf)+""+m.fsGetImgTag(aCorners[1],aRWids[1],aRHeis[0],0,null,cf,aCorWHs[2],aCorWHs[3])+"
"+m.fsGetImgTag(aRounds[3],aRWids[3],aRHeis[3],0,null,cf)+""+scs+""+m.fsGetImgTag(aRounds[1],aRWids[1],aRHeis[1],0,null,cf)+"
"+m.fsGetImgTag(aCorners[3],aRWids[3],aRHeis[2],0,null,cf,aCorWHs[6],aCorWHs[7])+""+m.fsGetImgTag(aRounds[2],aRWids[2],aRHeis[2],0,null,cf)+""+m.fsGetImgTag(aCorners[2],aRWids[1],aRHeis[2],0,null,cf,aCorWHs[4],aCorWHs[5])+"
"+(iTyp&_c.STATIC?m.iHal==2&&(_r.bIsIE||_r.bIsOP)?"
":"":"
");}return s;};CUIPopup.fbGetEnt=function(e,o){var et=e.type||e,oid=o.id,_r=_STNS,_c=_r.UI.CUIPopup;with(this){switch(et){case "mouseover":if(!o._ov&&((_r.bIsIE&&e.srcElement&&_r.fbIsPar(o,e.srcElement))||(!_r.bIsIE&&e.target&&_r.fbIsPar(o,e.target)))){o._ov=1;this.iStat|=_c.MOUSEOVER;return fbFireEnt("mouseover");}break;case "mouseout":if(o._ov&&((_r.bIsIE&&(!e.toElement||!_r.fbIsPar(o,e.toElement)))||!_r.bIsIE&&(!e.relatedTarget||!_r.fbIsPar(o,e.relatedTarget)))){o._ov=0;this.iStat&=_c.MAXSTATE-_c.MOUSEOVER;return fbFireEnt("mouseout");}break;case "keydown":return fbFireEnt("keydown",e.keyCode);default:return fbFireEnt(et);}}return true;};CUIPopup.fvDestroy=function(){for(var i=0;i=0;i--){ps[i].fbShow();}}else{if(d){this._tTid=setTimeout(this.sSelf+".fbShowX()",d);}}}return true;};CUIPopup.fbHide=function(d){var _r=_STNS,_c=_r.UI.CUIPopup,_ic=_r.UI.CUIItem,s=this.iStat&_c.SHOW,m=this.oParMenu;clearTimeout(this._tTid);if(m.iClk&4){}if(!s){d=0;}if(!d){return this.fbOnHide();}else{if(d){this._tTid=setTimeout(this.sSelf+".fbHide()",d);}}return true;};CUIPopup.fbHideX=function(d,b,e,f){var _r=_STNS,_c=_r.UI.CUIPopup,_ic=_r.UI.CUIItem,s=this.iStat&_c.SHOW,m=this.oParMenu,tp,pp=this,pi;if(typeof f=="undefined"){f=0;}if(e==null){e=-1;}if(!d){while(pp&&pp.iDepth<=b&&pp.iDepth>e){clearTimeout(pp._tTid);tp=pp;if(pi=pp.oParItem){pi.fbUpDate(pi.iStat&(_ic.MAXSTATE-_ic.MOUSEOVER_STYLE));}pp=pp.oParPopup;}if(m.bHdPopup||f){if(tp){tp.fbHide();}else{for(var i=0;i5){cl=cw+cl-w.document.body.scrollWidth;}if(x+pw>cl+cw){x=cw+cl-pw;}if(y+ph>ct+ch){y=ct+ch-ph;}if(x_12a){this._sc.style.width=(_12a-(p.MaxScrWH[0]-_126))>=0?(_12a-(p.MaxScrWH[0]-_126))+"px":"1px";this._sc.style.height=_129+"px";this._sc.style.overflow="hidden";if(_r.bIsOP&&_r.oNav.version>=9){var _12b=_r.fdmGetEleById(this.sUid+"_dv",w);if(_12b){_12b.style.width=_12b.childNodes[0].offsetWidth+"px";}}}else{if(!_12a&&_128>CWid){this._sc.style.width=(CWid-(p.MaxScrWH[0]-_126))>=0?(CWid-(p.MaxScrWH[0]-_126))+"px":"1px";this._sc.style.height=_129+"px";this._sc.style.overflow="hidden";if(_r.bIsOP&&_r.oNav.version>=9){var _12b=_r.fdmGetEleById(this.sUid+"_dv",w);if(_12b){_12b.style.width=_12b.childNodes[0].offsetWidth+"px";}}}else{this._sc.style.height=p.MaxDvWH[1]+"px";this._sc.style.width=_126+"px";_r.fdmGetEleById(p.sUid+"_sc0",w).style.display="none";_r.fdmGetEleById(p.sUid+"_sc1",w).style.display="none";}}}else{var _129=p.MaxDvWH[1]+dh,_128=this.MaxScrWH[0]-dw;CWid=_r.fiGetCW(w),CHei=_r.fiGetCH(w),CScrT=_r.fiGetCT(w);if(cf){if(this.oParPopup&&!this.oParPopup.iNid){if(_12c){if(pd==3){CHei=p.iOffY-CScrT;}if(pd==4){CHei=CHei-p.iOffY;}}}else{if(pd==3){CHei=ip[1]-CScrT+p.iOffY;}if(pd==4){CHei=CHei-ip[1]-ih-p.iOffY+CScrT;}}}else{if(pd==3){CHei=ip[1]-CScrT+p.iOffY;}if(pd==4){CHei=CHei-ip[1]-ih-p.iOffY+CScrT;}}var _12c=this.aScBars[0].iScD;_r.fdmGetEleById(p.sUid+"_sc0",w).parentNode.style.display="";_r.fdmGetEleById(p.sUid+"_sc1",w).parentNode.style.display="";if(_12c&&_129>_12c){this._sc.style.height=(_12c-(p.MaxScrWH[1]-_127))>=0?(_12c-(p.MaxScrWH[1]-_127))+"px":"1px";this._sc.style.width=_128+"px";this._sc.style.overflow="hidden";}else{if(!_12c&&_129>CHei){this._sc.style.height=(CHei-(p.MaxScrWH[1]-_127))>=0?(CHei-(p.MaxScrWH[1]-_127))+"px":"1px";this._sc.style.width=_128+"px";this._sc.style.overflow="hidden";}else{this._sc.style.height=_127+"px";_r.bIsIE?this._sc.style.width=p.MaxDvWH[0]+"px":"";_r.fdmGetEleById(p.sUid+"_sc0",w).parentNode.style.display="none";_r.fdmGetEleById(p.sUid+"_sc1",w).parentNode.style.display="none";}}}_r.fiGetEleWid(_r.fdmGetEleById(this.sUid+"_dv",w));for(var i=0;i<2;i++){var oSc=_r.fdmGetEleById(p.sUid+"_sc"+i,w);if(oSc){oSc.onmouseover=Function(this.sSelf+".fvScr("+this.sSelf+",100,"+i+")");oSc.onmousedown=Function(this.sSelf+".fvScr("+this.sSelf+",10,"+i+")");oSc.onmouseup=Function(this.sSelf+".fvScr("+this.sSelf+",100,"+i+")");oSc.onmouseout=Function(this.sSelf+".fvClearScr("+this.sSelf+")");}}var te0,te1;te0=sc[0]?_r.fdmGetEleById(sc[0].sUid+"_img",w):0;te1=sc[1]?_r.fdmGetEleById(sc[1].sUid+"_img",w):0;te0?te0.src=cf?_r.fsGetAbsPth(sc[0].img0):sc[0].img0:"";te1?te1.src=cf?_r.fsGetAbsPth(sc[1].img1):sc[1].img1:"";};CUIPopup.fvScr=function(p,sp,d){if(this.tScr){clearTimeout(this.tScr);}var _r=_STNS,_c=_r.UI.CUIPopup,v=p.iTyp&_c.VERTICAL,cf=p.iStat&_c.CROSSFRAME,m=p.oParMenu,sc=p.aScBars.length?p.aScBars:m.aScBars,te0,te1,w=p.iStat&_c.CROSSFRAME?m.fdmGetTarFm():window,scc=_r.fdmGetEleById(p.sUid+"_scc",w),cw=p.MaxDvWH[0]-_r.fiGetEleWid(scc,w),ch=p.MaxDvWH[1]-_r.fiGetEleHei(scc,w);te0=sc[0]?_r.fdmGetEleById(sc[0].sUid+"_img",w):0;te1=sc[1]?_r.fdmGetEleById(sc[1].sUid+"_img",w):0;if(cf){sc[0].img0=_r.fsGetAbsPth(sc[0].img0);sc[0].img1=_r.fsGetAbsPth(sc[0].img1);sc[1].img0=_r.fsGetAbsPth(sc[1].img0);sc[1].img1=_r.fsGetAbsPth(sc[1].img1);}if(v){if(d){scc.scrollTop+=4;if(scc.scrollTop>=ch){te1.src=sc[1].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}else{scc.scrollTop-=4;if(scc.scrollTop<=0){te0.src=sc[0].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}}else{if(d){scc.scrollLeft+=4;if(scc.scrollLeft>=cw){te1.src=sc[1].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}else{scc.scrollLeft-=4;if(scc.scrollLeft<=0){te0.src=sc[0].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}}this.tScr=setTimeout(this.sSelf+".fvScr("+this.sSelf+","+sp+","+d+")",sp);};CUIPopup.fvClearScr=function(p){if(this.tScr){clearTimeout(this.tScr);}};CUIPopup.fvHdWels=function(p){var _r=_STNS,m=this.oParMenu;for(var i=0;i=0){f=1;}}if(f){continue;}else{if(p&&this.fbWover(e,p)){if(_r.bIsOP&&tg=="applet"){var v;if(v=parseInt(e.getAttribute("visLevel"))){e.setAttribute("visLevel",v+c);v+=c;}else{e.setAttribute("visLevel",c);v=c;}if(v==-1){if(e.getAttribute("visSave")){e.setAttribute("visSave",e.style.visibility);}e.style.visibility="hidden";if(typeof (p.mywehd)!="undefined"&&p.mywehd(e)){return;}}else{if(!v){var bv=e.getAttribute("visSave");e.style.visibility=bv?bv:"";if(typeof (p.mywesh)!="undefined"&&p.mywesh(e)){return;}}}}else{if(e.visLevel){e.visLevel+=c;}else{e.visLevel=c;}if(e.visLevel==-1){if(typeof e.visSave=="undefined"){e.visSave=e.style.visibility;}e.style.visibility="hidden";if(typeof (p.mywehd)!="undefined"&&p.mywehd(e)){return;}}else{if(!e.visLevel){e.style.visibility=e.visSave;if(typeof (p.mywesh)!="undefined"&&p.mywesh(e)){return;}}}}}}}};CUIPopup.fbWover=function(e,p){if(!p){return false;}var l=0,t=0,w=e.offsetWidth,h=e.offsetHeight,pos=this.faGetXY(p),pw=_STNS.fiGetEleWid(p),ph=_STNS.fiGetEleHei(p);w?(e._wd=w):(w=e._wd);h?(e._ht=h):(h=e._ht);while(e){l+=e.offsetLeft,t+=e.offsetTop,e=e.offsetParent;}return lpos[0]&&tpos[1];};_STNS.UI.CUISeparator=_STNS.Class(_STNS.UI.CUIObj);CUISeparator=_STNS.Class(_STNS.UI.CUIObj);CUISeparator.register("UI/CUIObj>CUISeparator");CUISeparator.construct=function(){this.iNid=-1;this.iTyp=-1;this.iWid=-1;this.iHei=-1;this.sImg=0;this.iImgWid=-1;this.iImgHei=-1;this.sBgClr=0;this.sBgImg=0;this.iBgRep=0;this.oParMenu=0;this.oParPopup=0;this.sId=0;this.iStat=0;with(_STNS.UI.CUISeparator){this.fsGetHTML=fsGetHTML;this.fbInit=fbInit;}};CUISeparator.CROSSFRAME=1;with(CUISeparator){CUISeparator.MAXSTATE=CROSSFRAME;}CUISeparator.fsGetHTML=function(){var s,m=this.oParMenu,_r=_STNS,_mc=_r.UI.CUIMenu,_c=_r.UI.CUISeparator,cf=this.iStat&_c.CROSSFRAME;with(this){s="
"+(iImgWid&&iImgHei?m.fsGetImgTag(sImg,iImgWid,iImgHei,0,"",cf):" ")+"
";}return s;};CUISeparator.fbInit=function(){var _r=_STNS,w=this.oParPopup.iStat&_r.UI.CUIPopup.CROSSFRAME?this.oParMenu.fdmGetTarFm():window,p=this.oParPopup,e=_r.fdmGetEleById(this.sUid,w);if(e&&this.iHei=="100%"){if(_r.bIsSF){if(!p.bMul){e.style.height=e.offsetParent.offsetParent.offsetHeight-2*p.iSpace+"px";}else{var _16d=0;for(var i=0;iCUIItem");CUIItem.construct=function(){this.iTyp=0;this.sId=0;this.iNid=-1;this.iWid=-1;this.iHei=-1;this.sTxt="";this.sFTxt="";this.aImgs=[];this.iImgWid=-1;this.iImgHei=-1;this.iImgBd=0;this.sLnk=this._sTLnk="#_nolink";this.sTar="";this.sStatus="";this.sTip="";this.aIcos=[];this.iIcoWid=-1;this.iIcoHei=-1;this.iIcoBd=0;this.aArrs=[];this.iArrWid=-1;this.iArrHei=-1;this.iArrBd=0;this.iHal=0;this.iVal=1;this.aBgClrs=[];this.aBgImgs=[];this.aBgReps=[];this.iBdStyle=0;this.iBdWid=0;this.aBdClrs=[];this.aFnts=[];this.aDecos=[];this.aFntClrs=[];this.oParMenu=0;this.oParPopup=0;this.oSubPopup=0;this.iStat=0;this.iLeftWid=0;this.iRightWid=0;this.iScD=0;this.iPad=0;this.bScr=false;with(_STNS.UI.CUIItem){this.fsGetHTML=fsGetHTML;this.fbGetEnt=fbGetEnt;this.fbSetStatus=fbSetStatus;this.fbReStatus=fbReStatus;this.fbSetOver=fbSetOver;this.fbSetOut=fbSetOut;this.fbInit=fbInit;this.fbShowSub=fbShowSub;this.fbHideSub=fbHideSub;this.fbSetFnt=fbSetFnt;this.fbSetBg=fbSetBg;this.fbSetCursor=fbSetCursor;this.fbUpDate=fbUpDate;this.fbOpenLnk=fbOpenLnk;this.fbCkClk=fbCkClk;this.fbEnter=fbEnter;this.fbEsc=fbEsc;this.fbUp=fbUp;this.fbDown=fbDown;this.fbLeft=fbLeft;this.fbRight=fbRight;this.faItems=faItems;this.fbNxtItem=fbNxtItem;this.fbRotItem=fbRotItem;this.fbPopFirItem=fbPopFirItem;this.fbSetFocus=fbSetFocus;this.fbSetfs=fbSetfs;this.fbBlur=fbBlur;this.fbFOver=fbFOver;}};CUIItem.SHIFTKEY=1;CUIItem.CTRLKEY=2;CUIItem.ALTKEY=4;CUIItem.MOUSEOVER=1;CUIItem.MOUSEOVER_STYLE=1227133512;CUIItem.TRACK=2;CUIItem.TRACK_STYLE=2454267024;CUIItem.CROSSFRAME=4;CUIItem.CUR_ICON=56;CUIItem.ICON_BIT=3;CUIItem.CUR_ARROW=448;CUIItem.ARROW_BIT=6;CUIItem.CUR_FONT=1584;CUIItem.FONT_BIT=9;CUIItem.CUR_COLOR=28672;CUIItem.COLOR_BIT=12;CUIItem.CUR_DECORATION=229376;CUIItem.DECORATION_BIT=15;CUIItem.CUR_BGCOLOR=1835008;CUIItem.BGCOLOR_BIT=18;CUIItem.CUR_BGIMAGE=14680064;CUIItem.BGIMAGE_BIT=21;CUIItem.CUR_BGREPEAT=117440521;CUIItem.BGREPEAT_BIT=24;CUIItem.CUR_BORDERCOLOR=939527096;CUIItem.BORDERCOLOR_BIT=27;CUIItem.CUR_IMAGE=7516192768;CUIItem.IMAGE_BIT=30;with(CUIItem){CUIItem.MAXSTATE=MOUSEOVER|TRACK|CROSSFRAME|CUR_ICON|CUR_ARROW|CUR_FONT|CUR_COLOR|CUR_DECORATION|CUR_BGCOLOR|CUR_BGIMAGE|CUR_BGREPEAT|CUR_BORDERCOLOR|CUR_IMAGE;}CUIItem.fsGetHTML=function(){var s="",icos,arrs,_r=_STNS,m=this.oParMenu,p=this.oParPopup,_mc=_STNS.UI.CUIMenu,_c=_STNS.UI.CUIItem,cf=this.iStat&_c.CROSSFRAME,bKQ=_r.bIsKQ;with(this){icos=!bScr&&iIcoWid&&iIcoHei?""+m.fsGetImgTag(aIcos[(iStat&_c.CUR_ICON)>>>_c.ICON_BIT],iIcoWid,iIcoHei,iIcoBd,sUid+"_icoImg",cf)+"":"";arrs=!bScr&&iArrWid&&iArrHei?""+m.fsGetImgTag(aArrs[(iStat&_c.CUR_ARROW)>>>_c.ARROW_BIT],iArrWid,iArrHei,iArrBd,sUid+"_arrImg",cf)+"":"";s+=(!bKQ?"":"")+"0&&iBdWid>0?iBdWid:0,1)+";":"")+(iHei&&iHei!=-1?"height:"+_r.fsGetLen("tb",iHei,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1,0)+";":"")+(iBdStyle>0&&iBdWid>0?"border-width:"+iBdWid+"px;border-style:"+_mc.BORDERS[iBdStyle]+";border-color:"+aBdClrs[(iStat&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT]+";":"")+(aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]?"background-color:"+aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]+";":"")+(aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]?"background-image:url("+(cf?_r.fsGetAbsPth(aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT])+");":"")+(_mc.REPEATS[aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]]?"background-repeat:"+_mc.REPEATS[aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]]+";":"")+(_STNS.bIsOP&&_STNS.oNav.version>=9&&_STNS.oNav.version<9.5?"text-decoration:"+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none")+";":""))+">"+(m.bRTL?arrs:icos)+""+(m.bRTL?icos:arrs)+"
"+(bKQ?"":"")+" "+">>_c.COLOR_BIT]?"color:"+aFntClrs[(iStat&_c.CUR_COLOR)>>>_c.COLOR_BIT]+";":"")+(aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]?"font:"+aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]+";":"")+"text-decoration:"+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none")+";")+">"+(iTyp==2?m.fsGetImgTag(aImgs[(iStat&_c.CUR_IMAGE)>>>_c.IMAGE_BIT],iImgWid,iImgHei,iImgBd,sUid+"_img",cf):sTxt)+""+(bKQ?"":"")+"
"+(!bKQ?"
":"");}return s;};CUIItem.fbGetEnt=function(e,o){var et=e.type||e,oid=o.id,_r=_STNS,_c=_r.UI.CUIItem,as,r;with(this){switch(et){case "mouseover":if(!o._ov&&((_r.bIsIE&&e.srcElement&&_r.fbIsPar(o,e.srcElement))||(!_r.bIsIE&&e.target&&_r.fbIsPar(o,e.target)))){o._ov=1;if(oid==this.sUid+"_lnk"){return fbFireEnt("mouseoverlink");}this.iStat|=_c.MOUSEOVER;return fbFireEnt("mouseover");}break;case "mouseout":if(o._ov&&((_r.bIsIE&&(!e.toElement||!_r.fbIsPar(o,e.toElement)))||!_r.bIsIE&&(!e.relatedTarget||!_r.fbIsPar(o,e.relatedTarget)))){o._ov=0;if(oid==this.sUid+"_lnk"){return fbFireEnt("mouseoutlink");}this.iStat&=_c.MAXSTATE-_c.MOUSEOVER;return fbFireEnt("mouseout");}break;case "click":as=0;if(e.shiftKey){as|=1;}if(e.ctrlKey){as|=2;}if(e.altKey){as|=4;}as|=8;if(_r.bIsIE&&e.srcElement&&e.srcElement.id&&!e.srcElement.id.indexOf(this.sUid+"_arr")||!_r.bIsIE&&e.target&&e.target.id&&!e.target.id.indexOf(this.sUid+"_arr")){return fbFireEnt("clickarrow",as);}return fbFireEnt("click",as);case "keydown":switch(e.keyCode){case 9:return false;case 13:return fbFireEnt("pressEnter");case 27:return fbFireEnt("pressEsc");case 37:return fbFireEnt("pressLeft");case 38:return fbFireEnt("pressUp");case 39:return fbFireEnt("pressRight");case 40:return fbFireEnt("pressDown");}break;case "mousedown":as=0;if(e.shiftKey){as|=1;}if(e.ctrlKey){as|=2;}if(e.altKey){as|=4;}as|=e.button*8;return fbFireEnt("mousedown",as);default:return fbFireEnt(et,as);}}return true;};CUIItem.fbSetStatus=function(){if(this.sStatus){top.status=this.sStatus;}else{if(this.sLnk&&this.sLnk!="#_nolink"){top.status=_STNS.fsGetAbsPth(this.sLnk);}}return true;};CUIItem.fbReStatus=function(){top.status="";return true;};CUIItem.fbSetOver=function(){var _r=_STNS,_c=_r.UI.CUIItem,p=this.oParPopup,sp=this.oSubPopup,_ic=_r.UI.CUIItem,m=this.oParMenu;if(!(m.iClk&4)&&!_STNS.UI.CUICanvas){for(var i=0;i>>_c.BORDERCOLOR_BIT]!=aBdClrs[(s&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT]){e.style.borderColor=aBdClrs[(s&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT];}if((d&_c.CUR_BGCOLOR)&&aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]!=aBgClrs[(s&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]){e.style.backgroundColor=aBgClrs[(s&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT];}if((d&_c.CUR_BGREPEAT)&&aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]!=aBgReps[(s&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]){e.style.backgroundRepeat=_mc.REPEATS[aBgReps[(s&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]];}if((d&_c.CUR_BGIMAGE)&&aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]!=aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]){e.style.backgroundImage="url("+(aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]?(cf?_r.fsGetAbsPth(aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank))+")";}if(te=_r.fdmGetEleById(sUid+"_txt",w)){if((d&_c.CUR_FONT)&&aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]!=aFnts[(s&_c.CUR_FONT)>>>_c.FONT_BIT]){te.style.font=aFnts[(s&_c.CUR_FONT)>>>_c.FONT_BIT];}if((d&_c.CUR_COLOR)&&aFntClrs[(iStat&_c.CUR_COLOR)>>>_c.COLOR_BIT]!=aFntClrs[(s&_c.CUR_COLOR)>>>_c.COLOR_BIT]){te.style.color=aFntClrs[(s&_c.CUR_COLOR)>>>_c.COLOR_BIT];}if((d&_c.CUR_DECORATION)&&aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]!=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]){te.style.textDecoration=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none";if(_STNS.bIsOP&&_STNS.oNav.version>=9&&_STNS.oNav.version<9.5){e.style.textDecoration=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none";}}}if((d&_c.CUR_ICON)&&aIcos[(iStat&_c.CUR_ICON)>>>_c.ICON_BIT]!=aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]){if(te=_r.fdmGetEleById(sUid+"_icoImg",w)){te.src=aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]?(cf?_r.fsGetAbsPth(aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]):aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}if((d&_c.CUR_ARROW)&&aArrs[(iStat&_c.CUR_ARROW)>>>_c.ARROW_BIT]!=aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]){if(te=_r.fdmGetEleById(sUid+"_arrImg",w)){te.src=aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]?(cf?_r.fsGetAbsPth(aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]):aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}if(!bScr&&(d&_c.CUR_IMAGE)&&aImgs[(iStat&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]!=aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]){if(te=_r.fdmGetEleById(sUid+"_img",w)){te.src=aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]?(cf?_r.fsGetAbsPth(aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]):aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}}iStat=s;}};CUIItem.fbCkClk=function(){var m=this.oParMenu;if(!m.bClked){m.bClked=true;if(m.iClk&1){if(this.oSubPopup){this.oSubPopup.fbShow();}}if(!(m.iClk&2)){this.fbSetOver();}}return true;};CUIItem.fbEnter=function(){var o=this,s=o.oSubPopup,m=o.oParMenu;if(o._sTLnk=="#_nolink"){if(s){m.bRunEff=false;if(s.iStat&_STNS.UI.CUIPopup.SHOW){s.fbHide();}else{if(!(m.iClk&4)){s.fbShow();}}m.bRunEff=true;}return false;}if(_STNS.bIsSF){var p=o.oParPopup,pp=o,d=p.iDepth;if(d>=1){for(var i=d;i>0;i--){pp=pp.oParPopup;pp.fbHide();pp.oParItem.fbSetOut();}}else{if(d==0){o.fbSetOut();}}m.iStat&=_STNS.UI.CUIMenu.MAXSTATE-_STNS.UI.CUIMenu.MOUSEOVER;m.oFocus=0;}};CUIItem.fbEsc=function(){var _r=_STNS,o=this,m=o.oParMenu,s=o.oSubPopup,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth;m.bRunEff=false;if(s&&(s.iStat&_r.UI.CUIPopup.SHOW)){s.fbHide();m.bRunEff=true;return false;}if(dp){o.fbFireEnt("mouseout");p.fbHide();pi.fbSetfs();}else{o.fbFireEnt("mouseout");_r.fdmGetEleById(o.sUid+"_lnk").blur();}m.bRunEff=true;return false;};CUIItem.fbUp=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;var a=o.faItems();if(a[2]==1&&dp>=1){o.fbFireEnt("mouseout");pi.fbFireEnt("mousedown",8);pi.fbFOver();if(p.iStat&_r.UI.CUIPopup.SHOW){p.fbHide();}}else{if(v){var nI=o.fbNxtItem(0);if(nI!=o){o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}}else{if(o.oSubPopup&&(o.oSubPopup.iStat&_r.UI.CUIPopup.SHOW)){o.oSubPopup.fbHide();}else{if(dp){o.fbFireEnt("pressEsc");}}}}m.bRunEff=true;return false;};CUIItem.fbDown=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;if(v){var a=o.faItems();if(a[2]==1){m.bRunEff=true;return false;}var nI=o.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}else{if(o.oSubPopup){var fI=o.fbPopFirItem();o.oSubPopup.fbShow();if(fI){if(_r.bIsSF&&_r.oNav.version<523.12){o.fbBlur();}fI.fbFOver();}}}m.bRunEff=true;return false;};CUIItem.fbLeft=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;var a=o.faItems();if(a[2]==1&&dp>1){o.fbFireEnt("mouseout");pi.fbFireEnt("mousedown",8);pi.fbFOver();if(p.iStat&_r.UI.CUIPopup.SHOW){p.fbHide();}}else{if(!v){var nI=o.fbNxtItem(0);if(nI!=o){o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}}else{if(o.oSubPopup&&(o.oSubPopup.iStat&_r.UI.CUIPopup.SHOW)){o.oSubPopup.fbHide();}else{if(dp){o.fbFireEnt("pressEsc");}}}}m.bRunEff=true;return false;};CUIItem.fbRight=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;if(!v){var a=o.faItems();if(a[2]==1){m.bRunEff=true;return false;}var nI=o.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}else{if(o.oSubPopup){var fI=o.fbPopFirItem();o.oSubPopup.fbShow();if(fI){if(_r.bIsSF&&_r.oNav.version<523.12){o.fbBlur();}fI.fbFOver();}}else{var pi=p.oParItem;if(dp>1&&!pi.oParPopup.iTyp){if(pi.faItems()[2]>1){var npi=pi.fbNxtItem(1);o.fbFireEnt("mouseout");if(f){pi.fbFireEnt("mouseout");if(pi.oSubPopup){pi.oSubPopup.fbHide();}}npi.fbFOver();}m.bRunEff=true;return false;}else{if(m.aPopups[0].iTyp&_STNS.UI.CUIPopup.VERTICAL){m.bRunEff=true;return false;}}var rI=o.fbRotItem();if(rI.faItems()[2]>1){var nI=rI.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){rI.fbFireEnt("mouseout");if(rI.oSubPopup){rI.oSubPopup.fbHide();}}nI.fbFOver();}}}m.bRunEff=true;return false;};CUIItem.faItems=function(){var fst=lst=x=y=0,p=this.oParPopup;for(var i=0;i=0;j--){nI=p.aItems[j];if(typeof nI.sTxt!="undefined"){break;}}}}return nI;};CUIItem.fbRotItem=function(){var o=this,p=o.oParPopup,ppi=p;for(var k=0;k=800?a[23]:"";sImgPth=a[2]?a[2].charAt(a[2].length-1)!="/"?a[2]+"/":a[2]:"";sBlank=fsGetImg(a[3]);iTyp=a[4];iX=a[5];iY=a[6];iHal=a[7];iClk=a[8];iDelaySV=a[9];iDelaySH=a[10];iDelayHd=a[11];if(a[12]&&(_r.bIsIE&&_r.oNav.platform!=="Mac"||_r.oNav.name=="konqueror")){aHdTags.push("select");}if(a[13]){aHdTags.push("object","embed","applet");}if(a[14]&&(_r.bIsIE&&_r.oNav.version<5.5||_r.bIsOP||_r.oNav.name=="konqueror")){aHdTags.push("iframe");}sLnkPre=a[15]?a[15].charAt(a[15].length-1)!="/"?a[15]+"/":a[15]:"";iWid=a[16];iTracks=a[17];bRTL=a[18];bHdPopup=a[19];iTrackLevel=a[20];aCursors[0]=_STNS.fbIsFile(a[21])?"url("+_STNS.fsGetAbsPth(m.fsGetImg(a[21]))+"),default":a[21];aCursors[1]=_STNS.fbIsFile(a[22])?"url("+_STNS.fsGetAbsPth(m.fsGetImg(a[22]))+"),auto":a[22];}m.__open=true;return m;}function stm_bp(id,a,pid){var _r=_STNS,m=_r._aStMenus[_r._aStMenus.length-1];if(!m||!m.__open){return;}if(pid){for(var i=0;i=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}if(pp&&!pp.aItems.length){return;}var pi=pp?pp.aItems[pp.aItems.length-1]:0,n=m.aPopups.length,p=new _r.UI.CUIPopup;with(p){sId=id;iNid=n;iTyp=a[0];iDirect=a[1];iOffX=a[2];iOffY=a[3];iSpace=a[4];iPad=a[5];iOpac=a[8];if(STM_FILTER){sShEff=a[9];if(sShEff=="stEffect(\"slip\")"){iShEff="_stDirection:"+a[1];}else{if(sShEff=="stEffect(\"rect\")"){iShEff=a[20]&&a[21]?"border-style:"+_r.UI.CUIMenu.BORDERS[a[20]]+";border-width:"+a[21]+";border-color:"+a[22]:"border-style:solid;border-width:1px;border-color:#999999";}else{iShEff=a[10];}}sHdEff=a[11];if(sHdEff=="stEffect(\"slip\")"){iHdEff="_stDirection:"+a[1];}else{if(sHdEff=="stEffect(\"rect\")"){iHdEff=a[20]&&a[21]?"border-style:"+_r.UI.CUIMenu.BORDERS[a[20]]+";border-width:"+a[21]+";border-color:"+a[22]:"border-style:solid;border-width:1px;border-color:#999999";}else{iHdEff=a[12];}}iEffDur=(110-a[13])*10;}iShadow=a[14];iSdSize=_r.bIsIE&&_r.oNav.version>=5.5?a[15]:0;sSdClr=a[16];sBgClr=a[17];sBgImg=m.fsGetImg(a[18]);iBgRep=a[19];iBdStyle=a[20];iBdWid=a[21];sBdClr=a[22];aRounds[0]=a[23]?m.fsGetImg(a[23]):0;aRHeis[0]=a[24]?a[24]:0;aRWids[0]=a[25]?a[25]:0;aRdb[0]=a[26]?a[26]:0;aRBgClrs[0]=a[27]?a[27]:0;aRBgImgs[0]=a[28]?m.fsGetImg(a[28]):0;aRBgReps[0]=a[29]?a[29]:0;aRounds[1]=a[30]?m.fsGetImg(a[30]):0;aRHeis[1]=a[31]?a[31]:0;aRWids[1]=a[32]?a[32]:0;aRdb[1]=a[33]?a[33]:0;aRBgClrs[1]=a[34]?a[34]:0;aRBgImgs[1]=a[35]?m.fsGetImg(a[35]):0;aRBgReps[1]=a[36]?a[36]:0;aRounds[2]=a[37]?m.fsGetImg(a[37]):0;aRHeis[2]=a[38]?a[38]:0;aRWids[2]=a[39]?a[39]:0;aRdb[2]=a[40]?a[40]:0;aRBgClrs[2]=a[41]?a[41]:0;aRBgImgs[2]=a[42]?m.fsGetImg(a[42]):0;aRBgReps[2]=a[43]?a[43]:0;aRounds[3]=a[44]?m.fsGetImg(a[44]):0;aRHeis[3]=a[45]?a[45]:0;aRWids[3]=a[46]?a[46]:0;aRdb[3]=a[47]?a[47]:0;aRBgClrs[3]=a[48]?a[48]:0;aRBgImgs[3]=a[49]?m.fsGetImg(a[49]):0;aRBgReps[3]=a[50]?a[50]:0;aCorners[0]=a[51]?m.fsGetImg(a[51]):0;aCorners[1]=a[52]?m.fsGetImg(a[52]):0;aCorners[2]=a[53]?m.fsGetImg(a[53]):0;aCorners[3]=a[54]?m.fsGetImg(a[54]):0;aCorWHs=[a[55],a[56],a[57],a[58],a[59],a[60],a[61],a[62]];oParMenu=m;oParItem=pi;oParPopup=pp;iZid=pp?pp.iZid+pi.iNid+3:1000;iDepth=pp?pp.iDepth+1:0;if(!iNid){iWid=m.iWid;}if(pi){pi.oSubPopup=p;}fbAttachEnt("mouseover",fbSetOver);fbAttachEnt("mouseout",fbSetOut);if(!n&&!m.iTyp){iTyp|=_r.UI.CUIPopup.STATIC;}if(p.sShEff||p.sHdEff){_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffie.js"));_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffrect.js"));_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffslip.js"));}}p.__args=a;p.__open=true;m.aPopups.push(p);return p;}function stm_bpx(id,pid,a){return stm_bp(id,a,pid);}function stm_ai(id,a,wid,hei,pid){var _r=_STNS,m=_r._aStMenus[_r._aStMenus.length-1];if(!m||!m.__open){return;}var pp;for(var i=m.aPopups.length-1;i>=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}if(!pp){return;}if(pid){for(var i=0;i"):a[1];aImgs[0]=m.fsGetImg(a[2]);aImgs[1]=m.fsGetImg(a[3]);iImgWid=a[4];iImgHei=a[5];iImgBd=a[6];sLnk=_sTLnk=a[7]?m.fsGetLnk(a[7]):"#_nolink";sTar=a[8];sStatus=a[9];sTip=_r.fsGetHTMLEnti(a[10],1);aIcos[0]=m.fsGetImg(a[11]);aIcos[1]=m.fsGetImg(a[12]);iIcoWid=a[13];iIcoHei=a[14];iIcoBd=a[15];aArrs[0]=m.fsGetImg(a[16]);aArrs[1]=m.fsGetImg(a[17]);iArrWid=a[18];iArrHei=a[19];iArrBd=a[20];iHal=a[21];iVal=a[22];aBgClrs[0]=a[24]?"":a[23];aBgClrs[1]=a[26]?"":a[25];aBgImgs[0]=m.fsGetImg(a[27]);aBgImgs[1]=m.fsGetImg(a[28]);aBgReps[0]=a[29];aBgReps[1]=a[30];iBdStyle=a[31];iBdWid=a[32];aBdClrs[0]=a[33];aBdClrs[1]=a[34];aFntClrs[0]=a[35];aFntClrs[1]=a[36];aFnts[0]=a[37];aFnts[1]=a[38];aDecos[0]=a[39];aDecos[1]=a[40];oParPopup=pp;oParMenu=m;iPad=pp.iPad;iWid=wid?wid:(pp.iTyp&_r.UI.CUIPopup.VERTICAL?"100%":-1);iHei=hei?hei:(pp.iTyp&_r.UI.CUIPopup.VERTICAL?-1:"100%");fbAttachEnt("mouseover",fbSetOver);fbAttachEnt("mouseoverlink",fbSetStatus);fbAttachEnt("mouseout",fbSetOut);fbAttachEnt("mouseoutlink",fbReStatus);fbAttachEnt("pressEnter",fbEnter);fbAttachEnt("pressEsc",fbEsc);fbAttachEnt("pressUp",fbUp);fbAttachEnt("pressDown",fbDown);fbAttachEnt("pressLeft",fbLeft);fbAttachEnt("pressRight",fbRight);if(m.iClk&1){fbAttachEnt("click",fbCkClk);fbAttachEnt("mouseover",fbShowSub);fbAttachEnt("clickarrow",fbCkClk);}else{if(m.iClk&4){fbAttachEnt("click",fbShowSub);fbAttachEnt("clickarrow",fbShowSub);}else{fbAttachEnt("mouseover",fbShowSub);fbAttachEnt("clickarrow",fbShowSub);}}fbAttachEnt("clickarrow",_STNS.fbFalse);fbAttachEnt("click",fbOpenLnk);if(STM_KEY){fbAttachEnt("keydown",_STNS.fbTrue);fbAttachEnt("mousemove",fbSetFocus);fbAttachEnt("mousemove",_STNS.fbTrue);}if(m.iTracks&1){if(m.iTracks&2){aFntClrs[2]=aFntClrs[1];}else{aFntClrs[2]=aFntClrs[0];}aFntClrs[3]=aFntClrs[1];if(m.iTracks&4){aFnts[2]=aFnts[1];aDecos[2]=aDecos[1];}else{aFnts[2]=aFnts[0];aDecos[2]=aDecos[0];}aFnts[3]=aFnts[1];aDecos[3]=aDecos[1];if(m.iTracks&8){aBgClrs[2]=aBgClrs[1];}else{aBgClrs[2]=aBgClrs[0];}aBgClrs[3]=aBgClrs[1];if(m.iTracks&16){aBgImgs[2]=aBgImgs[1];aBgReps[2]=aBgReps[1];}else{aBgImgs[2]=aBgImgs[0];aBgReps[2]=aBgReps[0];}aBgImgs[3]=aBgImgs[1];aBgReps[3]=aBgReps[1];if(m.iTracks&32){aBdClrs[2]=aBdClrs[1];}else{aBdClrs[2]=aBdClrs[0];}aBdClrs[3]=aBdClrs[1];if(m.iTracks&64){aIcos[2]=aIcos[1];}else{aIcos[2]=aIcos[0];}aIcos[3]=aIcos[1];if(m.iTracks&128){aImgs[2]=aImgs[1];}else{aImgs[2]=aImgs[0];}aImgs[3]=aImgs[1];if(m.iTracks&256){aArrs[2]=aArrs[1];}else{aArrs[2]=aArrs[0];}aArrs[3]=aArrs[1];}}}it.__args=a;pp.aItems.push(it);return it;}function stm_aix(id,pid,a,wid,hei){return stm_ai(id,a,wid,hei,pid);}function stm_ep(){var m=_STNS._aStMenus[_STNS._aStMenus.length-1];if(!m||!m.__open){return;}var p;for(var i=m.aPopups.length-1;i>=0;i--){if(m.aPopups[i].__open){p=m.aPopups[i];break;}}if(!p){return;}if(p.aItems.length){if(!p.bMul){if(p.iTyp&_STNS.UI.CUIPopup.VERTICAL){var lw=0,rw=0;for(var i=0;ilw&&p.aItems[i].iIcoHei){lw=p.aItems[i].iIcoWid;}if(p.aItems[i].iArrWid>rw&&p.aItems[i].iArrHei){rw=p.aItems[i].iArrWid;}}if(!p.bMul&&lw){for(var i=0;i0){if(!_25a[n]){_25a[n]=[];}_25a[n][c]=j;n++;}_255--;}_tc=_tc+_stp;}}else{if(_mlc){_tprs=_256==_257?0:p.aItems.length%_ml;for(var c=0;c<_stp;c++){var _mli=0,n=0;for(var j=0;j<(_258==0?_256:_tprs>0?_256:_257);j++){if(_255>0){_mli=j==0?c:_mli+_stp;if(!_25a[n]){_25a[n]=[];}_25a[n][c]=_mli;_255--;n++;}}_tprs>0?_tprs--:"";}}}for(var j=0;j<_25a.length;j++){var lw=0,rw=0;for(var i=0;i<_25a[j].length;i++){if(p.aItems[_25a[j][i]].iIcoWid>lw&&p.aItems[_25a[j][i]].iIcoHei){lw=p.aItems[_25a[j][i]].iIcoWid;}if(p.aItems[_25a[j][i]].iArrWid>rw&&p.aItems[_25a[j][i]].iArrHei){rw=p.aItems[_25a[j][i]].iArrWid;}}if(lw){for(var i=0;i<_25a[j].length;i++){if(!p.aItems[_25a[j][i]].iIcoWid||!p.aItems[_25a[j][i]].iIcoHei){p.aItems[_25a[j][i]].iIcoWid=lw;p.aItems[_25a[j][i]].iIcoHei=1;p.aItems[_25a[j][i]].aIcos=[];}p.aItems[_25a[j][i]].iLeftWid=lw;}}if(rw){for(var i=0;i<_25a[j].length;i++){if(!p.aItems[_25a[j][i]].iArrWid||!p.aItems[_25a[j][i]].iArrHei){p.aItems[_25a[j][i]].iArrWid=rw;p.aItems[_25a[j][i]].iArrHei=1;p.aItems[_25a[j][i]].aArrs=[];}p.aItems[_25a[j][i]].iRightWid=rw;}}}}delete p.__open;}else{var pi=p.oParItem;if(pi){pi.oSubPopup=null;pi.aArrs.length=0;pi.iArrWid=0;pi.iArrHei=0;}m.aPopups.pop();p.fvDestroy();}}function stm_em(){var m=_STNS._aStMenus[_STNS._aStMenus.length-1];if(!m||!m.__open){return;}if(m.aPopups.length){delete m.__open;for(var i=0;i=3));for(var i=1;i=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}switch(a[5]){case 1:_274="repeat-x";break;case 2:_274="repeat-y";break;case 3:_274="repeat";break;default:_274="no-repeat";}pp.bMul=true,pp.iMl=a[0],pp.sMBgClrs=a[2]?"":a[1],pp.sMOpc=a[2],pp.iMSpc=a[3],pp.sMBgImgs=a[4]?m.fsGetImg(a[4]):"",pp.sMBgReps=_274?_274:"no-repeat";for(var i=0;iCUIMenu");CUIMenu.construct=function(){this.sJsPth="";this.sVer=0;this.iTyp=0;this.aPopups=[];this.sId=0;this.iNid=-1;this.iX=0;this.iY=0;this.iWid=0;this.iHei=0;this.iHal=0;this.sImgPth=0;this.sLnkPre=0;this.sBlank=0;this.iClk=0;this.bClked=0;this.iStat=0;this.iDelaySV=250;this.iDelaySH=0;this.iDelayHd=1000;this.iDelayTk=0;this.bHdPopup=true;this.aHdTags=[];this.bRTL=false;this.aCursors=[];this.sSiteRoot="";this.bRunEff=true;this.iTracks=0;this.iTrackLevel=-1;this.oTracks={};this.aScBars=[];this.aMaxSizes=[-1,-1];this.iScType=0;this.bCfm=false;this.bCfShow=false;this.sTarFm="";this.sSrcFm="";this.iCfX=0;this.iCfY=0;this.iCfD=0;this.oFocus=0;this.OutItem=0;with(_STNS.UI.CUIMenu){this.fvDestroy=fvDestroy;this.fsGetImg=fsGetImg;this.fsGetLnk=fsGetLnk;this.fsGetHTML=fsGetHTML;this.fsGetImgTag=fsGetImgTag;this.fsGetEnt=fsGetEnt;this.fsGetStyle=fsGetStyle;this.fdmGetTarFm=fdmGetTarFm;this.fsGetSrcFm=fsGetSrcFm;this.fbShow=fbShow;this.foInsPopup=foInsPopup;this.fbDelPopup=fbDelPopup;this.fvMvto=fvMvto;this.fnGsp=fnGsp;this.fvSsc=fvSsc;this.fbTrack=fbTrack;this.fbCkLnk=fbCkLnk;this.fbClick=fbClick;this.fbKeydown=fbKeydown;}};CUIMenu.MOUSEOVER=1;with(CUIMenu){CUIMenu.MAXSTATE=MOUSEOVER;}CUIMenu.ALIGNS=["left","center","right"];CUIMenu.VALGINS=["top","middle","bottom"];CUIMenu.REPEATS=["no-repeat","repeat-x","repeat-y","repeat"];CUIMenu.BORDERS=["none","solid","double","dotted","dashed","groove","ridge","outset","inset"];CUIMenu.fsGetHTML=function(){var s="";if(this.aPopups.length){return this.aPopups[0].fsGetHTML();}return "";};CUIMenu.fsGetImg=function(s){if(!s){return "";}if(!_STNS.fbIsAbsPth(s)){s=this.sImgPth+s;}if((s.charAt(0)=="/")&&_STNS.bLocal&&this.sSiteRoot){s=this.sSiteRoot+s;}if(s&&_STNS.bBufImg){var p=_STNS.fsGetAbsPth(s);if(!_STNS.oImgs[p]){_STNS.oImgs[p]=1;}}return s;};CUIMenu.fsGetLnk=function(l){if(!_STNS.fbIsAbsPth(l)){l=this.sLnkPre+l;}if((l.charAt(0)=="/")&&_STNS.bLocal&&this.sSiteRoot){l=this.sSiteRoot+l;}if(!l.toLowerCase().indexOf("javascript:")){l+=";void(0)";}l=_STNS.fsGetAbsPth(l);return l;};CUIMenu.fvDestroy=function(){for(var i=0;i0?pos[0]+xs:pos[0]-xs,y=dy>0?pos[1]+ys:pos[1]-ys;this.fvMvto([x,y],p);}};CUIMenu.fbShow=function(){_STNS.fvLoadLib();if(_STNS.bLoaded){var o=document.body,w="beforeEnd";_STNS.fbInsHTML(o,w,this.fsGetHTML());this.aPopups[0].fbInit();this.aPopups[0].fbShow();}else{if(STM_BIMG){_STNS.fvBufImgs();}if(this.iTracks&&(!this.iTyp||this.iTyp==1)){_STNS.fvAddCk(new Function(this.sSelf+".fbTrack()"));}if(!this.iTyp){var s="";document.write(this.fsGetHTML()+s);}else{if(this.iTyp==1){var t=this,p=this.aPopups[0];if(isNaN(this.iX)||isNaN(this.iY)){_STNS.fvAddCk(new Function(this.sSelf+".fvSsc()"));}else{var pos=p.faGetXY();t.iX=pos[0];t.iY=pos[1];}p.fbShow();}else{if(this.iTyp==3){var t=this,p=this.aPopups[0];document.oncontextmenu=function(e){var s,pos;if(!e){e=window.event;pos=_STNS.faCP2PP([e.clientX,e.clientY]);}else{pos=[e.pageX,e.pageY];}t.iX=pos[0];t.iY=pos[1];p.fbHide();p.fbShow();p.fbHide(t.iDelayHd);return false;};}}}}};CUIMenu.fsGetImgTag=function(s,w,h,b,id,f,nw,nh){if(!s){s=this.sBlank;}if(f){s=_STNS.fsGetAbsPth(s);}return _STNS.fsGetImgTag(s,w,h,b,id,nw,nh);};CUIMenu.fsGetEnt=function(o,t,n,f){var sfm="";if(f){var sfm=this.fsGetSrcFm();if(sfm){sfm+=".";}else{sfm="";}}return _STNS.UI.fsGetEnt(o,t,n,sfm);};CUIMenu.fsGetStyle=function(t,f,c){var s="",_r=_STNS;if(!f&&_r.bShield){if(_r.oDefCSS[t]){s="class='st"+t+"'";}if(c){s+=" style=\""+c+"\"";}}else{if(!c&&_r.oDefCSS[t]){s="style=\""+_r.oDefCSS[t]+"\"";}else{if(_r.oDefCSS[t]){s="style=\"";var a=_r.foCss2Obj(c),b=_r.foCss2Obj(_r.oDefCSS[t]);for(var i in b){if(typeof a[i]=="undefined"){a[i]=b[i];}}s+=_r.fsObj2Css(a);s+="\"";}}}return s;};CUIMenu.fsGetSrcFm=function(){var s="",a=this.sSrcFm?("parent."+this.sTarFm).split("."):this.sTarFm.split("."),n=[],f=0;for(var j=0;j=0;j--){s+=n[j]+".";}if(this.sSrcFm){s+=this.sSrcFm;}else{s+="parent";}return s;};CUIMenu.fdmGetTarFm=function(){var j,s=this.sSrcFm?"parent."+this.sTarFm:this.sTarFm,w;try{w=eval(s);return w;}catch(e){return;}};CUIMenu.fbTrack=function(){var _r=_STNS,_c=_r.UI.CUIMenu,is={},ps=[],_ic=_r.UI.CUIItem,d=0,it,ts=[];if(this.iDelayTk>0){this.iDelayTk-=_r.nCkTime;return false;}if(this.iStat&_c.MOUSEOVER){return false;}if(this.oFocus){return false;}var c=this.iTracks&33554432;for(var i=0;i0;i--){if(ps[i]&&this.aPopups[i].oParPopup){ps[this.aPopups[i].oParPopup.iNid]=1;}else{if(typeof ps[i]=="undefined"){ps[i]=0;}}}for(var i=1;i=1){for(var i=d;i>0;i--){pp=pp.oParPopup;pp.fbHide();}}var ri=o.fbRotItem(),si=ri.oSubPopup;if(si){si.fbHide();}ri.fbFireEnt("mouseout");m.oFocus=0;}}}};CUIMenu.fbKeydown=function(_7b){var e=_7b?_7b:window.event;if(e.altKey&&e.keyCode==113){if(typeof (_STNS.index)=="undefined"){_STNS.index=0;}else{if(_STNS.index<_STNS._aStMenus.length-1){_STNS.index++;}else{_STNS.index=0;}}var x=_STNS.index,_r=_STNS,m=_r._aStMenus[x],p=m.aPopups[0],o=m.oFocus;m.bRunEff=false;m.fbClick();if(o){o.fbFireEnt("mouseout");}if(m.iClk&1){m.bClked=true;}for(var j=0;jCUIPopup");CUIPopup.construct=function(){this._tTid=0;this.iTyp=0;this.iNid=-1;this.aItems=[];this.sId=0;this.iDirect=1;this.iWid=-1;this.iHei=-1;this.iOffX=0;this.iOffY=0;this.iSpace=0;this.iPad=0;this.sBgClr="";this.sBgImg="";this.iBgRep=0;this.iBdStyle=0;this.iBdWid=0;this.sBdClr="";this.iZid=1000;this.iStat=0;this.oParItem=0;this.oParMenu=0;this.oParPopup=0;this.iHal=0;this.iDepth=0;this.iOpac=100;this.iShadow=0;this.iSdSize=0;this.sSdClr="";this.iEffDur=0;this.bShInit=false;this.bHdInit=false;this.sShEff=0;this.iShEff=-1;this.sHdEff=0;this.iHdEff=-1;this.aRounds=[];this.aRWids=[];this.aRHeis=[];this.aRdb=[];this.aRBgClrs=[];this.aRBgImgs=[];this.aRBgReps=[];this.aCorners=[];this.aCorWHs=[];this.aScBars=[];this.iMaxSize=-1;this.iScr=0;this.bflg=true;this.bMul=false;this.iMl=2;this.sMBgClrs="#000000";this.sMOpc=0;this.iMSpc=1;this.sMBgImgs="";this.sMBgReps="no-repeat";with(_STNS.UI.CUIPopup){this.fsGetHTML=fsGetHTML;this.fbGetEnt=fbGetEnt;this.fbSetOver=fbSetOver;this.fbSetOut=fbSetOut;this.fbCreate=fbCreate;this.fbInit=fbInit;this.fbShow=fbShow;this.fbShowX=fbShowX;this.fbHide=fbHide;this.fbHideX=fbHideX;this.fbOnShow=fbOnShow;this.fbOnHide=fbOnHide;this.faGetXY=faGetXY;this.foInsItem=foInsItem;this.fbDelItem=fbDelItem;this.fvDestroy=fvDestroy;this.faGetSwh=faGetSwh;this.fvScr=fvScr;this.fvClearScr=fvClearScr;this.fbCheckClkSet=fbCheckClkSet;this.fvHdWels=fvHdWels;this.fvShWels=fvShWels;this.fvWtag=fvWtag;this.fbWover=fbWover;}};CUIPopup.CROSSFRAME=1;CUIPopup.SHOW=2;CUIPopup.MOUSEOVER=4;with(CUIPopup){CUIPopup.MAXSTATE=CROSSFRAME|SHOW|MOUSEOVER;}CUIPopup.VERTICAL=1;CUIPopup.STATIC=2;CUIPopup.DIRECTION_LEFT=1;CUIPopup.DIRECTION_RIGHT=2;CUIPopup.DIRECTION_UPLEFT=3;CUIPopup.DIRECTION_DOWNLEFT=4;CUIPopup.DIRECTION_UPRIGHT=5;CUIPopup.DIRECTION_DOWNRIGHT=6;CUIPopup.fsGetHTML=function(){var _r=_STNS,_c=_r.UI.CUIPopup,m=this.oParMenu,_mc=_r.UI.CUIMenu,s="",scs,its,cf=this.iStat&_c.CROSSFRAME,fs="",v=this.iTyp&_c.VERTICAL,sc=this.aScBars.length?this.aScBars:m.aScBars,_8f=m.iWid&&!this.iNid&&!v;with(this){var _90=_91=isAllSW=0,_92,_93=_r.bIsSF&&this.bMul;for(var i=0;i";if(_96){var _tc=0;for(var c=0;c<_9a;c++){its+="";for(var j=_tc;j<_tc+_9d;j++){if(_99>0){if(!c){var ad=false;for(var t=0;t"+aItems[j].fsGetHTML()+"";if(_93){if(!this.tr[c]){this.tr[c]=[];}this.tr[c].push(aItems[j].iNid);}_99--;}}_tc=_tc+_9d;its+="";_99>0&&_98>0?its+="":"";}}else{if(_95){var _a5=_r.bIsFX&&_r.oNav.version<=20021130;_tprs=_9a==_9b?0:aItems.length%_ml;for(var c=0;c<_9d;c++){its+="";var _a6=0;for(var j=0;j<(_9c==0?_9a:_tprs>0?_9a:_9b);j++){if(_99>0){_a6=j==0?c:_a6+_9d;its+=""+aItems[_a6].fsGetHTML()+"";if(_93){if(!this.tr[c]){this.tr[c]=[];}this.tr[c].push(aItems[_a6].iNid);}_99--;}c==0&&j<_9a-1&&_98>0?(its+="
"):"";}_tprs>0?_tprs--:"";its+="";}}else{for(var j=0;j":"")+""+aItems[j].fsGetHTML()+""+(v?"":"");}else{its+=(v?"":"")+""+aItems[j].fsGetHTML()+""+(v?"":"");}}}}its+="";scs=sc[0]&&sc[1]?(""+(v?"":"")+""+(v?"":"")+""+(v?"":"")+""+(v?"":"")+"
"+sc[0].fsGetHTML()+"
"+"
"+its+"
"+"
"+sc[1].fsGetHTML()+"
"):its;if(_STNS.bIsIE&&(iOpac<100&&iOpac>-1||_STNS.oNav.version>=5.5&&iShadow&&iSdSize)){fs="filter:"+(iOpac<100&&iOpac>-1?"Alpha(opacity="+iOpac+") ":"")+(_STNS.oNav.version>=5.5&&iShadow&&iSdSize?(iShadow==1?"progid:DXImageTransform.Microsoft.dropshadow(color="+sSdClr+",offx="+iSdSize+",offy="+iSdSize+",positive=1)":"progid:DXImageTransform.Microsoft.Shadow(color="+sSdClr+",direction=135,strength="+iSdSize+")"):"")+";";}else{if(_STNS.oNav.name=="gecko"&&_STNS.oNav.version>=20060414){fs=iOpac<100&&iOpac>-1?"-moz-opacity:"+iOpac/100+";":"";}}s+=(iTyp&_c.STATIC?"":"
")+"0&&iBdWid>0?"border-width:"+iBdWid+"px;border-style:"+_mc.BORDERS[iBdStyle]+";border-color:"+sBdClr+";":"")+(!m.iTyp&&iWid&&iWid!=-1?"width:"+_r.fsGetLen("tb",iWid,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1)+";":"")+(!m.iTyp&&iHei&&iHei!=-1?"height:"+_r.fsGetLen("tb",iHei,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1,0)+";":""))+" "+(!m.iTyp&&!this.iNid&&m.iHal?"align="+_mc.ALIGNS[m.iHal]:"")+" "+m.fsGetEnt(this,"mouseover","",cf)+" "+m.fsGetEnt(this,"mouseout","",cf)+">"+(aRHeis[0]&&aRHeis[0]!=-1||(aRHeis[0]==-1&&(aCorners[0]||aCorners[1]||aRounds[0]))?""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+"":"")+""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+""+(aRHeis[2]&&aRHeis[2]!=-1||(aRHeis[2]==-1&&(aCorners[3]||aCorners[2]||aRounds[2]))?""+(aRWids[3]&&aRWids[3]!=-1||(aRWids[3]==-1&&(aCorners[0]||aCorners[3]||aRounds[3]))?"":"")+""+(aRWids[1]&&aRWids[1]!=-1||(aRWids[1]==-1&&(aCorners[1]||aCorners[2]||aRounds[1]))?"":"")+"":"")+"
"+m.fsGetImgTag(aCorners[0],aRWids[3],aRHeis[0],0,null,cf,aCorWHs[0],aCorWHs[1])+""+m.fsGetImgTag(aRounds[0],aRWids[0],aRHeis[0],0,null,cf)+""+m.fsGetImgTag(aCorners[1],aRWids[1],aRHeis[0],0,null,cf,aCorWHs[2],aCorWHs[3])+"
"+m.fsGetImgTag(aRounds[3],aRWids[3],aRHeis[3],0,null,cf)+""+scs+""+m.fsGetImgTag(aRounds[1],aRWids[1],aRHeis[1],0,null,cf)+"
"+m.fsGetImgTag(aCorners[3],aRWids[3],aRHeis[2],0,null,cf,aCorWHs[6],aCorWHs[7])+""+m.fsGetImgTag(aRounds[2],aRWids[2],aRHeis[2],0,null,cf)+""+m.fsGetImgTag(aCorners[2],aRWids[1],aRHeis[2],0,null,cf,aCorWHs[4],aCorWHs[5])+"
"+(iTyp&_c.STATIC?m.iHal==2&&(_r.bIsIE||_r.bIsOP)?"
":"":"
");}return s;};CUIPopup.fbGetEnt=function(e,o){var et=e.type||e,oid=o.id,_r=_STNS,_c=_r.UI.CUIPopup;with(this){switch(et){case "mouseover":if(!o._ov&&((_r.bIsIE&&e.srcElement&&_r.fbIsPar(o,e.srcElement))||(!_r.bIsIE&&e.target&&_r.fbIsPar(o,e.target)))){o._ov=1;this.iStat|=_c.MOUSEOVER;return fbFireEnt("mouseover");}break;case "mouseout":if(o._ov&&((_r.bIsIE&&(!e.toElement||!_r.fbIsPar(o,e.toElement)))||!_r.bIsIE&&(!e.relatedTarget||!_r.fbIsPar(o,e.relatedTarget)))){o._ov=0;this.iStat&=_c.MAXSTATE-_c.MOUSEOVER;return fbFireEnt("mouseout");}break;case "keydown":return fbFireEnt("keydown",e.keyCode);default:return fbFireEnt(et);}}return true;};CUIPopup.fvDestroy=function(){for(var i=0;i=0;i--){ps[i].fbShow();}}else{if(d){this._tTid=setTimeout(this.sSelf+".fbShowX()",d);}}}return true;};CUIPopup.fbHide=function(d){var _r=_STNS,_c=_r.UI.CUIPopup,_ic=_r.UI.CUIItem,s=this.iStat&_c.SHOW,m=this.oParMenu;clearTimeout(this._tTid);if(m.iClk&4){}if(!s){d=0;}if(!d){return this.fbOnHide();}else{if(d){this._tTid=setTimeout(this.sSelf+".fbHide()",d);}}return true;};CUIPopup.fbHideX=function(d,b,e,f){var _r=_STNS,_c=_r.UI.CUIPopup,_ic=_r.UI.CUIItem,s=this.iStat&_c.SHOW,m=this.oParMenu,tp,pp=this,pi;if(typeof f=="undefined"){f=0;}if(e==null){e=-1;}if(!d){while(pp&&pp.iDepth<=b&&pp.iDepth>e){clearTimeout(pp._tTid);tp=pp;if(pi=pp.oParItem){pi.fbUpDate(pi.iStat&(_ic.MAXSTATE-_ic.MOUSEOVER_STYLE));}pp=pp.oParPopup;}if(m.bHdPopup||f){if(tp){tp.fbHide();}else{for(var i=0;i5){cl=cw+cl-w.document.body.scrollWidth;}if(x+pw>cl+cw){x=cw+cl-pw;}if(y+ph>ct+ch){y=ct+ch-ph;}if(x_12a){this._sc.style.width=(_12a-(p.MaxScrWH[0]-_126))>=0?(_12a-(p.MaxScrWH[0]-_126))+"px":"1px";this._sc.style.height=_129+"px";this._sc.style.overflow="hidden";if(_r.bIsOP&&_r.oNav.version>=9){var _12b=_r.fdmGetEleById(this.sUid+"_dv",w);if(_12b){_12b.style.width=_12b.childNodes[0].offsetWidth+"px";}}}else{if(!_12a&&_128>CWid){this._sc.style.width=(CWid-(p.MaxScrWH[0]-_126))>=0?(CWid-(p.MaxScrWH[0]-_126))+"px":"1px";this._sc.style.height=_129+"px";this._sc.style.overflow="hidden";if(_r.bIsOP&&_r.oNav.version>=9){var _12b=_r.fdmGetEleById(this.sUid+"_dv",w);if(_12b){_12b.style.width=_12b.childNodes[0].offsetWidth+"px";}}}else{this._sc.style.height=p.MaxDvWH[1]+"px";this._sc.style.width=_126+"px";_r.fdmGetEleById(p.sUid+"_sc0",w).style.display="none";_r.fdmGetEleById(p.sUid+"_sc1",w).style.display="none";}}}else{var _129=p.MaxDvWH[1]+dh,_128=this.MaxScrWH[0]-dw;CWid=_r.fiGetCW(w),CHei=_r.fiGetCH(w),CScrT=_r.fiGetCT(w);if(cf){if(this.oParPopup&&!this.oParPopup.iNid){if(_12c){if(pd==3){CHei=p.iOffY-CScrT;}if(pd==4){CHei=CHei-p.iOffY;}}}else{if(pd==3){CHei=ip[1]-CScrT+p.iOffY;}if(pd==4){CHei=CHei-ip[1]-ih-p.iOffY+CScrT;}}}else{if(pd==3){CHei=ip[1]-CScrT+p.iOffY;}if(pd==4){CHei=CHei-ip[1]-ih-p.iOffY+CScrT;}}var _12c=this.aScBars[0].iScD;_r.fdmGetEleById(p.sUid+"_sc0",w).parentNode.style.display="";_r.fdmGetEleById(p.sUid+"_sc1",w).parentNode.style.display="";if(_12c&&_129>_12c){this._sc.style.height=(_12c-(p.MaxScrWH[1]-_127))>=0?(_12c-(p.MaxScrWH[1]-_127))+"px":"1px";this._sc.style.width=_128+"px";this._sc.style.overflow="hidden";}else{if(!_12c&&_129>CHei){this._sc.style.height=(CHei-(p.MaxScrWH[1]-_127))>=0?(CHei-(p.MaxScrWH[1]-_127))+"px":"1px";this._sc.style.width=_128+"px";this._sc.style.overflow="hidden";}else{this._sc.style.height=_127+"px";_r.bIsIE?this._sc.style.width=p.MaxDvWH[0]+"px":"";_r.fdmGetEleById(p.sUid+"_sc0",w).parentNode.style.display="none";_r.fdmGetEleById(p.sUid+"_sc1",w).parentNode.style.display="none";}}}_r.fiGetEleWid(_r.fdmGetEleById(this.sUid+"_dv",w));for(var i=0;i<2;i++){var oSc=_r.fdmGetEleById(p.sUid+"_sc"+i,w);if(oSc){oSc.onmouseover=Function(this.sSelf+".fvScr("+this.sSelf+",100,"+i+")");oSc.onmousedown=Function(this.sSelf+".fvScr("+this.sSelf+",10,"+i+")");oSc.onmouseup=Function(this.sSelf+".fvScr("+this.sSelf+",100,"+i+")");oSc.onmouseout=Function(this.sSelf+".fvClearScr("+this.sSelf+")");}}var te0,te1;te0=sc[0]?_r.fdmGetEleById(sc[0].sUid+"_img",w):0;te1=sc[1]?_r.fdmGetEleById(sc[1].sUid+"_img",w):0;te0?te0.src=cf?_r.fsGetAbsPth(sc[0].img0):sc[0].img0:"";te1?te1.src=cf?_r.fsGetAbsPth(sc[1].img1):sc[1].img1:"";};CUIPopup.fvScr=function(p,sp,d){if(this.tScr){clearTimeout(this.tScr);}var _r=_STNS,_c=_r.UI.CUIPopup,v=p.iTyp&_c.VERTICAL,cf=p.iStat&_c.CROSSFRAME,m=p.oParMenu,sc=p.aScBars.length?p.aScBars:m.aScBars,te0,te1,w=p.iStat&_c.CROSSFRAME?m.fdmGetTarFm():window,scc=_r.fdmGetEleById(p.sUid+"_scc",w),cw=p.MaxDvWH[0]-_r.fiGetEleWid(scc,w),ch=p.MaxDvWH[1]-_r.fiGetEleHei(scc,w);te0=sc[0]?_r.fdmGetEleById(sc[0].sUid+"_img",w):0;te1=sc[1]?_r.fdmGetEleById(sc[1].sUid+"_img",w):0;if(cf){sc[0].img0=_r.fsGetAbsPth(sc[0].img0);sc[0].img1=_r.fsGetAbsPth(sc[0].img1);sc[1].img0=_r.fsGetAbsPth(sc[1].img0);sc[1].img1=_r.fsGetAbsPth(sc[1].img1);}if(v){if(d){scc.scrollTop+=4;if(scc.scrollTop>=ch){te1.src=sc[1].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}else{scc.scrollTop-=4;if(scc.scrollTop<=0){te0.src=sc[0].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}}else{if(d){scc.scrollLeft+=4;if(scc.scrollLeft>=cw){te1.src=sc[1].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}else{scc.scrollLeft-=4;if(scc.scrollLeft<=0){te0.src=sc[0].img0;}else{te0.src=sc[0].img1;te1.src=sc[1].img1;}}}this.tScr=setTimeout(this.sSelf+".fvScr("+this.sSelf+","+sp+","+d+")",sp);};CUIPopup.fvClearScr=function(p){if(this.tScr){clearTimeout(this.tScr);}};CUIPopup.fvHdWels=function(p){var _r=_STNS,m=this.oParMenu;for(var i=0;i=0){f=1;}}if(f){continue;}else{if(p&&this.fbWover(e,p)){if(_r.bIsOP&&tg=="applet"){var v;if(v=parseInt(e.getAttribute("visLevel"))){e.setAttribute("visLevel",v+c);v+=c;}else{e.setAttribute("visLevel",c);v=c;}if(v==-1){if(e.getAttribute("visSave")){e.setAttribute("visSave",e.style.visibility);}e.style.visibility="hidden";if(typeof (p.mywehd)!="undefined"&&p.mywehd(e)){return;}}else{if(!v){var bv=e.getAttribute("visSave");e.style.visibility=bv?bv:"";if(typeof (p.mywesh)!="undefined"&&p.mywesh(e)){return;}}}}else{if(e.visLevel){e.visLevel+=c;}else{e.visLevel=c;}if(e.visLevel==-1){if(typeof e.visSave=="undefined"){e.visSave=e.style.visibility;}e.style.visibility="hidden";if(typeof (p.mywehd)!="undefined"&&p.mywehd(e)){return;}}else{if(!e.visLevel){e.style.visibility=e.visSave;if(typeof (p.mywesh)!="undefined"&&p.mywesh(e)){return;}}}}}}}};CUIPopup.fbWover=function(e,p){if(!p){return false;}var l=0,t=0,w=e.offsetWidth,h=e.offsetHeight,pos=this.faGetXY(p),pw=_STNS.fiGetEleWid(p),ph=_STNS.fiGetEleHei(p);w?(e._wd=w):(w=e._wd);h?(e._ht=h):(h=e._ht);while(e){l+=e.offsetLeft,t+=e.offsetTop,e=e.offsetParent;}return lpos[0]&&tpos[1];};_STNS.UI.CUISeparator=_STNS.Class(_STNS.UI.CUIObj);CUISeparator=_STNS.Class(_STNS.UI.CUIObj);CUISeparator.register("UI/CUIObj>CUISeparator");CUISeparator.construct=function(){this.iNid=-1;this.iTyp=-1;this.iWid=-1;this.iHei=-1;this.sImg=0;this.iImgWid=-1;this.iImgHei=-1;this.sBgClr=0;this.sBgImg=0;this.iBgRep=0;this.oParMenu=0;this.oParPopup=0;this.sId=0;this.iStat=0;with(_STNS.UI.CUISeparator){this.fsGetHTML=fsGetHTML;this.fbInit=fbInit;}};CUISeparator.CROSSFRAME=1;with(CUISeparator){CUISeparator.MAXSTATE=CROSSFRAME;}CUISeparator.fsGetHTML=function(){var s,m=this.oParMenu,_r=_STNS,_mc=_r.UI.CUIMenu,_c=_r.UI.CUISeparator,cf=this.iStat&_c.CROSSFRAME;with(this){s="
"+(iImgWid&&iImgHei?m.fsGetImgTag(sImg,iImgWid,iImgHei,0,"",cf):" ")+"
";}return s;};CUISeparator.fbInit=function(){var _r=_STNS,w=this.oParPopup.iStat&_r.UI.CUIPopup.CROSSFRAME?this.oParMenu.fdmGetTarFm():window,p=this.oParPopup,e=_r.fdmGetEleById(this.sUid,w);if(e&&this.iHei=="100%"){if(_r.bIsSF){if(!p.bMul){e.style.height=e.offsetParent.offsetParent.offsetHeight-2*p.iSpace+"px";}else{var _16d=0;for(var i=0;iCUIItem");CUIItem.construct=function(){this.iTyp=0;this.sId=0;this.iNid=-1;this.iWid=-1;this.iHei=-1;this.sTxt="";this.sFTxt="";this.aImgs=[];this.iImgWid=-1;this.iImgHei=-1;this.iImgBd=0;this.sLnk=this._sTLnk="#_nolink";this.sTar="";this.sStatus="";this.sTip="";this.aIcos=[];this.iIcoWid=-1;this.iIcoHei=-1;this.iIcoBd=0;this.aArrs=[];this.iArrWid=-1;this.iArrHei=-1;this.iArrBd=0;this.iHal=0;this.iVal=1;this.aBgClrs=[];this.aBgImgs=[];this.aBgReps=[];this.iBdStyle=0;this.iBdWid=0;this.aBdClrs=[];this.aFnts=[];this.aDecos=[];this.aFntClrs=[];this.oParMenu=0;this.oParPopup=0;this.oSubPopup=0;this.iStat=0;this.iLeftWid=0;this.iRightWid=0;this.iScD=0;this.iPad=0;this.bScr=false;with(_STNS.UI.CUIItem){this.fsGetHTML=fsGetHTML;this.fbGetEnt=fbGetEnt;this.fbSetStatus=fbSetStatus;this.fbReStatus=fbReStatus;this.fbSetOver=fbSetOver;this.fbSetOut=fbSetOut;this.fbInit=fbInit;this.fbShowSub=fbShowSub;this.fbHideSub=fbHideSub;this.fbSetFnt=fbSetFnt;this.fbSetBg=fbSetBg;this.fbSetCursor=fbSetCursor;this.fbUpDate=fbUpDate;this.fbOpenLnk=fbOpenLnk;this.fbCkClk=fbCkClk;this.fbEnter=fbEnter;this.fbEsc=fbEsc;this.fbUp=fbUp;this.fbDown=fbDown;this.fbLeft=fbLeft;this.fbRight=fbRight;this.faItems=faItems;this.fbNxtItem=fbNxtItem;this.fbRotItem=fbRotItem;this.fbPopFirItem=fbPopFirItem;this.fbSetFocus=fbSetFocus;this.fbSetfs=fbSetfs;this.fbBlur=fbBlur;this.fbFOver=fbFOver;}};CUIItem.SHIFTKEY=1;CUIItem.CTRLKEY=2;CUIItem.ALTKEY=4;CUIItem.MOUSEOVER=1;CUIItem.MOUSEOVER_STYLE=1227133512;CUIItem.TRACK=2;CUIItem.TRACK_STYLE=2454267024;CUIItem.CROSSFRAME=4;CUIItem.CUR_ICON=56;CUIItem.ICON_BIT=3;CUIItem.CUR_ARROW=448;CUIItem.ARROW_BIT=6;CUIItem.CUR_FONT=1584;CUIItem.FONT_BIT=9;CUIItem.CUR_COLOR=28672;CUIItem.COLOR_BIT=12;CUIItem.CUR_DECORATION=229376;CUIItem.DECORATION_BIT=15;CUIItem.CUR_BGCOLOR=1835008;CUIItem.BGCOLOR_BIT=18;CUIItem.CUR_BGIMAGE=14680064;CUIItem.BGIMAGE_BIT=21;CUIItem.CUR_BGREPEAT=117440521;CUIItem.BGREPEAT_BIT=24;CUIItem.CUR_BORDERCOLOR=939527096;CUIItem.BORDERCOLOR_BIT=27;CUIItem.CUR_IMAGE=7516192768;CUIItem.IMAGE_BIT=30;with(CUIItem){CUIItem.MAXSTATE=MOUSEOVER|TRACK|CROSSFRAME|CUR_ICON|CUR_ARROW|CUR_FONT|CUR_COLOR|CUR_DECORATION|CUR_BGCOLOR|CUR_BGIMAGE|CUR_BGREPEAT|CUR_BORDERCOLOR|CUR_IMAGE;}CUIItem.fsGetHTML=function(){var s="",icos,arrs,_r=_STNS,m=this.oParMenu,p=this.oParPopup,_mc=_STNS.UI.CUIMenu,_c=_STNS.UI.CUIItem,cf=this.iStat&_c.CROSSFRAME,bKQ=_r.bIsKQ;with(this){icos=!bScr&&iIcoWid&&iIcoHei?""+m.fsGetImgTag(aIcos[(iStat&_c.CUR_ICON)>>>_c.ICON_BIT],iIcoWid,iIcoHei,iIcoBd,sUid+"_icoImg",cf)+"":"";arrs=!bScr&&iArrWid&&iArrHei?""+m.fsGetImgTag(aArrs[(iStat&_c.CUR_ARROW)>>>_c.ARROW_BIT],iArrWid,iArrHei,iArrBd,sUid+"_arrImg",cf)+"":"";s+=(!bKQ?"":"")+"0&&iBdWid>0?iBdWid:0,1)+";":"")+(iHei&&iHei!=-1?"height:"+_r.fsGetLen("tb",iHei,0,iBdStyle>0&&iBdWid>0?iBdWid:0,1,0)+";":"")+(iBdStyle>0&&iBdWid>0?"border-width:"+iBdWid+"px;border-style:"+_mc.BORDERS[iBdStyle]+";border-color:"+aBdClrs[(iStat&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT]+";":"")+(aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]?"background-color:"+aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]+";":"")+(aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]?"background-image:url("+(cf?_r.fsGetAbsPth(aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT])+");":"")+(_mc.REPEATS[aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]]?"background-repeat:"+_mc.REPEATS[aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]]+";":"")+(_STNS.bIsOP&&_STNS.oNav.version>=9&&_STNS.oNav.version<9.5?"text-decoration:"+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none")+";":""))+">"+(m.bRTL?arrs:icos)+""+(m.bRTL?icos:arrs)+"
"+(bKQ?"":"")+" "+">>_c.COLOR_BIT]?"color:"+aFntClrs[(iStat&_c.CUR_COLOR)>>>_c.COLOR_BIT]+";":"")+(aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]?"font:"+aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]+";":"")+"text-decoration:"+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none")+";")+">"+(iTyp==2?m.fsGetImgTag(aImgs[(iStat&_c.CUR_IMAGE)>>>_c.IMAGE_BIT],iImgWid,iImgHei,iImgBd,sUid+"_img",cf):sTxt)+""+(bKQ?"":"")+"
"+(!bKQ?"
":"");}return s;};CUIItem.fbGetEnt=function(e,o){var et=e.type||e,oid=o.id,_r=_STNS,_c=_r.UI.CUIItem,as,r;with(this){switch(et){case "mouseover":if(!o._ov&&((_r.bIsIE&&e.srcElement&&_r.fbIsPar(o,e.srcElement))||(!_r.bIsIE&&e.target&&_r.fbIsPar(o,e.target)))){o._ov=1;if(oid==this.sUid+"_lnk"){return fbFireEnt("mouseoverlink");}this.iStat|=_c.MOUSEOVER;return fbFireEnt("mouseover");}break;case "mouseout":if(o._ov&&((_r.bIsIE&&(!e.toElement||!_r.fbIsPar(o,e.toElement)))||!_r.bIsIE&&(!e.relatedTarget||!_r.fbIsPar(o,e.relatedTarget)))){o._ov=0;if(oid==this.sUid+"_lnk"){return fbFireEnt("mouseoutlink");}this.iStat&=_c.MAXSTATE-_c.MOUSEOVER;return fbFireEnt("mouseout");}break;case "click":as=0;if(e.shiftKey){as|=1;}if(e.ctrlKey){as|=2;}if(e.altKey){as|=4;}as|=8;if(_r.bIsIE&&e.srcElement&&e.srcElement.id&&!e.srcElement.id.indexOf(this.sUid+"_arr")||!_r.bIsIE&&e.target&&e.target.id&&!e.target.id.indexOf(this.sUid+"_arr")){return fbFireEnt("clickarrow",as);}return fbFireEnt("click",as);case "keydown":switch(e.keyCode){case 9:return false;case 13:return fbFireEnt("pressEnter");case 27:return fbFireEnt("pressEsc");case 37:return fbFireEnt("pressLeft");case 38:return fbFireEnt("pressUp");case 39:return fbFireEnt("pressRight");case 40:return fbFireEnt("pressDown");}break;case "mousedown":as=0;if(e.shiftKey){as|=1;}if(e.ctrlKey){as|=2;}if(e.altKey){as|=4;}as|=e.button*8;return fbFireEnt("mousedown",as);default:return fbFireEnt(et,as);}}return true;};CUIItem.fbSetStatus=function(){if(this.sStatus){top.status=this.sStatus;}else{if(this.sLnk&&this.sLnk!="#_nolink"){top.status=_STNS.fsGetAbsPth(this.sLnk);}}return true;};CUIItem.fbReStatus=function(){top.status="";return true;};CUIItem.fbSetOver=function(){var _r=_STNS,_c=_r.UI.CUIItem,p=this.oParPopup,sp=this.oSubPopup,_ic=_r.UI.CUIItem,m=this.oParMenu;if(!(m.iClk&4)&&!_STNS.UI.CUICanvas){for(var i=0;i>>_c.BORDERCOLOR_BIT]!=aBdClrs[(s&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT]){e.style.borderColor=aBdClrs[(s&_c.CUR_BORDERCOLOR)>>>_c.BORDERCOLOR_BIT];}if((d&_c.CUR_BGCOLOR)&&aBgClrs[(iStat&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]!=aBgClrs[(s&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT]){e.style.backgroundColor=aBgClrs[(s&_c.CUR_BGCOLOR)>>>_c.BGCOLOR_BIT];}if((d&_c.CUR_BGREPEAT)&&aBgReps[(iStat&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]!=aBgReps[(s&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]){e.style.backgroundRepeat=_mc.REPEATS[aBgReps[(s&_c.CUR_BGREPEAT)>>>_c.BGREPEAT_BIT]];}if((d&_c.CUR_BGIMAGE)&&aBgImgs[(iStat&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]!=aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]){e.style.backgroundImage="url("+(aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]?(cf?_r.fsGetAbsPth(aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):aBgImgs[(s&_c.CUR_BGIMAGE)>>>_c.BGIMAGE_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank))+")";}if(te=_r.fdmGetEleById(sUid+"_txt",w)){if((d&_c.CUR_FONT)&&aFnts[(iStat&_c.CUR_FONT)>>>_c.FONT_BIT]!=aFnts[(s&_c.CUR_FONT)>>>_c.FONT_BIT]){te.style.font=aFnts[(s&_c.CUR_FONT)>>>_c.FONT_BIT];}if((d&_c.CUR_COLOR)&&aFntClrs[(iStat&_c.CUR_COLOR)>>>_c.COLOR_BIT]!=aFntClrs[(s&_c.CUR_COLOR)>>>_c.COLOR_BIT]){te.style.color=aFntClrs[(s&_c.CUR_COLOR)>>>_c.COLOR_BIT];}if((d&_c.CUR_DECORATION)&&aDecos[(iStat&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]!=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]){te.style.textDecoration=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none";if(_STNS.bIsOP&&_STNS.oNav.version>=9&&_STNS.oNav.version<9.5){e.style.textDecoration=aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]?(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&1?"underline ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&2?"line-through ":"")+(aDecos[(s&_c.CUR_DECORATION)>>>_c.DECORATION_BIT]&4?"overline ":""):"none";}}}if((d&_c.CUR_ICON)&&aIcos[(iStat&_c.CUR_ICON)>>>_c.ICON_BIT]!=aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]){if(te=_r.fdmGetEleById(sUid+"_icoImg",w)){te.src=aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]?(cf?_r.fsGetAbsPth(aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]):aIcos[(s&_c.CUR_ICON)>>>_c.ICON_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}if((d&_c.CUR_ARROW)&&aArrs[(iStat&_c.CUR_ARROW)>>>_c.ARROW_BIT]!=aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]){if(te=_r.fdmGetEleById(sUid+"_arrImg",w)){te.src=aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]?(cf?_r.fsGetAbsPth(aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]):aArrs[(s&_c.CUR_ARROW)>>>_c.ARROW_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}if(!bScr&&(d&_c.CUR_IMAGE)&&aImgs[(iStat&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]!=aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]){if(te=_r.fdmGetEleById(sUid+"_img",w)){te.src=aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]?(cf?_r.fsGetAbsPth(aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]):aImgs[(s&_c.CUR_IMAGE)>>>_c.IMAGE_BIT]):(cf?_r.fsGetAbsPth(oParMenu.sBlank):oParMenu.sBlank);}}}iStat=s;}};CUIItem.fbCkClk=function(){var m=this.oParMenu;if(!m.bClked){m.bClked=true;if(m.iClk&1){if(this.oSubPopup){this.oSubPopup.fbShow();}}if(!(m.iClk&2)){this.fbSetOver();}}return true;};CUIItem.fbEnter=function(){var o=this,s=o.oSubPopup,m=o.oParMenu;if(o._sTLnk=="#_nolink"){if(s){m.bRunEff=false;if(s.iStat&_STNS.UI.CUIPopup.SHOW){s.fbHide();}else{if(!(m.iClk&4)){s.fbShow();}}m.bRunEff=true;}return false;}if(_STNS.bIsSF){var p=o.oParPopup,pp=o,d=p.iDepth;if(d>=1){for(var i=d;i>0;i--){pp=pp.oParPopup;pp.fbHide();pp.oParItem.fbSetOut();}}else{if(d==0){o.fbSetOut();}}m.iStat&=_STNS.UI.CUIMenu.MAXSTATE-_STNS.UI.CUIMenu.MOUSEOVER;m.oFocus=0;}};CUIItem.fbEsc=function(){var _r=_STNS,o=this,m=o.oParMenu,s=o.oSubPopup,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth;m.bRunEff=false;if(s&&(s.iStat&_r.UI.CUIPopup.SHOW)){s.fbHide();m.bRunEff=true;return false;}if(dp){o.fbFireEnt("mouseout");p.fbHide();pi.fbSetfs();}else{o.fbFireEnt("mouseout");_r.fdmGetEleById(o.sUid+"_lnk").blur();}m.bRunEff=true;return false;};CUIItem.fbUp=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;var a=o.faItems();if(a[2]==1&&dp>=1){o.fbFireEnt("mouseout");pi.fbFireEnt("mousedown",8);pi.fbFOver();if(p.iStat&_r.UI.CUIPopup.SHOW){p.fbHide();}}else{if(v){var nI=o.fbNxtItem(0);if(nI!=o){o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}}else{if(o.oSubPopup&&(o.oSubPopup.iStat&_r.UI.CUIPopup.SHOW)){o.oSubPopup.fbHide();}else{if(dp){o.fbFireEnt("pressEsc");}}}}m.bRunEff=true;return false;};CUIItem.fbDown=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;if(v){var a=o.faItems();if(a[2]==1){m.bRunEff=true;return false;}var nI=o.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}else{if(o.oSubPopup){var fI=o.fbPopFirItem();o.oSubPopup.fbShow();if(fI){if(_r.bIsSF&&_r.oNav.version<523.12){o.fbBlur();}fI.fbFOver();}}}m.bRunEff=true;return false;};CUIItem.fbLeft=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,pi=p.oParItem,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;var a=o.faItems();if(a[2]==1&&dp>1){o.fbFireEnt("mouseout");pi.fbFireEnt("mousedown",8);pi.fbFOver();if(p.iStat&_r.UI.CUIPopup.SHOW){p.fbHide();}}else{if(!v){var nI=o.fbNxtItem(0);if(nI!=o){o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}}else{if(o.oSubPopup&&(o.oSubPopup.iStat&_r.UI.CUIPopup.SHOW)){o.oSubPopup.fbHide();}else{if(dp){o.fbFireEnt("pressEsc");}}}}m.bRunEff=true;return false;};CUIItem.fbRight=function(){var _r=_STNS,o=this,m=o.oParMenu,p=o.oParPopup,dp=p.iDepth,v=p.iTyp&_STNS.UI.CUIPopup.VERTICAL,f=m.iClk&4;if((m.iClk&1)&&!m.bClked){return false;}m.bRunEff=false;if(!v){var a=o.faItems();if(a[2]==1){m.bRunEff=true;return false;}var nI=o.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){if(o.oSubPopup){o.oSubPopup.fbHide();}}nI.fbFOver();}else{if(o.oSubPopup){var fI=o.fbPopFirItem();o.oSubPopup.fbShow();if(fI){if(_r.bIsSF&&_r.oNav.version<523.12){o.fbBlur();}fI.fbFOver();}}else{var pi=p.oParItem;if(dp>1&&!pi.oParPopup.iTyp){if(pi.faItems()[2]>1){var npi=pi.fbNxtItem(1);o.fbFireEnt("mouseout");if(f){pi.fbFireEnt("mouseout");if(pi.oSubPopup){pi.oSubPopup.fbHide();}}npi.fbFOver();}m.bRunEff=true;return false;}else{if(m.aPopups[0].iTyp&_STNS.UI.CUIPopup.VERTICAL){m.bRunEff=true;return false;}}var rI=o.fbRotItem();if(rI.faItems()[2]>1){var nI=rI.fbNxtItem(1),fI=nI.fbPopFirItem();o.fbFireEnt("mouseout");if(f){rI.fbFireEnt("mouseout");if(rI.oSubPopup){rI.oSubPopup.fbHide();}}nI.fbFOver();}}}m.bRunEff=true;return false;};CUIItem.faItems=function(){var fst=lst=x=y=0,p=this.oParPopup;for(var i=0;i=0;j--){nI=p.aItems[j];if(typeof nI.sTxt!="undefined"){break;}}}}return nI;};CUIItem.fbRotItem=function(){var o=this,p=o.oParPopup,ppi=p;for(var k=0;k=800?a[23]:"";sImgPth=a[2]?a[2].charAt(a[2].length-1)!="/"?a[2]+"/":a[2]:"";sBlank=fsGetImg(a[3]);iTyp=a[4];iX=a[5];iY=a[6];iHal=a[7];iClk=a[8];iDelaySV=a[9];iDelaySH=a[10];iDelayHd=a[11];if(a[12]&&(_r.bIsIE&&_r.oNav.platform!=="Mac"||_r.oNav.name=="konqueror")){aHdTags.push("select");}if(a[13]){aHdTags.push("object","embed","applet");}if(a[14]&&(_r.bIsIE&&_r.oNav.version<5.5||_r.bIsOP||_r.oNav.name=="konqueror")){aHdTags.push("iframe");}sLnkPre=a[15]?a[15].charAt(a[15].length-1)!="/"?a[15]+"/":a[15]:"";iWid=a[16];iTracks=a[17];bRTL=a[18];bHdPopup=a[19];iTrackLevel=a[20];aCursors[0]=_STNS.fbIsFile(a[21])?"url("+_STNS.fsGetAbsPth(m.fsGetImg(a[21]))+"),default":a[21];aCursors[1]=_STNS.fbIsFile(a[22])?"url("+_STNS.fsGetAbsPth(m.fsGetImg(a[22]))+"),auto":a[22];}m.__open=true;return m;}function stm_bp(id,a,pid){var _r=_STNS,m=_r._aStMenus[_r._aStMenus.length-1];if(!m||!m.__open){return;}if(pid){for(var i=0;i=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}if(pp&&!pp.aItems.length){return;}var pi=pp?pp.aItems[pp.aItems.length-1]:0,n=m.aPopups.length,p=new _r.UI.CUIPopup;with(p){sId=id;iNid=n;iTyp=a[0];iDirect=a[1];iOffX=a[2];iOffY=a[3];iSpace=a[4];iPad=a[5];iOpac=a[8];if(STM_FILTER){sShEff=a[9];if(sShEff=="stEffect(\"slip\")"){iShEff="_stDirection:"+a[1];}else{if(sShEff=="stEffect(\"rect\")"){iShEff=a[20]&&a[21]?"border-style:"+_r.UI.CUIMenu.BORDERS[a[20]]+";border-width:"+a[21]+";border-color:"+a[22]:"border-style:solid;border-width:1px;border-color:#999999";}else{iShEff=a[10];}}sHdEff=a[11];if(sHdEff=="stEffect(\"slip\")"){iHdEff="_stDirection:"+a[1];}else{if(sHdEff=="stEffect(\"rect\")"){iHdEff=a[20]&&a[21]?"border-style:"+_r.UI.CUIMenu.BORDERS[a[20]]+";border-width:"+a[21]+";border-color:"+a[22]:"border-style:solid;border-width:1px;border-color:#999999";}else{iHdEff=a[12];}}iEffDur=(110-a[13])*10;}iShadow=a[14];iSdSize=_r.bIsIE&&_r.oNav.version>=5.5?a[15]:0;sSdClr=a[16];sBgClr=a[17];sBgImg=m.fsGetImg(a[18]);iBgRep=a[19];iBdStyle=a[20];iBdWid=a[21];sBdClr=a[22];aRounds[0]=a[23]?m.fsGetImg(a[23]):0;aRHeis[0]=a[24]?a[24]:0;aRWids[0]=a[25]?a[25]:0;aRdb[0]=a[26]?a[26]:0;aRBgClrs[0]=a[27]?a[27]:0;aRBgImgs[0]=a[28]?m.fsGetImg(a[28]):0;aRBgReps[0]=a[29]?a[29]:0;aRounds[1]=a[30]?m.fsGetImg(a[30]):0;aRHeis[1]=a[31]?a[31]:0;aRWids[1]=a[32]?a[32]:0;aRdb[1]=a[33]?a[33]:0;aRBgClrs[1]=a[34]?a[34]:0;aRBgImgs[1]=a[35]?m.fsGetImg(a[35]):0;aRBgReps[1]=a[36]?a[36]:0;aRounds[2]=a[37]?m.fsGetImg(a[37]):0;aRHeis[2]=a[38]?a[38]:0;aRWids[2]=a[39]?a[39]:0;aRdb[2]=a[40]?a[40]:0;aRBgClrs[2]=a[41]?a[41]:0;aRBgImgs[2]=a[42]?m.fsGetImg(a[42]):0;aRBgReps[2]=a[43]?a[43]:0;aRounds[3]=a[44]?m.fsGetImg(a[44]):0;aRHeis[3]=a[45]?a[45]:0;aRWids[3]=a[46]?a[46]:0;aRdb[3]=a[47]?a[47]:0;aRBgClrs[3]=a[48]?a[48]:0;aRBgImgs[3]=a[49]?m.fsGetImg(a[49]):0;aRBgReps[3]=a[50]?a[50]:0;aCorners[0]=a[51]?m.fsGetImg(a[51]):0;aCorners[1]=a[52]?m.fsGetImg(a[52]):0;aCorners[2]=a[53]?m.fsGetImg(a[53]):0;aCorners[3]=a[54]?m.fsGetImg(a[54]):0;aCorWHs=[a[55],a[56],a[57],a[58],a[59],a[60],a[61],a[62]];oParMenu=m;oParItem=pi;oParPopup=pp;iZid=pp?pp.iZid+pi.iNid+3:1000;iDepth=pp?pp.iDepth+1:0;if(!iNid){iWid=m.iWid;}if(pi){pi.oSubPopup=p;}fbAttachEnt("mouseover",fbSetOver);fbAttachEnt("mouseout",fbSetOut);if(!n&&!m.iTyp){iTyp|=_r.UI.CUIPopup.STATIC;}if(p.sShEff||p.sHdEff){_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffie.js"));_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffrect.js"));_STNS.fvInc(_STNS.fsGetAbsPth(m.sJsPth+"steffslip.js"));}}p.__args=a;p.__open=true;m.aPopups.push(p);return p;}function stm_bpx(id,pid,a){return stm_bp(id,a,pid);}function stm_ai(id,a,wid,hei,pid){var _r=_STNS,m=_r._aStMenus[_r._aStMenus.length-1];if(!m||!m.__open){return;}var pp;for(var i=m.aPopups.length-1;i>=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}if(!pp){return;}if(pid){for(var i=0;i"):a[1];aImgs[0]=m.fsGetImg(a[2]);aImgs[1]=m.fsGetImg(a[3]);iImgWid=a[4];iImgHei=a[5];iImgBd=a[6];sLnk=_sTLnk=a[7]?m.fsGetLnk(a[7]):"#_nolink";sTar=a[8];sStatus=a[9];sTip=_r.fsGetHTMLEnti(a[10],1);aIcos[0]=m.fsGetImg(a[11]);aIcos[1]=m.fsGetImg(a[12]);iIcoWid=a[13];iIcoHei=a[14];iIcoBd=a[15];aArrs[0]=m.fsGetImg(a[16]);aArrs[1]=m.fsGetImg(a[17]);iArrWid=a[18];iArrHei=a[19];iArrBd=a[20];iHal=a[21];iVal=a[22];aBgClrs[0]=a[24]?"":a[23];aBgClrs[1]=a[26]?"":a[25];aBgImgs[0]=m.fsGetImg(a[27]);aBgImgs[1]=m.fsGetImg(a[28]);aBgReps[0]=a[29];aBgReps[1]=a[30];iBdStyle=a[31];iBdWid=a[32];aBdClrs[0]=a[33];aBdClrs[1]=a[34];aFntClrs[0]=a[35];aFntClrs[1]=a[36];aFnts[0]=a[37];aFnts[1]=a[38];aDecos[0]=a[39];aDecos[1]=a[40];oParPopup=pp;oParMenu=m;iPad=pp.iPad;iWid=wid?wid:(pp.iTyp&_r.UI.CUIPopup.VERTICAL?"100%":-1);iHei=hei?hei:(pp.iTyp&_r.UI.CUIPopup.VERTICAL?-1:"100%");fbAttachEnt("mouseover",fbSetOver);fbAttachEnt("mouseoverlink",fbSetStatus);fbAttachEnt("mouseout",fbSetOut);fbAttachEnt("mouseoutlink",fbReStatus);fbAttachEnt("pressEnter",fbEnter);fbAttachEnt("pressEsc",fbEsc);fbAttachEnt("pressUp",fbUp);fbAttachEnt("pressDown",fbDown);fbAttachEnt("pressLeft",fbLeft);fbAttachEnt("pressRight",fbRight);if(m.iClk&1){fbAttachEnt("click",fbCkClk);fbAttachEnt("mouseover",fbShowSub);fbAttachEnt("clickarrow",fbCkClk);}else{if(m.iClk&4){fbAttachEnt("click",fbShowSub);fbAttachEnt("clickarrow",fbShowSub);}else{fbAttachEnt("mouseover",fbShowSub);fbAttachEnt("clickarrow",fbShowSub);}}fbAttachEnt("clickarrow",_STNS.fbFalse);fbAttachEnt("click",fbOpenLnk);if(STM_KEY){fbAttachEnt("keydown",_STNS.fbTrue);fbAttachEnt("mousemove",fbSetFocus);fbAttachEnt("mousemove",_STNS.fbTrue);}if(m.iTracks&1){if(m.iTracks&2){aFntClrs[2]=aFntClrs[1];}else{aFntClrs[2]=aFntClrs[0];}aFntClrs[3]=aFntClrs[1];if(m.iTracks&4){aFnts[2]=aFnts[1];aDecos[2]=aDecos[1];}else{aFnts[2]=aFnts[0];aDecos[2]=aDecos[0];}aFnts[3]=aFnts[1];aDecos[3]=aDecos[1];if(m.iTracks&8){aBgClrs[2]=aBgClrs[1];}else{aBgClrs[2]=aBgClrs[0];}aBgClrs[3]=aBgClrs[1];if(m.iTracks&16){aBgImgs[2]=aBgImgs[1];aBgReps[2]=aBgReps[1];}else{aBgImgs[2]=aBgImgs[0];aBgReps[2]=aBgReps[0];}aBgImgs[3]=aBgImgs[1];aBgReps[3]=aBgReps[1];if(m.iTracks&32){aBdClrs[2]=aBdClrs[1];}else{aBdClrs[2]=aBdClrs[0];}aBdClrs[3]=aBdClrs[1];if(m.iTracks&64){aIcos[2]=aIcos[1];}else{aIcos[2]=aIcos[0];}aIcos[3]=aIcos[1];if(m.iTracks&128){aImgs[2]=aImgs[1];}else{aImgs[2]=aImgs[0];}aImgs[3]=aImgs[1];if(m.iTracks&256){aArrs[2]=aArrs[1];}else{aArrs[2]=aArrs[0];}aArrs[3]=aArrs[1];}}}it.__args=a;pp.aItems.push(it);return it;}function stm_aix(id,pid,a,wid,hei){return stm_ai(id,a,wid,hei,pid);}function stm_ep(){var m=_STNS._aStMenus[_STNS._aStMenus.length-1];if(!m||!m.__open){return;}var p;for(var i=m.aPopups.length-1;i>=0;i--){if(m.aPopups[i].__open){p=m.aPopups[i];break;}}if(!p){return;}if(p.aItems.length){if(!p.bMul){if(p.iTyp&_STNS.UI.CUIPopup.VERTICAL){var lw=0,rw=0;for(var i=0;ilw&&p.aItems[i].iIcoHei){lw=p.aItems[i].iIcoWid;}if(p.aItems[i].iArrWid>rw&&p.aItems[i].iArrHei){rw=p.aItems[i].iArrWid;}}if(!p.bMul&&lw){for(var i=0;i0){if(!_25a[n]){_25a[n]=[];}_25a[n][c]=j;n++;}_255--;}_tc=_tc+_stp;}}else{if(_mlc){_tprs=_256==_257?0:p.aItems.length%_ml;for(var c=0;c<_stp;c++){var _mli=0,n=0;for(var j=0;j<(_258==0?_256:_tprs>0?_256:_257);j++){if(_255>0){_mli=j==0?c:_mli+_stp;if(!_25a[n]){_25a[n]=[];}_25a[n][c]=_mli;_255--;n++;}}_tprs>0?_tprs--:"";}}}for(var j=0;j<_25a.length;j++){var lw=0,rw=0;for(var i=0;i<_25a[j].length;i++){if(p.aItems[_25a[j][i]].iIcoWid>lw&&p.aItems[_25a[j][i]].iIcoHei){lw=p.aItems[_25a[j][i]].iIcoWid;}if(p.aItems[_25a[j][i]].iArrWid>rw&&p.aItems[_25a[j][i]].iArrHei){rw=p.aItems[_25a[j][i]].iArrWid;}}if(lw){for(var i=0;i<_25a[j].length;i++){if(!p.aItems[_25a[j][i]].iIcoWid||!p.aItems[_25a[j][i]].iIcoHei){p.aItems[_25a[j][i]].iIcoWid=lw;p.aItems[_25a[j][i]].iIcoHei=1;p.aItems[_25a[j][i]].aIcos=[];}p.aItems[_25a[j][i]].iLeftWid=lw;}}if(rw){for(var i=0;i<_25a[j].length;i++){if(!p.aItems[_25a[j][i]].iArrWid||!p.aItems[_25a[j][i]].iArrHei){p.aItems[_25a[j][i]].iArrWid=rw;p.aItems[_25a[j][i]].iArrHei=1;p.aItems[_25a[j][i]].aArrs=[];}p.aItems[_25a[j][i]].iRightWid=rw;}}}}delete p.__open;}else{var pi=p.oParItem;if(pi){pi.oSubPopup=null;pi.aArrs.length=0;pi.iArrWid=0;pi.iArrHei=0;}m.aPopups.pop();p.fvDestroy();}}function stm_em(){var m=_STNS._aStMenus[_STNS._aStMenus.length-1];if(!m||!m.__open){return;}if(m.aPopups.length){delete m.__open;for(var i=0;i=3));for(var i=1;i=0;i--){if(m.aPopups[i].__open){pp=m.aPopups[i];break;}}switch(a[5]){case 1:_274="repeat-x";break;case 2:_274="repeat-y";break;case 3:_274="repeat";break;default:_274="no-repeat";}pp.bMul=true,pp.iMl=a[0],pp.sMBgClrs=a[2]?"":a[1],pp.sMOpc=a[2],pp.iMSpc=a[3],pp.sMBgImgs=a[4]?m.fsGetImg(a[4]):"",pp.sMBgReps=_274?_274:"no-repeat";for(var i=0;iCEffIE");CEffIE.construct=function(as){this.iFid=as[4]?as[4]:-1;this.sfName="";this.iDur=as[3]||-1;this.sBak="";this._iOid=-1;this._iStat=-1;this._iGid=-1;with(_STNS.EFFECT.CEffIE){this.fiGetStat=fiGetStat;this.fbSet=fbSet;this.fbDel=fbDel;this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSetStyle=fbSetStyle;}};CEffIE._aGlobal=[];CEffIE.fiGetStat=function(){var _r=_STNS,e;if(this._iStat==-1){return -1;}if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){return e.status;}else{return this._iStat;}};CEffIE.fbSet=function(){var _r=_STNS,e,s,fs=[],i=0,_9,n;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(this.sName&&_STNS.oNav.version>=5.5){s=this.sfName=this.sName;}else{if(_STNS.oNav.version<5.5&&this.iFid>=0&&this.iFid<24&&this.iDur!=-1){s=this.sfName="revealTrans(Transition="+this.iFid+",Duration="+this.iDur/1000+")";}else{return false;}}_9=e.style.filter;if(_9){var re=/[\w:\.]+\([^;\)]+\)/g;fs=_9.match(re);}if(this._iGid==-1){n=_r.EFFECT.CEffIE._aGlobal.length;_r.EFFECT.CEffIE._aGlobal.push(this);this._iGid=n;}if(!fs){fs=[];}for(i=0;ithis._iOid){t[i]._iOid--;}}}this._iStat=-1;return true;};CEffIE.fbApply=function(){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){e.filters[this._iOid].apply();}this._iStat=1;return true;};CEffIE.fbPlay=function(){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){e.filters[this._iOid].play();}this._iStat=2;return true;};CEffIE.fbStop=function(){var _r=_STNS,e;if(this.iStat>-1){if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(e.filters[this._iOid].status){e.filters[this._iOid].stop();}}this._iStat=0;}return true;};CEffIE.fbSetStyle=function(s){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){var ss=_r.foCss2Style(s),i;for(i in ss){try{e.style[i]=ss[i];}catch(e){}}}return true;};}} \ No newline at end of file +if(typeof _STNS!="undefined"&&_STNS.EFFECT&&_STNS.bIsIE&&!_STNS.EFFECT.CEffIE){with(_STNS.EFFECT){_STNS.EFFECT.CEffIE=_STNS.Class(_STNS.EFFECT.CEffect);CEffIE.register("EFFECT/CEffect>CEffIE");CEffIE.construct=function(as){this.iFid=as[4]?as[4]:-1;this.sfName="";this.iDur=as[3]||-1;this.sBak="";this._iOid=-1;this._iStat=-1;this._iGid=-1;with(_STNS.EFFECT.CEffIE){this.fiGetStat=fiGetStat;this.fbSet=fbSet;this.fbDel=fbDel;this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSetStyle=fbSetStyle;}};CEffIE._aGlobal=[];CEffIE.fiGetStat=function(){var _r=_STNS,e;if(this._iStat==-1){return -1;}if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){return e.status;}else{return this._iStat;}};CEffIE.fbSet=function(){var _r=_STNS,e,s,fs=[],i=0,_9,n;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(this.sName&&_STNS.oNav.version>=5.5){s=this.sfName=this.sName;}else{if(_STNS.oNav.version<5.5&&this.iFid>=0&&this.iFid<24&&this.iDur!=-1){s=this.sfName="revealTrans(Transition="+this.iFid+",Duration="+this.iDur/1000+")";}else{return false;}}_9=e.style.filter;if(_9){var re=/[\w:\.]+\([^;\)]+\)/g;fs=_9.match(re);}if(this._iGid==-1){n=_r.EFFECT.CEffIE._aGlobal.length;_r.EFFECT.CEffIE._aGlobal.push(this);this._iGid=n;}if(!fs){fs=[];}for(i=0;ithis._iOid){t[i]._iOid--;}}}this._iStat=-1;return true;};CEffIE.fbApply=function(){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){e.filters[this._iOid].apply();}this._iStat=1;return true;};CEffIE.fbPlay=function(){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){e.filters[this._iOid].play();}this._iStat=2;return true;};CEffIE.fbStop=function(){var _r=_STNS,e;if(this.iStat>-1){if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(e.filters[this._iOid].status){e.filters[this._iOid].stop();}}this._iStat=0;}return true;};CEffIE.fbSetStyle=function(s){var _r=_STNS,e;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){var ss=_r.foCss2Style(s),i;for(i in ss){try{e.style[i]=ss[i];}catch(e){}}}return true;};}} diff --git a/harbour/website/menu/steffrect.js b/harbour/website/menu/steffrect.js index a8b0450ba0..4562c15f03 100644 --- a/harbour/website/menu/steffrect.js +++ b/harbour/website/menu/steffrect.js @@ -4,4 +4,4 @@ Copyright 2008 by SourceTec Software Co.,LTD For more information, see:www.sothink.com ================================================================*/ -if(typeof _STNS!="undefined"&&_STNS.EFFECT&&!_STNS.EFFECT.CEffRect){with(_STNS.EFFECT){_STNS.EFFECT.CEffRect=_STNS.Class(_STNS.EFFECT.CEffect);CEffRect.register("EFFECT/CEffect>CEffRect");CEffRect.construct=function(as){this._tTid=0;this._bShow=0;this._iFms=12;this._iDt=50;this._iDx=0;this._iDy=0;this._iDsx=0;this._iDsy=0;this._iX=0;this._iY=0;this._iSX=-1;this._iSY=-1;this._iGid=-1;this._iCurWid=0;this._iCurHei=0;this.iDur=as[3];this._sBdStyle="solid";this._iBdWid=1;this._sBdClr="#999999";with(_STNS.EFFECT.CEffRect){this.fbSet=fbSet;this.fbDel=fbDel;this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSetStyle=fbSetStyle;this.fbShow=fbShow;this.fbHide=fbHide;}if(as[4]){this.fbSetStyle(as[4]);}};CEffRect.fbSet=function(){var _r=_STNS,e=_r.fdmGetEleById(this.sDmId,this.dmWin),n;if(!e){return false;}if(this._iGid==-1){n=_r.EFFECT.CEffRect._aGlobal.length;_r.EFFECT.CEffRect._aGlobal.push(this);this._iGid=n;}s="
"+"
";_STNS.fbInsHTML(this.dmWin.document.body,"afterBegin",s);this._iStat=0;return true;};CEffRect.fbDel=function(){this.fbStop();this._iStat=-1;_STNS.EFFECT.CEffRect._aGlobal[this._iGid]=null;return true;};CEffRect.fbApply=function(){var _r=_STNS,e=_r.fdmGetEleById(this.sDmId,this.dmWin);if(!e){return false;}this._iCurWid=_r.fiGetEleWid(e);this._iCurHei=_r.fiGetEleHei(e);this._iDt=Math.floor(this.iDur/this._iFms);this._iDx=Math.round(this._iCurWid/this._iFms);this._iDy=Math.round(this._iCurHei/this._iFms);e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);e.style.borderStyle=this._sBdStyle;e.style.borderWidth=this._iBdWid+"px";e.style.borderColor=this._sBdClr;if(!_r.EFFECT.CEffRect._aGlobal[this._iGid]){_r.EFFECT.CEffRect._aGlobal[this._iGid]=this;}this._iStat=1;return true;};CEffRect.fbPlay=function(){if(this._iStat!=1){return false;}if(this._bShow){this.fbShow();}else{this.fbHide();}this._iStat=2;return true;};CEffRect.fbStop=function(){if(this._iStat>0){clearTimeout(this._tTid);var e=_STNS.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);e.style.display="none";e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";if(this._bShow){e.style.visibility="visible";}else{e.style.visibility="hidden";}this._iStat=0;}return true;};CEffRect.fbSetStyle=function(s){var _r=_STNS,ss;ss=_r.foCss2Style(s);if(ss["visibility"]=="hidden"){this._bShow=0;}else{if(ss["visibility"]=="visible"){this._bShow=1;}}if(ss["left"]){this._iX=parseInt(ss["left"]);}if(ss["top"]){this._iY=parseInt(ss["top"]);}if(ss["borderStyle"]){this._sBdStyle=ss["borderStyle"];}if(ss["borderWidth"]){this._iBdWid=parseInt(ss["borderWidth"]);}if(ss["borderColor"]){this._sBdClr=ss["borderColor"];}if(ss["_stStartX"]){this._iSX=parseInt(ss["_stStartX"]);}else{this._iSX=this._iX+this._iCurWid/2;}if(ss["_stStartY"]){this._iSY=parseInt(ss["_stStartY"]);}else{this._iSY=this._iY+this._iCurHei/2;}this._iDsx=Math.floor((this._iSX-this._iX)/this._iFms);this._iDsy=Math.floor((this._iSY-this._iY)/this._iFms);};CEffRect._aGlobal=[];CEffRect.fbShow=function(t){var _r=_STNS,e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);if(!t){t=0;}if(t>=this._iFms){e.style.display="none";e=_r.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.visibility="visible";this._iStat=0;return true;}else{e.style.width=t*this._iDx+"px";e.style.height=t*this._iDy+"px";e.style.left=this._iSX-t*this._iDsx+"px";e.style.top=this._iSY-t*this._iDsy+"px";this._tTid=setTimeout("_STNS.EFFECT.CEffRect._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);}e.style.display="block";};CEffRect.fbHide=function(t){var _r=_STNS,e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);if(!t){_r.fdmGetEleById(this.sDmId,this.dmWin).style.visibility="hidden";t=0;}if(t>=this._iFms){e.style.display="none";this._iStat=0;return true;}else{e.style.width=Math.max(1,this._iCurWid-t*this._iDx)+"px";e.style.height=Math.max(1,this._iCurHei-t*this._iDy)+"px";e.style.left=this._iX+t*this._iDsx+"px";e.style.top=this._iY+t*this._iDsy+"px";this._tTid=setTimeout("_STNS.EFFECT.CEffRect._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);}e.style.display="block";};}} \ No newline at end of file +if(typeof _STNS!="undefined"&&_STNS.EFFECT&&!_STNS.EFFECT.CEffRect){with(_STNS.EFFECT){_STNS.EFFECT.CEffRect=_STNS.Class(_STNS.EFFECT.CEffect);CEffRect.register("EFFECT/CEffect>CEffRect");CEffRect.construct=function(as){this._tTid=0;this._bShow=0;this._iFms=12;this._iDt=50;this._iDx=0;this._iDy=0;this._iDsx=0;this._iDsy=0;this._iX=0;this._iY=0;this._iSX=-1;this._iSY=-1;this._iGid=-1;this._iCurWid=0;this._iCurHei=0;this.iDur=as[3];this._sBdStyle="solid";this._iBdWid=1;this._sBdClr="#999999";with(_STNS.EFFECT.CEffRect){this.fbSet=fbSet;this.fbDel=fbDel;this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSetStyle=fbSetStyle;this.fbShow=fbShow;this.fbHide=fbHide;}if(as[4]){this.fbSetStyle(as[4]);}};CEffRect.fbSet=function(){var _r=_STNS,e=_r.fdmGetEleById(this.sDmId,this.dmWin),n;if(!e){return false;}if(this._iGid==-1){n=_r.EFFECT.CEffRect._aGlobal.length;_r.EFFECT.CEffRect._aGlobal.push(this);this._iGid=n;}s="
"+"
";_STNS.fbInsHTML(this.dmWin.document.body,"afterBegin",s);this._iStat=0;return true;};CEffRect.fbDel=function(){this.fbStop();this._iStat=-1;_STNS.EFFECT.CEffRect._aGlobal[this._iGid]=null;return true;};CEffRect.fbApply=function(){var _r=_STNS,e=_r.fdmGetEleById(this.sDmId,this.dmWin);if(!e){return false;}this._iCurWid=_r.fiGetEleWid(e);this._iCurHei=_r.fiGetEleHei(e);this._iDt=Math.floor(this.iDur/this._iFms);this._iDx=Math.round(this._iCurWid/this._iFms);this._iDy=Math.round(this._iCurHei/this._iFms);e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);e.style.borderStyle=this._sBdStyle;e.style.borderWidth=this._iBdWid+"px";e.style.borderColor=this._sBdClr;if(!_r.EFFECT.CEffRect._aGlobal[this._iGid]){_r.EFFECT.CEffRect._aGlobal[this._iGid]=this;}this._iStat=1;return true;};CEffRect.fbPlay=function(){if(this._iStat!=1){return false;}if(this._bShow){this.fbShow();}else{this.fbHide();}this._iStat=2;return true;};CEffRect.fbStop=function(){if(this._iStat>0){clearTimeout(this._tTid);var e=_STNS.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);e.style.display="none";e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";if(this._bShow){e.style.visibility="visible";}else{e.style.visibility="hidden";}this._iStat=0;}return true;};CEffRect.fbSetStyle=function(s){var _r=_STNS,ss;ss=_r.foCss2Style(s);if(ss["visibility"]=="hidden"){this._bShow=0;}else{if(ss["visibility"]=="visible"){this._bShow=1;}}if(ss["left"]){this._iX=parseInt(ss["left"]);}if(ss["top"]){this._iY=parseInt(ss["top"]);}if(ss["borderStyle"]){this._sBdStyle=ss["borderStyle"];}if(ss["borderWidth"]){this._iBdWid=parseInt(ss["borderWidth"]);}if(ss["borderColor"]){this._sBdClr=ss["borderColor"];}if(ss["_stStartX"]){this._iSX=parseInt(ss["_stStartX"]);}else{this._iSX=this._iX+this._iCurWid/2;}if(ss["_stStartY"]){this._iSY=parseInt(ss["_stStartY"]);}else{this._iSY=this._iY+this._iCurHei/2;}this._iDsx=Math.floor((this._iSX-this._iX)/this._iFms);this._iDsy=Math.floor((this._iSY-this._iY)/this._iFms);};CEffRect._aGlobal=[];CEffRect.fbShow=function(t){var _r=_STNS,e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);if(!t){t=0;}if(t>=this._iFms){e.style.display="none";e=_r.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.visibility="visible";this._iStat=0;return true;}else{e.style.width=t*this._iDx+"px";e.style.height=t*this._iDy+"px";e.style.left=this._iSX-t*this._iDsx+"px";e.style.top=this._iSY-t*this._iDsy+"px";this._tTid=setTimeout("_STNS.EFFECT.CEffRect._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);}e.style.display="block";};CEffRect.fbHide=function(t){var _r=_STNS,e=_r.fdmGetEleById("stEffR_"+this._iGid,this.dmWin);if(!t){_r.fdmGetEleById(this.sDmId,this.dmWin).style.visibility="hidden";t=0;}if(t>=this._iFms){e.style.display="none";this._iStat=0;return true;}else{e.style.width=Math.max(1,this._iCurWid-t*this._iDx)+"px";e.style.height=Math.max(1,this._iCurHei-t*this._iDy)+"px";e.style.left=this._iX+t*this._iDsx+"px";e.style.top=this._iY+t*this._iDsy+"px";this._tTid=setTimeout("_STNS.EFFECT.CEffRect._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);}e.style.display="block";};}} diff --git a/harbour/website/menu/steffslip.js b/harbour/website/menu/steffslip.js index 53f37d5b4e..ef6227652d 100644 --- a/harbour/website/menu/steffslip.js +++ b/harbour/website/menu/steffslip.js @@ -4,4 +4,4 @@ Copyright 2008 by SourceTec Software Co.,LTD For more information, see:www.sothink.com ================================================================*/ -if(typeof _STNS!="undefined"&&_STNS.EFFECT&&!_STNS.EFFECT.CEffSlip){with(_STNS.EFFECT){_STNS.EFFECT.CEffSlip=_STNS.Class(_STNS.EFFECT.CEffect);CEffSlip.register("EFFECT/CEffect>CEffSlip");CEffSlip.construct=function(as){this._tTid=0;this._iX=0;this._iY=0;this._iCurWid=0;this._iCurHei=0;this._bShow=0;this._iGid=-1;this._iFms=12;this._iDt=50;this._iDx=0;this._iDy=0;this.iDir=4;this.iDur=as[3];with(_STNS.EFFECT.CEffSlip){this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSet=fbSet;this.fbSetStyle=fbSetStyle;this.fbShow=fbShow;this.fbHide=fbHide;this.faParse=faParse;}if(as[4]){this.fbSetStyle(as[4]);}};CEffSlip.fbSet=function(){var _r=_STNS,e,n;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(e.style.position!="absolute"){return false;}if(this._iGid==-1){n=_r.EFFECT.CEffSlip._aGlobal.length;_r.EFFECT.CEffSlip._aGlobal.push(this);this._iGid=n;}this._iStat=0;return true;}return false;};CEffSlip.fbDel=function(){this.fbStop();if(this._iGid!=-1){_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;}this._iStat=-1;return true;};CEffSlip.fbApply=function(){var _r=_STNS;if(!_r.EFFECT.CEffSlip._aGlobal[this._iGid]){_r.EFFECT.CEffSlip._aGlobal[this._iGid]=this;}if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){this._iCurWid=_r.fiGetEleWid(e);this._iCurHei=_r.fiGetEleHei(e);this._iDt=Math.ceil(this.iDur/this._iFms);this._iDx=Math.floor(this._iCurWid/this._iFms);this._iDy=Math.floor(this._iCurHei/this._iFms);}this._iStat=1;return true;};CEffSlip.fbPlay=function(){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!this._bShow){if(!e.style.clip||e.style.clip.indexOf("auto")!=-1){e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";}this.fbHide();}else{if(!e.style.clip||e.style.clip.indexOf("auto")!=-1){e.style.clip="rect("+this._iCurHei+"px 0px 0px "+this._iCurWid+"px)";}this.fbShow();}this._iStat=2;return true;};CEffSlip._aGlobal=[];CEffSlip.fbStop=function(){if(this._iStat>0){clearTimeout(this._tTid);var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";if(this._bShow){e.style.visibility="visible";}else{e.style.visibility="hidden";}this._iStat=0;}return true;};CEffSlip.fbSetStyle=function(s){var _r=_STNS,ss;ss=_r.foCss2Style(s);if(ss["visibility"]=="hidden"){this._bShow=0;}else{if(ss["visibility"]=="visible"){this._bShow=1;}}if(ss["left"]){this._iX=parseInt(ss["left"]);}if(ss["top"]){this._iY=parseInt(ss["top"]);}if(ss["_stDirection"]){this.iDir=parseInt(ss["_stDirection"]);}};CEffSlip.fbShow=function(t){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!t){var cc=this.faParse(e.style.clip);switch(this.iDir){case 1:t=Math.floor(cc[1]/this._iDx);e.style.top=this._iY+"px";break;case 2:t=Math.floor((this._iCurWid-cc[3])/this._iDx);e.style.top=this._iY+"px";break;case 3:t=Math.floor(cc[2]/this._iDy);e.style.left=this._iX+"px";break;case 4:t=Math.floor((this._iCurHei-cc[0])/this._iDy);e.style.left=this._iX+"px";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);return true;}if(t>=this._iFms){e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;this._iStat=0;return true;}else{switch(this.iDir){case 1:e.style.left=(this._iX+this._iCurWid-t*this._iDx)+"px";e.style.clip="rect(0px "+t*this._iDx+"px "+this._iCurHei+"px 0px)";break;case 2:e.style.left=(this._iX-this._iCurWid+t*this._iDx)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px "+(this._iCurWid-t*this._iDx)+"px)";break;case 3:e.style.top=(this._iY+this._iCurHei-t*this._iDy)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+t*this._iDy+"px 0px)";break;case 4:e.style.top=(this._iY-this._iCurHei+t*this._iDy)+"px";e.style.clip="rect("+(this._iCurHei-t*this._iDy)+"px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";break;}e.style.visibility="visible";}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);return true;};CEffSlip.fbHide=function(t){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!t){var cc=this.faParse(e.style.clip);switch(this.iDir){case 1:t=Math.floor((this._iCurWid-cc[1])/this._iDx);e.style.top=this._iY+"px";break;case 2:t=Math.floor(cc[3]/this._iDx);e.style.top=this._iY+"px";break;case 3:t=Math.floor((this._iCurHei-cc[2])/this._iDy);e.style.left=this._iX+"px";break;case 4:t=Math.floor(cc[0]/this._iDy);e.style.left=this._iX+"px";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);e.style.visibility="visible";return true;}if(t>=this._iFms){e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";e.style.visibility="hidden";_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;this._iStat=0;return true;}else{switch(this.iDir){case 1:e.style.left=(this._iX+t*this._iDx)+"px";e.style.clip="rect(0px "+(this._iCurWid-t*this._iDx)+"px "+this._iCurHei+"px 0px)";break;case 2:e.style.left=(this._iX-t*this._iDx)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px "+t*this._iDx+"px)";break;case 3:e.style.top=(this._iY+t*this._iDy)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+(this._iCurHei-t*this._iDy)+"px 0px)";break;case 4:e.style.top=(this._iY-t*this._iDy)+"px";e.style.clip="rect("+t*this._iDy+"px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);}return true;};CEffSlip.faParse=function(s){var t=s.split(" ");t[0]=parseInt(t[0].substr(5));for(var j=1;jCEffSlip");CEffSlip.construct=function(as){this._tTid=0;this._iX=0;this._iY=0;this._iCurWid=0;this._iCurHei=0;this._bShow=0;this._iGid=-1;this._iFms=12;this._iDt=50;this._iDx=0;this._iDy=0;this.iDir=4;this.iDur=as[3];with(_STNS.EFFECT.CEffSlip){this.fbApply=fbApply;this.fbPlay=fbPlay;this.fbStop=fbStop;this.fbSet=fbSet;this.fbSetStyle=fbSetStyle;this.fbShow=fbShow;this.fbHide=fbHide;this.faParse=faParse;}if(as[4]){this.fbSetStyle(as[4]);}};CEffSlip.fbSet=function(){var _r=_STNS,e,n;if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){if(e.style.position!="absolute"){return false;}if(this._iGid==-1){n=_r.EFFECT.CEffSlip._aGlobal.length;_r.EFFECT.CEffSlip._aGlobal.push(this);this._iGid=n;}this._iStat=0;return true;}return false;};CEffSlip.fbDel=function(){this.fbStop();if(this._iGid!=-1){_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;}this._iStat=-1;return true;};CEffSlip.fbApply=function(){var _r=_STNS;if(!_r.EFFECT.CEffSlip._aGlobal[this._iGid]){_r.EFFECT.CEffSlip._aGlobal[this._iGid]=this;}if(e=_r.fdmGetEleById(this.sDmId,this.dmWin)){this._iCurWid=_r.fiGetEleWid(e);this._iCurHei=_r.fiGetEleHei(e);this._iDt=Math.ceil(this.iDur/this._iFms);this._iDx=Math.floor(this._iCurWid/this._iFms);this._iDy=Math.floor(this._iCurHei/this._iFms);}this._iStat=1;return true;};CEffSlip.fbPlay=function(){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!this._bShow){if(!e.style.clip||e.style.clip.indexOf("auto")!=-1){e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";}this.fbHide();}else{if(!e.style.clip||e.style.clip.indexOf("auto")!=-1){e.style.clip="rect("+this._iCurHei+"px 0px 0px "+this._iCurWid+"px)";}this.fbShow();}this._iStat=2;return true;};CEffSlip._aGlobal=[];CEffSlip.fbStop=function(){if(this._iStat>0){clearTimeout(this._tTid);var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";if(this._bShow){e.style.visibility="visible";}else{e.style.visibility="hidden";}this._iStat=0;}return true;};CEffSlip.fbSetStyle=function(s){var _r=_STNS,ss;ss=_r.foCss2Style(s);if(ss["visibility"]=="hidden"){this._bShow=0;}else{if(ss["visibility"]=="visible"){this._bShow=1;}}if(ss["left"]){this._iX=parseInt(ss["left"]);}if(ss["top"]){this._iY=parseInt(ss["top"]);}if(ss["_stDirection"]){this.iDir=parseInt(ss["_stDirection"]);}};CEffSlip.fbShow=function(t){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!t){var cc=this.faParse(e.style.clip);switch(this.iDir){case 1:t=Math.floor(cc[1]/this._iDx);e.style.top=this._iY+"px";break;case 2:t=Math.floor((this._iCurWid-cc[3])/this._iDx);e.style.top=this._iY+"px";break;case 3:t=Math.floor(cc[2]/this._iDy);e.style.left=this._iX+"px";break;case 4:t=Math.floor((this._iCurHei-cc[0])/this._iDy);e.style.left=this._iX+"px";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);return true;}if(t>=this._iFms){e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;this._iStat=0;return true;}else{switch(this.iDir){case 1:e.style.left=(this._iX+this._iCurWid-t*this._iDx)+"px";e.style.clip="rect(0px "+t*this._iDx+"px "+this._iCurHei+"px 0px)";break;case 2:e.style.left=(this._iX-this._iCurWid+t*this._iDx)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px "+(this._iCurWid-t*this._iDx)+"px)";break;case 3:e.style.top=(this._iY+this._iCurHei-t*this._iDy)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+t*this._iDy+"px 0px)";break;case 4:e.style.top=(this._iY-this._iCurHei+t*this._iDy)+"px";e.style.clip="rect("+(this._iCurHei-t*this._iDy)+"px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";break;}e.style.visibility="visible";}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbShow("+(++t)+")",this._iDt);return true;};CEffSlip.fbHide=function(t){var e=_STNS.fdmGetEleById(this.sDmId,this.dmWin);if(!t){var cc=this.faParse(e.style.clip);switch(this.iDir){case 1:t=Math.floor((this._iCurWid-cc[1])/this._iDx);e.style.top=this._iY+"px";break;case 2:t=Math.floor(cc[3]/this._iDx);e.style.top=this._iY+"px";break;case 3:t=Math.floor((this._iCurHei-cc[2])/this._iDy);e.style.left=this._iX+"px";break;case 4:t=Math.floor(cc[0]/this._iDy);e.style.left=this._iX+"px";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);e.style.visibility="visible";return true;}if(t>=this._iFms){e.style.left=this._iX+"px";e.style.top=this._iY+"px";e.style.clip="rect(auto auto auto auto)";e.style.visibility="hidden";_STNS.EFFECT.CEffSlip._aGlobal[this._iGid]=null;this._iStat=0;return true;}else{switch(this.iDir){case 1:e.style.left=(this._iX+t*this._iDx)+"px";e.style.clip="rect(0px "+(this._iCurWid-t*this._iDx)+"px "+this._iCurHei+"px 0px)";break;case 2:e.style.left=(this._iX-t*this._iDx)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+this._iCurHei+"px "+t*this._iDx+"px)";break;case 3:e.style.top=(this._iY+t*this._iDy)+"px";e.style.clip="rect(0px "+this._iCurWid+"px "+(this._iCurHei-t*this._iDy)+"px 0px)";break;case 4:e.style.top=(this._iY-t*this._iDy)+"px";e.style.clip="rect("+t*this._iDy+"px "+this._iCurWid+"px "+this._iCurHei+"px 0px)";break;}this._tTid=setTimeout("_STNS.EFFECT.CEffSlip._aGlobal["+this._iGid+"].fbHide("+(++t)+")",this._iDt);}return true;};CEffSlip.faParse=function(s){var t=s.split(" ");t[0]=parseInt(t[0].substr(5));for(var j=1;j3?arguments[3]:0,ht=arguments.length>4?arguments[4]:0;stm_ai(l,(a.length?a.concat(i.args.slice(a.length)):i.args),wd,ht)} -function stm_ep(){var m=st_cm,p=st_cp;st_ci=p.parI;if(st_ci) st_cp=st_ci.parP;else st_cp=0; if(!p.is.length){var i=p.parI;if(m.rtl){i.ico=["",""];i.icoW=0;i.icoH=0;i.icoB=0;}else{i.arr=["",""];i.arrW=0;i.arrH=0;i.arrB=0;} i.subP=0;m.ps.pop();} } -function stm_sc(n,a){if(!STM_SCROLL)return; var m=st_cm,e;for(var j=1;j=4){if(v<5||p=="mac")STM_SCROLL=0;t=0;}else if(n=="opera"&&v>=7||n=="safari"&&v>=1){if(n!="opera"||v<9)STM_SCROLL=0;STM_FILTER=0;t=1;}else if(n=="konqueror"&&v>=3){STM_FILTER=0;STM_SLIP=0;STM_SCROLL=0;t=1;}else if(n=="gecko"&&v>=20020529){STM_FILTER=0;if(v<20040804)STM_SCROLL=0;t=1;}else t=4;return {os:p,nam:n,ver:v,typ:t}} -function stckpg(){if(!st_ck.length) return;for(var j=0;j"} -function stCreate(){var m=st_cm,d=document;if(m.eslip)steslip();if(m.ieff)stflt();var f=(st_funs&2)||(st_funs&4);switch(st_nav.typ){case 0:if(!(st_funs&2)){d.write(stgJs(m.jsP+"stie.js"));st_funs|=2;}break;case 1:if(!(st_funs&4)){d.write(stgJs(m.jsP+"stdom.js"));st_funs|=4;}}if((st_funs&512)&&f) stshow();else {d.write(stgJs(m.jsP+"stinit.js")); st_funs|=512;}} -function stDtB(a){var b=0;for(var j=0;j/g;s=s.replace(re,">");re=/\r\n/g;s=s.replace(re,"
");re=/\"/g;s=s.replace(re,""");return s;} -function stabs(s){var t=s.toLowerCase();return t=="@"||!t||!t.indexOf("#")||!t.indexOf("?")||t.indexOf(":")==1&&t.charCodeAt()>="a"&&t.charCodeAt()<="z"||!t.indexOf("http:")||!t.indexOf("https:")||!t.indexOf("file:")||!t.indexOf("ftp:")||!t.indexOf("/")||!t.indexOf("javascript:")||!t.indexOf("mailto:")||!t.indexOf("about:")||!t.indexOf("gopher:")||!t.indexOf("news:")||!t.indexOf("telnet:")||!t.indexOf("wais:")||!t.indexOf("rtsp:")||!t.indexOf("mms:");} -function stbuf(s){if(s&&STM_BIMG){for(var j=0;j=0;j--)s+=n[j]+".";if(m.sfrn) s+=m.sfrn+".";else s+="parent.";m.sfrp=s;return s;} -function sthl(){if(typeof(stisL)=="undefined") return;for(var k=0;k=0;l--){ i=is[l]; if(!i.ishl||mck){ex=i.pid?stckL(i,w):stckL(i);if(m.lits&0x01000000){ if(ex){i._anchor.href="#";i._anchor.target="_self";i._layer.style.cursor=!m.cur[0].indexOf("url(")&&!st_nav.typ&&st_nav.ver<6||m.cur[0]=="hand"&&st_nav.typ==1&&st_nav.nam!="opera"?"":m.cur[0];} i.blnk=i.lnk;i.lnk="@";} f=1;}else{do{if(typeof ii[i.pid]=="undefined")ii[i.pid]=[];ii[i.pid][i.id]=1;i=i.parP.parI; }while(i&&(m.lits&0x04000000));continue;}pp=[];t=0;do{ if(m.lits&0x08000000)pp.push(i.parP);if(!t||m.lits&0x04000000){ if(ex&&!i.isOv){var los=i.lock;i.lock=0;stcIt(i,li);i.lock=los;}i.stat=i.oust=li;i.ishl=1; if(typeof ii[i.pid]=="undefined")ii[i.pid]=[];ii[i.pid][i.id]=1;}t=1;i=i.parP.parI; if(!i)break;ex=i.pid?stckL(i,w):stckL(i);}while(m.lits&0x04000000||m.lits&0x08000000);if(m.lits&0x10000000)sn=Math.max(pp.length-m.litl,0);for(var q=pp.length-1;q>=sn;q--){ clearTimeout(pp[q].tid);if(!pp[q].isSh){var los=pp[q].lock;pp[q].lock=0;stshP(pp[q]);pp[q].lock=los;}ip[pp[q].id]=1;}}}}if(f)for(var j=0;j0?rc[0]+p.scxs:rc[0]-p.scxs,y=dy>0?rc[1]+p.scys:rc[1]-p.scys;stmvto([x,y],p)}}} -function stgsp(sp,d){var i=0,s=5;if(d0)s=s.replace("/./","/");while((t=s.indexOf("/../"))>0){var p1,p2;p1=s.substr(0,t);p2=s.substr(t).replace("/../","");p1=p1.substr(0,p1.lastIndexOf("/")+1);s=p1+p2;}return s;} -function stStyle(){var s="";} -function stgCss(t,f,c){var s="";if(!f){if(stCSS[t]) s=" class='stc"+t+"'";if(c) s+=" style=\""+c+"\"";}else{if(!c&&stCSS[t])s=" style='"+stCSS[t]+"'";else if(stCSS[t]){s=" style=\"";var a=ststo(c),b=ststo(stCSS[t]);for(var i in b) if(typeof a[i]=="undefined") a[i]=b[i];s+=stots(a);s+="\"";}}return s;} -function ststo(s){var o={},a,re=/\s*([\w\-_]+)\s*:\s*([:\w#%\- .\"\',\(\)\-\/\\=\|]+)\s*(;|$)/,ra;a=s.split(";"); for(var i=0;i=5)&&i<24&&i>=0?"revealTrans(Transition="+i+",Duration="+((110-s)/100)+")":"":f;} - -function copyright_year() { - document.write( new Date().getFullYear() ); -} +/*=======Ver: 7.0.60906========*/ +/*DHTMLMenu, (c) 2006, SourceTec Software Co.,LTD - www.sothink.com*/ +if(typeof st_js=="undefined") +{ + STM_FILTER=1; + STM_SCROLL=1; + STM_SLIP=1; + STM_RTL=0; + STM_AHCM=0; + STM_SMSC=1; + STM_BIMG=1; + STM_ILOC=0; + STM_ILINK=0; + stHAL=["left","center","right"]; + stVAL=["top","middle","bottom"]; + stREP=["no-repeat","repeat-x","repeat-y","repeat"]; + stBDS=["none","solid","double","dotted","dashed","groove","ridge","outset","inset"]; + stENTS=["onmouseover","onmouseout","onclick","onmousedown","onmouseup","onfocus","onblur","onkeydown","onkeyup"]; + st_ld=[]; + st_lded=0; + st_ck=[]; + st_ms=[]; + st_imgs=[]; + st_funs=0; + st_path=stgfd(location.href); + st_nav=stnav(); + st_cm=st_cp=st_ci= st_tid=0; + + if(!Array.prototype.push)Array.prototype.push=function(){var l=this.length;for(var i=0;i3?arguments[3]:0,ht=arguments.length>4?arguments[4]:0;stm_ai(l,(a.length?a.concat(i.args.slice(a.length)):i.args),wd,ht)} +function stm_ep(){var m=st_cm,p=st_cp;st_ci=p.parI;if(st_ci) st_cp=st_ci.parP;else st_cp=0; if(!p.is.length){var i=p.parI;if(m.rtl){i.ico=["",""];i.icoW=0;i.icoH=0;i.icoB=0;}else{i.arr=["",""];i.arrW=0;i.arrH=0;i.arrB=0;} i.subP=0;m.ps.pop();} } +function stm_sc(n,a){if(!STM_SCROLL)return; var m=st_cm,e;for(var j=1;j=4){if(v<5||p=="mac")STM_SCROLL=0;t=0;}else if(n=="opera"&&v>=7||n=="safari"&&v>=1){if(n!="opera"||v<9)STM_SCROLL=0;STM_FILTER=0;t=1;}else if(n=="konqueror"&&v>=3){STM_FILTER=0;STM_SLIP=0;STM_SCROLL=0;t=1;}else if(n=="gecko"&&v>=20020529){STM_FILTER=0;if(v<20040804)STM_SCROLL=0;t=1;}else t=4;return {os:p,nam:n,ver:v,typ:t}} +function stckpg(){if(!st_ck.length) return;for(var j=0;j"} +function stCreate(){var m=st_cm,d=document;if(m.eslip)steslip();if(m.ieff)stflt();var f=(st_funs&2)||(st_funs&4);switch(st_nav.typ){case 0:if(!(st_funs&2)){d.write(stgJs(m.jsP+"stie.js"));st_funs|=2;}break;case 1:if(!(st_funs&4)){d.write(stgJs(m.jsP+"stdom.js"));st_funs|=4;}}if((st_funs&512)&&f) stshow();else {d.write(stgJs(m.jsP+"stinit.js")); st_funs|=512;}} +function stDtB(a){var b=0;for(var j=0;j/g;s=s.replace(re,">");re=/\r\n/g;s=s.replace(re,"
");re=/\"/g;s=s.replace(re,""");return s;} +function stabs(s){var t=s.toLowerCase();return t=="@"||!t||!t.indexOf("#")||!t.indexOf("?")||t.indexOf(":")==1&&t.charCodeAt()>="a"&&t.charCodeAt()<="z"||!t.indexOf("http:")||!t.indexOf("https:")||!t.indexOf("file:")||!t.indexOf("ftp:")||!t.indexOf("/")||!t.indexOf("javascript:")||!t.indexOf("mailto:")||!t.indexOf("about:")||!t.indexOf("gopher:")||!t.indexOf("news:")||!t.indexOf("telnet:")||!t.indexOf("wais:")||!t.indexOf("rtsp:")||!t.indexOf("mms:");} +function stbuf(s){if(s&&STM_BIMG){for(var j=0;j=0;j--)s+=n[j]+".";if(m.sfrn) s+=m.sfrn+".";else s+="parent.";m.sfrp=s;return s;} +function sthl(){if(typeof(stisL)=="undefined") return;for(var k=0;k=0;l--){ i=is[l]; if(!i.ishl||mck){ex=i.pid?stckL(i,w):stckL(i);if(m.lits&0x01000000){ if(ex){i._anchor.href="#";i._anchor.target="_self";i._layer.style.cursor=!m.cur[0].indexOf("url(")&&!st_nav.typ&&st_nav.ver<6||m.cur[0]=="hand"&&st_nav.typ==1&&st_nav.nam!="opera"?"":m.cur[0];} i.blnk=i.lnk;i.lnk="@";} f=1;}else{do{if(typeof ii[i.pid]=="undefined")ii[i.pid]=[];ii[i.pid][i.id]=1;i=i.parP.parI; }while(i&&(m.lits&0x04000000));continue;}pp=[];t=0;do{ if(m.lits&0x08000000)pp.push(i.parP);if(!t||m.lits&0x04000000){ if(ex&&!i.isOv){var los=i.lock;i.lock=0;stcIt(i,li);i.lock=los;}i.stat=i.oust=li;i.ishl=1; if(typeof ii[i.pid]=="undefined")ii[i.pid]=[];ii[i.pid][i.id]=1;}t=1;i=i.parP.parI; if(!i)break;ex=i.pid?stckL(i,w):stckL(i);}while(m.lits&0x04000000||m.lits&0x08000000);if(m.lits&0x10000000)sn=Math.max(pp.length-m.litl,0);for(var q=pp.length-1;q>=sn;q--){ clearTimeout(pp[q].tid);if(!pp[q].isSh){var los=pp[q].lock;pp[q].lock=0;stshP(pp[q]);pp[q].lock=los;}ip[pp[q].id]=1;}}}}if(f)for(var j=0;j0?rc[0]+p.scxs:rc[0]-p.scxs,y=dy>0?rc[1]+p.scys:rc[1]-p.scys;stmvto([x,y],p)}}} +function stgsp(sp,d){var i=0,s=5;if(d0)s=s.replace("/./","/");while((t=s.indexOf("/../"))>0){var p1,p2;p1=s.substr(0,t);p2=s.substr(t).replace("/../","");p1=p1.substr(0,p1.lastIndexOf("/")+1);s=p1+p2;}return s;} +function stStyle(){var s="";} +function stgCss(t,f,c){var s="";if(!f){if(stCSS[t]) s=" class='stc"+t+"'";if(c) s+=" style=\""+c+"\"";}else{if(!c&&stCSS[t])s=" style='"+stCSS[t]+"'";else if(stCSS[t]){s=" style=\"";var a=ststo(c),b=ststo(stCSS[t]);for(var i in b) if(typeof a[i]=="undefined") a[i]=b[i];s+=stots(a);s+="\"";}}return s;} +function ststo(s){var o={},a,re=/\s*([\w\-_]+)\s*:\s*([:\w#%\- .\"\',\(\)\-\/\\=\|]+)\s*(;|$)/,ra;a=s.split(";"); for(var i=0;i=5)&&i<24&&i>=0?"revealTrans(Transition="+i+",Duration="+((110-s)/100)+")":"":f;} + +function copyright_year() { + document.write( new Date().getFullYear() ); +} diff --git a/harbour/website/news.html b/harbour/website/news.html index 297e969ffd..8eb25f290c 100644 --- a/harbour/website/news.html +++ b/harbour/website/news.html @@ -1,1127 +1,1127 @@ - - - - -Harbour Project - News - - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Harbour News 
 This page gives you some of the main changes introduced in recent versions of Harbour project. To view the latest ChangeLog click here or download lastest stable release of Harbour here. 

 
 Harbour Mailing Lists address change -
    -
  • June 3, 2010
    -
    -
    Thanking Phil Barnett for providing the Harbour community a great mailing list - for so many years, today, due to server problems, I've migrated the mailing - lists to Google Groups in agreement with Phil and Harbour admins.
    -
    -Please make sure to revise your subscription settings, because digest, nomail -options and readable name were lost along the migration.
  • -
 
   

 
 Release of 2.0.0 -
    -
  • December 22, 2009
    -
    -
    After 16 months of intensive development the final version 2.0.0 is finally released. There are many highlights and news in this new release, check out some details and download your copy free today.
    -
    -
    General
  • -
  • Build configuration changes:
    -    PRG_USR         -> HB_USER_PRGFLAGS
    -    C_USR           -> HB_USER_CFLAGS
    -    L_USR           -> HB_USER_LDFLAGS
    -    A_USR           -> HB_USER_AFLAGS
    -    MK_USR          -> HB_USER_MAKEFLAGS
    -    HB_ARCHITECTURE -> HB_PLATFORM
    -    HB_PLATFORM=w32 -> HB_PLATFORM=win
    -    CCPATH          -> HB_CCPREFIX
    -    CCPREFIX        -> HB_CCPATH
  • -
  • GNU-make system revised to give optimal support -j<n> multi-threaded parallel builds, which can dramatically - increase build speed in multi-core/multi-CPU systems.
  • -
  • Some constants renamed: -
    - -   HB_WINCE          -> HB_OS_WIN_CE
    -   HB_OS_WIN_32_USED -> HB_OS_WIN_USED
    -   HB_OS_WIN_32      -> HB_OS_WIN
  • -
  • Cleaned references of '32' in context of Windows and - Windows API.
  • -
  • New macro names introduced:
    -   SUCCESS -> HB_SUCCESS
    -   FAILURE -> HB_FAILURE
    -   ERRCODE -> HB_ERRCODE
    - (old ones still work for compatibility, but please - switch your code to use the new ones)
  • -
  • Fixed dynamic library creation on Solaris OSes.
  • -
  • hbrun will now open .dbf files when passed on the command line.
    -
  • -
  • Added web-server written in Harbour: uHTTPD
    -
  • -
  • POCC WinCE builds are now supported.
    -
  • -
  • Open Watcom 1.8 (RC3) compiler is now supported.
    -
  • -
  • Removed HB_LEGACY_LEVEL support.
    -
  • -
  • #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
    -
  • -
  • Protected incompatible changes with HB_LEGACY_LEVEL2.
    -       HB_SUCCESS
    -      HB_FAILURE
    -      HB_ERRCODE
    -      HB_WINCE
    -      HB_OS_WIN_32*
    -      __RDDGETTEMPALIAS()
    -      __HRB*()
    -      some class functions, -
    -      Harbour -go option
    -
    - These features are still available, and will be removed - in next major version (Harbour 1.2). To test your code for - compatibility, you can turn it off manually by #defining - HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)
    -
    -
  • -
  • New Harbour Project homepage, thanks for Vailton Renato.
    -
  • -
  • GNU Make system now supports parallel builds. - (needs GNU Make newer than 3.79.1)
    -
  • -
  • GNU Make system allows to install in Harbour source tree on all platforms.
    -
  • -
  • GNU Make system for bcc and msvc options synced with non-GNU build methods.
    -
  • -
  • GNU Make system no longer needs -r parameter.
    -
  • -
  • GNU Make system will now generate hbfm and hbfmmt lib for all compilers. - Added few more similar unification cleanups.
    -
  • -
  • Implemented .dll generation for msvc, msvc64, bcc and watcom when using - GNU Make system.
    -
  • -
  • Added support for Open Watcom 1.8 (it's recommended over 1.7).
    -
  • -
  • Added support for import lib generation when using GNU Make with msvc and vcc. - Enable it with 'set HB_DIR_IMPLIB=yes' plus set HB_DIR_* envvars.
    -
  • -
  • -mtune=pentiumpro optimization is now default for mingw/cygwin.
    -
  • -
  • Cleaned new mingw 4.3.3 warnings.
    -
  • -
  • Certain features will require Windows NT or upper when building Harbour on Windows, so this is now a requirement for a proper build.
    -
  • -
  • hb-mkslib.sh renamed to hb-mkdyn.sh. Old name stil works, but it's - now deprecated.
    -
  • -
  • x64 msvc compiler got a distinct HB_COMPILER value: msvc64.
    -
  • -
  • msvcce compiler made compatible with older MSVC/WinCE versions.
    -
  • -
  • Added support for Intel(R) C++ compiler (icc) on Linux and Windows.
    -
  • -
  • Added new INSTALL document giving a quick describing of the build - process on all supported platforms and compilers.
    -
  • -
  • Several steps to make the build process simpler and requiring the - less amount of preparation.
    -
  • -
  • Fixed missing watcom support for HB_USER_LDFLAGS.
    -
  • -
  • Added support for MSVC IA64 mode. (untested)
    -
  • -
  • Added support for HB_CONTRIBLIBS=no to disable building of all contribs.
    -
  • -
  • Added ability to generate Windows installer and .zip distribution file.
    -
  • -
  • Fully transitioned to GNU Make system for all compilers.
    - Now msvc, msvcce and bcc builds need GNU Make, see INSTALL for more - information. "non-GNU" make systems got deleted from the source tree.
  • -
  • Cygwin renamed from gcc to cygwin. (NOTE: Cygwin doesn't work since - some versions, and support may be removed in the future.)
    -
  • -
  • Fixed #pragma -k? options to be case-insensitive.
    -
  • -
  • Explicitly bind system libraries with harbour shared library. - RPM/DEB packages should automatically detect these dependencies.
    -
  • -
  • Warning cleanup (minors) for Intel compiler.
    -
  • -
  • Pelles C workarounds for compiler bugs.
    -
  • -
  • Added support for extended definition files in Harbour compiler - switches: -u+<file>
    -
  • -
  • Fixed memory leak when repeated -u[<file>] options are used.
  • -
-
-Core
-
    -
  • Added MT (Multi thread) support.
    -
  • -
  • Added complete i18n support with API and tool to compile .po - files (hbi18n).
    -
  • -
  • Added hb_fsCreateTempEx(), hb_fileCreateTempEx() C level APIs.
    -
  • -
  • Fixed to not use C RTL CP dependent character functions - in Harbour code. (islower(), toupper(), etc) added new macros instead.
    -
  • -
  • __NATISNEGATIVE() and __NATISAFFIRM() are now using - CP sensitive case conversion.
    -
  • -
  • Added hb_charIsUpper()/hb_charIsLower() APIs.
    -
  • -
  • CURDRIVE() and DISKNAME() fixed for systems that don't support - drive letters.
    -
  • -
  • Xbase++ compatible TBROWSE()/TBCOLUMN()/GET() related methods - moved to derived classes xpp_TBrowse()/xpp_TBColumn()/xpp_Get().
    -
  • -
  • Fixed potential GPF in HB_RASCAN().
    -
  • -
  • Debugger improvements and fixes.
    -
  • -
  • Most Harbour level code prepared for MT.
    -
  • -
  • Fixed few potential GPFs in RDDNTX, RDDCDX code.
    -
  • -
  • Added own hb_snprintf() implementation.
    -
  • -
  • Fixed HB_VERSION( HB_VERSION_BUILD_DATE )
    -
  • -
  • Added hbuddall library holding all core supplied user RDDs.
    -
  • -
  • Fixed to successfully build all user RDD examples.
    -
  • -
  • Fixed dbCreate() behaviour in arrayrdd user RDD.
    -
  • -
  • Added new LOGRDD user RDD.
    -
  • -
  • Added DBFNSX RDD.
    -
  • -
  • Fixed FWRITE() potential GPF and security hole.
    -
  • -
  • Added __FILE__ support for .prg code.
    -
  • -
  • Added:
    -      HB_MILLISECONDS()
    -      HB_FTEMPCREATEEX( @<cName>, <cDir>, <cPrefix>, <cExt> ) -> <nHandle>
    -      HB_STRDECODESCAPE( <cEscSeqStr> ) -> <cStr>
    -      HB_STRCDECODE( <cStr> [, @<lCont> ] ) -> <cResult> | NIL
    -      HB_STRXOR( <cStr1>, <cStr2> | <nNum> ) -> <cResult>
    -      HB_PROGNAME() -> <cProgramNameWithPath>
    -      HB_DISPOUTATBOX() similar to HB_DISPOUTAT() but for drawing chars.
    -      HB_FGETATTR( <cFileName>, @<nAttr> ) -> <lSuccess>
    -      HB_FSETATTR( <cFileName>, <nAttr> ) -> <lSuccess>
    -      HB_FSETDATETIME( <cFileName>, [<dDate>], [<cTime HH:MM:SS>], [<nMilliSec>] ) -> <lSuccess>
    -      HB_FGETDATETIME()
    -      HB_WILDMATCHI() like HB_WILDMATCH() but case-insentitive.
    -      HB_CDPSELECT() same as HB_SETCODEPAGE() (please upgrade to new function name).
    -      HB_CDPUNIID( <cHarbourCP> ) -> <cCPName>
    -      HB_GTINFO( HB_GTI_CARGO[, <xValue ] ) -> <xPrevValue>
    -      HB_DIRBASE() -> <cBaseDirectory>
    -      HB_DBCREATETEMP()/DBCREATETEMP() to create temporary tables.
    -      HB_MMIDDLEDOWN/MMIDDLEDOWN() new Harbour function.
    -      DBINFO( DBI_ISTEMPORARY )
    -      HB_VERSION( HB_VERSION_BUILD_PLAT )
    -      HB_VERSION( HB_VERSION_BUILD_COMP )
    -      HB_STRFORMAT() C-like string formatting function - (also as C level API named hb_StrFormat())
    -      HB_SETENV( <cEnvName>, [<cNewVal>] [, <lOsCP>] ) -> <lOK> (also as C level API named hb_setenv())
    -
    -
  • -
  • Fixed UNSELECTED color updating in SetColor().
    -
  • -
  • GTWVT, GTWIN HB_GTI_CODEPAGE support.
    -
  • -
  • GTWVT now supports drawing chars even if the selected codepage - doesn't support them.
    -
  • -
  • GTWVT HB_GTI_BOXCP support.
    -
  • -
  • GTWVT disabled K_MM*DOWN non-Clipper (and other GT) compatible mouse - events.
    -
  • -
  • Fixed TBROWSE(), TPOPUP() to display drawing chars properly.
    -
  • -
  • Fixed DISKSPACE() and HB_DISKSPACE() to return proper values - on Darwin.
    -
  • -
  • Fixed DIRECTORY() when called with "V" (label) parameter (on Windows).
    -
  • -
  • New HB_SIZEOFARRAY() macro.
    -
  • -
  • Added C APIs:
    -      hb_charIsDigit(), hb_charIsAlpha(), hb_charIsLower(), hb_charIsUpper()
    -
  • -
  • Added support to specify OS codepage:
    -      -  Set( _SET_OSCODEPAGE[, <cCPID> ] ) -> <cOldCPID>
    -      C level: hb_setGetOSCODEPAGE()
    -      Conversion is done automatically in existing functions.
    -
  • -
  • Added hb_osDecode(), hb_osEncode() C APIs.
    -
  • -
  • HB_GETENV() extended with 3rd parameter to control OS codepage - conversion (on by default).
    -
  • -
  • Added CPU dump support for AMD64/x64.
    -
  • -
  • Added module listing on GPF for x86 and x64.
    -
  • -
  • GTXWC potential GPF fixed.
    -
  • -
  • Added process handling:
    -      HB_PROCESSOPEN()
    -      -HB_PROCESSVALUE()
    -     HB_PROCESSCLOSE()
    -
  • -
  • Added HB_GTI_BOXCP to control box drawing CP for GTs.
    -
  • -
  • Using Heap instead of Local memory when HB_FM_WIN32_ALLOC is set.
    -
  • -
  • Added __objHasMsgAssigned( object, "msgName" )
    -
  • -
  • File find API fixes for OS/2.
    -
  • -
  • DBOI_BAGNAME made compatible for RDDCDX, RDDNSX.
    -
  • -
  • Added Intel C compiler and Wine detection.
    -
  • -
  • Codepage fixes and cleanups (BGMIK).
    -
  • -
  • Fixed cursor handling in TEDITOR/MemoEdit().
    -
  • -
  • Now GTXWC generates HB_K_RESIZE on resize.
    -
  • -
  • GTWIN fixed HB_GTI_KBDSHIFTS handling.
    -
  • -
  • GTWVT added 'layered window' support (always enabled, except when in Terminal mode).
    -
  • -
  • GTWVT fixed not to generate RTE if class is already been registered.
    -
  • -
  • GTXWC added support for HB_GTI_PALETTE, HB_GTI_FONTSEL,HB_GTI_CLOSABLE, HB_GTI_RESIZABLE.
    -
  • -
  • GTTRM added support for HB_GTI_PALETTE.
    -
  • -
  • New compiler expression optimizations, and some fixes for rare cases.
    -
  • -
  • Some compiler optimizations are now enabled using new -ko switch.
    -
  • -
  • Added array preallocation on AADD().
    -
  • -
  • Optimization to string reallocation.
    -
  • -
  • Added detection of unused variable assigments. Code cleaned - in all Harbour for such warnings.
    -
  • -
  • Fixed possible problem with _SET_PRINTFILE, _SET_DEFAULT, _SET_EXTRAFILE.
    -
  • -
  • __HRB*() functions marked as compatibility, please update your - code to use HB_HRB*().
    -
  • -
  • __RDDGETTEMPALIAS() marked as compatibility, please update your code to use HB_RDDGETTEMPALIAS().
    -
  • -
  • Added hb_spFileExists() a more efficient version of hb_spFile().
    -
  • -
  • Modified Harbour code to use the new API.
    -
  • -
  • HSX index MT support.
    -
  • -
  • Fixed potentially uninitialized internal HB_GT_INFO structure.
    -
  • -
  • Using more efficient hb_fsFileExists() instead of hb_fsFile() in core.
    -
  • -
  • Added char * hb_cmdargARGVN( int argc ).
    -
  • -
  • HB_PROCNAME() support for symbol evaluation.
    -
  • -
  • HB_SYMBOL_UNUSED() moved to std.ch. NOTE: This macro is no longer - present in common.ch so if you're overriding std.ch, make sure to add - this macro to your header file.
    -
  • -
  • BIN2W(), BIN2I(), BIN2L(), I2BIN(), L2BIN(), BIN2U(), W2BIN(), U2BIN() functions rewritten in a more efficient way. Previous pure GPL - license changed to standard Harbour license (including exception).
    -
  • -
  • Fixed Ukrainian localization files.
    -
  • -
  • Using local implementation of hb_snprintf() for all C level code.
    -
  • -
  • Fixed localized date format for RU, UA, IT, BE, BG, NL, SL.
    -
  • -
  • Added __FILE__ and __LINE__ predefined dynamic PP macros.
    -
  • -
  • Added Windows 7 and Server 2008 R2 version detection.
    -
  • -
  • Replaced old hbmk.bat, hbmk bash script and Harbour Make tool with - portable make tool written in Harbour: hbmk. This tool can create
    - a Harbour executable on any platforms using minimal effort. It autodetects - OS and compiler environment. Support script and parameter files, - can act as a linker, C compiler, Harbour compiler, static and dynamic - library creator, resource compiler (on Windows). - Core features are - completed on all major platforms. Some non-mainstream features and - platforms may be completed later. All existing features of hbmk - bash script (for gcc) and of hbmk.bat are supported in this new tool, - and much more. Replaced Win/DOS specific .bat files with portable - .hbp and .hbm files.
    -
  • -
  • Added all missing non-multibyte codepages.
    -
  • -
  • LISTBOX() doesn't modify _SET_EXACT settings anymore in :Find*() methods.
    -
  • -
  • HVM pcode evaluation speed improvement.
    -
  • -
  • Fixed _SET_EXACT handling in core.
    -
  • -
  • hb_gtInfo( HB_GTI_PALLETE ) now uses zero based color indexes in Core (GTWVT, GTXWC). This creates a small incompatibility with older - version. Also notice that GTWVG still uses 1-based indexes for - compatibility.
    -
  • -
  • Fixed very old bug showing wrong default status for -n option on - Harbour help screen.
    -
  • -
  • Added support for reading FoxPro .mem files - Clipper compatibility.
    -
  • -
  • Fixed very old bug which disabled writing to .mem files stringslonger then 32Kb.
    -
  • -
  • hbrun now accepts .dbf file as paramater, which it will open after startup.
    -
  • -
  • hbrun now accepts -v option which makes it display its own version after startup.
    -
  • -
  • Borland C++ compiler is now called 'bcc' instead of 'bcc32'. Please update your system.
    -
  • -
  • Removed almost all DOS/WIN specific build/make batch files.
    -
  • -
  • Fixed __M[V]CLEAR()/ __M[V]RESTORE() to be exactly Clipper compatible - and do not release PUBLIC GetList value.
    -
  • -
  • bcc compiler in GNU Make now supports older Windows NT with limited - command line length.
    -
  • -
  • Removed support for following compilers: - dos/bcc16, dos/rsx32, win/dmc, win/rsxnt, os2/icc, win/icc (IBM).
    -
  • -
  • Fixed static variables indexes in the generated PCODE when static variables are declared inside extended codeblocks - in some cases
    - wrong PCODE was generated.
    -
  • -
  • Fixed initialization PCODE for thread static variables declared inside extended codeblocks.
    -
  • -
  • Fixed modulename generated for debugger to always contain function name part for extended codeblock declared as file wide static variables. In such case "(_INITSTATICS)" is used as function name. Without it debugger does not register entering such codeblocks and
    - GPFs.
    -
  • -
  • Added support for automatic adding 1-st function with the same name - as compiled .prg file if some code statements are used before 1-st - function/procedure declared explicitly in .prg file. Such mode can - be enabled by -n2 new harbour compiler switch. This switch is used
    - by default by new hbmk tool.
    -
  • -
  • speedtst updated to work with CA-Cl*pper.
    -
  • -
  • Added protection against pushing new private variable on HVM stack - if such private variable is already created by the same function.
    - Clipper also has such protection.
    -
  • -
  • Respect HB_START_PROCEDURE in all builds if such public - function/procedure exists.
    -
  • -
  • Disabled HB_MSC_STARTUP in C++ MSVC builds.
    -
  • -
  • Forbid some usage of __clsModMsg() and unblock some othersIt should make some xHarbour users using OVERRIDE METHOD happy
    - but please remember it's still undocumented and unsupportedfunctionality - use for your own risk.
    -
  • -
  • Fixed typo in HB_INETDATAREADY() - the second parameter (timeout) was ignored.
    -
  • -
  • Changed the NOT operator precedence - it should be bigger then logical .and./.or. operators in #if expressions.
    -
  • -
  • Fixed HB_REGEXMATCH(). Now the HAS/LIKE mode can be controlled by 5th logical parameter (was 3rd), so 3rd parameter is solely
    - controlling case-sensitivity as indicated in the documentation. Users are recommended to use HB_REGEXHAS() and HB_REGEXLIKE()
    - functions as unambiguous alternatives, which work equally - well on all Harbour versions. HB_REGEXMATCH() is now deprecated, - but kept for compatibility.
    -
  • -
  • ACHOICE() fixed to redisplay itself when exiting with <Esc> or - equivalent.
  • -
-
-Contrib
-
    -
  • hbblat new Blat interface class for Windows - (Contributed by Francesco Saverio Giudice).
    -
  • -
  • hbmzip fixed GPF in HB_ZIPDELETEFILE() when file has comment.
    -
  • -
  • hbmzip fixed handling attributes in HB_ZIPFILECREATE().
    -
  • -
  • hbmzip fixed timestamps stored in .zip files.
    -
  • -
  • hbmzip added HB_ZIPSTOREFILEHANDLE(), - HB_UNZIPEXTRACTCURRENTFILETOHANDLE() functions.
    -
  • -
  • hbwin WIN_REGREAD()/GETREGISTRY() got new parameter to supply - a default value when the entry isn't found.
    -
  • -
  • hbtip FTP handling fixed some accidental typos.
    -
  • -
  • hbtip new MIME types.
    -
  • -
  • hbtip fixes and optimization to HB_BASE64().
    -
  • -
  • rddads now autodetects version 9.10.
    -
  • -
  • hbct XTOC(), FTOC() and CTOF() fixed to be properly multiplatform.
    -
  • -
  • hbct unbuffered drawing speed improvement in windowing code.
    -
  • -
  • hbct DIRNAME() fixed.
    -
  • -
  • hbct other fixes.
    -
  • -
  • hbct FILESEEK(), FILEATTR(), FILESIZE(), FILEDATE() now MT compatible.
    -
  • -
  • hbct added support for thread local current window pointer in CT Windows.
    -
  • -
  • hbwin made steps towards creating a unified Windows API wrapper layer.
    -
  • -
  • Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins) - to contribs.
    -
  • -
  • hbct windowing extended with new low level API, better shadow - handling.
    -
  • -
  • gtwvg lots of improvements.
    -
  • -
  • gtwvg Xbase++ compatible UI objects.
    -
  • -
  • hbw32 library renamed to hbwin.
    -
  • -
  • hbwin added WIN_ABORTDOC(), WIN_RUNDETACHED(), WIN_SHELLEXECUTE(), - WIN_LOADRESOURCE().
    -
  • -
  • dbu patch now adds SET DATE ANSI and SET CENTURY ON.
    -
  • -
  • hbwin WIN_MULDIV(), WIN_RECTANGLE(), WIN_SETBKMODE() extended to - accept handles passed using alternate methods.
    -
  • -
  • hbwin function names changed as below:
    -      - W32_REGPATHSPLIT() -> WIN_REGPATHSPLIT()
    -      W32_REGREAD() -> WIN_REGREAD()
    -     W32_REGWRITE() -> WIN_REGWRITE()
    -      WIN32_REGCREATEKEYEX() -> WIN_REGCREATEKEYEX()
    -      WIN32_REGOPENKEYEX() -> WIN_REGOPENKEYEX()
    -      WIN32_REGQUERYVALUEEX() -> WIN_REGQUERYVALUEEX()
    -      WIN32_REGSETVALUEEX() -> WIN_REGSETVALUEEX()
    -      WIN32_REGCLOSEKEY() -> WIN_REGCLOSEKEY()
    -      WIN32_ARC() -> WIN_ARC()
    -      WIN32_BITMAPSOK() -> WIN_BITMAPSOK()
    -      WIN32_CREATEDC() -> WIN_CREATEDC()
    -      WIN32_CREATEFONT() -> WIN_CREATEFONT()
    -      WIN32_DELETEDC() -> WIN_DELETEDC()
    -      WIN32_DRAWBITMAP() -> WIN_DRAWBITMAP()
    -      WIN32_ELLIPSE() -> WIN_ELLIPSE()
    -      WIN32_ENDDOC() -> WIN_ENDDOC()
    -      WIN32_ENDPAGE() -> WIN_ENDPAGE()
    -      WIN32_ENUMFONTS() -> WIN_ENUMFONTS()
    -      WIN32_FILLRECT() -> WIN_FILLRECT()
    -      WIN32_GETCHARSIZE() -> WIN_GETCHARSIZE()
    -      WIN32_GETDEVICECAPS() -> WIN_GETDEVICECAPS()
    -      WIN32_GETEXEFILENAME() -> WIN_GETEXEFILENAME()
    -      WIN32_GETPRINTERFONTNAME() -> WIN_GETPRINTERFONTNAME()
    -      WIN32_GETTEXTSIZE() -> WIN_GETTEXTSIZE()
    -      WIN32_LINETO() -> WIN_LINETO()
    -      WIN32_LOADBITMAPFILE() -> WIN_LOADBITMAPFILE()
    -      WIN32_MULDIV() -> WIN_MULDIV()
    -      WIN32_OS_ISWIN9X() -> WIN_OS_ISWIN9X()
    -      WIN32_RECTANGLE() -> WIN_RECTANGLE()
    -      WIN32_SETBKMODE() -> WIN_SETBKMODE()
    -      WIN32_SETCOLOR() -> WIN_SETCOLOR()
    -      WIN32_SETDOCUMENTPROPERTIES() -> WIN_SETDOCUMENTPROPERTIES()
    -      WIN32_SETMAPMODE() -> WIN_SETMAPMODE()
    -      WIN32_SETPEN() -> WIN_SETPEN()
    -      WIN32_STARTDOC() -> WIN_STARTDOC()
    -      WIN32_STARTPAGE() -> WIN_STARTPAGE()
    -      WIN32_TEXTOUT() -> WIN_TEXTOUT()
    -      WIN32PRN class -> WIN_PRN class
    -      WIN32BMP class -> WIN_BMP class  
  • -
  • hbct GPF and wrong RTE messages fixed in: - CHARADD(), CHARSUB(), CHARAND(), CHAROR(), CHARXOR()
    -
  • -
  • hbct string optimizations in thrown RTEs.
    -
  • -
  • hbziparc fixed <acFiles> behavior if the parameter is not passed.
    -
  • -
  • hbhpdf added HPDF_VERSION_TEXT() to replace former macro - with the same name.
    -
  • -
  • hbhpdf fixed HPDF_SETINFODATEATTR() function.
    -
  • -
  • Added experimental terminal server written in Harbour. Find it - in /examples.
    -
  • -
  • hbgt now properly checks for package version and includes - feature accordingly.
    -
  • -
  • hbwin added WAPI_GETCOMMANDLINE(), WIN_GETCOMMANDLINEPARAM(), - WAPI_GETLASTERROR(), WAPI_SETLASTERROR(), WAPI_SETERRORMODE().
    -
  • -
  • hbwhat removed from contrib list and moved to examples instead.
    -
  • -
  • xhb OVERRIDE / EXTEND CLASS emulation in xhbcls.ch header. (this feature is there to help xhb compatibility, but can break
    - inheritance scheme and internal class definitions in both - compilers)
    -
  • -
  • xhb added DBF2TXT() with critical fixes.
    -
  • -
  • xhb added HB_REGEXREPLACE().
    -
  • -
  • hbwin WINPORTWRITE() GPF when wrong parameter type is passed.
    -
  • -
  • Added Darwin/MacPorts support for following contribs: - gtalleg, hbmysql, hbpgsql, sddmy, sddpg, hbfimage.
  • -
  • hbtpathy now builds on Darwin.
  • -
  • xhb disabled dangerous bitop compatibility macros in hbcompat.ch. - Enable them with #define XHB_BITOP. Or even better to change code - to use HB_BIT*() functions natively.
  • -
-
-Known build issues
-
    -
  • Windows 64-bit builds may generate a large amount of type - conversion warnings. This is currently normal and will be - addressed in a future version.
  • -
  • Contrib hbfimage won't currently compile on Linux/Darwin - systems. This will be addressed in a future version.
    -
  • -
  • Contrib hbsqlit3 will not embed foreign sqlite3 library code - for Pelles C 4.5 and Open Watcom 1.7 due to fatal compile problems. - For these compilers you will have to supply sqlite3 library - yourself. For other compilers, some warnings are expected and - normal in this non-Harbour code.
    -
  • -
  • Using Pelles C 5.00.1 in 64-bit mode, HB_INET*() functions - won't work.
    -
  • -
  • Using Pelles C 6.00.6 in 64-bit mode, there will be - missing symbols at link time due to bugs in Pelles C.
    -
  • -
  • gtalleg contrib may not compile on all platforms/compilers.
    -
  • -
  • hbssl won't work with watcom on win platform due to OpenSSL - header compatibility problems.
  • -
-
To download the Harbour v2.0.0 today, please visit our downloads page.
 
 
 

 
  - - - - -
SourceForge Community Choice Awards!
    -
  • May 17, 2009
    -
    - General
    -
  • -
  • The SourceForge.net, one of the largest repositories of open source applications in the world, organizes every year a vote for the community choose the best projects. It is the SourceForge.net Community Choice Awards. Indication of projects begins on May 6 and will end on 29th. The finalists will be known in June and the list of winners must leave at the end of July at OSCON event.
    -
    - Get involved! Nominate us for the 2009 Community Choice Awards here.
  • -
 
 
 

 
 New website released! -
    -
  • February 15, 2009
    -
    - General
    -
  • -
  • Released the new layout for our site.
    - This includes details about the project, several examples and will soon include some tutorials.
  • -
 
 
 

 
 Released 1.0.1 -
    -
  • September 17, 2008
    -
    - General
    -
  • -
  • Build configuration changes:
    - - PRG_USR -> HB_USER_PRGFLAGS
    - - C_USR -> HB_USER_CFLAGS
    - - L_USR -> HB_USER_LDFLAGS
    - - A_USR -> HB_USER_AFLAGS
    - - MK_USR -> HB_USER_MAKEFLAGS
    - - HB_ARCHITECTURE=w32 -> HB_ARCHITECTURE=win
    -
  • -
  • GNU-make system revised to give optimal support -j<n> - multi-threaded parallel builds, which can dramatically - increase build speed in multi-core/multi-CPU systems.
    -
  • -
  • HB_WINCE -> HB_OS_WIN_CE
    -
  • -
  • HB_OS_WIN_32_USED -> HB_OS_WIN_USED
    -
  • -
  • HB_OS_WIN_32 -> HB_OS_WIN
    -
  • -
  • Cleaned references of '32' in context of Windows and - Windows API.
    -
  • -
  • New macro names introduced:
    - - SUCCESS -> HB_SUCCESS
    - - FAILURE -> HB_FAILURE
    - - ERRCODE -> HB_ERRCODE
    - (old ones still work for compatibility, but please
    - switch your code to use the new ones)
    -
  • -
  • Fixed dynamic library creation on Solaris OSes.
    -
  • -
  • hbrun will now open .dbf files when passed on the command line.
    -
  • -
  • Added web-server written in Harbour: uHTTPD
    -
  • -
  • POCC WinCE builds are now supported.
    -
  • -
  • Open Watcom 1.8 (RC3) compiler is now supported.
    -
  • -
  • Removed HB_LEGACY_LEVEL support.
    -
  • -
  • #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
    -
  • -
  • Protected incompatible changes with HB_LEGACY_LEVEL2.
    - (HB_SUCCESS, HB_FAILURE, HB_ERRCODE, HB_WINCE, HB_OS_WIN_32*, - __RDDGETTEMPALIAS(), __HRB*())
    - These features are still available, and will be removed - in next major version (Harbour 1.2). To test your code for - compatibility, you can turn it off manually by #defining - HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)

    -
  • -
-
- Core
-
    -
  • Added MT (Multi thread) support.
    -
  • -
  • Added complete i18n support with API and tool to compile .po - files (hbi18n).
    -
  • -
  • Added hb_fsCreateTempEx(), hb_fileCreateTempEx() C level APIs.
    -
  • -
  • Fixed to not use C RTL CP dependent character functions in Harbour code. (islower(), toupper(), etc). Added new macros instead.
    -
  • -
  • __NATISNEGATIVE() and __NATISAFFIRM() are now using - CP sensitive case conversion.
    -
  • -
  • Added hb_charIsUpper()/hb_charIsLower() APIs.
    -
  • -
  • CURDRIVE() and DISKNAME() fixed for systems that don't support - drive letters.
    -
  • -
  • Xbase++ compatible TBROWSE()/TBCOLUMN()/GET() related methods
    - moved to derived classes xpp_TBrowse()/xpp_TBColumn()/xpp_Get().
    -
  • -
  • Fixed potential GPF in HB_RASCAN().
    -
  • -
  • Debugger improvements and fixes.
    -
  • -
  • Most Harbour level code prepared for MT.
    -
  • -
  • Fixed few potential GPFs in RDDNTX, RDDCDX code.
    -
  • -
  • Added own hb_snprintf() implementation.
    -
  • -
  • Fixed HB_VERSION( HB_VERSION_BUILD_DATE )
    -
  • -
  • - dded hbuddall library holding all core supplied user RDDs.
    -
  • -
  • Fixed to successfully build all user RDD examples.
    -
  • -
  • Fixed dbCreate() behaviour in arrayrdd user RDD.
    -
  • -
  • Added new LOGRDD user RDD.
    -
  • -
  • Added DBFNSX RDD.
    -
  • -
  • Fixed FWRITE() potential GPF and security hole.
    -
  • -
  • Added __FILE__ support for .prg code.
    -
  • -
  • Added:
    - - HB_MILLISECONDS()
    - - HB_FTEMPCREATEEX( @<cName>, <cDir>, <cPrefix>, <cExt> ) -> <nHandle>
    - - HB_STRDECODESCAPE( <cEscSeqStr> ) -> <cStr>
    - - HB_STRCDECODE( <cStr> [, @<lCont> ] ) -> <cResult> | NIL
    - - HB_STRXOR( <cStr1>, <cStr2> | <nNum> ) -> <cResult>
    - - HB_PROGNAME() -> <cProgramNameWithPath>
    - - HB_DISPOUTATBOX() similar to HB_DISPOUTAT() but for drawing chars.
    - - HB_FGETATTR( <cFileName>, @<nAttr> ) -> <lSuccess>
    - - HB_FSETATTR( <cFileName>, <nAttr> ) -> <lSuccess>
    - - HB_FSETDATETIME( <cFileName>, [<dDate>], [<cTime HH:MM:SS>] ) -> <lSuccess>
    - - HB_WILDMATCHI() like HB_WILDMATCH() but case-insentitive.
    - - HB_CDPSELECT() same as HB_SETCODEPAGE() (please upgrade to new function name).
    - - HB_CDPUNIID( <cHarbourCP> ) -> <cCPName>
    - - HB_GTINFO( HB_GTI_CARGO[, <xValue ] ) -> <xPrevValue>
    -
  • -
  • Fixed UNSELECTED color updating in SetColor().
    -
  • -
  • GTWVT, GTWIN HB_GTI_CODEPAGE support.
    -
  • -
  • GTWVT now supports drawing chars even if the selected codepage doesn't support them.
    -
  • -
  • GTWVT HB_GTI_BOXCP support.
    -
  • -
  • Fixed TBROWSE() to display drawing chars properly.
    -
  • -
  • Fixed DISKSPACE() and HB_DISKSPACE() to return proper values - on Darwin.
    -
  • -
  • Fixed DIRECTORY() when called with "V" (label) parameter (on Windows).
    -
  • -
  • New HB_SIZEOFARRAY() macro.
    -
  • -
  • Added C APIs: - hb_charIsDigit(), hb_charIsAlpha(), hb_charIsLower(), hb_charIsUpper()
    -
  • -
  • Added support to specify OS codepage:
    - Set( _SET_OSCODEPAGE[, <cCPID> ] ) -> <cOldCPID>
    - C level: hb_setGetOSCODEPAGE()
    - Conversion is done automatically in existing functions.
    -
  • -
  • Added hb_osDecode(), hb_osEncode() C APIs.
    -
  • -
  • HB_GETENV() extended with 3rd parameter to control OS codepage conversion (on by default).
    -
  • -
  • Added CPU dump support for AMD64/x64.
    -
  • -
  • Added module listing on GPF for x86 and x64.
    -
  • -
  • GTXWC potential GPF fixed.
    -
  • -
  • Added process handling: - HB_PROCESSOPEN(), HB_PROCESSVALUE(), HB_PROCESSCLOSE()
    -
  • -
  • Added HB_GTI_BOXCP to control box drawing CP for GTs.
    -
  • -
  • Using Heap instead of Local memory when HB_FM_WIN32_ALLOC is set.
    -
  • -
  • Added __objHasMsgAssigned( object, "msgName" )
    -
  • -
  • File find API fixes for OS/2.
    -
  • -
  • DBOI_BAGNAME made compatible for RDDCDX, RDDNSX.
    -
  • -
  • Added Intel C compiler and Wine detection.
    -
  • -
  • Codepage fixes and cleanups (BGMIK).
    -
  • -
  • Fixed cursor handling in TEDITOR/MemoEdit().
    -
  • -
  • Now GTXWC generates HB_K_RESIZE on resize.
    -
  • -
  • GTWIN fixed HB_GTI_KBDSHIFTS handling.
    -
  • -
  • GTWVT added 'layered window' support (always enabled, except - when in Terminal mode).
    -
  • -
  • New compiler expression optimizations, and some fixes for rare - cases.
    -
  • -
  • Some compiler optimizations are now enabled using new -ko switch.
    -
  • -
  • Added array preallocation on AADD().
    -
  • -
  • Optimization to string reallocation.
    -
  • -
  • Added detection of unused variable assigments. Code cleaned - in all Harbour for such warnings.
    -
  • -
  • Fixed possible problem with _SET_PRINTFILE, _SET_DEFAULT, _SET_EXTRAFILE.
    -
  • -
  • __HRB*() functions marked as compatibility, please update your - code to use HB_HRB*().
    -
  • -
  • __RDDGETTEMPALIAS() marked as compatibility, please update your - code to use HB_RDDGETTEMPALIAS().
  • -
-
- Contrib -
    -
  • hbmzip fixed GPF in HB_ZIPDELETEFILE() when file has comment.
    -
  • -
  • hbmzip fixed handling attributes in HB_ZIPFILECREATE().
    -
  • -
  • hbmzip fixed timestamps stored in .zip files.
    -
  • -
  • hbmzip added HB_ZIPSTOREFILEHANDLE(),HB_UNZIPEXTRACTCURRENTFILETOHANDLE() functions.
    -
  • -
  • hbwin WIN_REGREAD()/GETREGISTRY() got new parameter to supply - a default value when the entry isn't found.
    -
  • -
  • hbtip FTP handling fixed some accidental typos.
    -
  • -
  • hbtip new MIME types.
    -
  • -
  • hbtip fixes and optimization to HB_BASE64().
    -
  • -
  • rddads now autodetects version 9.10.
    -
  • -
  • hbct XTOC(), FTOC() and CTOF() fixed to be properly multiplatform.
    -
  • -
  • hbct unbuffered drawing speed improvement in windowing code.
    -
  • -
  • hbct DIRNAME() fixed.
    -
  • -
  • hbct other fixes.
    -
  • -
  • Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins) - to contribs.
    -
  • -
  • hbct windowing extended with new low level API, better shadow - handling.
    -
  • -
  • gtwvg improvements. Xbase++ compatible UI objects.
    -
  • -
  • hbw32 library renamed to hbwin.
    -
  • -
  • hbwin added WIN_ABORTDOC(), WIN_RUNDETACHED(), WIN_SHELLEXECUTE(), - WIN_LOADRESOURCE().
    -
  • -
  • dbu patch now adds SET DATE ANSI and SET CENTURY ON.
    -
  • -
  • hbwin WIN_MULDIV(), WIN_RECTANGLE(), WIN_SETBKMODE() extended to - accept handles passed using alternate methods.
    -
  • -
  • hbwin function names changed as below:
    - - W32_REGPATHSPLIT() -> WIN_REGPATHSPLIT()
    - - W32_REGREAD() -> WIN_REGREAD()
    - - W32_REGWRITE() -> WIN_REGWRITE()
    - - WIN32_REGCREATEKEYEX() -> WIN_REGCREATEKEYEX()
    - - WIN32_REGOPENKEYEX() -> WIN_REGOPENKEYEX()
    - - WIN32_REGQUERYVALUEEX() -> WIN_REGQUERYVALUEEX()
    - - WIN32_REGSETVALUEEX() -> WIN_REGSETVALUEEX()
    - - WIN32_REGCLOSEKEY() -> WIN_REGCLOSEKEY()
    - - WIN32_ARC() -> WIN_ARC()
    - - WIN32_BITMAPSOK() -> WIN_BITMAPSOK()
    - - WIN32_CREATEDC() -> WIN_CREATEDC()
    - - WIN32_CREATEFONT() -> WIN_CREATEFONT()
    - - WIN32_DELETEDC() -> WIN_DELETEDC()
    - - WIN32_DRAWBITMAP() -> WIN_DRAWBITMAP()
    - - WIN32_ELLIPSE() -> WIN_ELLIPSE()
    - - WIN32_ENDDOC() -> WIN_ENDDOC()
    - - WIN32_ENDPAGE() -> WIN_ENDPAGE()
    - - WIN32_ENUMFONTS() -> WIN_ENUMFONTS()
    - - WIN32_FILLRECT() -> WIN_FILLRECT()
    - - WIN32_GETCHARSIZE() -> WIN_GETCHARSIZE()
    - - WIN32_GETDEVICECAPS() -> WIN_GETDEVICECAPS()
    - - WIN32_GETEXEFILENAME() -> WIN_GETEXEFILENAME()
    - - WIN32_GETPRINTERFONTNAME() -> WIN_GETPRINTERFONTNAME()
    - - WIN32_GETTEXTSIZE() -> WIN_GETTEXTSIZE()
    - - WIN32_LINETO() -> WIN_LINETO()
    - - WIN32_LOADBITMAPFILE() -> WIN_LOADBITMAPFILE()
    - - WIN32_MULDIV() -> WIN_MULDIV()
    - - WIN32_OS_ISWIN9X() -> WIN_OS_ISWIN9X()
    - - WIN32_RECTANGLE() -> WIN_RECTANGLE()
    - - WIN32_SETBKMODE() -> WIN_SETBKMODE()
    - - WIN32_SETCOLOR() -> WIN_SETCOLOR()
    - - WIN32_SETDOCUMENTPROPERTIES() -> WIN_SETDOCUMENTPROPERTIES()
    - - WIN32_SETMAPMODE() -> WIN_SETMAPMODE()
    - - WIN32_SETPEN() -> WIN_SETPEN()
    - - WIN32_STARTDOC() -> WIN_STARTDOC()
    - - WIN32_STARTPAGE() -> WIN_STARTPAGE()
    - - WIN32_TEXTOUT() -> WIN_TEXTOUT()
    - - WIN32PRN class -> WIN_PRN class
    - - WIN32BMP class -> WIN_BMP class
    -
  • -
  • hbct GPF and wrong RTE message fixed in: - CHARADD(), CHARSUB(), CHARAND(), CHAROR(), CHARXOR()
    -
  • -
  • hbct string optimizations in thrown RTEs.
    -
  • -
  • hbziparc fixed <acFiles> behavior if the parameter is not passed.
    -
  • -
  • hbhpdf added HPDF_VERSION_TEXT() to replace former macro with the same name.
  • -
  • hbhpdf fixed HPDF_SETINFODATEATTR() function.
    -
  • -

- Known build issues
-
    -
  • Windows 64-bit builds may generate a large amount of type - conversion warnings. This is currently normal and will be - addressed in a future version.
  • -
  • Contrib hbsqlit3 will not embed foreign sqlite3 library code - for Pelles C 4.5 and Open Watcom 1.7 due to fatal compile problems. - For these compilers you will have to supply sqlite3 library - yourself. For other compilers, some warnings are expected and - normal in this non-Harbour code.
  • -
  • Using Pelles C 5.00.1 in 64-bit mode, HB_INET*() functions - won't work.
    -
  • -
  • gtalleg, hbwhat contrib may not compile on all platforms/compilers.
    -
  • -
  • hbcurl won't build when using DMC and libcurl 7.19.0. - Earlier versions build okay.
  • -
 
 
 
 
 
 Looking for more news?
- Click here for news archive...
 
   
 
- - - - - -
- - + + + + +Harbour Project - News + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Harbour News 
 This page gives you some of the main changes introduced in recent versions of Harbour project. To view the latest ChangeLog click here or download lastest stable release of Harbour here. 

 
 Harbour Mailing Lists address change +
    +
  • June 3, 2010
    +
    +
    Thanking Phil Barnett for providing the Harbour community a great mailing list + for so many years, today, due to server problems, I've migrated the mailing + lists to Google Groups in agreement with Phil and Harbour admins.
    +
    +Please make sure to revise your subscription settings, because digest, nomail +options and readable name were lost along the migration.
  • +
 
   

 
 Release of 2.0.0 +
    +
  • December 22, 2009
    +
    +
    After 16 months of intensive development the final version 2.0.0 is finally released. There are many highlights and news in this new release, check out some details and download your copy free today.
    +
    +
    General
  • +
  • Build configuration changes:
    +    PRG_USR         -> HB_USER_PRGFLAGS
    +    C_USR           -> HB_USER_CFLAGS
    +    L_USR           -> HB_USER_LDFLAGS
    +    A_USR           -> HB_USER_AFLAGS
    +    MK_USR          -> HB_USER_MAKEFLAGS
    +    HB_ARCHITECTURE -> HB_PLATFORM
    +    HB_PLATFORM=w32 -> HB_PLATFORM=win
    +    CCPATH          -> HB_CCPREFIX
    +    CCPREFIX        -> HB_CCPATH
  • +
  • GNU-make system revised to give optimal support -j<n> multi-threaded parallel builds, which can dramatically + increase build speed in multi-core/multi-CPU systems.
  • +
  • Some constants renamed: +
    + +   HB_WINCE          -> HB_OS_WIN_CE
    +   HB_OS_WIN_32_USED -> HB_OS_WIN_USED
    +   HB_OS_WIN_32      -> HB_OS_WIN
  • +
  • Cleaned references of '32' in context of Windows and + Windows API.
  • +
  • New macro names introduced:
    +   SUCCESS -> HB_SUCCESS
    +   FAILURE -> HB_FAILURE
    +   ERRCODE -> HB_ERRCODE
    + (old ones still work for compatibility, but please + switch your code to use the new ones)
  • +
  • Fixed dynamic library creation on Solaris OSes.
  • +
  • hbrun will now open .dbf files when passed on the command line.
    +
  • +
  • Added web-server written in Harbour: uHTTPD
    +
  • +
  • POCC WinCE builds are now supported.
    +
  • +
  • Open Watcom 1.8 (RC3) compiler is now supported.
    +
  • +
  • Removed HB_LEGACY_LEVEL support.
    +
  • +
  • #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
    +
  • +
  • Protected incompatible changes with HB_LEGACY_LEVEL2.
    +       HB_SUCCESS
    +      HB_FAILURE
    +      HB_ERRCODE
    +      HB_WINCE
    +      HB_OS_WIN_32*
    +      __RDDGETTEMPALIAS()
    +      __HRB*()
    +      some class functions, +
    +      Harbour -go option
    +
    + These features are still available, and will be removed + in next major version (Harbour 1.2). To test your code for + compatibility, you can turn it off manually by #defining + HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)
    +
    +
  • +
  • New Harbour Project homepage, thanks for Vailton Renato.
    +
  • +
  • GNU Make system now supports parallel builds. + (needs GNU Make newer than 3.79.1)
    +
  • +
  • GNU Make system allows to install in Harbour source tree on all platforms.
    +
  • +
  • GNU Make system for bcc and msvc options synced with non-GNU build methods.
    +
  • +
  • GNU Make system no longer needs -r parameter.
    +
  • +
  • GNU Make system will now generate hbfm and hbfmmt lib for all compilers. + Added few more similar unification cleanups.
    +
  • +
  • Implemented .dll generation for msvc, msvc64, bcc and watcom when using + GNU Make system.
    +
  • +
  • Added support for Open Watcom 1.8 (it's recommended over 1.7).
    +
  • +
  • Added support for import lib generation when using GNU Make with msvc and vcc. + Enable it with 'set HB_DIR_IMPLIB=yes' plus set HB_DIR_* envvars.
    +
  • +
  • -mtune=pentiumpro optimization is now default for mingw/cygwin.
    +
  • +
  • Cleaned new mingw 4.3.3 warnings.
    +
  • +
  • Certain features will require Windows NT or upper when building Harbour on Windows, so this is now a requirement for a proper build.
    +
  • +
  • hb-mkslib.sh renamed to hb-mkdyn.sh. Old name stil works, but it's + now deprecated.
    +
  • +
  • x64 msvc compiler got a distinct HB_COMPILER value: msvc64.
    +
  • +
  • msvcce compiler made compatible with older MSVC/WinCE versions.
    +
  • +
  • Added support for Intel(R) C++ compiler (icc) on Linux and Windows.
    +
  • +
  • Added new INSTALL document giving a quick describing of the build + process on all supported platforms and compilers.
    +
  • +
  • Several steps to make the build process simpler and requiring the + less amount of preparation.
    +
  • +
  • Fixed missing watcom support for HB_USER_LDFLAGS.
    +
  • +
  • Added support for MSVC IA64 mode. (untested)
    +
  • +
  • Added support for HB_CONTRIBLIBS=no to disable building of all contribs.
    +
  • +
  • Added ability to generate Windows installer and .zip distribution file.
    +
  • +
  • Fully transitioned to GNU Make system for all compilers.
    + Now msvc, msvcce and bcc builds need GNU Make, see INSTALL for more + information. "non-GNU" make systems got deleted from the source tree.
  • +
  • Cygwin renamed from gcc to cygwin. (NOTE: Cygwin doesn't work since + some versions, and support may be removed in the future.)
    +
  • +
  • Fixed #pragma -k? options to be case-insensitive.
    +
  • +
  • Explicitly bind system libraries with harbour shared library. + RPM/DEB packages should automatically detect these dependencies.
    +
  • +
  • Warning cleanup (minors) for Intel compiler.
    +
  • +
  • Pelles C workarounds for compiler bugs.
    +
  • +
  • Added support for extended definition files in Harbour compiler + switches: -u+<file>
    +
  • +
  • Fixed memory leak when repeated -u[<file>] options are used.
  • +
+
+Core
+
    +
  • Added MT (Multi thread) support.
    +
  • +
  • Added complete i18n support with API and tool to compile .po + files (hbi18n).
    +
  • +
  • Added hb_fsCreateTempEx(), hb_fileCreateTempEx() C level APIs.
    +
  • +
  • Fixed to not use C RTL CP dependent character functions + in Harbour code. (islower(), toupper(), etc) added new macros instead.
    +
  • +
  • __NATISNEGATIVE() and __NATISAFFIRM() are now using + CP sensitive case conversion.
    +
  • +
  • Added hb_charIsUpper()/hb_charIsLower() APIs.
    +
  • +
  • CURDRIVE() and DISKNAME() fixed for systems that don't support + drive letters.
    +
  • +
  • Xbase++ compatible TBROWSE()/TBCOLUMN()/GET() related methods + moved to derived classes xpp_TBrowse()/xpp_TBColumn()/xpp_Get().
    +
  • +
  • Fixed potential GPF in HB_RASCAN().
    +
  • +
  • Debugger improvements and fixes.
    +
  • +
  • Most Harbour level code prepared for MT.
    +
  • +
  • Fixed few potential GPFs in RDDNTX, RDDCDX code.
    +
  • +
  • Added own hb_snprintf() implementation.
    +
  • +
  • Fixed HB_VERSION( HB_VERSION_BUILD_DATE )
    +
  • +
  • Added hbuddall library holding all core supplied user RDDs.
    +
  • +
  • Fixed to successfully build all user RDD examples.
    +
  • +
  • Fixed dbCreate() behaviour in arrayrdd user RDD.
    +
  • +
  • Added new LOGRDD user RDD.
    +
  • +
  • Added DBFNSX RDD.
    +
  • +
  • Fixed FWRITE() potential GPF and security hole.
    +
  • +
  • Added __FILE__ support for .prg code.
    +
  • +
  • Added:
    +      HB_MILLISECONDS()
    +      HB_FTEMPCREATEEX( @<cName>, <cDir>, <cPrefix>, <cExt> ) -> <nHandle>
    +      HB_STRDECODESCAPE( <cEscSeqStr> ) -> <cStr>
    +      HB_STRCDECODE( <cStr> [, @<lCont> ] ) -> <cResult> | NIL
    +      HB_STRXOR( <cStr1>, <cStr2> | <nNum> ) -> <cResult>
    +      HB_PROGNAME() -> <cProgramNameWithPath>
    +      HB_DISPOUTATBOX() similar to HB_DISPOUTAT() but for drawing chars.
    +      HB_FGETATTR( <cFileName>, @<nAttr> ) -> <lSuccess>
    +      HB_FSETATTR( <cFileName>, <nAttr> ) -> <lSuccess>
    +      HB_FSETDATETIME( <cFileName>, [<dDate>], [<cTime HH:MM:SS>], [<nMilliSec>] ) -> <lSuccess>
    +      HB_FGETDATETIME()
    +      HB_WILDMATCHI() like HB_WILDMATCH() but case-insentitive.
    +      HB_CDPSELECT() same as HB_SETCODEPAGE() (please upgrade to new function name).
    +      HB_CDPUNIID( <cHarbourCP> ) -> <cCPName>
    +      HB_GTINFO( HB_GTI_CARGO[, <xValue ] ) -> <xPrevValue>
    +      HB_DIRBASE() -> <cBaseDirectory>
    +      HB_DBCREATETEMP()/DBCREATETEMP() to create temporary tables.
    +      HB_MMIDDLEDOWN/MMIDDLEDOWN() new Harbour function.
    +      DBINFO( DBI_ISTEMPORARY )
    +      HB_VERSION( HB_VERSION_BUILD_PLAT )
    +      HB_VERSION( HB_VERSION_BUILD_COMP )
    +      HB_STRFORMAT() C-like string formatting function + (also as C level API named hb_StrFormat())
    +      HB_SETENV( <cEnvName>, [<cNewVal>] [, <lOsCP>] ) -> <lOK> (also as C level API named hb_setenv())
    +
    +
  • +
  • Fixed UNSELECTED color updating in SetColor().
    +
  • +
  • GTWVT, GTWIN HB_GTI_CODEPAGE support.
    +
  • +
  • GTWVT now supports drawing chars even if the selected codepage + doesn't support them.
    +
  • +
  • GTWVT HB_GTI_BOXCP support.
    +
  • +
  • GTWVT disabled K_MM*DOWN non-Clipper (and other GT) compatible mouse + events.
    +
  • +
  • Fixed TBROWSE(), TPOPUP() to display drawing chars properly.
    +
  • +
  • Fixed DISKSPACE() and HB_DISKSPACE() to return proper values + on Darwin.
    +
  • +
  • Fixed DIRECTORY() when called with "V" (label) parameter (on Windows).
    +
  • +
  • New HB_SIZEOFARRAY() macro.
    +
  • +
  • Added C APIs:
    +      hb_charIsDigit(), hb_charIsAlpha(), hb_charIsLower(), hb_charIsUpper()
    +
  • +
  • Added support to specify OS codepage:
    +      +  Set( _SET_OSCODEPAGE[, <cCPID> ] ) -> <cOldCPID>
    +      C level: hb_setGetOSCODEPAGE()
    +      Conversion is done automatically in existing functions.
    +
  • +
  • Added hb_osDecode(), hb_osEncode() C APIs.
    +
  • +
  • HB_GETENV() extended with 3rd parameter to control OS codepage + conversion (on by default).
    +
  • +
  • Added CPU dump support for AMD64/x64.
    +
  • +
  • Added module listing on GPF for x86 and x64.
    +
  • +
  • GTXWC potential GPF fixed.
    +
  • +
  • Added process handling:
    +      HB_PROCESSOPEN()
    +      +HB_PROCESSVALUE()
    +     HB_PROCESSCLOSE()
    +
  • +
  • Added HB_GTI_BOXCP to control box drawing CP for GTs.
    +
  • +
  • Using Heap instead of Local memory when HB_FM_WIN32_ALLOC is set.
    +
  • +
  • Added __objHasMsgAssigned( object, "msgName" )
    +
  • +
  • File find API fixes for OS/2.
    +
  • +
  • DBOI_BAGNAME made compatible for RDDCDX, RDDNSX.
    +
  • +
  • Added Intel C compiler and Wine detection.
    +
  • +
  • Codepage fixes and cleanups (BGMIK).
    +
  • +
  • Fixed cursor handling in TEDITOR/MemoEdit().
    +
  • +
  • Now GTXWC generates HB_K_RESIZE on resize.
    +
  • +
  • GTWIN fixed HB_GTI_KBDSHIFTS handling.
    +
  • +
  • GTWVT added 'layered window' support (always enabled, except when in Terminal mode).
    +
  • +
  • GTWVT fixed not to generate RTE if class is already been registered.
    +
  • +
  • GTXWC added support for HB_GTI_PALETTE, HB_GTI_FONTSEL,HB_GTI_CLOSABLE, HB_GTI_RESIZABLE.
    +
  • +
  • GTTRM added support for HB_GTI_PALETTE.
    +
  • +
  • New compiler expression optimizations, and some fixes for rare cases.
    +
  • +
  • Some compiler optimizations are now enabled using new -ko switch.
    +
  • +
  • Added array preallocation on AADD().
    +
  • +
  • Optimization to string reallocation.
    +
  • +
  • Added detection of unused variable assigments. Code cleaned + in all Harbour for such warnings.
    +
  • +
  • Fixed possible problem with _SET_PRINTFILE, _SET_DEFAULT, _SET_EXTRAFILE.
    +
  • +
  • __HRB*() functions marked as compatibility, please update your + code to use HB_HRB*().
    +
  • +
  • __RDDGETTEMPALIAS() marked as compatibility, please update your code to use HB_RDDGETTEMPALIAS().
    +
  • +
  • Added hb_spFileExists() a more efficient version of hb_spFile().
    +
  • +
  • Modified Harbour code to use the new API.
    +
  • +
  • HSX index MT support.
    +
  • +
  • Fixed potentially uninitialized internal HB_GT_INFO structure.
    +
  • +
  • Using more efficient hb_fsFileExists() instead of hb_fsFile() in core.
    +
  • +
  • Added char * hb_cmdargARGVN( int argc ).
    +
  • +
  • HB_PROCNAME() support for symbol evaluation.
    +
  • +
  • HB_SYMBOL_UNUSED() moved to std.ch. NOTE: This macro is no longer + present in common.ch so if you're overriding std.ch, make sure to add + this macro to your header file.
    +
  • +
  • BIN2W(), BIN2I(), BIN2L(), I2BIN(), L2BIN(), BIN2U(), W2BIN(), U2BIN() functions rewritten in a more efficient way. Previous pure GPL + license changed to standard Harbour license (including exception).
    +
  • +
  • Fixed Ukrainian localization files.
    +
  • +
  • Using local implementation of hb_snprintf() for all C level code.
    +
  • +
  • Fixed localized date format for RU, UA, IT, BE, BG, NL, SL.
    +
  • +
  • Added __FILE__ and __LINE__ predefined dynamic PP macros.
    +
  • +
  • Added Windows 7 and Server 2008 R2 version detection.
    +
  • +
  • Replaced old hbmk.bat, hbmk bash script and Harbour Make tool with + portable make tool written in Harbour: hbmk. This tool can create
    + a Harbour executable on any platforms using minimal effort. It autodetects + OS and compiler environment. Support script and parameter files, + can act as a linker, C compiler, Harbour compiler, static and dynamic + library creator, resource compiler (on Windows). + Core features are + completed on all major platforms. Some non-mainstream features and + platforms may be completed later. All existing features of hbmk + bash script (for gcc) and of hbmk.bat are supported in this new tool, + and much more. Replaced Win/DOS specific .bat files with portable + .hbp and .hbm files.
    +
  • +
  • Added all missing non-multibyte codepages.
    +
  • +
  • LISTBOX() doesn't modify _SET_EXACT settings anymore in :Find*() methods.
    +
  • +
  • HVM pcode evaluation speed improvement.
    +
  • +
  • Fixed _SET_EXACT handling in core.
    +
  • +
  • hb_gtInfo( HB_GTI_PALLETE ) now uses zero based color indexes in Core (GTWVT, GTXWC). This creates a small incompatibility with older + version. Also notice that GTWVG still uses 1-based indexes for + compatibility.
    +
  • +
  • Fixed very old bug showing wrong default status for -n option on + Harbour help screen.
    +
  • +
  • Added support for reading FoxPro .mem files - Clipper compatibility.
    +
  • +
  • Fixed very old bug which disabled writing to .mem files stringslonger then 32Kb.
    +
  • +
  • hbrun now accepts .dbf file as paramater, which it will open after startup.
    +
  • +
  • hbrun now accepts -v option which makes it display its own version after startup.
    +
  • +
  • Borland C++ compiler is now called 'bcc' instead of 'bcc32'. Please update your system.
    +
  • +
  • Removed almost all DOS/WIN specific build/make batch files.
    +
  • +
  • Fixed __M[V]CLEAR()/ __M[V]RESTORE() to be exactly Clipper compatible + and do not release PUBLIC GetList value.
    +
  • +
  • bcc compiler in GNU Make now supports older Windows NT with limited + command line length.
    +
  • +
  • Removed support for following compilers: + dos/bcc16, dos/rsx32, win/dmc, win/rsxnt, os2/icc, win/icc (IBM).
    +
  • +
  • Fixed static variables indexes in the generated PCODE when static variables are declared inside extended codeblocks - in some cases
    + wrong PCODE was generated.
    +
  • +
  • Fixed initialization PCODE for thread static variables declared inside extended codeblocks.
    +
  • +
  • Fixed modulename generated for debugger to always contain function name part for extended codeblock declared as file wide static variables. In such case "(_INITSTATICS)" is used as function name. Without it debugger does not register entering such codeblocks and
    + GPFs.
    +
  • +
  • Added support for automatic adding 1-st function with the same name + as compiled .prg file if some code statements are used before 1-st + function/procedure declared explicitly in .prg file. Such mode can + be enabled by -n2 new harbour compiler switch. This switch is used
    + by default by new hbmk tool.
    +
  • +
  • speedtst updated to work with CA-Cl*pper.
    +
  • +
  • Added protection against pushing new private variable on HVM stack + if such private variable is already created by the same function.
    + Clipper also has such protection.
    +
  • +
  • Respect HB_START_PROCEDURE in all builds if such public + function/procedure exists.
    +
  • +
  • Disabled HB_MSC_STARTUP in C++ MSVC builds.
    +
  • +
  • Forbid some usage of __clsModMsg() and unblock some othersIt should make some xHarbour users using OVERRIDE METHOD happy
    + but please remember it's still undocumented and unsupportedfunctionality - use for your own risk.
    +
  • +
  • Fixed typo in HB_INETDATAREADY() - the second parameter (timeout) was ignored.
    +
  • +
  • Changed the NOT operator precedence - it should be bigger then logical .and./.or. operators in #if expressions.
    +
  • +
  • Fixed HB_REGEXMATCH(). Now the HAS/LIKE mode can be controlled by 5th logical parameter (was 3rd), so 3rd parameter is solely
    + controlling case-sensitivity as indicated in the documentation. Users are recommended to use HB_REGEXHAS() and HB_REGEXLIKE()
    + functions as unambiguous alternatives, which work equally + well on all Harbour versions. HB_REGEXMATCH() is now deprecated, + but kept for compatibility.
    +
  • +
  • ACHOICE() fixed to redisplay itself when exiting with <Esc> or + equivalent.
  • +
+
+Contrib
+
    +
  • hbblat new Blat interface class for Windows + (Contributed by Francesco Saverio Giudice).
    +
  • +
  • hbmzip fixed GPF in HB_ZIPDELETEFILE() when file has comment.
    +
  • +
  • hbmzip fixed handling attributes in HB_ZIPFILECREATE().
    +
  • +
  • hbmzip fixed timestamps stored in .zip files.
    +
  • +
  • hbmzip added HB_ZIPSTOREFILEHANDLE(), + HB_UNZIPEXTRACTCURRENTFILETOHANDLE() functions.
    +
  • +
  • hbwin WIN_REGREAD()/GETREGISTRY() got new parameter to supply + a default value when the entry isn't found.
    +
  • +
  • hbtip FTP handling fixed some accidental typos.
    +
  • +
  • hbtip new MIME types.
    +
  • +
  • hbtip fixes and optimization to HB_BASE64().
    +
  • +
  • rddads now autodetects version 9.10.
    +
  • +
  • hbct XTOC(), FTOC() and CTOF() fixed to be properly multiplatform.
    +
  • +
  • hbct unbuffered drawing speed improvement in windowing code.
    +
  • +
  • hbct DIRNAME() fixed.
    +
  • +
  • hbct other fixes.
    +
  • +
  • hbct FILESEEK(), FILEATTR(), FILESIZE(), FILEDATE() now MT compatible.
    +
  • +
  • hbct added support for thread local current window pointer in CT Windows.
    +
  • +
  • hbwin made steps towards creating a unified Windows API wrapper layer.
    +
  • +
  • Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins) + to contribs.
    +
  • +
  • hbct windowing extended with new low level API, better shadow + handling.
    +
  • +
  • gtwvg lots of improvements.
    +
  • +
  • gtwvg Xbase++ compatible UI objects.
    +
  • +
  • hbw32 library renamed to hbwin.
    +
  • +
  • hbwin added WIN_ABORTDOC(), WIN_RUNDETACHED(), WIN_SHELLEXECUTE(), + WIN_LOADRESOURCE().
    +
  • +
  • dbu patch now adds SET DATE ANSI and SET CENTURY ON.
    +
  • +
  • hbwin WIN_MULDIV(), WIN_RECTANGLE(), WIN_SETBKMODE() extended to + accept handles passed using alternate methods.
    +
  • +
  • hbwin function names changed as below:
    +      + W32_REGPATHSPLIT() -> WIN_REGPATHSPLIT()
    +      W32_REGREAD() -> WIN_REGREAD()
    +     W32_REGWRITE() -> WIN_REGWRITE()
    +      WIN32_REGCREATEKEYEX() -> WIN_REGCREATEKEYEX()
    +      WIN32_REGOPENKEYEX() -> WIN_REGOPENKEYEX()
    +      WIN32_REGQUERYVALUEEX() -> WIN_REGQUERYVALUEEX()
    +      WIN32_REGSETVALUEEX() -> WIN_REGSETVALUEEX()
    +      WIN32_REGCLOSEKEY() -> WIN_REGCLOSEKEY()
    +      WIN32_ARC() -> WIN_ARC()
    +      WIN32_BITMAPSOK() -> WIN_BITMAPSOK()
    +      WIN32_CREATEDC() -> WIN_CREATEDC()
    +      WIN32_CREATEFONT() -> WIN_CREATEFONT()
    +      WIN32_DELETEDC() -> WIN_DELETEDC()
    +      WIN32_DRAWBITMAP() -> WIN_DRAWBITMAP()
    +      WIN32_ELLIPSE() -> WIN_ELLIPSE()
    +      WIN32_ENDDOC() -> WIN_ENDDOC()
    +      WIN32_ENDPAGE() -> WIN_ENDPAGE()
    +      WIN32_ENUMFONTS() -> WIN_ENUMFONTS()
    +      WIN32_FILLRECT() -> WIN_FILLRECT()
    +      WIN32_GETCHARSIZE() -> WIN_GETCHARSIZE()
    +      WIN32_GETDEVICECAPS() -> WIN_GETDEVICECAPS()
    +      WIN32_GETEXEFILENAME() -> WIN_GETEXEFILENAME()
    +      WIN32_GETPRINTERFONTNAME() -> WIN_GETPRINTERFONTNAME()
    +      WIN32_GETTEXTSIZE() -> WIN_GETTEXTSIZE()
    +      WIN32_LINETO() -> WIN_LINETO()
    +      WIN32_LOADBITMAPFILE() -> WIN_LOADBITMAPFILE()
    +      WIN32_MULDIV() -> WIN_MULDIV()
    +      WIN32_OS_ISWIN9X() -> WIN_OS_ISWIN9X()
    +      WIN32_RECTANGLE() -> WIN_RECTANGLE()
    +      WIN32_SETBKMODE() -> WIN_SETBKMODE()
    +      WIN32_SETCOLOR() -> WIN_SETCOLOR()
    +      WIN32_SETDOCUMENTPROPERTIES() -> WIN_SETDOCUMENTPROPERTIES()
    +      WIN32_SETMAPMODE() -> WIN_SETMAPMODE()
    +      WIN32_SETPEN() -> WIN_SETPEN()
    +      WIN32_STARTDOC() -> WIN_STARTDOC()
    +      WIN32_STARTPAGE() -> WIN_STARTPAGE()
    +      WIN32_TEXTOUT() -> WIN_TEXTOUT()
    +      WIN32PRN class -> WIN_PRN class
    +      WIN32BMP class -> WIN_BMP class  
  • +
  • hbct GPF and wrong RTE messages fixed in: + CHARADD(), CHARSUB(), CHARAND(), CHAROR(), CHARXOR()
    +
  • +
  • hbct string optimizations in thrown RTEs.
    +
  • +
  • hbziparc fixed <acFiles> behavior if the parameter is not passed.
    +
  • +
  • hbhpdf added HPDF_VERSION_TEXT() to replace former macro + with the same name.
    +
  • +
  • hbhpdf fixed HPDF_SETINFODATEATTR() function.
    +
  • +
  • Added experimental terminal server written in Harbour. Find it + in /examples.
    +
  • +
  • hbgt now properly checks for package version and includes + feature accordingly.
    +
  • +
  • hbwin added WAPI_GETCOMMANDLINE(), WIN_GETCOMMANDLINEPARAM(), + WAPI_GETLASTERROR(), WAPI_SETLASTERROR(), WAPI_SETERRORMODE().
    +
  • +
  • hbwhat removed from contrib list and moved to examples instead.
    +
  • +
  • xhb OVERRIDE / EXTEND CLASS emulation in xhbcls.ch header. (this feature is there to help xhb compatibility, but can break
    + inheritance scheme and internal class definitions in both + compilers)
    +
  • +
  • xhb added DBF2TXT() with critical fixes.
    +
  • +
  • xhb added HB_REGEXREPLACE().
    +
  • +
  • hbwin WINPORTWRITE() GPF when wrong parameter type is passed.
    +
  • +
  • Added Darwin/MacPorts support for following contribs: + gtalleg, hbmysql, hbpgsql, sddmy, sddpg, hbfimage.
  • +
  • hbtpathy now builds on Darwin.
  • +
  • xhb disabled dangerous bitop compatibility macros in hbcompat.ch. + Enable them with #define XHB_BITOP. Or even better to change code + to use HB_BIT*() functions natively.
  • +
+
+Known build issues
+
    +
  • Windows 64-bit builds may generate a large amount of type + conversion warnings. This is currently normal and will be + addressed in a future version.
  • +
  • Contrib hbfimage won't currently compile on Linux/Darwin + systems. This will be addressed in a future version.
    +
  • +
  • Contrib hbsqlit3 will not embed foreign sqlite3 library code + for Pelles C 4.5 and Open Watcom 1.7 due to fatal compile problems. + For these compilers you will have to supply sqlite3 library + yourself. For other compilers, some warnings are expected and + normal in this non-Harbour code.
    +
  • +
  • Using Pelles C 5.00.1 in 64-bit mode, HB_INET*() functions + won't work.
    +
  • +
  • Using Pelles C 6.00.6 in 64-bit mode, there will be + missing symbols at link time due to bugs in Pelles C.
    +
  • +
  • gtalleg contrib may not compile on all platforms/compilers.
    +
  • +
  • hbssl won't work with watcom on win platform due to OpenSSL + header compatibility problems.
  • +
+
To download the Harbour v2.0.0 today, please visit our downloads page.
 
 
 

 
  + + + + +
SourceForge Community Choice Awards!
    +
  • May 17, 2009
    +
    + General
    +
  • +
  • The SourceForge.net, one of the largest repositories of open source applications in the world, organizes every year a vote for the community choose the best projects. It is the SourceForge.net Community Choice Awards. Indication of projects begins on May 6 and will end on 29th. The finalists will be known in June and the list of winners must leave at the end of July at OSCON event.
    +
    + Get involved! Nominate us for the 2009 Community Choice Awards here.
  • +
 
 
 

 
 New website released! +
    +
  • February 15, 2009
    +
    + General
    +
  • +
  • Released the new layout for our site.
    + This includes details about the project, several examples and will soon include some tutorials.
  • +
 
 
 

 
 Released 1.0.1 +
    +
  • September 17, 2008
    +
    + General
    +
  • +
  • Build configuration changes:
    + - PRG_USR -> HB_USER_PRGFLAGS
    + - C_USR -> HB_USER_CFLAGS
    + - L_USR -> HB_USER_LDFLAGS
    + - A_USR -> HB_USER_AFLAGS
    + - MK_USR -> HB_USER_MAKEFLAGS
    + - HB_ARCHITECTURE=w32 -> HB_ARCHITECTURE=win
    +
  • +
  • GNU-make system revised to give optimal support -j<n> + multi-threaded parallel builds, which can dramatically + increase build speed in multi-core/multi-CPU systems.
    +
  • +
  • HB_WINCE -> HB_OS_WIN_CE
    +
  • +
  • HB_OS_WIN_32_USED -> HB_OS_WIN_USED
    +
  • +
  • HB_OS_WIN_32 -> HB_OS_WIN
    +
  • +
  • Cleaned references of '32' in context of Windows and + Windows API.
    +
  • +
  • New macro names introduced:
    + - SUCCESS -> HB_SUCCESS
    + - FAILURE -> HB_FAILURE
    + - ERRCODE -> HB_ERRCODE
    + (old ones still work for compatibility, but please
    + switch your code to use the new ones)
    +
  • +
  • Fixed dynamic library creation on Solaris OSes.
    +
  • +
  • hbrun will now open .dbf files when passed on the command line.
    +
  • +
  • Added web-server written in Harbour: uHTTPD
    +
  • +
  • POCC WinCE builds are now supported.
    +
  • +
  • Open Watcom 1.8 (RC3) compiler is now supported.
    +
  • +
  • Removed HB_LEGACY_LEVEL support.
    +
  • +
  • #define HB_FM_WIN32_ALLOC renamed to HB_FM_WIN_ALLOC.
    +
  • +
  • Protected incompatible changes with HB_LEGACY_LEVEL2.
    + (HB_SUCCESS, HB_FAILURE, HB_ERRCODE, HB_WINCE, HB_OS_WIN_32*, + __RDDGETTEMPALIAS(), __HRB*())
    + These features are still available, and will be removed + in next major version (Harbour 1.2). To test your code for + compatibility, you can turn it off manually by #defining + HB_LEGACY_OFF. (HB_USER_CFLAGS=-DHB_LEGACY_OFF)

    +
  • +
+
+ Core
+
    +
  • Added MT (Multi thread) support.
    +
  • +
  • Added complete i18n support with API and tool to compile .po + files (hbi18n).
    +
  • +
  • Added hb_fsCreateTempEx(), hb_fileCreateTempEx() C level APIs.
    +
  • +
  • Fixed to not use C RTL CP dependent character functions in Harbour code. (islower(), toupper(), etc). Added new macros instead.
    +
  • +
  • __NATISNEGATIVE() and __NATISAFFIRM() are now using + CP sensitive case conversion.
    +
  • +
  • Added hb_charIsUpper()/hb_charIsLower() APIs.
    +
  • +
  • CURDRIVE() and DISKNAME() fixed for systems that don't support + drive letters.
    +
  • +
  • Xbase++ compatible TBROWSE()/TBCOLUMN()/GET() related methods
    + moved to derived classes xpp_TBrowse()/xpp_TBColumn()/xpp_Get().
    +
  • +
  • Fixed potential GPF in HB_RASCAN().
    +
  • +
  • Debugger improvements and fixes.
    +
  • +
  • Most Harbour level code prepared for MT.
    +
  • +
  • Fixed few potential GPFs in RDDNTX, RDDCDX code.
    +
  • +
  • Added own hb_snprintf() implementation.
    +
  • +
  • Fixed HB_VERSION( HB_VERSION_BUILD_DATE )
    +
  • +
  • - dded hbuddall library holding all core supplied user RDDs.
    +
  • +
  • Fixed to successfully build all user RDD examples.
    +
  • +
  • Fixed dbCreate() behaviour in arrayrdd user RDD.
    +
  • +
  • Added new LOGRDD user RDD.
    +
  • +
  • Added DBFNSX RDD.
    +
  • +
  • Fixed FWRITE() potential GPF and security hole.
    +
  • +
  • Added __FILE__ support for .prg code.
    +
  • +
  • Added:
    + - HB_MILLISECONDS()
    + - HB_FTEMPCREATEEX( @<cName>, <cDir>, <cPrefix>, <cExt> ) -> <nHandle>
    + - HB_STRDECODESCAPE( <cEscSeqStr> ) -> <cStr>
    + - HB_STRCDECODE( <cStr> [, @<lCont> ] ) -> <cResult> | NIL
    + - HB_STRXOR( <cStr1>, <cStr2> | <nNum> ) -> <cResult>
    + - HB_PROGNAME() -> <cProgramNameWithPath>
    + - HB_DISPOUTATBOX() similar to HB_DISPOUTAT() but for drawing chars.
    + - HB_FGETATTR( <cFileName>, @<nAttr> ) -> <lSuccess>
    + - HB_FSETATTR( <cFileName>, <nAttr> ) -> <lSuccess>
    + - HB_FSETDATETIME( <cFileName>, [<dDate>], [<cTime HH:MM:SS>] ) -> <lSuccess>
    + - HB_WILDMATCHI() like HB_WILDMATCH() but case-insentitive.
    + - HB_CDPSELECT() same as HB_SETCODEPAGE() (please upgrade to new function name).
    + - HB_CDPUNIID( <cHarbourCP> ) -> <cCPName>
    + - HB_GTINFO( HB_GTI_CARGO[, <xValue ] ) -> <xPrevValue>
    +
  • +
  • Fixed UNSELECTED color updating in SetColor().
    +
  • +
  • GTWVT, GTWIN HB_GTI_CODEPAGE support.
    +
  • +
  • GTWVT now supports drawing chars even if the selected codepage doesn't support them.
    +
  • +
  • GTWVT HB_GTI_BOXCP support.
    +
  • +
  • Fixed TBROWSE() to display drawing chars properly.
    +
  • +
  • Fixed DISKSPACE() and HB_DISKSPACE() to return proper values + on Darwin.
    +
  • +
  • Fixed DIRECTORY() when called with "V" (label) parameter (on Windows).
    +
  • +
  • New HB_SIZEOFARRAY() macro.
    +
  • +
  • Added C APIs: + hb_charIsDigit(), hb_charIsAlpha(), hb_charIsLower(), hb_charIsUpper()
    +
  • +
  • Added support to specify OS codepage:
    + Set( _SET_OSCODEPAGE[, <cCPID> ] ) -> <cOldCPID>
    + C level: hb_setGetOSCODEPAGE()
    + Conversion is done automatically in existing functions.
    +
  • +
  • Added hb_osDecode(), hb_osEncode() C APIs.
    +
  • +
  • HB_GETENV() extended with 3rd parameter to control OS codepage conversion (on by default).
    +
  • +
  • Added CPU dump support for AMD64/x64.
    +
  • +
  • Added module listing on GPF for x86 and x64.
    +
  • +
  • GTXWC potential GPF fixed.
    +
  • +
  • Added process handling: + HB_PROCESSOPEN(), HB_PROCESSVALUE(), HB_PROCESSCLOSE()
    +
  • +
  • Added HB_GTI_BOXCP to control box drawing CP for GTs.
    +
  • +
  • Using Heap instead of Local memory when HB_FM_WIN32_ALLOC is set.
    +
  • +
  • Added __objHasMsgAssigned( object, "msgName" )
    +
  • +
  • File find API fixes for OS/2.
    +
  • +
  • DBOI_BAGNAME made compatible for RDDCDX, RDDNSX.
    +
  • +
  • Added Intel C compiler and Wine detection.
    +
  • +
  • Codepage fixes and cleanups (BGMIK).
    +
  • +
  • Fixed cursor handling in TEDITOR/MemoEdit().
    +
  • +
  • Now GTXWC generates HB_K_RESIZE on resize.
    +
  • +
  • GTWIN fixed HB_GTI_KBDSHIFTS handling.
    +
  • +
  • GTWVT added 'layered window' support (always enabled, except + when in Terminal mode).
    +
  • +
  • New compiler expression optimizations, and some fixes for rare + cases.
    +
  • +
  • Some compiler optimizations are now enabled using new -ko switch.
    +
  • +
  • Added array preallocation on AADD().
    +
  • +
  • Optimization to string reallocation.
    +
  • +
  • Added detection of unused variable assigments. Code cleaned + in all Harbour for such warnings.
    +
  • +
  • Fixed possible problem with _SET_PRINTFILE, _SET_DEFAULT, _SET_EXTRAFILE.
    +
  • +
  • __HRB*() functions marked as compatibility, please update your + code to use HB_HRB*().
    +
  • +
  • __RDDGETTEMPALIAS() marked as compatibility, please update your + code to use HB_RDDGETTEMPALIAS().
  • +
+
+ Contrib +
    +
  • hbmzip fixed GPF in HB_ZIPDELETEFILE() when file has comment.
    +
  • +
  • hbmzip fixed handling attributes in HB_ZIPFILECREATE().
    +
  • +
  • hbmzip fixed timestamps stored in .zip files.
    +
  • +
  • hbmzip added HB_ZIPSTOREFILEHANDLE(),HB_UNZIPEXTRACTCURRENTFILETOHANDLE() functions.
    +
  • +
  • hbwin WIN_REGREAD()/GETREGISTRY() got new parameter to supply + a default value when the entry isn't found.
    +
  • +
  • hbtip FTP handling fixed some accidental typos.
    +
  • +
  • hbtip new MIME types.
    +
  • +
  • hbtip fixes and optimization to HB_BASE64().
    +
  • +
  • rddads now autodetects version 9.10.
    +
  • +
  • hbct XTOC(), FTOC() and CTOF() fixed to be properly multiplatform.
    +
  • +
  • hbct unbuffered drawing speed improvement in windowing code.
    +
  • +
  • hbct DIRNAME() fixed.
    +
  • +
  • hbct other fixes.
    +
  • +
  • Added hbcrypt, hbssl and rddsql (with mysql, pgsql, fbsql plugins) + to contribs.
    +
  • +
  • hbct windowing extended with new low level API, better shadow + handling.
    +
  • +
  • gtwvg improvements. Xbase++ compatible UI objects.
    +
  • +
  • hbw32 library renamed to hbwin.
    +
  • +
  • hbwin added WIN_ABORTDOC(), WIN_RUNDETACHED(), WIN_SHELLEXECUTE(), + WIN_LOADRESOURCE().
    +
  • +
  • dbu patch now adds SET DATE ANSI and SET CENTURY ON.
    +
  • +
  • hbwin WIN_MULDIV(), WIN_RECTANGLE(), WIN_SETBKMODE() extended to + accept handles passed using alternate methods.
    +
  • +
  • hbwin function names changed as below:
    + - W32_REGPATHSPLIT() -> WIN_REGPATHSPLIT()
    + - W32_REGREAD() -> WIN_REGREAD()
    + - W32_REGWRITE() -> WIN_REGWRITE()
    + - WIN32_REGCREATEKEYEX() -> WIN_REGCREATEKEYEX()
    + - WIN32_REGOPENKEYEX() -> WIN_REGOPENKEYEX()
    + - WIN32_REGQUERYVALUEEX() -> WIN_REGQUERYVALUEEX()
    + - WIN32_REGSETVALUEEX() -> WIN_REGSETVALUEEX()
    + - WIN32_REGCLOSEKEY() -> WIN_REGCLOSEKEY()
    + - WIN32_ARC() -> WIN_ARC()
    + - WIN32_BITMAPSOK() -> WIN_BITMAPSOK()
    + - WIN32_CREATEDC() -> WIN_CREATEDC()
    + - WIN32_CREATEFONT() -> WIN_CREATEFONT()
    + - WIN32_DELETEDC() -> WIN_DELETEDC()
    + - WIN32_DRAWBITMAP() -> WIN_DRAWBITMAP()
    + - WIN32_ELLIPSE() -> WIN_ELLIPSE()
    + - WIN32_ENDDOC() -> WIN_ENDDOC()
    + - WIN32_ENDPAGE() -> WIN_ENDPAGE()
    + - WIN32_ENUMFONTS() -> WIN_ENUMFONTS()
    + - WIN32_FILLRECT() -> WIN_FILLRECT()
    + - WIN32_GETCHARSIZE() -> WIN_GETCHARSIZE()
    + - WIN32_GETDEVICECAPS() -> WIN_GETDEVICECAPS()
    + - WIN32_GETEXEFILENAME() -> WIN_GETEXEFILENAME()
    + - WIN32_GETPRINTERFONTNAME() -> WIN_GETPRINTERFONTNAME()
    + - WIN32_GETTEXTSIZE() -> WIN_GETTEXTSIZE()
    + - WIN32_LINETO() -> WIN_LINETO()
    + - WIN32_LOADBITMAPFILE() -> WIN_LOADBITMAPFILE()
    + - WIN32_MULDIV() -> WIN_MULDIV()
    + - WIN32_OS_ISWIN9X() -> WIN_OS_ISWIN9X()
    + - WIN32_RECTANGLE() -> WIN_RECTANGLE()
    + - WIN32_SETBKMODE() -> WIN_SETBKMODE()
    + - WIN32_SETCOLOR() -> WIN_SETCOLOR()
    + - WIN32_SETDOCUMENTPROPERTIES() -> WIN_SETDOCUMENTPROPERTIES()
    + - WIN32_SETMAPMODE() -> WIN_SETMAPMODE()
    + - WIN32_SETPEN() -> WIN_SETPEN()
    + - WIN32_STARTDOC() -> WIN_STARTDOC()
    + - WIN32_STARTPAGE() -> WIN_STARTPAGE()
    + - WIN32_TEXTOUT() -> WIN_TEXTOUT()
    + - WIN32PRN class -> WIN_PRN class
    + - WIN32BMP class -> WIN_BMP class
    +
  • +
  • hbct GPF and wrong RTE message fixed in: + CHARADD(), CHARSUB(), CHARAND(), CHAROR(), CHARXOR()
    +
  • +
  • hbct string optimizations in thrown RTEs.
    +
  • +
  • hbziparc fixed <acFiles> behavior if the parameter is not passed.
    +
  • +
  • hbhpdf added HPDF_VERSION_TEXT() to replace former macro with the same name.
  • +
  • hbhpdf fixed HPDF_SETINFODATEATTR() function.
    +
  • +

+ Known build issues
+
    +
  • Windows 64-bit builds may generate a large amount of type + conversion warnings. This is currently normal and will be + addressed in a future version.
  • +
  • Contrib hbsqlit3 will not embed foreign sqlite3 library code + for Pelles C 4.5 and Open Watcom 1.7 due to fatal compile problems. + For these compilers you will have to supply sqlite3 library + yourself. For other compilers, some warnings are expected and + normal in this non-Harbour code.
  • +
  • Using Pelles C 5.00.1 in 64-bit mode, HB_INET*() functions + won't work.
    +
  • +
  • gtalleg, hbwhat contrib may not compile on all platforms/compilers.
    +
  • +
  • hbcurl won't build when using DMC and libcurl 7.19.0. + Earlier versions build okay.
  • +
 
 
 
 
 
 Looking for more news?
+ Click here for news archive...
 
   
 
+ + + + + +
+ + diff --git a/harbour/website/news1.html b/harbour/website/news1.html index 02d923cb79..806cc44c69 100644 --- a/harbour/website/news1.html +++ b/harbour/website/news1.html @@ -1,733 +1,733 @@ - - - - -Harbour Project - News - - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Harbour News 
 This page gives you some of the main changes introduced in recent versions of Harbour project. To view the latest ChangeLog click here or download lastest stable release of Harbour here. 

 
 Release 1.0.0 -
    -
  • August 10, 2008
    -
    - General
    -
  • -
  • Internal errors are now logged to file.
  • -
  • Fixed -gc3 for doubly negated integers.
  • -
  • Changed hb_xrealloc() to be ANSI-C realloc() compatible.
  • -
  • Cleanup of MSVC C mode static initialisation code.
  • -
  • Changed internal representation for file attributes from USHORT to - ULONG.
  • -
  • Fixed memory leak in -gw mode.
  • -
  • Portability fixes (Unicode, 64 bit, Pelles C 32/64 bit, WinCE, eVC4, - XCC, Linux mouse detection, OpenWatcom).
  • -
  • Deployment fixes.
  • -
  • harbour.dll related fixes.
  • -
  • MinGW bash (msys) build related fixes.
    -
    - Core
    -
  • -
  • Fixed __HARBOUR__ macro on .prg level, when compiled with -u switch.
  • -
  • HB_ARRAYID() moved to xhb.lib, synced with xhb and made 64 bit - compatible.
  • -
  • File handle usage cleanup and 64 bit compatibility.
  • -
  • Automatic destructors for .hrb modules.
  • -
  • Added passing non-string parameters to .hrb functions.
  • -
  • Fixed casting for indexes with key length greater then 196 bytes created - on tables with record number smaller then 256 in rddcdx.
  • -
  • New FS API functions: hb_fsSetFileTime(), hb_fsGetFileTime(), - hb_fsSetAttr(), hb_fsGetAttr().
  • -
  • New date API function: hb_timeStampEncode().
  • -
  • Fixed printing under OS/2.
  • -
  • Implemented DBEDIT() DE_APPEND mode plus some other features and - compatibility fixes.
  • -
  • MD5 calculation fixes.
  • -
  • Added C level hb_hashAddNew().
  • -
  • Compile time optimization of EMPTY() function.
  • -
  • Compress trailing spaces during string item serialization.
  • -
  • Replicated CA-Cl*pper compile time optimization bugs.
  • -
  • TCP/IP function (HB_INET*()) fixes.
  • -
  • Added HB_OSFILEMASK(), HB_DIRSCAN(), HB_FILEMATCH() Harbour level - functions.
  • -
  • Fixed RTE in HBReportForm() class.
  • -
  • Added __OBJGETPROPERTIES(), extended __CLSGETPROPERTIES().
  • -
  • Changed (incompatible): __PLATFORM__Windows -> __PLATFORM__WINDOWS - __PLATFORM__Linux -> __PLATFORM__LINUX
  • -
  • hbdot functionality merged into hbrun.
  • -
  • *nix exception handler added.
  • -
  • Source filename visible in stack traces.
    -
    - Contrib
    -
  • -
  • Better cross-build support for contribs with external dependencies.
  • -
  • hbmzip OS/2 support, Unix .zip header fix, using Harbour memory - management functions, global and file comment support, HB_ZIPDELETEFILE() - function.
  • -
  • hbziparch fixes and better portability.
  • -
  • hbcurl fixes, now using Harbour memory allocation functions, now older - libcurl versions are supported as well,
  • -
  • CURL_EASY_GETINFO() fixed for unsupported info types.
  • -
  • 64bit compatibility fixes. hbmysql/SQLLISTF() function now uses pointer - instead of numeric type.
  • -
  • Fixed adordd to be _SET_EXACT independent.
  • -
  • Fixed hbodbc tests to work out of the box.
  • -
  • hbw32, hbodbc 64 bit fixes.
  • -
  • Fixed rddads to behave Clipper-like when trying to write when on EOF - position.
  • -
  • Added OS version detection functions to hbw32.
  • -
  • Fixed HB_INC_* envvar usage in *_all.bat files.
  • -
  • Fixed casting for indexes with key length greater then 196 bytes created - on tables with record number smaller then 256 in hbbmcdx.
  • -
  • hbsqlit3 warning fixes and error fixes for some compilers/modes.
  • -
  • Added DirectoryRecurse() to xhb.lib.
  • -
 
 
 

 
  Release of 1.0.0 RC 2 -
    -
  • July 01, 2008
    -
    - General  
  • -
  • SVN repository cleanup in /tags and /branches
  • -
  • GNU and non-GNU make system configuration moved closer to each other.
  • -
  • Reviewed and fixed platforms issues and compiler warnings  - for the contrib area in most part.
  • -
  • Enhanced contrib 64bit Windows compatibility.
    -
    - Core
    -
  • -
  • _HARBOUR__ macro will now contain value in 0xAABBCC form, where AA, BB - and CC are the major, minor and revision numbers in hex. This is - incompatible, as in previous version .c level __HARBOUR__ did return 0xAABB, - while on .prg level it had no value.
  • -
  • Deprecated hb_itemPutCPtr(). Please use hb_itemPutCLPtr() instead.
  • -
  • Deprecated hb_errFuncName public var. Please use HB_ERR_FUNCNAME - macro instead.
  • -
  • Added hb_itemPutCPtr2().
  • -
  • GTWVT enhancements (mark&copy, resize with mouse, palette handling,
    - some event callbacks, close button control)
  • -
  • Changed SetCancel() interpretation in GTWVT.
  • -
  • hbpp now uses the same engine as the Harbour compiler.
  • -
  • Added Set( _SET_HBOUTLOG[, <cFileName>] ), Set( - _SET_HBOUTLOGINFO[, <cInfo>] )
  • -
  • to customize GPF and memory leak logging.
  • -
  • Added better GPF dumps for Windows.
  • -
  • Fixed clipboard handling on Windows under certain situations.
  • -
  • Optimizations and minor fixes.
    -
    - Contrib
    -
  • -
  • Reviewed and fixed bugs and potential security issues in contribs.
  • -
  • hbziparch updated, bugs fixed and ZipArchive library
    - updated to latest version.
  • -
  • Added DLL call functionality to hbw32 contrib.
  • -
  • Added HB_FREADLINE(), HB_CRYPT(), HB_DECRYPT() to xhb contrib.
  • -
  • Added hbtip contrib tests.
  • -
  • GTWVG contrib enhancements.
  • -
  • Added SQL_SPRINTF() to hbmisc contrib.
  • -
  • Enhanced STRFORMAT() in hbmisc contrib.
  • -
  • Enable hbgf contrib for all (Linux, OS/2, Windows) platforms.
  • -
  • Due to fixing 64bit portability problems, some functions became
    - incompatible, because numeric addresses have been converted to
    - pointer types:
  • -
  • hbwhat32: wndproc/dlgproc parameters in related functions.
  • -
  • hbmysql: SQLCONNECT(), SQLSTORER(), SQLUSERES()
  • -
  • hbmsql: MSQLSTORER(), MSQLLISTFI()
  • -
  • Removed function CEIL() from hbmisc. Please use CEILING() from - hbct
    - instead.
  • -
  • Optimizations and minor fixes.
  • -
 
 
 

 
  Release of 1.0.0 RC 1 -
    -
  • June 04, 2008
    -
    - General
    -
  • -
  • The SourceForge repository was moved from CVS to SVN
  • -
  • added docs/howtosvn.txt
  • -
  • changed pack_src.sh to extract list of files from local SVN copy using
    - SVN commands
  • -
  • improved CYGWIN compatibility
  • -
  • new alternative make system for BCC, MSVC and GCC (maybe others in - the
    - future) which uses common dependences list. The old GNU make system is
    - still functional and working
  • -
  • added support for pure C MSVC builds (not C++)
  • -
  • added rules to generate DEB packages - by Luis Mayoral taken from - Debian
    - distribution updated for current code
  • -
  • added new man pages and updated the old ones taken from Debian
  • -
  • fully removed flex and bison dependences in normal builds. Only - developers
    - who want to change the grammar files needs bison
  • -
  • removed all HB_COMPAT_XHB definitions from source code - now all - covered
    - extensions should be supported by hbcompat.ch and/or xhb library
  • -
  • removed 3-rd party header files from SVN, f.e.: ace.h
    -
    - Portability
    -
  • -
  • eliminated errno access for platforms which do not have it.
  • -
  • added support for PocketPC WINCE with MSVC, POCC, CeGCC and - MinGWCE.
  • -
  • added support for cross WinCE builds
  • -
  • extended hb* scripts for cross builds: hbw* - Win32, hbce* - WinCE
  • -
  • added support for creating RPMs with Harbour cross build for Win32 - and
    - WinCE.
  • -
  • added support for MS-Windows UNICDE builds.
  • -
  • added support for shared libraries (.sl) in HPUX builds
  • -
  • added large file support (64bit) in HPUX builds
  • -
  • disabled in default BSD* builds DOS/Windows DENY_* flags emulation
    - implemented by BSD locks - tests on FreeBSD 6.2 and MacOSX shows
    - that it badly interacts with POSIX locks and it's possible to create
    - deadlock.
    -
    - The Compiler - Syntax
    -
  • -
  • added direct support to compiler for ENDSW[ICTH], ENDDO, - ENDC[ASE], ENDI[F],ENDW[ITH], ENDSEQ[UENCE]
    - Now they are not translated by preprocessor to END what allows better typos
    - detection in .prg code because each statement can use its own unique close
    - directive
  • -
  • forbidden using EXIT and LOOP inside ALWAYS code in BEGIN/END - sequence
  • -
  • forbidden using ALWAYS statement if RECOVER code has EXIT or LOOP
    - statement
  • -
  • removed some restrictions on reserved words like using IF, IIF, - _FIELD
    - as field name
  • -
  • added support for (@var):<msg>
  • -
  • fixed many syntax expressions which where accepted by grammar - definition
    - but not supported by compiler, f.e. @func(p)
  • -
  • added support for HB_ENUM*([@]<varname>) functions - disabled
    - by default can be enabled by HB_USE_ENUM_FUNCTIONS macro
  • -
  • added support for DYNAMIC functions - references resolved at - runtime.
    -
    - Internals  
  • -
  • fixed LOOP used inside SWITCH/CASE.../END[SWITCH] statements
  • -
  • fixed using EXIT/LOOP inside WITH OBJECT / END[WITH] statement
  • -
  • fixed optimization of empty BEGIN/END sequence when recover has
    - EXIT or LOOP statement
  • -
  •  fixed using EXIT/LOOP inside extended codeblocks when loop is
    - external to codeblock definition
  • -
  •  fixed using RETURN inside extended codeblocks when they are - defined
    - inside BEGIN SEQUENCE statement
  • -
  • many other fixes for problems which can appears in nested extended
    - codeblock definitions
  • -
  • fixed problems with line numbering in extended code blocks
  • -
  • fixed compiler -w3 warning when class has different name then - class
    - function.
  • -
  • optimizations in generated PCODE and extended compile time - optimizations
  • -
  • added support for --version compiler switch for platforms which
    - use '-' as option separator
  • -
  • added new compiler switches:
    - -q2 - disable _ALL_ stdout/stderr messages
    - -kM - turn off macrotext substitution
    - -ks - changed to pass base value by reference what allow full []
    - operator overloading
  • -
  • added new compiler switches for automatic filename, pathname and - path
    - separators translations (-fn*, -fd*, -fs*, -fp*) used for file open
    - during compilation
  • -
  • added support for dynamically set during compilation ChangeLog entry,
    - ChangeLog ID, SVN revision and compilation flags.
    - Update Harbour logo message to show the exact revision number and removed - non-working compiler frontends: .NET CLI and JAVA.
  • -
  • added support for i18n into compiler (-j[<filename>] switch)
    - gettext compatible .pot files are generated
    -
    - Preprocessor
    -
  • -
  •  added support for logical constants .T., .F., .Y., .N. in #IF ... / #ELIF ... PP directives
    -
  • -
  • added support for changing all -k? switches by #pragma, f.e.;
    - #pragma -ks+
    - #pragma -kM-
    - #pragma -kx1
    - #pragma -kJ0
  • -
  • added to PP predefined defines: HB_VER_LENTRY, HB_VER_CHLID, - HB_VER_SVNID
  • -
  • with ChangeLog entry, ChangeLog ID and SVN revision
  • -
  •  added to PP support for:
    - #pragma __[c]streaminclude "fileName"|<code with % result marker>
    -
    - The Runtime Modules
    -
  • -
  •  renamed core libraries
  • -
  •  cleaned code and guards all extensions to pure CL5[23] with - HB_EXTENSION
    - macro.
  • -
  •  turned off HB_EXTENSION for the default builds.
    -
    - API
    -
  • -
  • added C functions to access SET values (hb_setGet*()) which should - be used
    - instead of direct accessing HB_SET structure
  • -
  • added hb_fsFileExists() and hb_fsDirExists()
  • -
  • added hb_arraySet*() functions - they should help 3-rd party - developers
    - to eliminate using C stack level HB_ITEM and reduce usage of potentially
    - danger function like hb_arrayGetItemPtr()
  • -
  • added hb_itemParamStore[Forward]() functions
  • -
  • added hb_dateMilliSeconds()
    -
    - VM
    -
  • -
  • FOR EACH detached enumerators now does not change on next iterations
  • -
  • added support for scalar classes with operator overloading
  • -
  • added full support for passing object items by reference even if - they
    - are not real variables but SETGET methods
  • -
  • added support for setting string characters by assigning FOR EACH
    - iterator, f.e.: FOR EACH c IN (@cVar)
    - c := Upper( c )
    - NEXT
  • -
  • added full support for FOR EACH overloading
  • -
  • extended PROCFILE() function - now it can accept <nLevel> | <sFuncSym> - |
    - <cFuncName> as first parameter, f.e.: PROCFILE( @someFunc() ) or
    - PROCFILE( "PUBLICFUNC" ) or PROCFILE( nStackLevel ). For non character
    - parameters it fully works also for static functions even if source code
    - have many static functions with the same name
  • -
  • added support for detecting not cleanly overloaded by linker .prg
    - functions.
  • -
  • cleaned PCODE module unload procedure.
  • -
  • added support for executing all inherited multiple object - destructors.
    -
    - Debbuger
    -
  • -
  • many fixes and extensions in debugger code mostly by Phil Krylov - borrowed
    - from xHarbour
  • -
  • added to debugger support for inspecting objects which use hidden
    - methods and members with the same names in different classes in
    - inheritance tree - now context is dynamically changed
    -
    - RTL
    -
  • -
  • added functions for translation to/from UTF8 mode and operations
    - on UTF8 strings
  • -
  • added functions for bit manipulations: HB_BIT*() and for - conversions
    - to/from hexadecimal format
  • -
  • added set of functions with hb_ prefix supported extended - parameters,
    - f.e.: HB_AINS(), HB_ADEL(), HB_ASCAN(), HB_RASCAN(), HB_GETENV(),
    - HB_AT(), ...
  • -
  •  added HB_FILEEXISTS(), HB_DIREXISTS()
  • -
  •  new TBROWSE class which is now very highly compatible with Clipper
    - It should resolve 99.9&percnt; problems with BROWSE reported in the past.
  • -
  •  TBCOLUMN class is now fully Clipper compatible
  • -
  •  many fixes and cleanups in TGET class
  • -
  •  many fixes to GETSYS functionality, especially 5.3 compatible - features.
  • -
  •  many fixes and cleanups in CL53 classes like TOPBAR, POPUP, - MENUSYS,
    - MENUITEM and related functions.
  • -
  •  Made C5.3 UI classes fully working and compatible.
  • -
  •  ERROR class rewritten in C so now it's possible to create new - error
    - objects also with active exceptions
  • -
  •  added missing support for _SET_FILECASE, _SET_DIRCASE switches in - some
    - functions
  • -
  •  added _SET_TRIMFILENAME - when enabled low level hb_fs*() - functions strip
    - trailing and leading spaces from file names to emulate DOS like behavior
  • -
  •  added support for _SET_DEFEXTENSIONS to native all RDDs
  • -
  •  many fixes in transform() function and fixed 64bit integer - transformation.
    - Now transform() passes our all compatibility tests
  • -
  •  added undocumented Clipper error functions
  • -
  • - added functions to manage .ini files: HB_INI*()
  • -
  •  extended HB_KEYPUT to support strings and arrays.
  • -
  •  converted HIDDEN methods and members in RTL objects to PROTECTED - for
    - easier class extension in user code
  • -
  •  added many undocumented Clipper's C and .prg functions.
  • -
  •  added hbzlib and Harbour level compression functions.
  • -
  •  PCRE library updated to version 7.7.
    -
    - Macro Compiler
    -
  • -
  •  removed some restrictions on reserved words like using IF, IIF, - _FIELD
    - as field name
    -
    - Compiler
    -
  • -
  • added support for full compiler code integration with compiled programs
    - WARNING: Please remember that compiler in Harbour is covered by pure GPL
    - license and final programs should respect it so use compiler library
    - only with programs which respects GPL.
    -
    - GT
    -
  • -
  •  Added new GT driver GTTRM. It's terminal GT which can be used in - different
    - *nixes. Unlike GTCRS or GTSLN it does not use any external libraries
    - like [n]curses or slang or databases with terminal description (termcap/
    - terminfo). It has hard coded support only for few terminals (Linux,ANSI,
    - XTERM) but because uses only very limited set of escape sequences then
    - on most currently used terminals it works better then curses or slang
    - based programs. GTTRM automatically detects ISO/UTF8 terminal mode at
    - startup and chose valid output what should also help *nix users - it
    - resolves problems with some box drawing characters and others which
    - are not accessible in ISO mode. It also respects /etc/harbour/hb-charmap.def
    - like GTCRS.
    -
    - As long as user code does not execute and full screen commands then
    - it works like GTSTD so can be used also for simple stream programs.
  • -
  •  added new GT driver GTWVG. It's works like GTWVT but has - additional
    - support for GUI elements
  • -
  •  changed GTI_* defines to HB_GTI_*
  • -
  •  added optional hb_gtInfo() switch HB_GTI_COMPATBUFFER which can - force
    - using DOS compatible video buffers in all GTs. Anyhow please remember
    - that it may cause that some extended information stored by GT driver
    - in video buffer will be lost.
  • -
  •  added HB_GTI_ADDKEYMAP and HB_GTI_DELKEYMAP to define/remove new
    - escape key sequences in terminal based GTs. It's supported by
    - GTCRS and GTTRM
  • -
  •  fixed color string decoding to be fully Clipper compatible
  • -
  •  OUTSTD()/OUTERR() respects automatic CP translation when they
    - are not redirected to GT screen
  • -
  •  added common for all GTs CLIPBOARD support. If possible low level - GT
    - drivers uses system clipboard otherwise they emulate it for Harbour
    - application only
    -
    - Multilangual
    -
  • -
  •  added new lang and codepage modules: SK, BG, BE, HR, UA, LT, SV, - etc.
  • -
  •  updated codepage code for better handling accented and multibyte - characters.
    -
    - RDD 
    -
  • -
  • added support for memo file packing in PACK operation
  • -
  •  added new DBF fields like: AUTOINC (+), ROWVERSION (^), TIME (T),
    - DAYTIME (@/T), MODTIME (=), binary integers with fixed decimal places, etc.
  • -
  •  removed limit for maximum size of relation string expression
  • -
  •  fixed registering workareas with numbers from 65280 to 65534.
  • -
  •  added SIX3 compatible library - now Harbour supports all SIX3 - functions
    - and extensions like triggers. The HiPer-SEEK and CFTS (HS_*() and CFS*()
    - functions) was added before in hsx library. Now only bitmap filters
    - (m6_*() functions) are not supported in SVN Harbour version.
    -
    - Contrib
    -
  • -
  •  renamed contrib libraries
  • -
  •  TIP library borrowed from xHarbour and adopted to Harbour
  • -
  •  added HBCURL - libcurl interface library. (rooted from the - xHarbour version, but heavily fixed and further developed.)
  • -
  •  added HBSQLIT3 - SQLite 3.x Harbour callable library.
  • -
  •  fixes in MySQL and PGSQL library
  • -
  •  cleanup and many fixes in NF library
  • -
  •  cleanup code of CT3 library with many modifications and fixes
  • -
  • most of in/out CT3 functions rewritten to use GT API so now they can - work
    - on all platforms and with all GTs
  • -
  • added support for contrib libraries and new make system
  • -
  •  many contrib libraries borrowed from xHarbour code
  • -
  •  added xHarbour compatibility library: xhb. It emulates many of - xHarbour
    - behavior which cannot be covered by PP rules like extended operators,
    - strings like arrays, one byte string in math operations, HB_ENUMINDEX(),
    - HB_QWith(), HB_QSelf(), accessing hash item using OOP interface,
    - accessing/assigning string characters using [] operators (many of the
    - above fully works only in Harbour but not in native xHarbour code :-))
    - and many extensions like HBLOG, HBXML, HBCSTRUCT, HASH, INET*(), etc.
  • -
  •  added HBTPATHY - Telepath(y) compatible comm. library.
  • -
  •  added HBWHAT32 - Windows API interface.
  • -
  •  added HBFBIRD - Firebird db access interface.
  • -
  •  added hbcompat.ch file which hides many differences between - Harbour
    - and xHarbour compilers using PP directives.
  • -
  •  added hbmzip library - it's wrapper to MINIZIP library which
    - allows for compress and decompress streams, character variables,
    - .gz and .zip files
  • -
  •  fixes and extensions in ADORDD
  • -
  •  added automatic ACE version detection during building ADSRDD
  • -
  •  added many new Ads*() functions wrappers and cleaned code for
    - possible GPFs when wrong parameters were passed to some functions
  • -
  •  added HBHPDF - interface for Haru Free PDF Library.
  • -
  •  added HBVPDF - Viktor K's PDF Library + Pritpal Bedi's OOP - extension.
  • -
  • enhanced and fixed HBW32 library - OLE and printing
    -
    - Utilities
    -
  • -
  • added HBDOT utility program. It's a "Dot Prompt" Console for the
    - Harbour Language
    - Syntax: hbdot [<hrbfile[.prg]> [<parameters,...>]]
    - It should look and work in similar way to pp/xBaseScript
    - by Ron Pinkas but unlike xBaseScript is does not have preprocessor
    - or simulated runtime environment but simply uses Harbour pp and
    - compiler libraries to preprocess and compile commands. It means
    - that it supports all language constructions also statements, f.e.:
    - "for i:=1 to 10; ? i; next"
    -
    - Additionally it can also compile and execute .prg files given as
    - first parameter just like hbrun.
    -
  • -
  • added many new tests to hbtest
    -
  • -
  • renamed ppgen to hbppgen.
  • -
 
 
 
 
 
 Release of - Beta 3 ( 0.99.3 ) - -
    -
  • May 1, 2007
    -
    - General
  • -
  • added support for writable string enumerators (s:="abc";for each c in @s;...)
  • -
  • cleaned the syntax and strange unsupported but accepted by [macro]compiler
  • - constructions -
  • added BEGIN SEQUENCE [WITH - ] / RECOVER [USING - ] / - ALWAYS / END - -
  • -
  • new debugger code with low level C interface borrowed from xHarbour
  • -
  • added hash tables
  • -
  • speed improvement
  • -
  • added regular expressions
  • -
  • added internet sockets
  • -
  • added checksum functions
  • -
  • added support for execution .prg scripts in hbrun
  • -
  • added HB_COMPAT_XHB macro which allows to enable many xHarbour extensions
  • -
  • added to default PP tables defines from hbsetup.ch
  • -
  • added #ytranslate, #ycommand, #yuntranslate, #yuncommand
  • -
  • fixes in BROWSE, GET and some other .prg classes
  • -
  • fixed UTF8/UNICODE translations for control characters in GTSLN and GTXWC
  • -
  • cleaned many memory leaks in Compiler
  • -
  • added separated compiler library which can be linked with VM and RTL libraries
  • -
  • cleaned some possible bad side effects in cross references
  • -
  • many other fixes, improvements and extensions - see ChangeLog for details
  • -
 
 
 
 
 
 Release of Beta 2 ( 0.99.2 ) -
    -
  • March 28, 2007
  • -
-
- General
-
    -
  • fixed all problems reported after Beta1 release
  • -
 
 
 
 
 
 Release of Beta 1 ( 0.99.1 ) -
    -
  • January 22, 2007
  • -
-
- General
-
    -
  • There are a lot of changes, additions, bug fixes in all subsystems - see whatsnew.txt for details.
  • -
 
 
 
 
 
 Release of Alpha build 46 -
    -
  • June 05, 2006
  • -
-
- General
-
    -
  • There are a lot of changes, additions, bug fixes in all subsystems - see whatsnew.txt for details.
  • -
 
 
 
 
 
 
- - - - - -
- - + + + + +Harbour Project - News + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Harbour News 
 This page gives you some of the main changes introduced in recent versions of Harbour project. To view the latest ChangeLog click here or download lastest stable release of Harbour here. 

 
 Release 1.0.0 +
    +
  • August 10, 2008
    +
    + General
    +
  • +
  • Internal errors are now logged to file.
  • +
  • Fixed -gc3 for doubly negated integers.
  • +
  • Changed hb_xrealloc() to be ANSI-C realloc() compatible.
  • +
  • Cleanup of MSVC C mode static initialisation code.
  • +
  • Changed internal representation for file attributes from USHORT to + ULONG.
  • +
  • Fixed memory leak in -gw mode.
  • +
  • Portability fixes (Unicode, 64 bit, Pelles C 32/64 bit, WinCE, eVC4, + XCC, Linux mouse detection, OpenWatcom).
  • +
  • Deployment fixes.
  • +
  • harbour.dll related fixes.
  • +
  • MinGW bash (msys) build related fixes.
    +
    + Core
    +
  • +
  • Fixed __HARBOUR__ macro on .prg level, when compiled with -u switch.
  • +
  • HB_ARRAYID() moved to xhb.lib, synced with xhb and made 64 bit + compatible.
  • +
  • File handle usage cleanup and 64 bit compatibility.
  • +
  • Automatic destructors for .hrb modules.
  • +
  • Added passing non-string parameters to .hrb functions.
  • +
  • Fixed casting for indexes with key length greater then 196 bytes created + on tables with record number smaller then 256 in rddcdx.
  • +
  • New FS API functions: hb_fsSetFileTime(), hb_fsGetFileTime(), + hb_fsSetAttr(), hb_fsGetAttr().
  • +
  • New date API function: hb_timeStampEncode().
  • +
  • Fixed printing under OS/2.
  • +
  • Implemented DBEDIT() DE_APPEND mode plus some other features and + compatibility fixes.
  • +
  • MD5 calculation fixes.
  • +
  • Added C level hb_hashAddNew().
  • +
  • Compile time optimization of EMPTY() function.
  • +
  • Compress trailing spaces during string item serialization.
  • +
  • Replicated CA-Cl*pper compile time optimization bugs.
  • +
  • TCP/IP function (HB_INET*()) fixes.
  • +
  • Added HB_OSFILEMASK(), HB_DIRSCAN(), HB_FILEMATCH() Harbour level + functions.
  • +
  • Fixed RTE in HBReportForm() class.
  • +
  • Added __OBJGETPROPERTIES(), extended __CLSGETPROPERTIES().
  • +
  • Changed (incompatible): __PLATFORM__Windows -> __PLATFORM__WINDOWS + __PLATFORM__Linux -> __PLATFORM__LINUX
  • +
  • hbdot functionality merged into hbrun.
  • +
  • *nix exception handler added.
  • +
  • Source filename visible in stack traces.
    +
    + Contrib
    +
  • +
  • Better cross-build support for contribs with external dependencies.
  • +
  • hbmzip OS/2 support, Unix .zip header fix, using Harbour memory + management functions, global and file comment support, HB_ZIPDELETEFILE() + function.
  • +
  • hbziparch fixes and better portability.
  • +
  • hbcurl fixes, now using Harbour memory allocation functions, now older + libcurl versions are supported as well,
  • +
  • CURL_EASY_GETINFO() fixed for unsupported info types.
  • +
  • 64bit compatibility fixes. hbmysql/SQLLISTF() function now uses pointer + instead of numeric type.
  • +
  • Fixed adordd to be _SET_EXACT independent.
  • +
  • Fixed hbodbc tests to work out of the box.
  • +
  • hbw32, hbodbc 64 bit fixes.
  • +
  • Fixed rddads to behave Clipper-like when trying to write when on EOF + position.
  • +
  • Added OS version detection functions to hbw32.
  • +
  • Fixed HB_INC_* envvar usage in *_all.bat files.
  • +
  • Fixed casting for indexes with key length greater then 196 bytes created + on tables with record number smaller then 256 in hbbmcdx.
  • +
  • hbsqlit3 warning fixes and error fixes for some compilers/modes.
  • +
  • Added DirectoryRecurse() to xhb.lib.
  • +
 
 
 

 
  Release of 1.0.0 RC 2 +
    +
  • July 01, 2008
    +
    + General  
  • +
  • SVN repository cleanup in /tags and /branches
  • +
  • GNU and non-GNU make system configuration moved closer to each other.
  • +
  • Reviewed and fixed platforms issues and compiler warnings  + for the contrib area in most part.
  • +
  • Enhanced contrib 64bit Windows compatibility.
    +
    + Core
    +
  • +
  • _HARBOUR__ macro will now contain value in 0xAABBCC form, where AA, BB + and CC are the major, minor and revision numbers in hex. This is + incompatible, as in previous version .c level __HARBOUR__ did return 0xAABB, + while on .prg level it had no value.
  • +
  • Deprecated hb_itemPutCPtr(). Please use hb_itemPutCLPtr() instead.
  • +
  • Deprecated hb_errFuncName public var. Please use HB_ERR_FUNCNAME + macro instead.
  • +
  • Added hb_itemPutCPtr2().
  • +
  • GTWVT enhancements (mark&copy, resize with mouse, palette handling,
    + some event callbacks, close button control)
  • +
  • Changed SetCancel() interpretation in GTWVT.
  • +
  • hbpp now uses the same engine as the Harbour compiler.
  • +
  • Added Set( _SET_HBOUTLOG[, <cFileName>] ), Set( + _SET_HBOUTLOGINFO[, <cInfo>] )
  • +
  • to customize GPF and memory leak logging.
  • +
  • Added better GPF dumps for Windows.
  • +
  • Fixed clipboard handling on Windows under certain situations.
  • +
  • Optimizations and minor fixes.
    +
    + Contrib
    +
  • +
  • Reviewed and fixed bugs and potential security issues in contribs.
  • +
  • hbziparch updated, bugs fixed and ZipArchive library
    + updated to latest version.
  • +
  • Added DLL call functionality to hbw32 contrib.
  • +
  • Added HB_FREADLINE(), HB_CRYPT(), HB_DECRYPT() to xhb contrib.
  • +
  • Added hbtip contrib tests.
  • +
  • GTWVG contrib enhancements.
  • +
  • Added SQL_SPRINTF() to hbmisc contrib.
  • +
  • Enhanced STRFORMAT() in hbmisc contrib.
  • +
  • Enable hbgf contrib for all (Linux, OS/2, Windows) platforms.
  • +
  • Due to fixing 64bit portability problems, some functions became
    + incompatible, because numeric addresses have been converted to
    + pointer types:
  • +
  • hbwhat32: wndproc/dlgproc parameters in related functions.
  • +
  • hbmysql: SQLCONNECT(), SQLSTORER(), SQLUSERES()
  • +
  • hbmsql: MSQLSTORER(), MSQLLISTFI()
  • +
  • Removed function CEIL() from hbmisc. Please use CEILING() from + hbct
    + instead.
  • +
  • Optimizations and minor fixes.
  • +
 
 
 

 
  Release of 1.0.0 RC 1 +
    +
  • June 04, 2008
    +
    + General
    +
  • +
  • The SourceForge repository was moved from CVS to SVN
  • +
  • added docs/howtosvn.txt
  • +
  • changed pack_src.sh to extract list of files from local SVN copy using
    + SVN commands
  • +
  • improved CYGWIN compatibility
  • +
  • new alternative make system for BCC, MSVC and GCC (maybe others in + the
    + future) which uses common dependences list. The old GNU make system is
    + still functional and working
  • +
  • added support for pure C MSVC builds (not C++)
  • +
  • added rules to generate DEB packages - by Luis Mayoral taken from + Debian
    + distribution updated for current code
  • +
  • added new man pages and updated the old ones taken from Debian
  • +
  • fully removed flex and bison dependences in normal builds. Only + developers
    + who want to change the grammar files needs bison
  • +
  • removed all HB_COMPAT_XHB definitions from source code - now all + covered
    + extensions should be supported by hbcompat.ch and/or xhb library
  • +
  • removed 3-rd party header files from SVN, f.e.: ace.h
    +
    + Portability
    +
  • +
  • eliminated errno access for platforms which do not have it.
  • +
  • added support for PocketPC WINCE with MSVC, POCC, CeGCC and + MinGWCE.
  • +
  • added support for cross WinCE builds
  • +
  • extended hb* scripts for cross builds: hbw* - Win32, hbce* - WinCE
  • +
  • added support for creating RPMs with Harbour cross build for Win32 + and
    + WinCE.
  • +
  • added support for MS-Windows UNICDE builds.
  • +
  • added support for shared libraries (.sl) in HPUX builds
  • +
  • added large file support (64bit) in HPUX builds
  • +
  • disabled in default BSD* builds DOS/Windows DENY_* flags emulation
    + implemented by BSD locks - tests on FreeBSD 6.2 and MacOSX shows
    + that it badly interacts with POSIX locks and it's possible to create
    + deadlock.
    +
    + The Compiler + Syntax
    +
  • +
  • added direct support to compiler for ENDSW[ICTH], ENDDO, + ENDC[ASE], ENDI[F],ENDW[ITH], ENDSEQ[UENCE]
    + Now they are not translated by preprocessor to END what allows better typos
    + detection in .prg code because each statement can use its own unique close
    + directive
  • +
  • forbidden using EXIT and LOOP inside ALWAYS code in BEGIN/END + sequence
  • +
  • forbidden using ALWAYS statement if RECOVER code has EXIT or LOOP
    + statement
  • +
  • removed some restrictions on reserved words like using IF, IIF, + _FIELD
    + as field name
  • +
  • added support for (@var):<msg>
  • +
  • fixed many syntax expressions which where accepted by grammar + definition
    + but not supported by compiler, f.e. @func(p)
  • +
  • added support for HB_ENUM*([@]<varname>) functions - disabled
    + by default can be enabled by HB_USE_ENUM_FUNCTIONS macro
  • +
  • added support for DYNAMIC functions - references resolved at + runtime.
    +
    + Internals  
  • +
  • fixed LOOP used inside SWITCH/CASE.../END[SWITCH] statements
  • +
  • fixed using EXIT/LOOP inside WITH OBJECT / END[WITH] statement
  • +
  • fixed optimization of empty BEGIN/END sequence when recover has
    + EXIT or LOOP statement
  • +
  •  fixed using EXIT/LOOP inside extended codeblocks when loop is
    + external to codeblock definition
  • +
  •  fixed using RETURN inside extended codeblocks when they are + defined
    + inside BEGIN SEQUENCE statement
  • +
  • many other fixes for problems which can appears in nested extended
    + codeblock definitions
  • +
  • fixed problems with line numbering in extended code blocks
  • +
  • fixed compiler -w3 warning when class has different name then + class
    + function.
  • +
  • optimizations in generated PCODE and extended compile time + optimizations
  • +
  • added support for --version compiler switch for platforms which
    + use '-' as option separator
  • +
  • added new compiler switches:
    + -q2 - disable _ALL_ stdout/stderr messages
    + -kM - turn off macrotext substitution
    + -ks - changed to pass base value by reference what allow full []
    + operator overloading
  • +
  • added new compiler switches for automatic filename, pathname and + path
    + separators translations (-fn*, -fd*, -fs*, -fp*) used for file open
    + during compilation
  • +
  • added support for dynamically set during compilation ChangeLog entry,
    + ChangeLog ID, SVN revision and compilation flags.
    + Update Harbour logo message to show the exact revision number and removed + non-working compiler frontends: .NET CLI and JAVA.
  • +
  • added support for i18n into compiler (-j[<filename>] switch)
    + gettext compatible .pot files are generated
    +
    + Preprocessor
    +
  • +
  •  added support for logical constants .T., .F., .Y., .N. in #IF ... / #ELIF ... PP directives
    +
  • +
  • added support for changing all -k? switches by #pragma, f.e.;
    + #pragma -ks+
    + #pragma -kM-
    + #pragma -kx1
    + #pragma -kJ0
  • +
  • added to PP predefined defines: HB_VER_LENTRY, HB_VER_CHLID, + HB_VER_SVNID
  • +
  • with ChangeLog entry, ChangeLog ID and SVN revision
  • +
  •  added to PP support for:
    + #pragma __[c]streaminclude "fileName"|<code with % result marker>
    +
    + The Runtime Modules
    +
  • +
  •  renamed core libraries
  • +
  •  cleaned code and guards all extensions to pure CL5[23] with + HB_EXTENSION
    + macro.
  • +
  •  turned off HB_EXTENSION for the default builds.
    +
    + API
    +
  • +
  • added C functions to access SET values (hb_setGet*()) which should + be used
    + instead of direct accessing HB_SET structure
  • +
  • added hb_fsFileExists() and hb_fsDirExists()
  • +
  • added hb_arraySet*() functions - they should help 3-rd party + developers
    + to eliminate using C stack level HB_ITEM and reduce usage of potentially
    + danger function like hb_arrayGetItemPtr()
  • +
  • added hb_itemParamStore[Forward]() functions
  • +
  • added hb_dateMilliSeconds()
    +
    + VM
    +
  • +
  • FOR EACH detached enumerators now does not change on next iterations
  • +
  • added support for scalar classes with operator overloading
  • +
  • added full support for passing object items by reference even if + they
    + are not real variables but SETGET methods
  • +
  • added support for setting string characters by assigning FOR EACH
    + iterator, f.e.: FOR EACH c IN (@cVar)
    + c := Upper( c )
    + NEXT
  • +
  • added full support for FOR EACH overloading
  • +
  • extended PROCFILE() function - now it can accept <nLevel> | <sFuncSym> + |
    + <cFuncName> as first parameter, f.e.: PROCFILE( @someFunc() ) or
    + PROCFILE( "PUBLICFUNC" ) or PROCFILE( nStackLevel ). For non character
    + parameters it fully works also for static functions even if source code
    + have many static functions with the same name
  • +
  • added support for detecting not cleanly overloaded by linker .prg
    + functions.
  • +
  • cleaned PCODE module unload procedure.
  • +
  • added support for executing all inherited multiple object + destructors.
    +
    + Debbuger
    +
  • +
  • many fixes and extensions in debugger code mostly by Phil Krylov + borrowed
    + from xHarbour
  • +
  • added to debugger support for inspecting objects which use hidden
    + methods and members with the same names in different classes in
    + inheritance tree - now context is dynamically changed
    +
    + RTL
    +
  • +
  • added functions for translation to/from UTF8 mode and operations
    + on UTF8 strings
  • +
  • added functions for bit manipulations: HB_BIT*() and for + conversions
    + to/from hexadecimal format
  • +
  • added set of functions with hb_ prefix supported extended + parameters,
    + f.e.: HB_AINS(), HB_ADEL(), HB_ASCAN(), HB_RASCAN(), HB_GETENV(),
    + HB_AT(), ...
  • +
  •  added HB_FILEEXISTS(), HB_DIREXISTS()
  • +
  •  new TBROWSE class which is now very highly compatible with Clipper
    + It should resolve 99.9&percnt; problems with BROWSE reported in the past.
  • +
  •  TBCOLUMN class is now fully Clipper compatible
  • +
  •  many fixes and cleanups in TGET class
  • +
  •  many fixes to GETSYS functionality, especially 5.3 compatible + features.
  • +
  •  many fixes and cleanups in CL53 classes like TOPBAR, POPUP, + MENUSYS,
    + MENUITEM and related functions.
  • +
  •  Made C5.3 UI classes fully working and compatible.
  • +
  •  ERROR class rewritten in C so now it's possible to create new + error
    + objects also with active exceptions
  • +
  •  added missing support for _SET_FILECASE, _SET_DIRCASE switches in + some
    + functions
  • +
  •  added _SET_TRIMFILENAME - when enabled low level hb_fs*() + functions strip
    + trailing and leading spaces from file names to emulate DOS like behavior
  • +
  •  added support for _SET_DEFEXTENSIONS to native all RDDs
  • +
  •  many fixes in transform() function and fixed 64bit integer + transformation.
    + Now transform() passes our all compatibility tests
  • +
  •  added undocumented Clipper error functions
  • +
  • - added functions to manage .ini files: HB_INI*()
  • +
  •  extended HB_KEYPUT to support strings and arrays.
  • +
  •  converted HIDDEN methods and members in RTL objects to PROTECTED + for
    + easier class extension in user code
  • +
  •  added many undocumented Clipper's C and .prg functions.
  • +
  •  added hbzlib and Harbour level compression functions.
  • +
  •  PCRE library updated to version 7.7.
    +
    + Macro Compiler
    +
  • +
  •  removed some restrictions on reserved words like using IF, IIF, + _FIELD
    + as field name
    +
    + Compiler
    +
  • +
  • added support for full compiler code integration with compiled programs
    + WARNING: Please remember that compiler in Harbour is covered by pure GPL
    + license and final programs should respect it so use compiler library
    + only with programs which respects GPL.
    +
    + GT
    +
  • +
  •  Added new GT driver GTTRM. It's terminal GT which can be used in + different
    + *nixes. Unlike GTCRS or GTSLN it does not use any external libraries
    + like [n]curses or slang or databases with terminal description (termcap/
    + terminfo). It has hard coded support only for few terminals (Linux,ANSI,
    + XTERM) but because uses only very limited set of escape sequences then
    + on most currently used terminals it works better then curses or slang
    + based programs. GTTRM automatically detects ISO/UTF8 terminal mode at
    + startup and chose valid output what should also help *nix users - it
    + resolves problems with some box drawing characters and others which
    + are not accessible in ISO mode. It also respects /etc/harbour/hb-charmap.def
    + like GTCRS.
    +
    + As long as user code does not execute and full screen commands then
    + it works like GTSTD so can be used also for simple stream programs.
  • +
  •  added new GT driver GTWVG. It's works like GTWVT but has + additional
    + support for GUI elements
  • +
  •  changed GTI_* defines to HB_GTI_*
  • +
  •  added optional hb_gtInfo() switch HB_GTI_COMPATBUFFER which can + force
    + using DOS compatible video buffers in all GTs. Anyhow please remember
    + that it may cause that some extended information stored by GT driver
    + in video buffer will be lost.
  • +
  •  added HB_GTI_ADDKEYMAP and HB_GTI_DELKEYMAP to define/remove new
    + escape key sequences in terminal based GTs. It's supported by
    + GTCRS and GTTRM
  • +
  •  fixed color string decoding to be fully Clipper compatible
  • +
  •  OUTSTD()/OUTERR() respects automatic CP translation when they
    + are not redirected to GT screen
  • +
  •  added common for all GTs CLIPBOARD support. If possible low level + GT
    + drivers uses system clipboard otherwise they emulate it for Harbour
    + application only
    +
    + Multilangual
    +
  • +
  •  added new lang and codepage modules: SK, BG, BE, HR, UA, LT, SV, + etc.
  • +
  •  updated codepage code for better handling accented and multibyte + characters.
    +
    + RDD 
    +
  • +
  • added support for memo file packing in PACK operation
  • +
  •  added new DBF fields like: AUTOINC (+), ROWVERSION (^), TIME (T),
    + DAYTIME (@/T), MODTIME (=), binary integers with fixed decimal places, etc.
  • +
  •  removed limit for maximum size of relation string expression
  • +
  •  fixed registering workareas with numbers from 65280 to 65534.
  • +
  •  added SIX3 compatible library - now Harbour supports all SIX3 + functions
    + and extensions like triggers. The HiPer-SEEK and CFTS (HS_*() and CFS*()
    + functions) was added before in hsx library. Now only bitmap filters
    + (m6_*() functions) are not supported in SVN Harbour version.
    +
    + Contrib
    +
  • +
  •  renamed contrib libraries
  • +
  •  TIP library borrowed from xHarbour and adopted to Harbour
  • +
  •  added HBCURL - libcurl interface library. (rooted from the + xHarbour version, but heavily fixed and further developed.)
  • +
  •  added HBSQLIT3 - SQLite 3.x Harbour callable library.
  • +
  •  fixes in MySQL and PGSQL library
  • +
  •  cleanup and many fixes in NF library
  • +
  •  cleanup code of CT3 library with many modifications and fixes
  • +
  • most of in/out CT3 functions rewritten to use GT API so now they can + work
    + on all platforms and with all GTs
  • +
  • added support for contrib libraries and new make system
  • +
  •  many contrib libraries borrowed from xHarbour code
  • +
  •  added xHarbour compatibility library: xhb. It emulates many of + xHarbour
    + behavior which cannot be covered by PP rules like extended operators,
    + strings like arrays, one byte string in math operations, HB_ENUMINDEX(),
    + HB_QWith(), HB_QSelf(), accessing hash item using OOP interface,
    + accessing/assigning string characters using [] operators (many of the
    + above fully works only in Harbour but not in native xHarbour code :-))
    + and many extensions like HBLOG, HBXML, HBCSTRUCT, HASH, INET*(), etc.
  • +
  •  added HBTPATHY - Telepath(y) compatible comm. library.
  • +
  •  added HBWHAT32 - Windows API interface.
  • +
  •  added HBFBIRD - Firebird db access interface.
  • +
  •  added hbcompat.ch file which hides many differences between + Harbour
    + and xHarbour compilers using PP directives.
  • +
  •  added hbmzip library - it's wrapper to MINIZIP library which
    + allows for compress and decompress streams, character variables,
    + .gz and .zip files
  • +
  •  fixes and extensions in ADORDD
  • +
  •  added automatic ACE version detection during building ADSRDD
  • +
  •  added many new Ads*() functions wrappers and cleaned code for
    + possible GPFs when wrong parameters were passed to some functions
  • +
  •  added HBHPDF - interface for Haru Free PDF Library.
  • +
  •  added HBVPDF - Viktor K's PDF Library + Pritpal Bedi's OOP + extension.
  • +
  • enhanced and fixed HBW32 library - OLE and printing
    +
    + Utilities
    +
  • +
  • added HBDOT utility program. It's a "Dot Prompt" Console for the
    + Harbour Language
    + Syntax: hbdot [<hrbfile[.prg]> [<parameters,...>]]
    + It should look and work in similar way to pp/xBaseScript
    + by Ron Pinkas but unlike xBaseScript is does not have preprocessor
    + or simulated runtime environment but simply uses Harbour pp and
    + compiler libraries to preprocess and compile commands. It means
    + that it supports all language constructions also statements, f.e.:
    + "for i:=1 to 10; ? i; next"
    +
    + Additionally it can also compile and execute .prg files given as
    + first parameter just like hbrun.
    +
  • +
  • added many new tests to hbtest
    +
  • +
  • renamed ppgen to hbppgen.
  • +
 
 
 
 
 
 Release of + Beta 3 ( 0.99.3 ) + +
    +
  • May 1, 2007
    +
    + General
  • +
  • added support for writable string enumerators (s:="abc";for each c in @s;...)
  • +
  • cleaned the syntax and strange unsupported but accepted by [macro]compiler
  • + constructions +
  • added BEGIN SEQUENCE [WITH + ] / RECOVER [USING + ] / + ALWAYS / END + +
  • +
  • new debugger code with low level C interface borrowed from xHarbour
  • +
  • added hash tables
  • +
  • speed improvement
  • +
  • added regular expressions
  • +
  • added internet sockets
  • +
  • added checksum functions
  • +
  • added support for execution .prg scripts in hbrun
  • +
  • added HB_COMPAT_XHB macro which allows to enable many xHarbour extensions
  • +
  • added to default PP tables defines from hbsetup.ch
  • +
  • added #ytranslate, #ycommand, #yuntranslate, #yuncommand
  • +
  • fixes in BROWSE, GET and some other .prg classes
  • +
  • fixed UTF8/UNICODE translations for control characters in GTSLN and GTXWC
  • +
  • cleaned many memory leaks in Compiler
  • +
  • added separated compiler library which can be linked with VM and RTL libraries
  • +
  • cleaned some possible bad side effects in cross references
  • +
  • many other fixes, improvements and extensions - see ChangeLog for details
  • +
 
 
 
 
 
 Release of Beta 2 ( 0.99.2 ) +
    +
  • March 28, 2007
  • +
+
+ General
+
    +
  • fixed all problems reported after Beta1 release
  • +
 
 
 
 
 
 Release of Beta 1 ( 0.99.1 ) +
    +
  • January 22, 2007
  • +
+
+ General
+
    +
  • There are a lot of changes, additions, bug fixes in all subsystems - see whatsnew.txt for details.
  • +
 
 
 
 
 
 Release of Alpha build 46 +
    +
  • June 05, 2006
  • +
+
+ General
+
    +
  • There are a lot of changes, additions, bug fixes in all subsystems - see whatsnew.txt for details.
  • +
 
 
 
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/robots.txt b/harbour/website/robots.txt index 74abd7d60f..87629a5366 100644 --- a/harbour/website/robots.txt +++ b/harbour/website/robots.txt @@ -1,5 +1,5 @@ -# Last Updated: 2010.10.13 15:34:00 - -User-agent: ia_archiver -Disallow: /photos/victorszakats.jpg -Disallow: /photos/victorszakats2.jpg +# Last Updated: 2010.10.13 15:34:00 + +User-agent: ia_archiver +Disallow: /photos/victorszakats.jpg +Disallow: /photos/victorszakats2.jpg diff --git a/harbour/website/samples.html b/harbour/website/samples.html index 752ecaf945..26d6ea7d36 100644 --- a/harbour/website/samples.html +++ b/harbour/website/samples.html @@ -1,361 +1,361 @@ - - - - -Harbour Project - Sample Applications - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sample Applications 
 This is the list of some examples in Harbour's test directory. The examples demonstrate Harbour features in small programs. 
   
 Categories: 
  
 
 
Basic 
  
 
 
 
 
Arrays 
  
 
 
 
 
Database 
  
 
 
 
 
Extensions 
  
 
 
 
 
Web 
  
 
 
 
 
More examples 
 More examples can be provided with the installation package of the Harbor. Look the CONTRIB\EXAMPLES folder to find another samples. 
 
 
 
 
How to compile the samples applications 
  
 
 
 
 
 
- - - - - -
- - + + + + +Harbour Project - Sample Applications + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sample Applications 
 This is the list of some examples in Harbour's test directory. The examples demonstrate Harbour features in small programs. 
   
 Categories: 
  
 
 
Basic 
  
 
 
 
 
Arrays 
  
 
 
 
 
Database 
  
 
 
 
 
Extensions 
  
 
 
 
 
Web 
  
 
 
 
 
More examples 
 More examples can be provided with the installation package of the Harbor. Look the CONTRIB\EXAMPLES folder to find another samples. 
 
 
 
 
How to compile the samples applications 
  
 
 
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/HowToBuildOnLinux.html b/harbour/website/samples/HowToBuildOnLinux.html index 69256f3d66..d1d1e2372b 100644 --- a/harbour/website/samples/HowToBuildOnLinux.html +++ b/harbour/website/samples/HowToBuildOnLinux.html @@ -1,185 +1,185 @@ - - - - -Harbour Project - Samples -> How to Build on Linux - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - -
  - - - - - - - -
How to Build on Linux
In the last phase of install process if bash shell is available in the system then few bash scripts are created to make compiling and linking with Harbour a little easier. There are compiler and linker wrappers called "hbcc", "hbcmp", "hblnk" and "hbmk".
 


- "hbcc" is a wrapper to the C compiler only. It sets all flags - and paths necessary to compile .c files which include Harbour header - files. The result of its work is an object file.

-

Use "hbcmp" exactly as you would use the harbour compiler itself. - The main difference with hbcmp is that it results in an object file, - not a C file that needs compiling down to an object. hbcmp also - ensures that the harbour include directory is seen by the harbour compiler.

-

"hblnk" simply takes a list of object files and links them together - with the harbour virtual machine and run-time library to produce an - executable. The executable will be given the basename of the first object - file if not directly set by the "-o" command line switch.

-

"hbmk" tries to produce an executable from your .prg file. It's a simple - equivalent of cl.bat from the CA-Clipper distribution.

-

All these scripts accept command line switches:
- -o<outputfilename>   # output file name -
- -static              # link with static Harbour libs -
- -fullstatic          # link with all static libs -
- -shared              # link with shared libs (default) -
- -mt                  # link with multi-thread libs -
- -gt<hbgt>            # link with <hbgt> GT driver, can be repeated to
-                     # link with more GTs. The first one will be
-                      
# the default at runtime
- -xbgtk               # link with xbgtk library (xBase GTK+ interface)
- -hwgui               # link with HWGUI library (GTK+ interface)
- -l<libname>          # link with <libname> library
- -L<libpath>          # additional path to search for libraries
- -fmstat              # link with the memory statistics lib
- -nofmstat            # do not link with the memory statistics lib (default)
- -[no]strip           # strip (no strip) binaries
- -main=<main_func>    # set the name of main program function/procedure.
-                     # if not set then 'MAIN' is used or if it doesn't
-                     # exist the name of first public function/procedure
-                     # in first linked object module (link)
-

Link options work only with "hblnk" and "hbmk" and have no effect - in "hbcc" and "hbcmp". - Other options are passed to Harbour/C compiler/linker.

- An example compile/link session looks like: -
- ---------------------------------------------------------------------------------------druzus@uran:~/tmp$ cat foo.prg -
- function main()
-?
"Hello, World!"
-
return nil
-
druzus@uran:~/tmp$ hbcmp foo
-Harbour Compiler Alpha build 46.2 (Flex)
-Copyright 1999-2006, http://harbour-project.org/
-Compiling 'foo.prg'...
-Lines 5, Functions/Procedures 2
-Generating C source output to 'foo.c'... Done.
-
druzus@uran:~/tmp$ hblnk foo.o
druzus@uran:~/tmp$ strip foo
druzus@uran:~/tmp$ ls -l foo --rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo ----------------------------------------------------------------------------------------
- -

or using hbmk only:
- ---------------------------------------------------------------------------------------
- druzus@uran:~/tmp
$ cat foo.prg
- function main()
-?
"Hello, World!"
-
return nil

-
-druzus@uran:~/tmp$ hbmk foo
-Harbour Compiler Alpha build 46.2 (Flex) -
-Copyright 1999-2006, http://harbour-project.org/
-Compiling 'foo.prg'... -
-Lines 5, Functions/Procedures 2
-Generating C source output to 'foo.c'... Done.
-
- druzus@uran:~/tmp$ ls -l foo
- -rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo
- ---------------------------------------------------------------------------------------

-
- You will find additional wonderful tools: /usr/bin/hbrun
- You can run clipper/xbase compatible source files with it - if you only put in their first line: #!/usr/bin/hbrun

-

For example:
- ----------------------------------------------------------------------
- druzus@uran:~/tmp$ cat foo.prg
- #!/usr/bin/hbrun
- function main()
-?
"Hello, World!, This is a script !!! :-)"
-
return nil

-

druzus@uran:~/tmp$ chmod +x foo.prg
- druzus@uran:~/tmp$ ./foo.prg

-

Hello, World!, This is a script !!! :-)

-

druzus@uran:~/tmp$

-

I hope you will find this information useful,
- Przemyslaw Czerpak (druzus/at/priv.onet.pl)
-

 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> How to Build on Linux + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + +
  + + + + + + + +
How to Build on Linux
In the last phase of install process if bash shell is available in the system then few bash scripts are created to make compiling and linking with Harbour a little easier. There are compiler and linker wrappers called "hbcc", "hbcmp", "hblnk" and "hbmk".
 


+ "hbcc" is a wrapper to the C compiler only. It sets all flags + and paths necessary to compile .c files which include Harbour header + files. The result of its work is an object file.

+

Use "hbcmp" exactly as you would use the harbour compiler itself. + The main difference with hbcmp is that it results in an object file, + not a C file that needs compiling down to an object. hbcmp also + ensures that the harbour include directory is seen by the harbour compiler.

+

"hblnk" simply takes a list of object files and links them together + with the harbour virtual machine and run-time library to produce an + executable. The executable will be given the basename of the first object + file if not directly set by the "-o" command line switch.

+

"hbmk" tries to produce an executable from your .prg file. It's a simple + equivalent of cl.bat from the CA-Clipper distribution.

+

All these scripts accept command line switches:
+ -o<outputfilename>   # output file name +
+ -static              # link with static Harbour libs +
+ -fullstatic          # link with all static libs +
+ -shared              # link with shared libs (default) +
+ -mt                  # link with multi-thread libs +
+ -gt<hbgt>            # link with <hbgt> GT driver, can be repeated to
+                     # link with more GTs. The first one will be
+                      
# the default at runtime
+ -xbgtk               # link with xbgtk library (xBase GTK+ interface)
+ -hwgui               # link with HWGUI library (GTK+ interface)
+ -l<libname>          # link with <libname> library
+ -L<libpath>          # additional path to search for libraries
+ -fmstat              # link with the memory statistics lib
+ -nofmstat            # do not link with the memory statistics lib (default)
+ -[no]strip           # strip (no strip) binaries
+ -main=<main_func>    # set the name of main program function/procedure.
+                     # if not set then 'MAIN' is used or if it doesn't
+                     # exist the name of first public function/procedure
+                     # in first linked object module (link)
+

Link options work only with "hblnk" and "hbmk" and have no effect + in "hbcc" and "hbcmp". + Other options are passed to Harbour/C compiler/linker.

+ An example compile/link session looks like: +
+ ---------------------------------------------------------------------------------------druzus@uran:~/tmp$ cat foo.prg +
+ function main()
+?
"Hello, World!"
+
return nil
+
druzus@uran:~/tmp$ hbcmp foo
+Harbour Compiler Alpha build 46.2 (Flex)
+Copyright 1999-2006, http://harbour-project.org/
+Compiling 'foo.prg'...
+Lines 5, Functions/Procedures 2
+Generating C source output to 'foo.c'... Done.
+
druzus@uran:~/tmp$ hblnk foo.o
druzus@uran:~/tmp$ strip foo
druzus@uran:~/tmp$ ls -l foo +-rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo +---------------------------------------------------------------------------------------
+ +

or using hbmk only:
+ ---------------------------------------------------------------------------------------
+ druzus@uran:~/tmp
$ cat foo.prg
+ function main()
+?
"Hello, World!"
+
return nil

+
+druzus@uran:~/tmp$ hbmk foo
+Harbour Compiler Alpha build 46.2 (Flex) +
+Copyright 1999-2006, http://harbour-project.org/
+Compiling 'foo.prg'... +
+Lines 5, Functions/Procedures 2
+Generating C source output to 'foo.c'... Done.
+
+ druzus@uran:~/tmp$ ls -l foo
+ -rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo
+ ---------------------------------------------------------------------------------------

+
+ You will find additional wonderful tools: /usr/bin/hbrun
+ You can run clipper/xbase compatible source files with it + if you only put in their first line: #!/usr/bin/hbrun

+

For example:
+ ----------------------------------------------------------------------
+ druzus@uran:~/tmp$ cat foo.prg
+ #!/usr/bin/hbrun
+ function main()
+?
"Hello, World!, This is a script !!! :-)"
+
return nil

+

druzus@uran:~/tmp$ chmod +x foo.prg
+ druzus@uran:~/tmp$ ./foo.prg

+

Hello, World!, This is a script !!! :-)

+

druzus@uran:~/tmp$

+

I hope you will find this information useful,
+ Przemyslaw Czerpak (druzus/at/priv.onet.pl)
+

 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/HowToBuildOnWindows.html b/harbour/website/samples/HowToBuildOnWindows.html index f51b5f41bb..7895139acc 100644 --- a/harbour/website/samples/HowToBuildOnWindows.html +++ b/harbour/website/samples/HowToBuildOnWindows.html @@ -1,173 +1,173 @@ - - - - -Harbour Project - Samples -> How to Build on Windows - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - -
  - - - - - - - -

How to Build on Windows

In the BIN folder where your Harbor was installed, is the file HBMK.BAT. This batch file will help you compile your applications in a Microsoft.
 

"hbmk" tries to produce an executable from your .prg file. It's a simple - equivalent of cl.bat from the CA-Clipper distribution.

-

All these scripts accept command line switches:
- -o<outputfilename>   # output file name -
- -static              # link with static Harbour libs -
- -fullstatic          # link with all static libs -
- -shared              # link with shared libs (default) -
- -mt                  # link with multi-thread libs -
- -gt<hbgt>            # link with <hbgt> GT driver, can be repeated to
-                     # link with more GTs. The first one will be
-                      
# the default at runtime
- -xbgtk               # link with xbgtk library (xBase GTK+ interface)
- -hwgui               # link with HWGUI library (GTK+ interface)
- -l<libname>          # link with <libname> library
- -L<libpath>          # additional path to search for libraries
- -fmstat              # link with the memory statistics lib
- -nofmstat            # do not link with the memory statistics lib (default)
- -[no]strip           # strip (no strip) binaries
- -main=<main_func>    # set the name of main program function/procedure.
-                     # if not set then 'MAIN' is used or if it doesn't
-                     # exist the name of first public function/procedure
-                     # in first linked object module (link)
-

Link options work only with "hblnk" and "hbmk" and have no effect - in "hbcc" and "hbcmp". - Other options are passed to Harbour/C compiler/linker.

- An example compile/link session looks like: -
- ---------------------------------------------------------------------------------------druzus@uran:~/tmp$ cat foo.prg -
- function main()
-?
"Hello, World!"
-
return nil
-
druzus@uran:~/tmp$ hbcmp foo
-Harbour Compiler Alpha build 46.2 (Flex)
-Copyright 1999-2006, http://harbour-project.org/
-Compiling 'foo.prg'...
-Lines 5, Functions/Procedures 2
-Generating C source output to 'foo.c'... Done.
-
druzus@uran:~/tmp$ hblnk foo.o
druzus@uran:~/tmp$ strip foo
druzus@uran:~/tmp$ ls -l foo --rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo ----------------------------------------------------------------------------------------
- -

or using hbmk only:
- ---------------------------------------------------------------------------------------
- druzus@uran:~/tmp
$ cat foo.prg
- function main()
-?
"Hello, World!"
-
return nil

-
-druzus@uran:~/tmp$ hbmk foo
-Harbour Compiler Alpha build 46.2 (Flex) -
-Copyright 1999-2006, http://harbour-project.org/
-Compiling 'foo.prg'... -
-Lines 5, Functions/Procedures 2
-Generating C source output to 'foo.c'... Done.
-
- druzus@uran:~/tmp$ ls -l foo
- -rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo
- ---------------------------------------------------------------------------------------

-
- You will find additional wonderful tools: /usr/bin/hbrun
- You can run clipper/xbase compatible source files with it - if you only put in their first line: #!/usr/bin/hbrun

-

For example:
- ----------------------------------------------------------------------
- druzus@uran:~/tmp$ cat foo.prg
- #!/usr/bin/hbrun
- function main()
-?
"Hello, World!, This is a script !!! :-)"
-
return nil

-

druzus@uran:~/tmp$ chmod +x foo.prg
- druzus@uran:~/tmp$ ./foo.prg

-

Hello, World!, This is a script !!! :-)

-

druzus@uran:~/tmp$

-

I hope you will find this information useful,
- Przemyslaw Czerpak (druzus/at/priv.onet.pl)
-

 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> How to Build on Windows + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + +
  + + + + + + + +

How to Build on Windows

In the BIN folder where your Harbor was installed, is the file HBMK.BAT. This batch file will help you compile your applications in a Microsoft.
 

"hbmk" tries to produce an executable from your .prg file. It's a simple + equivalent of cl.bat from the CA-Clipper distribution.

+

All these scripts accept command line switches:
+ -o<outputfilename>   # output file name +
+ -static              # link with static Harbour libs +
+ -fullstatic          # link with all static libs +
+ -shared              # link with shared libs (default) +
+ -mt                  # link with multi-thread libs +
+ -gt<hbgt>            # link with <hbgt> GT driver, can be repeated to
+                     # link with more GTs. The first one will be
+                      
# the default at runtime
+ -xbgtk               # link with xbgtk library (xBase GTK+ interface)
+ -hwgui               # link with HWGUI library (GTK+ interface)
+ -l<libname>          # link with <libname> library
+ -L<libpath>          # additional path to search for libraries
+ -fmstat              # link with the memory statistics lib
+ -nofmstat            # do not link with the memory statistics lib (default)
+ -[no]strip           # strip (no strip) binaries
+ -main=<main_func>    # set the name of main program function/procedure.
+                     # if not set then 'MAIN' is used or if it doesn't
+                     # exist the name of first public function/procedure
+                     # in first linked object module (link)
+

Link options work only with "hblnk" and "hbmk" and have no effect + in "hbcc" and "hbcmp". + Other options are passed to Harbour/C compiler/linker.

+ An example compile/link session looks like: +
+ ---------------------------------------------------------------------------------------druzus@uran:~/tmp$ cat foo.prg +
+ function main()
+?
"Hello, World!"
+
return nil
+
druzus@uran:~/tmp$ hbcmp foo
+Harbour Compiler Alpha build 46.2 (Flex)
+Copyright 1999-2006, http://harbour-project.org/
+Compiling 'foo.prg'...
+Lines 5, Functions/Procedures 2
+Generating C source output to 'foo.c'... Done.
+
druzus@uran:~/tmp$ hblnk foo.o
druzus@uran:~/tmp$ strip foo
druzus@uran:~/tmp$ ls -l foo +-rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo +---------------------------------------------------------------------------------------
+ +

or using hbmk only:
+ ---------------------------------------------------------------------------------------
+ druzus@uran:~/tmp
$ cat foo.prg
+ function main()
+?
"Hello, World!"
+
return nil

+
+druzus@uran:~/tmp$ hbmk foo
+Harbour Compiler Alpha build 46.2 (Flex) +
+Copyright 1999-2006, http://harbour-project.org/
+Compiling 'foo.prg'... +
+Lines 5, Functions/Procedures 2
+Generating C source output to 'foo.c'... Done.
+
+ druzus@uran:~/tmp$ ls -l foo
+ -rwxrwxr-x 1 druzus druzus 3824 maj 17 02:46 foo
+ ---------------------------------------------------------------------------------------

+
+ You will find additional wonderful tools: /usr/bin/hbrun
+ You can run clipper/xbase compatible source files with it + if you only put in their first line: #!/usr/bin/hbrun

+

For example:
+ ----------------------------------------------------------------------
+ druzus@uran:~/tmp$ cat foo.prg
+ #!/usr/bin/hbrun
+ function main()
+?
"Hello, World!, This is a script !!! :-)"
+
return nil

+

druzus@uran:~/tmp$ chmod +x foo.prg
+ druzus@uran:~/tmp$ ./foo.prg

+

Hello, World!, This is a script !!! :-)

+

druzus@uran:~/tmp$

+

I hope you will find this information useful,
+ Przemyslaw Czerpak (druzus/at/priv.onet.pl)
+

 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/array16.html b/harbour/website/samples/array16.html index 08ae31542a..4d970153d2 100644 --- a/harbour/website/samples/array16.html +++ b/harbour/website/samples/array16.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> array16 - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Multidimensional arrays demo
This test demonstrates the many ways to access items in an array.
   
 Files: 
  
 Screenshot: 
   
 

-array16 sample running on Windows Vista

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> array16 + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Multidimensional arrays demo
This test demonstrates the many ways to access items in an array.
   
 Files: 
  
 Screenshot: 
   
 

+array16 sample running on Windows Vista

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/arreval.html b/harbour/website/samples/arreval.html index e4e5faf6af..208ba5238d 100644 --- a/harbour/website/samples/arreval.html +++ b/harbour/website/samples/arreval.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> arreval - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
aEval() sample
Simple AEval() test program. Note also that the code-block uses a second parameter to identify the position of the item currently in use.
   
 Files: 
  
 Screenshot: 
   
 

-arreval sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> arreval + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
aEval() sample
Simple AEval() test program. Note also that the code-block uses a second parameter to identify the position of the item currently in use.
   
 Files: 
  
 Screenshot: 
   
 

+arreval sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/begin.html b/harbour/website/samples/begin.html index 0b22890cc5..3de677f669 100644 --- a/harbour/website/samples/begin.html +++ b/harbour/website/samples/begin.html @@ -1,121 +1,121 @@ - - - - -Harbour Project - Samples -> begin - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Begin Sequence support
This files demonstrates the use of BEGIN/RECOVER/END SEQUENCE and BREAK statement in Harbour.
 Files: 
  
 

Screenshot:

 
 

- begin demonstration running on Linux
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> begin + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Begin Sequence support
This files demonstrates the use of BEGIN/RECOVER/END SEQUENCE and BREAK statement in Harbour.
 Files: 
  
 

Screenshot:

 
 

+ begin demonstration running on Linux
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/byref.html b/harbour/website/samples/byref.html index 799d8ffda8..3773c5688b 100644 --- a/harbour/website/samples/byref.html +++ b/harbour/website/samples/byref.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> byref - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Manipulating variables by reference.
This example shows how you can pass variables as a reference and change its values.
   
 Files: 
  
 Screenshot: 
   
 

- initexit sample running on Windows
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> byref + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Manipulating variables by reference.
This example shows how you can pass variables as a reference and change its values.
   
 Files: 
  
 Screenshot: 
   
 

+ initexit sample running on Windows
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/codebl.html b/harbour/website/samples/codebl.html index b3fda0f568..396f7269bd 100644 --- a/harbour/website/samples/codebl.html +++ b/harbour/website/samples/codebl.html @@ -1,121 +1,121 @@ - - - - -Harbour Project - Samples -> codebl - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Codeblock support sample
Harbour codeblocks demonstration.
 Files: 
  
 

Screenshot:

 
 

-
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> codebl + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Codeblock support sample
Harbour codeblocks demonstration.
 Files: 
  
 

Screenshot:

 
 

+
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/codebloc.html b/harbour/website/samples/codebloc.html index 536de76055..ab787fb816 100644 --- a/harbour/website/samples/codebloc.html +++ b/harbour/website/samples/codebloc.html @@ -1,122 +1,122 @@ - - - - -Harbour Project - Samples -> codebloc - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Codeblock support sample
Harbour codeblocks test sample.
 Files: 
  
 

Screenshot:

 
 

-
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> codebloc + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Codeblock support sample
Harbour codeblocks test sample.
 Files: 
  
 

Screenshot:

 
 

+
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/codebloc.prg.html b/harbour/website/samples/codebloc.prg.html index 584686dc2d..1eb9ab35d1 100644 --- a/harbour/website/samples/codebloc.prg.html +++ b/harbour/website/samples/codebloc.prg.html @@ -1,143 +1,143 @@ - -codebloc.prg - - - - - -
// codeblocks test
-
-function Main()
-   local B := "this will never print"
-   local a := {| b, c | OutStd( "I am a codeblock" + b + c ) }
-   local d
-   local de
-   local ar := { 1, 2 }
-   local crlf:=CHR(13)+chr(10)
-   local YY, X
-   local x1, x2
-
-   OutStd( "this should print first" )
-   OutStd( crlf )
-
-   Eval( a, " with parameters", " ... and it works!" )
-   OutStd( crlf )
-
-   d ="with access to local variables"
-
-   a ={| b, c | OutStd( "I am a second codeblock " +d +b +;
-        IIF(c==NIL, ' empty second parameter ', c)), OutStd(crlf), "WITH return value" }
-   EVAL( a, ", codeblock parameters" )
-   OutStd( crlf )
-
-   EVAL( a, ", codeblock parameters ", "and with second parameter" )
-   OutStd( crlf )
-
-   OutStd( MyEval( a ) )
-   OutStd( crlf )
-
-   OtherTest( a )
-   OutStd( crlf )
-
-   AnotherTest( a, "==> Another " )
-   OutStd( crlf )
-
-   a ={| c | IIF( c=NIL, {| a | "First "+a}, {| a | "Second "+a}) }
-   a =EVAL( a )
-   OutStd( crlf )
-   OutStd( EVAL( a, "codeblock created in a codeblock" ) )
-   OutStd( crlf )
-
-   OutStd( ar[ 1 ] )
-   OutStd( crlf )
-   a :={|| ar[ 1 ]++}
-   EVAL( a )
-   OutStd( ar[ 1 ] )
-   OutStd( crlf )
-
-   yy :=5
-   x  :={|xx| OutStd(LTRIM(STR(xx))), OutStd("+"), OutStd(LTRIM(STR(yy))), OutStd("="), xx + yy }
-   OutStd( EVAL( x, 1 ) )       //this is OK
-   OutStd( CRLF )
-   OutStd( EVAL( x, 1, 2 ) )    //this should ignore unnecesary parameters
-
-   QOut( EVAL( RetBlock(), 5 ) )
-
-//   BugToFix()
-   OutStd( crlf )
-
-   OutStd( "Trying to use detached variable ..." )
-   OutStd( crlf )
-   x1 :=5
-   x2 :=6
-   de =DetachLocal( x1, x2 )
-   OutStd( EVAL( de ) )
-   //changing the value of variables
-   OutStd( crlf )
-   x1 := 10
-   x2 := 11
-   QOut( EVAL( de ) )
-   de =DetachLocal( x1, x2 )
-   QOut( EVAL( de ) )
-
-return nil
-
-FUNCTION MyEval( bCodeBlock )
-LOCAL D:="this is another variable"
-
-RETURN( EVAL(bCodeBlock, " from ", "MyEval Function" ) )
-
-PROCEDURE OtherTest( cblock )
-LOCAL cb
-
-  cb :={| a, b | EVAL( cblock,a,b ) }
-
-  EVAL( cb, "--> with nested ", "EVAL" )
-
-RETURN
-
-PROCEDURE AnotherTest( cb, a )
-  OutStd( EVAL( cb, a ) )
-   OutStd( chr(13)+chr(10) )
-  OutStd( EVAL( cb, a, "again and again" ) )
-   OutStd( chr(13)+chr(10) )
-RETURN
-
-FUNCTION DetachLocal( x, y )
-//NOTE! this should work
-LOCAL z:=x+y
-LOCAL cb:={|| QOut("z=x+y="), QOut(z), QOut("x*x="), QOut(x*x), QOut("x*x+z="), x*x+z}
-RETURN( cb )
-
-PROCEDURE BugToFix()
-
-  LOCAL b, a := {|| a+b }
-
-  b ="bug "
-  EVAL( a )
-
-RETURN
-
-FUNCTION RetBlock()
-
-RETURN( {|x| x*x} )
-
-
-
+ +codebloc.prg + + + + + +
// codeblocks test
+
+function Main()
+   local B := "this will never print"
+   local a := {| b, c | OutStd( "I am a codeblock" + b + c ) }
+   local d
+   local de
+   local ar := { 1, 2 }
+   local crlf:=CHR(13)+chr(10)
+   local YY, X
+   local x1, x2
+
+   OutStd( "this should print first" )
+   OutStd( crlf )
+
+   Eval( a, " with parameters", " ... and it works!" )
+   OutStd( crlf )
+
+   d ="with access to local variables"
+
+   a ={| b, c | OutStd( "I am a second codeblock " +d +b +;
+        IIF(c==NIL, ' empty second parameter ', c)), OutStd(crlf), "WITH return value" }
+   EVAL( a, ", codeblock parameters" )
+   OutStd( crlf )
+
+   EVAL( a, ", codeblock parameters ", "and with second parameter" )
+   OutStd( crlf )
+
+   OutStd( MyEval( a ) )
+   OutStd( crlf )
+
+   OtherTest( a )
+   OutStd( crlf )
+
+   AnotherTest( a, "==> Another " )
+   OutStd( crlf )
+
+   a ={| c | IIF( c=NIL, {| a | "First "+a}, {| a | "Second "+a}) }
+   a =EVAL( a )
+   OutStd( crlf )
+   OutStd( EVAL( a, "codeblock created in a codeblock" ) )
+   OutStd( crlf )
+
+   OutStd( ar[ 1 ] )
+   OutStd( crlf )
+   a :={|| ar[ 1 ]++}
+   EVAL( a )
+   OutStd( ar[ 1 ] )
+   OutStd( crlf )
+
+   yy :=5
+   x  :={|xx| OutStd(LTRIM(STR(xx))), OutStd("+"), OutStd(LTRIM(STR(yy))), OutStd("="), xx + yy }
+   OutStd( EVAL( x, 1 ) )       //this is OK
+   OutStd( CRLF )
+   OutStd( EVAL( x, 1, 2 ) )    //this should ignore unnecesary parameters
+
+   QOut( EVAL( RetBlock(), 5 ) )
+
+//   BugToFix()
+   OutStd( crlf )
+
+   OutStd( "Trying to use detached variable ..." )
+   OutStd( crlf )
+   x1 :=5
+   x2 :=6
+   de =DetachLocal( x1, x2 )
+   OutStd( EVAL( de ) )
+   //changing the value of variables
+   OutStd( crlf )
+   x1 := 10
+   x2 := 11
+   QOut( EVAL( de ) )
+   de =DetachLocal( x1, x2 )
+   QOut( EVAL( de ) )
+
+return nil
+
+FUNCTION MyEval( bCodeBlock )
+LOCAL D:="this is another variable"
+
+RETURN( EVAL(bCodeBlock, " from ", "MyEval Function" ) )
+
+PROCEDURE OtherTest( cblock )
+LOCAL cb
+
+  cb :={| a, b | EVAL( cblock,a,b ) }
+
+  EVAL( cb, "--> with nested ", "EVAL" )
+
+RETURN
+
+PROCEDURE AnotherTest( cb, a )
+  OutStd( EVAL( cb, a ) )
+   OutStd( chr(13)+chr(10) )
+  OutStd( EVAL( cb, a, "again and again" ) )
+   OutStd( chr(13)+chr(10) )
+RETURN
+
+FUNCTION DetachLocal( x, y )
+//NOTE! this should work
+LOCAL z:=x+y
+LOCAL cb:={|| QOut("z=x+y="), QOut(z), QOut("x*x="), QOut(x*x), QOut("x*x+z="), x*x+z}
+RETURN( cb )
+
+PROCEDURE BugToFix()
+
+  LOCAL b, a := {|| a+b }
+
+  b ="bug "
+  EVAL( a )
+
+RETURN
+
+FUNCTION RetBlock()
+
+RETURN( {|x| x*x} )
+
+
+
diff --git a/harbour/website/samples/dates3.html b/harbour/website/samples/dates3.html index 237a742a90..b7ed7965ec 100644 --- a/harbour/website/samples/dates3.html +++ b/harbour/website/samples/dates3.html @@ -1,124 +1,124 @@ - - - - -Harbour Project - Samples -> dates3 - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Manipulation of date values
This example demonstrates the manipulation of date values and the use of SET (_SET_DATEFORMAT) to format the return of function DATE().
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> dates3 + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Manipulation of date values
This example demonstrates the manipulation of date values and the use of SET (_SET_DATEFORMAT) to format the return of function DATE().
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/dates4.html b/harbour/website/samples/dates4.html index 37a1fb952e..eb57c8a1bb 100644 --- a/harbour/website/samples/dates4.html +++ b/harbour/website/samples/dates4.html @@ -1,124 +1,124 @@ - - - - -Harbour Project - Samples -> dates3 - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Manipulation of date values
Example of dates with several functions of hbct.lib & hbmisc.lib
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> dates3 + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Manipulation of date values
Example of dates with several functions of hbct.lib & hbmisc.lib
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/dosshell.html b/harbour/website/samples/dosshell.html index f5b2ba0df5..d154c06cb8 100644 --- a/harbour/website/samples/dosshell.html +++ b/harbour/website/samples/dosshell.html @@ -1,138 +1,138 @@ - - - - -Harbour Project - Samples -> dosshell - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Run command: About to shell to DOS
This program uses geten () and the environment variable COMSPEC to start a new shell.
   
 Files: 
  
 Screenshot: 
   
 

-dosshell sample running on Windows Vista
-
-
-dosshell sample running on Linux
-
-Note: To get the same result on Linux, you could execute a command "run bash"
-to forcing the beginning of a new shell.
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> dosshell + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Run command: About to shell to DOS
This program uses geten () and the environment variable COMSPEC to start a new shell.
   
 Files: 
  
 Screenshot: 
   
 

+dosshell sample running on Windows Vista
+
+
+dosshell sample running on Linux
+
+Note: To get the same result on Linux, you could execute a command "run bash"
+to forcing the beginning of a new shell.
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/dosshell.prg.html b/harbour/website/samples/dosshell.prg.html index 624dcf933c..1dadccd531 100644 --- a/harbour/website/samples/dosshell.prg.html +++ b/harbour/website/samples/dosshell.prg.html @@ -1,53 +1,53 @@ - -dosshell.prg - - - - - -
//
-// DosShell
-//
-// This program shell to DOS
-//
-// Warning : DOS only
-//
-// Written by Eddie Runia <eddie@runia.com>
-// www - http://harbour-project.org
-//
-// Placed in the public domain
-//
-
-function Main()
-
-   local cOs    := Upper( OS() )
-   local cShell := GetEnv("COMSPEC")
-
-   if at( "WINDOWS", cOs ) != 0 .or. at( "DOS", cOs ) != 0 ;
-   .or. at( "OS/2", cOs ) != 0
-      ? "About to shell to DOS.."
-      ! (cShell)
-      ? "Hey, I am back !"
-   else
-      ? "Sorry this program is for Windows, DOS, and OS/2 only"
-   endif
-return nil
-
-
+ +dosshell.prg + + + + + +
//
+// DosShell
+//
+// This program shell to DOS
+//
+// Warning : DOS only
+//
+// Written by Eddie Runia <eddie@runia.com>
+// www - http://harbour-project.org
+//
+// Placed in the public domain
+//
+
+function Main()
+
+   local cOs    := Upper( OS() )
+   local cShell := GetEnv("COMSPEC")
+
+   if at( "WINDOWS", cOs ) != 0 .or. at( "DOS", cOs ) != 0 ;
+   .or. at( "OS/2", cOs ) != 0
+      ? "About to shell to DOS.."
+      ! (cShell)
+      ? "Hey, I am back !"
+   else
+      ? "Sorry this program is for Windows, DOS, and OS/2 only"
+   endif
+return nil
+
+
diff --git a/harbour/website/samples/foreach.html b/harbour/website/samples/foreach.html index 38efe300f6..2d4b63fa51 100644 --- a/harbour/website/samples/foreach.html +++ b/harbour/website/samples/foreach.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> foreach - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
FOR EACH example
This example demonstrates how to use the FOR EACH command. FOR EACH iterates with elements of data types that can be seen as a collection such as arrays, strings or objects.
   
 Files: 
  
 Screenshot: 
   
 

-foreach sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> foreach + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
FOR EACH example
This example demonstrates how to use the FOR EACH command. FOR EACH iterates with elements of data types that can be seen as a collection such as arrays, strings or objects.
   
 Files: 
  
 Screenshot: 
   
 

+foreach sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/hello.html b/harbour/website/samples/hello.html index f8ec22582e..13d5be61c1 100644 --- a/harbour/website/samples/hello.html +++ b/harbour/website/samples/hello.html @@ -1,134 +1,134 @@ - - - - -Harbour Project - Samples -> hello - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Hello world
A single Hello World with a typical welcome message.
 Files: 
  
 

Screenshots:

-
 
 

- Hello application running on Windows
 
   
 

- Hello application running on Linux
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> hello + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Hello world
A single Hello World with a typical welcome message.
 Files: 
  
 

Screenshots:

+
 
 

+ Hello application running on Windows
 
   
 

+ Hello application running on Linux
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/initexit.html b/harbour/website/samples/initexit.html index 71f521d69f..fadfa4686f 100644 --- a/harbour/website/samples/initexit.html +++ b/harbour/website/samples/initexit.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> initexit - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
INIT and EXIT functions support
Testing INIT and EXIT functions and initialization of static variables.
   
 Files: 
  
 Screenshot: 
   
 

- initexit sample running on Windows
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> initexit + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
INIT and EXIT functions support
Testing INIT and EXIT functions and initialization of static variables.
   
 Files: 
  
 Screenshot: 
   
 

+ initexit sample running on Windows
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/longdev.html b/harbour/website/samples/longdev.html index a3ba5b9e35..d05126ae65 100644 --- a/harbour/website/samples/longdev.html +++ b/harbour/website/samples/longdev.html @@ -1,135 +1,135 @@ - - - - -Harbour Project - Samples -> longdev - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Testing long string handling support
Testing Harbour long string handling with device output.
- NOTE: The Clipper limits the size of a string of up to 65,535 bytes (64K). In Harbor this limit is much higher: you could load a file with more than 2Gb to inside a memory variable!
   
 Files: 
  
 Screenshot: 
   
 

-
-longdev application running on Linux
-
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> longdev + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Testing long string handling support
Testing Harbour long string handling with device output.
+ NOTE: The Clipper limits the size of a string of up to 65,535 bytes (64K). In Harbor this limit is much higher: you could load a file with more than 2Gb to inside a memory variable!
   
 Files: 
  
 Screenshot: 
   
 

+
+longdev application running on Linux
+
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/longdev.prg.html b/harbour/website/samples/longdev.prg.html index 71a5093101..e98a64e32c 100644 --- a/harbour/website/samples/longdev.prg.html +++ b/harbour/website/samples/longdev.prg.html @@ -1,64 +1,64 @@ - -longdev.prg - - - - - -
// Testing Harbour long string handling with device output.
-/* Harbour Project source code
-   http://harbour-project.org/
-   Donated to the public domain on 2001-03-08 by David G. Holm <dholm@jsd-llc.com>
-*/
-
-FUNCTION Main()
-
-   LOCAL cShort := "1234567890"
-   LOCAL i, j, cLong, cBuffer, nHandle
-
-   // Create an 80 KB string (Clipper is limited to 64 KB).
-   cLong := cShort
-   FOR i := 1 TO 13
-      cLong += cLong
-   NEXT
-
-   // Write the long string to file long_str.prn
-   SET PRINTER TO long_str
-   SET DEVICE TO PRINTER
-   DEVOUT( cLong )
-   SET PRINTER OFF
-   SET DEVICE TO SCREEN
-
-   // Confirm the string length and that a copy is exactly identical.
-   ? "The length of the long string is", iif( LEN( cLong ) == 80 * 1024, "correct", "wrong" )
-   cBuffer := cLong
-   ? "The length of a copy of the long string is", iif( LEN( cLong ) == 80 * 1024, "correct", "wrong" )
-   ? "The copy of the long string is", iif( cLong == cBuffer, "equal", "not equal" ), "to the long string"
-
-   // Read the string back in and compare it to the original.
-   nHandle := FOPEN( "long_str.prn" )
-   cBuffer := FREADSTR( nHandle, 90000 )
-   ? "Original:", LEN( cLong )
-   ? "From file:", LEN( cBuffer )
-   ? "The strings are", iif( cLong == cBuffer, "equal", "not equal" )
-
-return nil
-
-
+ +longdev.prg + + + + + +
// Testing Harbour long string handling with device output.
+/* Harbour Project source code
+   http://harbour-project.org/
+   Donated to the public domain on 2001-03-08 by David G. Holm <dholm@jsd-llc.com>
+*/
+
+FUNCTION Main()
+
+   LOCAL cShort := "1234567890"
+   LOCAL i, j, cLong, cBuffer, nHandle
+
+   // Create an 80 KB string (Clipper is limited to 64 KB).
+   cLong := cShort
+   FOR i := 1 TO 13
+      cLong += cLong
+   NEXT
+
+   // Write the long string to file long_str.prn
+   SET PRINTER TO long_str
+   SET DEVICE TO PRINTER
+   DEVOUT( cLong )
+   SET PRINTER OFF
+   SET DEVICE TO SCREEN
+
+   // Confirm the string length and that a copy is exactly identical.
+   ? "The length of the long string is", iif( LEN( cLong ) == 80 * 1024, "correct", "wrong" )
+   cBuffer := cLong
+   ? "The length of a copy of the long string is", iif( LEN( cLong ) == 80 * 1024, "correct", "wrong" )
+   ? "The copy of the long string is", iif( cLong == cBuffer, "equal", "not equal" ), "to the long string"
+
+   // Read the string back in and compare it to the original.
+   nHandle := FOPEN( "long_str.prn" )
+   cBuffer := FREADSTR( nHandle, 90000 )
+   ? "Original:", LEN( cLong )
+   ? "From file:", LEN( cBuffer )
+   ? "The strings are", iif( cLong == cBuffer, "equal", "not equal" )
+
+return nil
+
+
diff --git a/harbour/website/samples/mousetst.html b/harbour/website/samples/mousetst.html index 6f505b2dfd..ffecfdbcfa 100644 --- a/harbour/website/samples/mousetst.html +++ b/harbour/website/samples/mousetst.html @@ -1,135 +1,135 @@ - - - - -Harbour Project - Samples -> mousetst - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Mouse sample support
Test mouse for Harbour Project.
   
 Files: 
  
 Screenshot: 
   
 

-mousetst sample running on Windows Vista
-
-
-mousetst sample running on Linux
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> mousetst + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Mouse sample support
Test mouse for Harbour Project.
   
 Files: 
  
 Screenshot: 
   
 

+mousetst sample running on Windows Vista
+
+
+mousetst sample running on Linux
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/onidle.html b/harbour/website/samples/onidle.html index dab31517ba..38168d8241 100644 --- a/harbour/website/samples/onidle.html +++ b/harbour/website/samples/onidle.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> onidle - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
OnIdle sample
This demo demonstrates how to add various tasks into background in Harbour.
   
 Files: 
  
 Screenshot: 
   
 

-onidle sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> onidle + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
OnIdle sample
This demo demonstrates how to add various tasks into background in Harbour.
   
 Files: 
  
 Screenshot: 
   
 

+onidle sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/parseini.html b/harbour/website/samples/parseini.html index 270cb1d3fa..dd0fa4373d 100644 --- a/harbour/website/samples/parseini.html +++ b/harbour/website/samples/parseini.html @@ -1,136 +1,136 @@ - - - - -Harbour Project - Samples -> parseini - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Test for Ini file reading/writing
Test for Ini files reading/writing using native Harbour functions.
   
 Files: 
  
 Screenshot: 
   
 

- parseini sample running on Windows Vista
-
-
- parseini sample running on Linux
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> parseini + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Test for Ini file reading/writing
Test for Ini files reading/writing using native Harbour functions.
   
 Files: 
  
 Screenshot: 
   
 

+ parseini sample running on Windows Vista
+
+
+ parseini sample running on Linux
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/switch.html b/harbour/website/samples/switch.html index 73e3bb6930..f06ee296db 100644 --- a/harbour/website/samples/switch.html +++ b/harbour/website/samples/switch.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> switch - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Switch support
This example demonstrates how to use the SWITCH to execute one or more blocks of statements.
   
 Files: 
  
 Screenshot: 
   
 

-switch sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> switch + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Switch support
This example demonstrates how to use the SWITCH to execute one or more blocks of statements.
   
 Files: 
  
 Screenshot: 
   
 

+switch sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/testbrdb.html b/harbour/website/samples/testbrdb.html index 84b4187d01..3bfd6b8d4a 100644 --- a/harbour/website/samples/testbrdb.html +++ b/harbour/website/samples/testbrdb.html @@ -1,125 +1,125 @@ - - - - -Harbour Project - Samples -> testbrdb - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Browse() function demo
Example to test Browse() function features.
 Files: 
  
 

Screenshots:

 
 

- testbrdb sample running on Windows Vista
-
-
- testbrdb sample running on Linux
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> testbrdb + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Browse() function demo
Example to test Browse() function features.
 Files: 
  
 

Screenshots:

 
 

+ testbrdb sample running on Windows Vista
+
+
+ testbrdb sample running on Linux
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/testbrw.html b/harbour/website/samples/testbrw.html index 22c5364814..bf5f0a6e57 100644 --- a/harbour/website/samples/testbrw.html +++ b/harbour/website/samples/testbrw.html @@ -1,125 +1,125 @@ - - - - -Harbour Project - Samples -> testbrw - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
TBrowse() function demo
Harbour Class TBrowse and TBColumn sample.
 Files: 
  
 

Screenshots:

 
 

- testbrw sample running on Windows Vista
-
-
- testbrw sample running on Linux
-
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> testbrw + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
TBrowse() function demo
Harbour Class TBrowse and TBColumn sample.
 Files: 
  
 

Screenshots:

 
 

+ testbrw sample running on Windows Vista
+
+
+ testbrw sample running on Linux
+
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/testbrw.prg.html b/harbour/website/samples/testbrw.prg.html index 147237a6bc..3669757eb3 100644 --- a/harbour/website/samples/testbrw.prg.html +++ b/harbour/website/samples/testbrw.prg.html @@ -1,169 +1,169 @@ - -testbrw.prg - - - - - -
// Harbour Class TBrowse and TBColumn sample
-
-#include "inkey.ch"
-
-function Main()
-
-   local oBrowse := TBrowseNew( 5, 5, 16, 30 )
-   local aTest0  := { "This", "is", "a", "browse", "on", "an", "array", "test", "with", "a", "long", "data" }
-   local aTest1  := { 1, 2, 3, 4, 5, 6, 7, 8, 10000, -1000, 54, 456342 }
-   local aTest2  := { date(), date()+4, date()+56, date()+14, date()+5, date()+6, date()+7, date()+8, date()+10000, date()-1000, date()-54, date()+456342 }
-   local aTest3  := { .t., .f., .t., .t., .f., .f., .t., .f., .t., .t., .f., .f. }
-   local n       := 1
-   local nKey
-   local lEnd    := .f.
-   local nCursor
-   local cColor
-   local nRow, nCol
-   local nTmpRow, nTmpCol
-
-   oBrowse:colorSpec     = "W+/B, N/BG"
-   oBrowse:ColSep        = "|"
-   oBrowse:HeadSep        = "?-"
-   oBrowse:FootSep        = "-"
-   oBrowse:GoTopBlock    = {|| n := 1 }
-   oBrowse:GoBottomBlock = {|| n := Len( aTest0 ) }
-   oBrowse:SkipBlock     = {| nSkip, nPos | nPos := n,;
-                             n := If( nSkip > 0, Min( Len( aTest0 ), n + nSkip ),;
-                             Max( 1, n + nSkip )), n - nPos }
-
-   oBrowse:AddColumn( TBColumnNew( "First",  {|| n } ) )
-   oBrowse:AddColumn( TBColumnNew( "Second", {|| aTest0[ n ] } ) )
-   oBrowse:AddColumn( TBColumnNew( "Third",  {|| aTest1[ n ] } ) )
-   oBrowse:AddColumn( TBColumnNew( "Forth",  {|| aTest2[ n ] } ) )
-   oBrowse:AddColumn( TBColumnNew( "Fifth",  {|| aTest3[ n ] } ) )
-   oBrowse:GetColumn(1):Footing = 'Number'
-   oBrowse:GetColumn(2):Footing = 'Strins'
-
-   oBrowse:GetColumn(2):Picture := '@!'
-
-   oBrowse:GetColumn(3):Footing = 'Number'
-   oBrowse:GetColumn(3):Picture := '999,999.99'
-   oBrowse:GetColumn(4):Footing = 'Dates'
-   oBrowse:GetColumn(5):Footing = 'Logical'
-   // needed since I've changed some columns _after_ I've added them to TBrowse object
-   oBrowse:Configure()
-
-   Alert( oBrowse:ClassName() )
-   Alert( oBrowse:GetColumn( 1 ):ClassName() )
-
-   oBrowse:Freeze = 1
-   nCursor := SetCursor( 0 )
-   cColor := SetColor( "W+/B" )
-   nRow := Row()
-   nCol := Col()
-   @ 4,4,17,31 BOX "+-+|+-+| "
-#ifdef HB_COMPAT_C53
- oBrowse:Setkey(0,{|ob,nkey| Defproc(ob,nKey)})
-while .t.
-    oBrowse:ForceStable()
- if (oBrowse:applykey(inkey(0))== -1)
-   exit
-endif
-enddo
-#else
-While !lEnd
-      oBrowse:ForceStable()
-
-      nKey = InKey( 0 )
-
-      do case
-         case nKey == K_ESC
-              SetPos( 17, 0 )
-              lEnd = .t.
-
-         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()
-
-         case nKey = K_TAB
-              nTmpRow := ROW()
-              nTmpCol := COL()
-              @ 0, 0 SAY TIME()
-              DevPos( nTmpRow, nTmpCol )
-
-      endcase
-
-   end
-#endif
-   DevPos( nRow, nCol )
-   SetColor( cColor )
-   SetCursor( nCursor )
-
-return nil
-#ifdef HB_COMPAT_C53
-function  defproc(ob,nkey)
-Local nTmpRow,nTmpCol
-        if nKey = K_TAB
-              nTmpRow := ROW()
-              nTmpCol := COL()
-              @ 0, 0 SAY TIME()
-              DevPos( nTmpRow, nTmpCol )
-            ob:Refreshall()
-        endif
-        return 1
-#endif
-
-
+ +testbrw.prg + + + + + +
// Harbour Class TBrowse and TBColumn sample
+
+#include "inkey.ch"
+
+function Main()
+
+   local oBrowse := TBrowseNew( 5, 5, 16, 30 )
+   local aTest0  := { "This", "is", "a", "browse", "on", "an", "array", "test", "with", "a", "long", "data" }
+   local aTest1  := { 1, 2, 3, 4, 5, 6, 7, 8, 10000, -1000, 54, 456342 }
+   local aTest2  := { date(), date()+4, date()+56, date()+14, date()+5, date()+6, date()+7, date()+8, date()+10000, date()-1000, date()-54, date()+456342 }
+   local aTest3  := { .t., .f., .t., .t., .f., .f., .t., .f., .t., .t., .f., .f. }
+   local n       := 1
+   local nKey
+   local lEnd    := .f.
+   local nCursor
+   local cColor
+   local nRow, nCol
+   local nTmpRow, nTmpCol
+
+   oBrowse:colorSpec     = "W+/B, N/BG"
+   oBrowse:ColSep        = "|"
+   oBrowse:HeadSep        = "?-"
+   oBrowse:FootSep        = "-"
+   oBrowse:GoTopBlock    = {|| n := 1 }
+   oBrowse:GoBottomBlock = {|| n := Len( aTest0 ) }
+   oBrowse:SkipBlock     = {| nSkip, nPos | nPos := n,;
+                             n := If( nSkip > 0, Min( Len( aTest0 ), n + nSkip ),;
+                             Max( 1, n + nSkip )), n - nPos }
+
+   oBrowse:AddColumn( TBColumnNew( "First",  {|| n } ) )
+   oBrowse:AddColumn( TBColumnNew( "Second", {|| aTest0[ n ] } ) )
+   oBrowse:AddColumn( TBColumnNew( "Third",  {|| aTest1[ n ] } ) )
+   oBrowse:AddColumn( TBColumnNew( "Forth",  {|| aTest2[ n ] } ) )
+   oBrowse:AddColumn( TBColumnNew( "Fifth",  {|| aTest3[ n ] } ) )
+   oBrowse:GetColumn(1):Footing = 'Number'
+   oBrowse:GetColumn(2):Footing = 'Strins'
+
+   oBrowse:GetColumn(2):Picture := '@!'
+
+   oBrowse:GetColumn(3):Footing = 'Number'
+   oBrowse:GetColumn(3):Picture := '999,999.99'
+   oBrowse:GetColumn(4):Footing = 'Dates'
+   oBrowse:GetColumn(5):Footing = 'Logical'
+   // needed since I've changed some columns _after_ I've added them to TBrowse object
+   oBrowse:Configure()
+
+   Alert( oBrowse:ClassName() )
+   Alert( oBrowse:GetColumn( 1 ):ClassName() )
+
+   oBrowse:Freeze = 1
+   nCursor := SetCursor( 0 )
+   cColor := SetColor( "W+/B" )
+   nRow := Row()
+   nCol := Col()
+   @ 4,4,17,31 BOX "+-+|+-+| "
+#ifdef HB_COMPAT_C53
+ oBrowse:Setkey(0,{|ob,nkey| Defproc(ob,nKey)})
+while .t.
+    oBrowse:ForceStable()
+ if (oBrowse:applykey(inkey(0))== -1)
+   exit
+endif
+enddo
+#else
+While !lEnd
+      oBrowse:ForceStable()
+
+      nKey = InKey( 0 )
+
+      do case
+         case nKey == K_ESC
+              SetPos( 17, 0 )
+              lEnd = .t.
+
+         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()
+
+         case nKey = K_TAB
+              nTmpRow := ROW()
+              nTmpCol := COL()
+              @ 0, 0 SAY TIME()
+              DevPos( nTmpRow, nTmpCol )
+
+      endcase
+
+   end
+#endif
+   DevPos( nRow, nCol )
+   SetColor( cColor )
+   SetCursor( nCursor )
+
+return nil
+#ifdef HB_COMPAT_C53
+function  defproc(ob,nkey)
+Local nTmpRow,nTmpCol
+        if nKey = K_TAB
+              nTmpRow := ROW()
+              nTmpCol := COL()
+              @ 0, 0 SAY TIME()
+              DevPos( nTmpRow, nTmpCol )
+            ob:Refreshall()
+        endif
+        return 1
+#endif
+
+
diff --git a/harbour/website/samples/testcgi.html b/harbour/website/samples/testcgi.html index fea3cf0500..e0619dfa66 100644 --- a/harbour/website/samples/testcgi.html +++ b/harbour/website/samples/testcgi.html @@ -1,127 +1,127 @@ - - - - -Harbour Project - Samples -> testcgi - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Harbour Test of a CGI/HTML-Generator class
This example shows how to work with Web pages using a custom class to manipulate data coming from a file and returns it to web browser.
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> testcgi + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Harbour Test of a CGI/HTML-Generator class
This example shows how to work with Web pages using a custom class to manipulate data coming from a file and returns it to web browser.
   
 Files: 
  
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/testcgi.prg.html b/harbour/website/samples/testcgi.prg.html index 3962ed826b..23dba79484 100644 --- a/harbour/website/samples/testcgi.prg.html +++ b/harbour/website/samples/testcgi.prg.html @@ -1,495 +1,495 @@ - -testcgi.prg - - - - - -
/*
- *
- * TestCGI.PRG
- * Harbour Test of a CGI/HTML-Generator class.
- *
- * 1999/05/30  First implementation.
- *
- *             Tips: - Use ShowResults to make dynamic html (to test dynamic
- *                     results, put the exe file on CGI-BIN dir or equivalent);
- *                   - Use SaveToFile to make static html page
- *
- * 1999/05/31  Initial CGI functionality.
- * 1999/06/01  Translated %nn to correct chars.
- * 1999/06/02  Dynamic TAG matching routines (inspired on Delphi).
- *             First attempt to convert Delphi's ISAPI dll of WebSites'
- *             Function List
- *             (See http://www.flexsys-ci.com/harbour-project/functions.htm)
- * 1999/06/11  List can be viewed online at
- *             http://www.flexsys-ci.com/cgi-bin/testcgi.exe
- * 1999/07/29  Changed qOut() calls to OutStd() calls.
- *
- */
-
-#define CGI_SERVER_SOFTWARE     01
-#define CGI_SERVER_NAME         02
-#define CGI_GATEWAY_INTERFACE   03
-#define CGI_SERVER_PROTOCOL     04
-#define CGI_SERVER_PORT         05
-#define CGI_REQUEST_METHOD      06
-#define CGI_HTTP_ACCEPT         07
-#define CGI_HTTP_USER_AGENT     08
-#define CGI_HTTP_REFERER        09
-#define CGI_PATH_INFO           10
-#define CGI_PATH_TRANSLATED     11
-#define CGI_SCRIPT_NAME         12
-#define CGI_QUERY_STRING        13
-#define CGI_REMOTE_HOST         14
-#define CGI_REMOTE_ADDR         15
-#define CGI_REMOTE_USER         16
-#define CGI_AUTH_TYPE           17
-#define CGI_CONTENT_TYPE        18
-#define CGI_CONTENT_LENGTH      19
-#define CGI_ANNOTATION_SERVER   20
-
-#define IF_BUFFER 65535
-
-FUNCTION Main()
-
-   LOCAL oHTML := THTML():New()
-   LOCAL hFile, nPos, cString, cBuf, i, cTable, cLine
-
-   oHTML:SetHTMLFile( "function.cfm" )
-
-   hFile := fOpen( "list.txt", 0 )
-
-   cString := space( IF_BUFFER )
-   cBuf    := ""
-   cTable  := ""
-
-   // Builds dynamic table replacement
-   WHILE hFile != -1 .AND. (nPos := fRead( hFile, @cString, IF_BUFFER )) > 0
-      i := 1
-      DO WHILE i <= nPos
-
-         IF substr( cString, i, 1 ) = chr( 13 )
-            i := i + 1
-            cLine := cBuf
-            cBuf  := ""
-
-            IF left( cLine, 1 ) <> ';'
-               cTable += '<TR>' + chr(10)+chr(13) + ;
-                 '<TD WIDTH="50%"><FONT SIZE="2" FACE="Tahoma">' +                 ;
-                 ParseString( cLine, ';', 1 ) + '</FONT></TD>' + chr(10)+chr(13) + ;
-                 '<TD WIDTH="16%">' +                                              ;
-                 if( ParseString( cLine, ';', 2 ) = 'R',                           ;
-                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
-                    '&nbsp' ) +                                                    ;
-                 '</TD>' + chr(10)+chr(13) +                                       ;
-                 '<TD WIDTH="16%">' +                                              ;
-                 if( ParseString( cLine, ';', 2 ) = 'S',                           ;
-                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
-                    '&nbsp' ) +                                                    ;
-                 '</TD>' + chr(10)+chr(13) +                                       ;
-                 '<TD WIDTH="16%">' +                                              ;
-                 if( ParseString( cLine, ';', 2 ) = 'N',                           ;
-                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
-                    '&nbsp' ) +                                                    ;
-                 '</TD>' + chr(10)+chr(13) +                                       ;
-                 '</TR>'
-            ENDIF
-         ELSE
-            cBuf := cBuf + substr( cString, i, 1 )
-         ENDIF
-
-         i++
-      ENDDO
-   ENDDO
-
-   fClose( hFile )
-
-   oHTML:AddReplaceTag( "Functions", cTable )
-   oHTML:Generate()
-
-   // Uncomment the following if you don't have a Web Server to test
-   // this sample
-
-//   oHTML:SaveToFile( "test.htm" )
-
-   // If the above is uncommented, you may comment this line:
-
-   oHTML:ShowResult()
-
-   RETURN( NIL )
-
-FUNCTION ParseString( cString, cDelim, nRet )
-
-   LOCAL cBuf, aElem, nPosFim, nSize, i
-
-   nSize := len( cString ) - len( StrTran( cString, cDelim, '' ) ) + 1
-   aElem := array( nSize )
-
-   cBuf := cString
-   i := 1
-   FOR i := 1 TO nSize
-      nPosFim := at( cDelim, cBuf )
-
-      IF nPosFim > 0
-         aElem[i] := substr( cBuf, 1, nPosFim - 1 )
-      ELSE
-         aElem[i] := cBuf
-      ENDIF
-
-      cBuf := substr( cBuf, nPosFim + 1, len( cBuf ) )
-
-   NEXT i
-
-   RETURN( aElem[ nRet ] )
-
-FUNCTION Hex2Dec( cHex )
-
-   LOCAL aHex := { { "0", 00 }, ;
-                   { "1", 01 }, ;
-                   { "2", 02 }, ;
-                   { "3", 03 }, ;
-                   { "4", 04 }, ;
-                   { "5", 05 }, ;
-                   { "6", 06 }, ;
-                   { "7", 07 }, ;
-                   { "8", 08 }, ;
-                   { "9", 09 }, ;
-                   { "A", 10 }, ;
-                   { "B", 11 }, ;
-                   { "C", 12 }, ;
-                   { "D", 13 }, ;
-                   { "E", 14 }, ;
-                   { "F", 15 } }
-   LOCAL nRet
-   LOCAL nRes
-
-   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( left( cHex, 1 ) ) } )
-   nRes := aHex[nRet, 2] * 16
-   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( right( cHex, 1 ) ) } )
-   nRes += aHex[nRet, 2]
-
-   RETURN( nRes )
-
-/*-------------------------------------------------------------------------*/
-
-FUNCTION THTML
-
-   STATIC oClass
-
-   IF oClass == NIL
-      oClass = HBClass():New( "THTML" )
-
-      oClass:AddData( "cTitle" )                       // Page Title
-      oClass:AddData( "cBody" )                        // HTML Body Handler
-      oClass:AddData( "cBGColor" )                     // Background Color
-      oClass:AddData( "cLinkColor" )                   // Link Color
-      oClass:AddData( "cvLinkColor" )                  // Visited Link Color
-      oClass:AddData( "cContent" )                     // Page Content Handler
-
-      oClass:AddData( "aCGIContents" )
-      oClass:AddData( "aQueryFields" )
-      oClass:AddData( "cHTMLFile" )
-      oClass:AddData( "aReplaceTags" )
-
-      oClass:AddMethod( "New",        @New() )         // New Method
-      oClass:AddMethod( "SetTitle",   @SetTitle() )    // Set Page Title
-      oClass:AddMethod( "AddHead",    @AddHead() )     // Add <H1> Header
-      oClass:AddMethod( "AddLink",    @AddLink() )     // Add Hyperlink
-      oClass:AddMethod( "AddPara",    @AddPara() )     // Add Paragraph
-      oClass:AddMethod( "SaveToFile", @SaveToFile() )  // Saves Content to File
-      oClass:AddMethod( "ShowResult", @ShowResult() )  // Show Result - SEE Fcn
-      oClass:AddMethod( "Generate",   @Generate() )    // Generate HTML
-      oClass:AddMethod( "SetHTMLFile",@SetHTMLFile() ) // Sets source HTML file
-
-      oClass:AddMethod( "ProcessCGI",    @ProcessCGI() )
-      oClass:AddMethod( "GetCGIParam",   @GetCGIParam() )
-      oClass:AddMethod( "QueryFields",   @QueryFields() )
-      oClass:AddMethod( "AddReplaceTag", @AddReplaceTag() )
-
-      oClass:Create()
-
-   ENDIF
-
-   RETURN( oClass:Instance() )
-
-STATIC FUNCTION New()
-
-   LOCAL Self := QSelf()
-
-   ::cTitle       := "Untitled"
-   ::cBGColor     := "#FFFFFF"
-   ::cLinkColor   := "#0000FF"
-   ::cvLinkColor  := "#FF0000"
-   ::cContent     := ""
-   ::cBody        := ""
-   ::aCGIContents := {}
-   ::aQueryFields := {}
-   ::aReplaceTags := {}
-   ::cHTMLFile    := ""
-
-   RETURN( Self )
-
-STATIC FUNCTION SetTitle( cTitle )
-
-   LOCAL Self := QSelf()
-
-   ::cTitle := cTitle
-
-   RETURN( Self )
-
-STATIC FUNCTION AddLink( cLinkTo, cLinkName )
-
-   LOCAL Self := QSelf()
-
-   ::cBody := ::cBody + ;
-      "<A HREF='" + cLinkTo + "'>" + cLinkName + "</A>"
-
-   RETURN( Self )
-
-STATIC FUNCTION AddHead( cDescr )
-
-   LOCAL Self := QSelf()
-
-   // Why this doesn't work?
-   // ::cBody += ...
-   // ???
-
-   ::cBody := ::cBody + ;
-      "<H1>" + cDescr + "</H1>"
-
-   RETURN( NIL )
-
-STATIC FUNCTION AddPara( cPara, cAlign )
-
-   LOCAL Self := QSelf()
-
-   ::cBody := ::cBody + ;
-      "<P ALIGN='" + cAlign + "'>" + HB_OSNewLine() + ;
-      cPara + HB_OSNewLine() + ;
-      "</P>"
-
-   RETURN( Self )
-
-STATIC FUNCTION Generate()
-
-   LOCAL Self := QSelf()
-   LOCAL cFile, i, hFile, nPos, cRes := ""
-   LOCAL lFlag := .f.
-
-   // Is this a meta file or hand generated script?
-   IF empty( ::cHTMLFile )
-      ::cContent :=                                                        ;
-         "<HTML><HEAD>"                                        + HB_OSNewLine() + ;
-         "<TITLE>" + ::cTitle + "</TITLE>"                     + HB_OSNewLine() + ;
-         "<BODY link='" + ::cLinkColor + "' " +                            ;
-         "vlink='" + ::cvLinkColor + "'>" +                    + HB_OSNewLine() + ;
-         ::cBody                                               + HB_OSNewLine() + ;
-         "</BODY></HTML>"
-   ELSE
-      ::cContent := ""
-
-      // Does cHTMLFile exists?
-      IF !File( ::cHTMLFile )
-         ::cContent := "<H1>Server Error</H1><P><I>No such file: " + ;
-           ::cHTMLFile
-      ELSE
-         // Read from file
-         hFile := fOpen( ::cHTMLFile, 0 )
-         cFile := space( IF_BUFFER )
-         DO WHILE (nPos := fRead( hFile, @cFile, IF_BUFFER )) > 0
-
-            cFile := left( cFile, nPos )
-            cRes += cFile
-            cFile := space( IF_BUFFER )
-
-         ENDDO
-
-         fClose( hFile )
-
-         // Replace matched tags
-         i := 1
-         ::cContent := cRes
-         /* TODO: Replace this DO WHILE with FOR..NEXT */
-         DO WHILE i <= len( ::aReplaceTags )
-            ::cContent := strtran( ::cContent, ;
-               "<#" + ::aReplaceTags[i, 1] + ">", ::aReplaceTags[i, 2] )
-            i++
-         ENDDO
-
-         /* TODO: Clear remaining (not matched) tags */
-         /*
-         cRes := ""
-         FOR i := 1 TO len( ::cContent )
-            IF substr( ::cContent, i, 1 ) == "<" .AND. ;
-               substr( ::cContent, i + 1, 1 ) == "#"
-               lFlag := .t.
-            ELSEIF substr( ::cContent, i, 1 ) == ">" .AND. lFlag
-               lFlag := .f.
-            ELSEIF !lFlag
-               cRes += substr( ::cContent, i, 1 )
-            ENDIF
-         NEXT i
-
-         ::cContent := cRes
-         */
-
-      ENDIF
-   ENDIF
-
-   RETURN( Self )
-
-STATIC FUNCTION ShowResult()
-
-   LOCAL Self := QSelf()
-
-   OutStd(                                                                 ;
-      "HTTP/1.0 200 OK"                                        + HB_OSNewLine() + ;
-      "CONTENT-TYPE: TEXT/HTML"                      + HB_OSNewLine() + HB_OSNewLine() + ;
-      ::cContent )
-
-   RETURN( Self )
-
-STATIC FUNCTION SaveToFile( cFile )
-
-   LOCAL Self  := QSelf()
-   LOCAL hFile := fCreate( cFile )
-
-   fWrite( hFile, ::cContent )
-   fClose( hFile )
-
-   RETURN( Self )
-
-STATIC FUNCTION ProcessCGI()
-
-   LOCAL Self   := QSelf()
-   LOCAL cQuery := ""
-   LOCAL cBuff  := ""
-   LOCAL nBuff  := 0
-   LOCAL i
-
-   IF empty( ::aCGIContents )
-      ::aCGIContents := {               ;
-         GetEnv( "SERVER_SOFTWARE"   ), ;
-         GetEnv( "SERVER_NAME"       ), ;
-         GetEnv( "GATEWAY_INTERFACE" ), ;
-         GetEnv( "SERVER_PROTOCOL"   ), ;
-         GetEnv( "SERVER_PORT"       ), ;
-         GetEnv( "REQUEST_METHOD"    ), ;
-         GetEnv( "HTTP_ACCEPT"       ), ;
-         GetEnv( "HTTP_USER_AGENT"   ), ;
-         GetEnv( "HTTP_REFERER"      ), ;
-         GetEnv( "PATH_INFO"         ), ;
-         GetEnv( "PATH_TRANSLATED"   ), ;
-         GetEnv( "SCRIPT_NAME"       ), ;
-         GetEnv( "QUERY_STRING"      ), ;
-         GetEnv( "REMOTE_HOST"       ), ;
-         GetEnv( "REMOTE_ADDR"       ), ;
-         GetEnv( "REMOTE_USER"       ), ;
-         GetEnv( "AUTH_TYPE"         ), ;
-         GetEnv( "CONTENT_TYPE"      ), ;
-         GetEnv( "CONTENT_LENGTH"    ), ;
-         GetEnv( "ANNOTATION_SERVER" )  ;
-          }
-
-      cQuery := ::GetCGIParam( CGI_QUERY_STRING )
-
-      IF !empty( cQuery )
-
-        ::aQueryFields := {}
-
-        FOR i := 1 TO len( cQuery ) + 1
-
-          IF i > len( cQuery ) .OR. substr( cQuery, i, 1 ) == "&"
-
-             aadd( ::aQueryFields,                          ;
-                { substr( cBuff, 1, at( "=", cBuff ) - 1 ), ;
-                  strtran( substr( cBuff, at( "=", cBuff ) + 1,      ;
-                     len( cBuff ) - at( "=", cBuff ) + 1 ), "+", " " ) } )
-             cBuff := ""
-          ELSE
-             IF substr( cQuery, i, 1 ) = "%"
-                cBuff += chr( Hex2Dec( substr( cQuery, i + 1, 2 ) ) )
-                nBuff := 3
-             ENDIF
-
-             IF nBuff = 0
-                cBuff += substr( cQuery, i, 1 )
-             ELSE
-                nBuff--
-             ENDIF
-          ENDIF
-
-        NEXT
-
-      ENDIF
-
-   ENDIF
-
-   RETURN( Self )
-
-STATIC FUNCTION GetCGIParam( nParam )
-
-   LOCAL Self := QSelf()
-
-   ::ProcessCGI()
-
-   IF nParam > 20 .OR. nParam < 1
-      outerr( "Invalid CGI parameter" )
-      RETURN( NIL )
-   ENDIF
-
-   RETURN( ::aCGIContents[nParam] )
-
-STATIC FUNCTION QueryFields( cQueryName )
-
-   LOCAL Self := QSelf()
-   LOCAL cRet := ""
-   LOCAL nRet
-
-   ::ProcessCGI()
-
-   nRet := aScan( ::aQueryFields, ;
-      {| x | upper( x[1] ) = upper( cQueryName ) } )
-
-   IF nRet > 0
-      cRet := ::aQueryFields[nRet, 2]
-   ENDIF
-
-   RETURN( cRet )
-
-STATIC FUNCTION SetHTMLFile( cFile )
-
-   LOCAL Self := QSelf()
-
-   ::cHTMLFile := cFile
-
-   RETURN( Self )
-
-STATIC FUNCTION AddReplaceTag( cTag, cReplaceText )
-
-   LOCAL Self := QSelf()
-
-   aAdd( ::aReplaceTags, { cTag, cReplaceText } )
-
-   RETURN( Self )
-
-
- + +testcgi.prg + + + + + +
/*
+ *
+ * TestCGI.PRG
+ * Harbour Test of a CGI/HTML-Generator class.
+ *
+ * 1999/05/30  First implementation.
+ *
+ *             Tips: - Use ShowResults to make dynamic html (to test dynamic
+ *                     results, put the exe file on CGI-BIN dir or equivalent);
+ *                   - Use SaveToFile to make static html page
+ *
+ * 1999/05/31  Initial CGI functionality.
+ * 1999/06/01  Translated %nn to correct chars.
+ * 1999/06/02  Dynamic TAG matching routines (inspired on Delphi).
+ *             First attempt to convert Delphi's ISAPI dll of WebSites'
+ *             Function List
+ *             (See http://www.flexsys-ci.com/harbour-project/functions.htm)
+ * 1999/06/11  List can be viewed online at
+ *             http://www.flexsys-ci.com/cgi-bin/testcgi.exe
+ * 1999/07/29  Changed qOut() calls to OutStd() calls.
+ *
+ */
+
+#define CGI_SERVER_SOFTWARE     01
+#define CGI_SERVER_NAME         02
+#define CGI_GATEWAY_INTERFACE   03
+#define CGI_SERVER_PROTOCOL     04
+#define CGI_SERVER_PORT         05
+#define CGI_REQUEST_METHOD      06
+#define CGI_HTTP_ACCEPT         07
+#define CGI_HTTP_USER_AGENT     08
+#define CGI_HTTP_REFERER        09
+#define CGI_PATH_INFO           10
+#define CGI_PATH_TRANSLATED     11
+#define CGI_SCRIPT_NAME         12
+#define CGI_QUERY_STRING        13
+#define CGI_REMOTE_HOST         14
+#define CGI_REMOTE_ADDR         15
+#define CGI_REMOTE_USER         16
+#define CGI_AUTH_TYPE           17
+#define CGI_CONTENT_TYPE        18
+#define CGI_CONTENT_LENGTH      19
+#define CGI_ANNOTATION_SERVER   20
+
+#define IF_BUFFER 65535
+
+FUNCTION Main()
+
+   LOCAL oHTML := THTML():New()
+   LOCAL hFile, nPos, cString, cBuf, i, cTable, cLine
+
+   oHTML:SetHTMLFile( "function.cfm" )
+
+   hFile := fOpen( "list.txt", 0 )
+
+   cString := space( IF_BUFFER )
+   cBuf    := ""
+   cTable  := ""
+
+   // Builds dynamic table replacement
+   WHILE hFile != -1 .AND. (nPos := fRead( hFile, @cString, IF_BUFFER )) > 0
+      i := 1
+      DO WHILE i <= nPos
+
+         IF substr( cString, i, 1 ) = chr( 13 )
+            i := i + 1
+            cLine := cBuf
+            cBuf  := ""
+
+            IF left( cLine, 1 ) <> ';'
+               cTable += '<TR>' + chr(10)+chr(13) + ;
+                 '<TD WIDTH="50%"><FONT SIZE="2" FACE="Tahoma">' +                 ;
+                 ParseString( cLine, ';', 1 ) + '</FONT></TD>' + chr(10)+chr(13) + ;
+                 '<TD WIDTH="16%">' +                                              ;
+                 if( ParseString( cLine, ';', 2 ) = 'R',                           ;
+                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
+                    '&nbsp' ) +                                                    ;
+                 '</TD>' + chr(10)+chr(13) +                                       ;
+                 '<TD WIDTH="16%">' +                                              ;
+                 if( ParseString( cLine, ';', 2 ) = 'S',                           ;
+                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
+                    '&nbsp' ) +                                                    ;
+                 '</TD>' + chr(10)+chr(13) +                                       ;
+                 '<TD WIDTH="16%">' +                                              ;
+                 if( ParseString( cLine, ';', 2 ) = 'N',                           ;
+                    '<CENTER><IMG SRC="images/purple-m.gif">',                     ;
+                    '&nbsp' ) +                                                    ;
+                 '</TD>' + chr(10)+chr(13) +                                       ;
+                 '</TR>'
+            ENDIF
+         ELSE
+            cBuf := cBuf + substr( cString, i, 1 )
+         ENDIF
+
+         i++
+      ENDDO
+   ENDDO
+
+   fClose( hFile )
+
+   oHTML:AddReplaceTag( "Functions", cTable )
+   oHTML:Generate()
+
+   // Uncomment the following if you don't have a Web Server to test
+   // this sample
+
+//   oHTML:SaveToFile( "test.htm" )
+
+   // If the above is uncommented, you may comment this line:
+
+   oHTML:ShowResult()
+
+   RETURN( NIL )
+
+FUNCTION ParseString( cString, cDelim, nRet )
+
+   LOCAL cBuf, aElem, nPosFim, nSize, i
+
+   nSize := len( cString ) - len( StrTran( cString, cDelim, '' ) ) + 1
+   aElem := array( nSize )
+
+   cBuf := cString
+   i := 1
+   FOR i := 1 TO nSize
+      nPosFim := at( cDelim, cBuf )
+
+      IF nPosFim > 0
+         aElem[i] := substr( cBuf, 1, nPosFim - 1 )
+      ELSE
+         aElem[i] := cBuf
+      ENDIF
+
+      cBuf := substr( cBuf, nPosFim + 1, len( cBuf ) )
+
+   NEXT i
+
+   RETURN( aElem[ nRet ] )
+
+FUNCTION Hex2Dec( cHex )
+
+   LOCAL aHex := { { "0", 00 }, ;
+                   { "1", 01 }, ;
+                   { "2", 02 }, ;
+                   { "3", 03 }, ;
+                   { "4", 04 }, ;
+                   { "5", 05 }, ;
+                   { "6", 06 }, ;
+                   { "7", 07 }, ;
+                   { "8", 08 }, ;
+                   { "9", 09 }, ;
+                   { "A", 10 }, ;
+                   { "B", 11 }, ;
+                   { "C", 12 }, ;
+                   { "D", 13 }, ;
+                   { "E", 14 }, ;
+                   { "F", 15 } }
+   LOCAL nRet
+   LOCAL nRes
+
+   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( left( cHex, 1 ) ) } )
+   nRes := aHex[nRet, 2] * 16
+   nRet := ascan( aHex, {| x | upper( x[1] ) = upper( right( cHex, 1 ) ) } )
+   nRes += aHex[nRet, 2]
+
+   RETURN( nRes )
+
+/*-------------------------------------------------------------------------*/
+
+FUNCTION THTML
+
+   STATIC oClass
+
+   IF oClass == NIL
+      oClass = HBClass():New( "THTML" )
+
+      oClass:AddData( "cTitle" )                       // Page Title
+      oClass:AddData( "cBody" )                        // HTML Body Handler
+      oClass:AddData( "cBGColor" )                     // Background Color
+      oClass:AddData( "cLinkColor" )                   // Link Color
+      oClass:AddData( "cvLinkColor" )                  // Visited Link Color
+      oClass:AddData( "cContent" )                     // Page Content Handler
+
+      oClass:AddData( "aCGIContents" )
+      oClass:AddData( "aQueryFields" )
+      oClass:AddData( "cHTMLFile" )
+      oClass:AddData( "aReplaceTags" )
+
+      oClass:AddMethod( "New",        @New() )         // New Method
+      oClass:AddMethod( "SetTitle",   @SetTitle() )    // Set Page Title
+      oClass:AddMethod( "AddHead",    @AddHead() )     // Add <H1> Header
+      oClass:AddMethod( "AddLink",    @AddLink() )     // Add Hyperlink
+      oClass:AddMethod( "AddPara",    @AddPara() )     // Add Paragraph
+      oClass:AddMethod( "SaveToFile", @SaveToFile() )  // Saves Content to File
+      oClass:AddMethod( "ShowResult", @ShowResult() )  // Show Result - SEE Fcn
+      oClass:AddMethod( "Generate",   @Generate() )    // Generate HTML
+      oClass:AddMethod( "SetHTMLFile",@SetHTMLFile() ) // Sets source HTML file
+
+      oClass:AddMethod( "ProcessCGI",    @ProcessCGI() )
+      oClass:AddMethod( "GetCGIParam",   @GetCGIParam() )
+      oClass:AddMethod( "QueryFields",   @QueryFields() )
+      oClass:AddMethod( "AddReplaceTag", @AddReplaceTag() )
+
+      oClass:Create()
+
+   ENDIF
+
+   RETURN( oClass:Instance() )
+
+STATIC FUNCTION New()
+
+   LOCAL Self := QSelf()
+
+   ::cTitle       := "Untitled"
+   ::cBGColor     := "#FFFFFF"
+   ::cLinkColor   := "#0000FF"
+   ::cvLinkColor  := "#FF0000"
+   ::cContent     := ""
+   ::cBody        := ""
+   ::aCGIContents := {}
+   ::aQueryFields := {}
+   ::aReplaceTags := {}
+   ::cHTMLFile    := ""
+
+   RETURN( Self )
+
+STATIC FUNCTION SetTitle( cTitle )
+
+   LOCAL Self := QSelf()
+
+   ::cTitle := cTitle
+
+   RETURN( Self )
+
+STATIC FUNCTION AddLink( cLinkTo, cLinkName )
+
+   LOCAL Self := QSelf()
+
+   ::cBody := ::cBody + ;
+      "<A HREF='" + cLinkTo + "'>" + cLinkName + "</A>"
+
+   RETURN( Self )
+
+STATIC FUNCTION AddHead( cDescr )
+
+   LOCAL Self := QSelf()
+
+   // Why this doesn't work?
+   // ::cBody += ...
+   // ???
+
+   ::cBody := ::cBody + ;
+      "<H1>" + cDescr + "</H1>"
+
+   RETURN( NIL )
+
+STATIC FUNCTION AddPara( cPara, cAlign )
+
+   LOCAL Self := QSelf()
+
+   ::cBody := ::cBody + ;
+      "<P ALIGN='" + cAlign + "'>" + HB_OSNewLine() + ;
+      cPara + HB_OSNewLine() + ;
+      "</P>"
+
+   RETURN( Self )
+
+STATIC FUNCTION Generate()
+
+   LOCAL Self := QSelf()
+   LOCAL cFile, i, hFile, nPos, cRes := ""
+   LOCAL lFlag := .f.
+
+   // Is this a meta file or hand generated script?
+   IF empty( ::cHTMLFile )
+      ::cContent :=                                                        ;
+         "<HTML><HEAD>"                                        + HB_OSNewLine() + ;
+         "<TITLE>" + ::cTitle + "</TITLE>"                     + HB_OSNewLine() + ;
+         "<BODY link='" + ::cLinkColor + "' " +                            ;
+         "vlink='" + ::cvLinkColor + "'>" +                    + HB_OSNewLine() + ;
+         ::cBody                                               + HB_OSNewLine() + ;
+         "</BODY></HTML>"
+   ELSE
+      ::cContent := ""
+
+      // Does cHTMLFile exists?
+      IF !File( ::cHTMLFile )
+         ::cContent := "<H1>Server Error</H1><P><I>No such file: " + ;
+           ::cHTMLFile
+      ELSE
+         // Read from file
+         hFile := fOpen( ::cHTMLFile, 0 )
+         cFile := space( IF_BUFFER )
+         DO WHILE (nPos := fRead( hFile, @cFile, IF_BUFFER )) > 0
+
+            cFile := left( cFile, nPos )
+            cRes += cFile
+            cFile := space( IF_BUFFER )
+
+         ENDDO
+
+         fClose( hFile )
+
+         // Replace matched tags
+         i := 1
+         ::cContent := cRes
+         /* TODO: Replace this DO WHILE with FOR..NEXT */
+         DO WHILE i <= len( ::aReplaceTags )
+            ::cContent := strtran( ::cContent, ;
+               "<#" + ::aReplaceTags[i, 1] + ">", ::aReplaceTags[i, 2] )
+            i++
+         ENDDO
+
+         /* TODO: Clear remaining (not matched) tags */
+         /*
+         cRes := ""
+         FOR i := 1 TO len( ::cContent )
+            IF substr( ::cContent, i, 1 ) == "<" .AND. ;
+               substr( ::cContent, i + 1, 1 ) == "#"
+               lFlag := .t.
+            ELSEIF substr( ::cContent, i, 1 ) == ">" .AND. lFlag
+               lFlag := .f.
+            ELSEIF !lFlag
+               cRes += substr( ::cContent, i, 1 )
+            ENDIF
+         NEXT i
+
+         ::cContent := cRes
+         */
+
+      ENDIF
+   ENDIF
+
+   RETURN( Self )
+
+STATIC FUNCTION ShowResult()
+
+   LOCAL Self := QSelf()
+
+   OutStd(                                                                 ;
+      "HTTP/1.0 200 OK"                                        + HB_OSNewLine() + ;
+      "CONTENT-TYPE: TEXT/HTML"                      + HB_OSNewLine() + HB_OSNewLine() + ;
+      ::cContent )
+
+   RETURN( Self )
+
+STATIC FUNCTION SaveToFile( cFile )
+
+   LOCAL Self  := QSelf()
+   LOCAL hFile := fCreate( cFile )
+
+   fWrite( hFile, ::cContent )
+   fClose( hFile )
+
+   RETURN( Self )
+
+STATIC FUNCTION ProcessCGI()
+
+   LOCAL Self   := QSelf()
+   LOCAL cQuery := ""
+   LOCAL cBuff  := ""
+   LOCAL nBuff  := 0
+   LOCAL i
+
+   IF empty( ::aCGIContents )
+      ::aCGIContents := {               ;
+         GetEnv( "SERVER_SOFTWARE"   ), ;
+         GetEnv( "SERVER_NAME"       ), ;
+         GetEnv( "GATEWAY_INTERFACE" ), ;
+         GetEnv( "SERVER_PROTOCOL"   ), ;
+         GetEnv( "SERVER_PORT"       ), ;
+         GetEnv( "REQUEST_METHOD"    ), ;
+         GetEnv( "HTTP_ACCEPT"       ), ;
+         GetEnv( "HTTP_USER_AGENT"   ), ;
+         GetEnv( "HTTP_REFERER"      ), ;
+         GetEnv( "PATH_INFO"         ), ;
+         GetEnv( "PATH_TRANSLATED"   ), ;
+         GetEnv( "SCRIPT_NAME"       ), ;
+         GetEnv( "QUERY_STRING"      ), ;
+         GetEnv( "REMOTE_HOST"       ), ;
+         GetEnv( "REMOTE_ADDR"       ), ;
+         GetEnv( "REMOTE_USER"       ), ;
+         GetEnv( "AUTH_TYPE"         ), ;
+         GetEnv( "CONTENT_TYPE"      ), ;
+         GetEnv( "CONTENT_LENGTH"    ), ;
+         GetEnv( "ANNOTATION_SERVER" )  ;
+          }
+
+      cQuery := ::GetCGIParam( CGI_QUERY_STRING )
+
+      IF !empty( cQuery )
+
+        ::aQueryFields := {}
+
+        FOR i := 1 TO len( cQuery ) + 1
+
+          IF i > len( cQuery ) .OR. substr( cQuery, i, 1 ) == "&"
+
+             aadd( ::aQueryFields,                          ;
+                { substr( cBuff, 1, at( "=", cBuff ) - 1 ), ;
+                  strtran( substr( cBuff, at( "=", cBuff ) + 1,      ;
+                     len( cBuff ) - at( "=", cBuff ) + 1 ), "+", " " ) } )
+             cBuff := ""
+          ELSE
+             IF substr( cQuery, i, 1 ) = "%"
+                cBuff += chr( Hex2Dec( substr( cQuery, i + 1, 2 ) ) )
+                nBuff := 3
+             ENDIF
+
+             IF nBuff = 0
+                cBuff += substr( cQuery, i, 1 )
+             ELSE
+                nBuff--
+             ENDIF
+          ENDIF
+
+        NEXT
+
+      ENDIF
+
+   ENDIF
+
+   RETURN( Self )
+
+STATIC FUNCTION GetCGIParam( nParam )
+
+   LOCAL Self := QSelf()
+
+   ::ProcessCGI()
+
+   IF nParam > 20 .OR. nParam < 1
+      outerr( "Invalid CGI parameter" )
+      RETURN( NIL )
+   ENDIF
+
+   RETURN( ::aCGIContents[nParam] )
+
+STATIC FUNCTION QueryFields( cQueryName )
+
+   LOCAL Self := QSelf()
+   LOCAL cRet := ""
+   LOCAL nRet
+
+   ::ProcessCGI()
+
+   nRet := aScan( ::aQueryFields, ;
+      {| x | upper( x[1] ) = upper( cQueryName ) } )
+
+   IF nRet > 0
+      cRet := ::aQueryFields[nRet, 2]
+   ENDIF
+
+   RETURN( cRet )
+
+STATIC FUNCTION SetHTMLFile( cFile )
+
+   LOCAL Self := QSelf()
+
+   ::cHTMLFile := cFile
+
+   RETURN( Self )
+
+STATIC FUNCTION AddReplaceTag( cTag, cReplaceText )
+
+   LOCAL Self := QSelf()
+
+   aAdd( ::aReplaceTags, { cTag, cReplaceText } )
+
+   RETURN( Self )
+
+
+ diff --git a/harbour/website/samples/testhtml.html b/harbour/website/samples/testhtml.html index a1da81bb2a..bd6f49db22 100644 --- a/harbour/website/samples/testhtml.html +++ b/harbour/website/samples/testhtml.html @@ -1,124 +1,124 @@ - - - - -Harbour Project - Samples -> testhtml - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Harbour Test of a HTML-Generator class
This example demonstrates the possibility of working with Web pages using a custom CGI class.
   
 Files: 
   
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> testhtml + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Harbour Test of a HTML-Generator class
This example demonstrates the possibility of working with Web pages using a custom CGI class.
   
 Files: 
   
 Screenshot: 
 
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/testhtml.prg.html b/harbour/website/samples/testhtml.prg.html index 67a6f50f8b..7027e6c3ee 100644 --- a/harbour/website/samples/testhtml.prg.html +++ b/harbour/website/samples/testhtml.prg.html @@ -1,187 +1,187 @@ - -testhtml.prg - - - - - -
/*
-*
-*  TestHTML.PRG
-*  Harbour Test of a HTML-Generator class.
-*
-*  1999/05/30  First implementation.
-*
-*              Tips: - Use ShowResults to make dynamic html (to test dynamic
-*                      results, put the exe file on CGI-BIN dir or equivalent);
-*                    - Use SaveToFile to make static html page
-*
-**/
-
-STATIC s_cNewLine
-
-FUNCTION Main()
-
-   LOCAL oHTML := THTML():New()
-
-   s_cNewLine := HB_OSNewLine()
-
-   oHTML:SetTitle( "Harbour Power Demonstration" )
-   oHTML:AddHead( "Harbour Project" )
-   oHTML:AddPara( "<B>Harbour</B> is xBase at its best. Have a taste today!", "LEFT" )
-   oHTML:AddPara( "<B>L i n k s</B>", "CENTER" )
-   oHTML:AddLink( "http://harbour-project.org", "Meet the harbour power!" )
-   oHTML:Generate()
-
-   // Uncomment the following if you don't have a Web Server to test
-   // this sample
-
-   // oHTML:SaveToFile( "test.htm" )
-
-   // If the above is uncommented, you may comment this line:
-
-   oHTML:ShowResult()
-
-   RETURN( NIL )
-
-/*---------------------------------------------------------------------------*/
-
-FUNCTION THTML
-
-   STATIC oClass
-
-   IF oClass == NIL
-      oClass = HBClass():New( "THTML" )
-
-      oClass:AddData( "cTitle" )                       // Page Title
-      oClass:AddData( "cBody" )                        // HTML Body Handler
-      oClass:AddData( "cBGColor" )                     // Background Color
-      oClass:AddData( "cLinkColor" )                   // Link Color
-      oClass:AddData( "cvLinkColor" )                  // Visited Link Color
-      oClass:AddData( "cContent" )                     // Page Content Handler
-
-      oClass:AddMethod( "New",        @New() )         // New Method
-      oClass:AddMethod( "SetTitle",   @SetTitle() )    // Set Page Title
-      oClass:AddMethod( "AddHead",    @AddHead() )     // Add <H1> Header
-      oClass:AddMethod( "AddLink",    @AddLink() )     // Add Hyperlink
-      oClass:AddMethod( "AddPara",    @AddPara() )     // Add Paragraph
-      oClass:AddMethod( "Generate",   @Generate() )    // Generate HTML
-      oClass:AddMethod( "SaveToFile", @SaveToFile() )  // Saves Content to File
-      oClass:AddMethod( "ShowResult", @ShowResult() )  // Show Result - SEE Fcn
-
-      oClass:Create()
-   ENDIF
-
-   RETURN( oClass:Instance() )
-
-STATIC FUNCTION New()
-
-   LOCAL Self := QSelf()
-
-   ::cTitle      := "Untitled"
-   ::cBGColor    := "#FFFFFF"
-   ::cLinkColor  := "#0000FF"
-   ::cvLinkColor := "#FF0000"
-   ::cContent    := ""
-   ::cBody       := ""
-
-   RETURN( Self )
-
-STATIC FUNCTION SetTitle( cTitle )
-
-   LOCAL Self := QSelf()
-
-   ::cTitle := cTitle
-
-   RETURN( Self )
-
-STATIC FUNCTION AddLink( cLinkTo, cLinkName )
-
-   LOCAL Self := QSelf()
-
-   ::cBody := ::cBody + ;
-      "<A HREF='" + cLinkTo + "'>" + cLinkName + "</A>"
-
-   RETURN( Self )
-
-STATIC FUNCTION AddHead( cDescr )
-
-   LOCAL Self := QSelf()
-
-   // Why this doesn't work?
-   // ::cBody += ...
-   // ???
-
-   ::cBody := ::cBody + ;
-      "<H1>" + cDescr + "</H1>"
-
-   RETURN( NIL )
-
-STATIC FUNCTION AddPara( cPara, cAlign )
-
-   LOCAL Self := QSelf()
-
-   //Default( cAlign, "Left" ) // removed Patrick Mast 2000-06-07
-   cAlign:=If(cAlign==NIL,"Left",cAlign) //Added Patrick Mast 2000-06-17
-
-   ::cBody := ::cBody + ;
-      "<P ALIGN='" + cAlign + "'>" + s_cNewLine + ;
-      cPara + s_cNewLine + ;
-      "</P>"
-
-   RETURN( Self )
-
-STATIC FUNCTION Generate()
-
-   LOCAL Self := QSelf()
-
-   ::cContent :=                                                           ;
-      "<HTML><HEAD>"                                           + s_cNewLine + ;
-      "<TITLE>" + ::cTitle + "</TITLE>"                        + s_cNewLine + ;
-      "<BODY link='" + ::cLinkColor + "' " +                               ;
-      "vlink='" + ::cvLinkColor + "'>" +                       + s_cNewLine + ;
-      ::cBody                                                  + s_cNewLine + ;
-      "</BODY></HTML>"
-
-   RETURN( Self )
-
-STATIC FUNCTION ShowResult()
-
-   LOCAL Self := QSelf()
-
-   OutStd(                                                                  ;
-;//      "HTTP/1.0 200 OK"                                        + s_cNewLine + ;
-      "CONTENT-TYPE: TEXT/HTML"                      + s_cNewLine + s_cNewLine + ;
-      ::cContent )
-
-   RETURN( Self )
-
-STATIC FUNCTION SaveToFile( cFile )
-
-   LOCAL Self  := QSelf()
-   LOCAL hFile := fCreate( cFile )
-
-   fWrite( hFile, ::cContent )
-   fClose( hFile )
-
-   RETURN( Self )
-
-
- + +testhtml.prg + + + + + +
/*
+*
+*  TestHTML.PRG
+*  Harbour Test of a HTML-Generator class.
+*
+*  1999/05/30  First implementation.
+*
+*              Tips: - Use ShowResults to make dynamic html (to test dynamic
+*                      results, put the exe file on CGI-BIN dir or equivalent);
+*                    - Use SaveToFile to make static html page
+*
+**/
+
+STATIC s_cNewLine
+
+FUNCTION Main()
+
+   LOCAL oHTML := THTML():New()
+
+   s_cNewLine := HB_OSNewLine()
+
+   oHTML:SetTitle( "Harbour Power Demonstration" )
+   oHTML:AddHead( "Harbour Project" )
+   oHTML:AddPara( "<B>Harbour</B> is xBase at its best. Have a taste today!", "LEFT" )
+   oHTML:AddPara( "<B>L i n k s</B>", "CENTER" )
+   oHTML:AddLink( "http://harbour-project.org", "Meet the harbour power!" )
+   oHTML:Generate()
+
+   // Uncomment the following if you don't have a Web Server to test
+   // this sample
+
+   // oHTML:SaveToFile( "test.htm" )
+
+   // If the above is uncommented, you may comment this line:
+
+   oHTML:ShowResult()
+
+   RETURN( NIL )
+
+/*---------------------------------------------------------------------------*/
+
+FUNCTION THTML
+
+   STATIC oClass
+
+   IF oClass == NIL
+      oClass = HBClass():New( "THTML" )
+
+      oClass:AddData( "cTitle" )                       // Page Title
+      oClass:AddData( "cBody" )                        // HTML Body Handler
+      oClass:AddData( "cBGColor" )                     // Background Color
+      oClass:AddData( "cLinkColor" )                   // Link Color
+      oClass:AddData( "cvLinkColor" )                  // Visited Link Color
+      oClass:AddData( "cContent" )                     // Page Content Handler
+
+      oClass:AddMethod( "New",        @New() )         // New Method
+      oClass:AddMethod( "SetTitle",   @SetTitle() )    // Set Page Title
+      oClass:AddMethod( "AddHead",    @AddHead() )     // Add <H1> Header
+      oClass:AddMethod( "AddLink",    @AddLink() )     // Add Hyperlink
+      oClass:AddMethod( "AddPara",    @AddPara() )     // Add Paragraph
+      oClass:AddMethod( "Generate",   @Generate() )    // Generate HTML
+      oClass:AddMethod( "SaveToFile", @SaveToFile() )  // Saves Content to File
+      oClass:AddMethod( "ShowResult", @ShowResult() )  // Show Result - SEE Fcn
+
+      oClass:Create()
+   ENDIF
+
+   RETURN( oClass:Instance() )
+
+STATIC FUNCTION New()
+
+   LOCAL Self := QSelf()
+
+   ::cTitle      := "Untitled"
+   ::cBGColor    := "#FFFFFF"
+   ::cLinkColor  := "#0000FF"
+   ::cvLinkColor := "#FF0000"
+   ::cContent    := ""
+   ::cBody       := ""
+
+   RETURN( Self )
+
+STATIC FUNCTION SetTitle( cTitle )
+
+   LOCAL Self := QSelf()
+
+   ::cTitle := cTitle
+
+   RETURN( Self )
+
+STATIC FUNCTION AddLink( cLinkTo, cLinkName )
+
+   LOCAL Self := QSelf()
+
+   ::cBody := ::cBody + ;
+      "<A HREF='" + cLinkTo + "'>" + cLinkName + "</A>"
+
+   RETURN( Self )
+
+STATIC FUNCTION AddHead( cDescr )
+
+   LOCAL Self := QSelf()
+
+   // Why this doesn't work?
+   // ::cBody += ...
+   // ???
+
+   ::cBody := ::cBody + ;
+      "<H1>" + cDescr + "</H1>"
+
+   RETURN( NIL )
+
+STATIC FUNCTION AddPara( cPara, cAlign )
+
+   LOCAL Self := QSelf()
+
+   //Default( cAlign, "Left" ) // removed Patrick Mast 2000-06-07
+   cAlign:=If(cAlign==NIL,"Left",cAlign) //Added Patrick Mast 2000-06-17
+
+   ::cBody := ::cBody + ;
+      "<P ALIGN='" + cAlign + "'>" + s_cNewLine + ;
+      cPara + s_cNewLine + ;
+      "</P>"
+
+   RETURN( Self )
+
+STATIC FUNCTION Generate()
+
+   LOCAL Self := QSelf()
+
+   ::cContent :=                                                           ;
+      "<HTML><HEAD>"                                           + s_cNewLine + ;
+      "<TITLE>" + ::cTitle + "</TITLE>"                        + s_cNewLine + ;
+      "<BODY link='" + ::cLinkColor + "' " +                               ;
+      "vlink='" + ::cvLinkColor + "'>" +                       + s_cNewLine + ;
+      ::cBody                                                  + s_cNewLine + ;
+      "</BODY></HTML>"
+
+   RETURN( Self )
+
+STATIC FUNCTION ShowResult()
+
+   LOCAL Self := QSelf()
+
+   OutStd(                                                                  ;
+;//      "HTTP/1.0 200 OK"                                        + s_cNewLine + ;
+      "CONTENT-TYPE: TEXT/HTML"                      + s_cNewLine + s_cNewLine + ;
+      ::cContent )
+
+   RETURN( Self )
+
+STATIC FUNCTION SaveToFile( cFile )
+
+   LOCAL Self  := QSelf()
+   LOCAL hFile := fCreate( cFile )
+
+   fWrite( hFile, ::cContent )
+   fClose( hFile )
+
+   RETURN( Self )
+
+
+ diff --git a/harbour/website/samples/testidle.html b/harbour/website/samples/testidle.html index 3a6d264b2f..cef9a8b1e1 100644 --- a/harbour/website/samples/testidle.html +++ b/harbour/website/samples/testidle.html @@ -1,132 +1,132 @@ - - - - -Harbour Project - Samples -> testidle - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
OnIdle sample
This demo demonstrates how to add a new background task in Harbour.
   
 Files: 
  
 Screenshot: 
   
 

-testidle sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> testidle + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
OnIdle sample
This demo demonstrates how to add a new background task in Harbour.
   
 Files: 
  
 Screenshot: 
   
 

+testidle sample running on Windows

 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/samples/tstmacro.html b/harbour/website/samples/tstmacro.html index 706966fc66..4fdff80a49 100644 --- a/harbour/website/samples/tstmacro.html +++ b/harbour/website/samples/tstmacro.html @@ -1,121 +1,121 @@ - - - - -Harbour Project - Samples -> tstmacro - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - - -
 
- - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - - - - - - - -
Dynamic code evalutation sample
This example demonstrates how you can use the macro feature present in Harbor in the same manner as was done in Clipper.
 Files: 
  
 

Screenshot:

 
 

- tstmacro running on Linux
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
- - - - - -
- - + + + + +Harbour Project - Samples -> tstmacro + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + + +
 
+ + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + +
Dynamic code evalutation sample
This example demonstrates how you can use the macro feature present in Harbor in the same manner as was done in Clipper.
 Files: 
  
 

Screenshot:

 
 

+ tstmacro running on Linux
 
   
 How to compile: 
 To learn how to compile/link this example see our specific section on this link. 
 
+ + + + + +
+ + diff --git a/harbour/website/snapshot.html b/harbour/website/snapshot.html index dad6fccacd..5c2975b7be 100644 --- a/harbour/website/snapshot.html +++ b/harbour/website/snapshot.html @@ -1,99 +1,99 @@ - - - - -Harbour Project - Other Documentation Sites & Links - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - -
  Nightly builds  
 You can find the latest development sources for Harbour directly on our website. Source code is checked out of SVN and packaged every night and made available along with the binaries compiled for Linux.
-
- These packages are NOT intended for production use; please use the packages at download page.
-
- If you do encounter a bug, please test the latest snapshot build to see if it has already been fixed by a developer.
-
- To see what developers have added, you can view the ChangeLog directly from the Subversion repository.
 
   
 Download Links 
 To download latest development sources go to our index page and find them in the "Project Status" section. To download lastest stable release of Harbour, please click here.
 
 
 
- - - - - -
- - + + + + +Harbour Project - Other Documentation Sites & Links + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +
  Nightly builds  
 You can find the latest development sources for Harbour directly on our website. Source code is checked out of SVN and packaged every night and made available along with the binaries compiled for Linux.
+
+ These packages are NOT intended for production use; please use the packages at download page.
+
+ If you do encounter a bug, please test the latest snapshot build to see if it has already been fixed by a developer.
+
+ To see what developers have added, you can view the ChangeLog directly from the Subversion repository.
 
   
 Download Links 
 To download latest development sources go to our index page and find them in the "Project Status" section. To download lastest stable release of Harbour, please click here.
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/third-party.html b/harbour/website/third-party.html index eeb4ac776c..52a9a111e8 100644 --- a/harbour/website/third-party.html +++ b/harbour/website/third-party.html @@ -1,613 +1,613 @@ - - - - -Harbour Project - Third-party Tools and Libraries - - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - -
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Third-party Tools and Libraries 
 These are some links to xHarbour related 3rd party products:  
   
 Categories: 
  
 
 
RDD 
  - - - - - - -
OTC Mediator RDD for Harbour
-
OTC Mediator is RDD driver for Oracle,Microsoft SQL Server and Sybase Adaptive Server Anywhere Mediator was designed to allow quick migration of DBF data and XBase applications to one of the mentioned databases. It implements all RDD features required for easy migration including RECNO record numbers, DELETED flag, Clipper-compatible record and file locks -as well as complex expression indexes.
 
-
- Basically, Mediator package consists of three parts:
-
    -
  • Set of utilities facilitating data (DBF) and index (NTX,CDX) migration to RDBMS
  • -
  • Libraries implementing RDD interface to be linked into Harbour or Clipper application
  • -
  • Mediator server translating application requests into SQL commands sent to database 
  • -
- Mediator for Harbour can be downloaded from http://www.otc.pl/en/harbour.html
 
 
 
 
 
  - - - - - - -
Sybase Advantage - Server for Harbour
-Harbour has native support for ' Sybase Advantage Database Server, a - high-performance client/server RDBMS for stand-alone, networked, Internet and - mobile database applications. Advantage Database Server allows developers the - high-performance and control of navigational commands combined with optimized - data accessmethodology for easily delivering unparalleled performance, - Advantage provides security, stability and data integrity while being - completely maintenance-free.
 
-
- With no mandatory configuration requirements, Advantage is easily installed - on an existing network infrastructure. Because of the embedded qualities of - Advantage, it works tirelessly behind the application, delivering - client/server performance, stability, and data integrity that today's business - applications demand.
- In addition to Harbour, Advantage applications can be developed using a - wide variety of languages including Borland Delphi, Borland Kylix, Microsoft - Visual Basic, Microsoft Visual C++, Borland C++Builder, CA-Visual Objects, - Perl, PHP and many other languages including those that can use ODBC, ADO, - ADO.NET and OLE DB.
-
- ADS supports NetWare, Linux, Windows - 9x/ME/NT/2000/XP/Vista operating systems and can be downloaded at: http://www.sybase.com/products/databasemanagement/advantagedatabaseserver
 
 
 
 
 
  - - - - - -
Vista software for Harbour
-Harbour supports Vista Software's legendary, award-winning Apollo data engines now! Vista Software took over Apollo from Luxent (formerly SuccessWare International) in July of 1999 and have since re-engineered and re-designed Apollo to work with Delphi, Visual Basic, Active Server Pages, VBScript, Visual C++, Visual Interdev, C++Builder, and now also Harbour.
 
-
- Apollo COM 6.1 can be used with Harbour via the TOleAuto() class to access CA-Clipper (DBF/DBT/NTX), FoxPro (DBF/FPT/CDX/IDX) and HiPer-SIx (DBF/NSX/SMT) data files.
-
- Apollo engines can even connect to the new royalty-free Apollo Database Server for true client/server processing over LANs and over the Internet.
-
- More information and a trial version of Apollo COM 6.0 can be found here http://www.vistasoftware.com.
- NOTE: - The TOleAuto Class can be freely downloaded from the contribution download page.
 
 
 
 
 
GUI - Comercial 
  - - - - - - -
Fivewin for Harbour (FWH)
-
FiveWin is original a library for Clipper 5 which you use in - exactly the same way that you have been using other third party libraries in - clipper. The main difference is that - FiveWin lets you build executables that run in Microsoft Windows as REAL - Windows Programs.
-
- You have all the power of Windows and it's environment - at your fingertips! Only downside of the FiveWin for Clipper... it's still - 16bits. Now FiveTech Software has managed to make the library work with - Harbour.
 
-
- More info can be found here: http://www.fivetechsoft.com/english/fwh.html -
 
 
 
 
 
  - - - - - - -
Visual Report designer for - Harbour/FiveWin
-
EasyReport provides every Harbour/Fivewin user a very simple and - fast way to add a visual report designer to his/her applications.EasyReport is very flexible, cost-effective, multilingual and you can give the - visual designer to all of your end users without paying anything extra (royalty - free).
 
-
-   EasyReport supports up to 100 areas with 1000 items each. The possible item - types are Text, Image (supports 8 different image file formats), Graphic (Lines, - Rectangles, Ellipse etc.) and Barcodes.
-
- More details and a full working test version are available at http://www.reportdesigner.info 
 
 
 
 
 
  - - - - - - -
Xalier
- Xailer is a complete 32 bits visual development environment for Xbase users, following the guide lines of other already existing programming environments (Delphi, Visual Basic,...). As any other complete visual environment includes: -
    -
  • Form designer
  • -
  • Professional Source code editor
  • -
  • Property inspector
  • -
  • Project manager
  • -
  • Report generator
  • -
  • Resource manager
  • -
  • Integrated Debugger
  • -
- And all these features are built over a unique interface, which is tremendously intuitive and permits the development of any project in record time.
-
- More info can be found here: - -
http://www.xailer.com/
 
 
 
 
 
 
  - - - - - - -
Clip2win
-
Clip2win 3.9 is a tool to convert your old DOS programs for Windows so easy. Adding only one line in .PRG of your project and you get a program similar to Windows with menus, controls TextBox, Buttons and other characteristics of the environment.
-
- Clip2win  is a - simple way to pass clipper to windows based on Harbour & ooHG.
- More info can be found here: http://sistemascvc.tripod.com/id10.html
 
 
 
 
 
 
  - - - - - - -
ViaCoral
- ViaCoral - for Windows & Pocket PC is able to manage transparent bitmaps without pixelation using - Harbour & Fivewin but - ViaCoral is more than a simple control library.
-
- ViaCoral
will be an enormous step forward for - the developing of your applications, giving good appearance, dynamism and - capacity to develop your own style.
-
- For more info, visit www.viaopen.com
 
 
 
 
 
 
GUI - Free and Open Source 
  - - - - - - -
MiniGUI
- Harbour MiniGUI (HMG) is a xBase WIN32 / GUI Development System based on Harbour - MiniGUI library, Harbour MiniGUI IDE, Harbour compiler and MingW compiler. - This implements a semi-oop model and is a ready to use Harbour distribution who include all needed components for you work.
 
-
- More info can be found here: 
- http://harbourminigui.googlepages.com/ - -
- http://sourceforge.net/projects/harbourminigui/ -
-
- MiniGUI unofficial build with EXTENDED many new features:
- http://www.hmgextended.com/

 
 
 
 
 
  - - - - - - -
ooHG
- Object-Oriented Harbour Graphical interface. This is an object-oriented style conversion from the MiniGUI's library. Supporting existing code, and adding new and powerful advantages of the object oriented programming.
-
- It offers a great flexibility for the well-know MiniGUI functionality, and a very easy way to add new features with the lesser affectation to working code (anyone can subclass any control and add it's own features to it).
 
-
- More info can be found here: http://sourceforge.net/projects/oohg/
 
 
 
 
 
  - - - - - - -
HwGUI
- Is a cross-platform GUI library for Harbour, it is written on C and Harbour. -
-
- HwGUI includes two versions - Win32 and Linux. Win32 version is based on direct calls of Win32 API - this allows to keep it quite fast and compact. Linux version is based on GTK, it supports the same set of classes, commands and functions as the Win32 version, though not all yet. Thus, using some base subset of HwGUI, you can create crossplatform GUI applications.
-
- Currently Win32 version of HwGUI supports 5 C compilers: Borland C, MS Visual C, Mingw, Pelles C and Open Watcom C
 
-
- More info can be found here: http://sourceforge.net/projects/hwgui/
 
 
 
 
 
  - - - - - - -
wxHarbour
- wxHarbour is a set of Harbour language bindings for wxWidgets. Providing a portable multi-platform GUI toolkit for Harbour.
-
- Note: wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, Harbour and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's also extensive, free, open-source, and mature.
 
-
- More info can be found here: http://sourceforge.net/projects/wxharbour/
 
 
 
 
 
  - - - - - - -
HbWxW
HbWxW is a multiplatform GUI library for Harbour. It is built on top of wxWidgets platform GUI library, available on Unix like systems, Windows, MacOS and WinCE operating systems. wxWidgets is "An open source C++ GUI framework to make cross-platform programming child's play".
-
- The main goal of HbWxW is to provide an easy to use GUI library, which can be utilized on all platforms xHarbour currently supports. That's why it is based on a library which gives you a single, easy-to-use API for writing GUI applications on multiple platforms.
-
- HbWxW, like its underlying GUI library, is powerfull and efficient enough to realize the most common tasks, as expected by the average and advanced programmers. Its main advantage over other GUI libraries is the 'native look & feel' on all supported platforms, simplyfying application usage and giving users the same sense of comfort they are already used to.
 
-
- More info can be found here: http://harbour.fm.interia.pl/
 
 
 
 
 
  - - - - - - -
xbGTK
- xbGTK is an open source library for Linux and WIN32. It allows to use GTK+ in programs written in xBase-like languages. The library is written by Phil Krylov. It is based on the PyGTK - Project by James Henstridge. Some files are modified, though, to generate proper xBase code (instead of Python).
 
-
- More info can be found here: http://xbgtk.sourceforge.net/
 
 
 
 
 
  - - - - - - -
xHGtk
- xHGtk is an multiplataform GUI library for Harbour. Use GTK+ to create programs that can run in Windows and Linux. It provides a library of commands, functions and classes for multiplatform development using Harbor, MinGW graphics library and GTK + 2.10 or higher.
 
-
- More info can be found here: http://xhgtk.sourceforge.net/
 
 
 
 
 
  - - - - - - -
T-Gtk
- GUI for Harbour toolkit for GTK+. This library allows to give the compilers of Habour from the full power of GTK + Cross-platform.
 
-
- More info can be found here: http://sourceforge.net/projects/t-gtk/
 
 
 
 
 
 
- - - - - -
- - + + + + +Harbour Project - Third-party Tools and Libraries + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Third-party Tools and Libraries 
 These are some links to xHarbour related 3rd party products:  
   
 Categories: 
  
 
 
RDD 
  + + + + + + +
OTC Mediator RDD for Harbour
+
OTC Mediator is RDD driver for Oracle,Microsoft SQL Server and Sybase Adaptive Server Anywhere Mediator was designed to allow quick migration of DBF data and XBase applications to one of the mentioned databases. It implements all RDD features required for easy migration including RECNO record numbers, DELETED flag, Clipper-compatible record and file locks +as well as complex expression indexes.
 
+
+ Basically, Mediator package consists of three parts:
+
    +
  • Set of utilities facilitating data (DBF) and index (NTX,CDX) migration to RDBMS
  • +
  • Libraries implementing RDD interface to be linked into Harbour or Clipper application
  • +
  • Mediator server translating application requests into SQL commands sent to database 
  • +
+ Mediator for Harbour can be downloaded from http://www.otc.pl/en/harbour.html
 
 
 
 
 
  + + + + + + +
Sybase Advantage + Server for Harbour
+Harbour has native support for ' Sybase Advantage Database Server, a + high-performance client/server RDBMS for stand-alone, networked, Internet and + mobile database applications. Advantage Database Server allows developers the + high-performance and control of navigational commands combined with optimized + data accessmethodology for easily delivering unparalleled performance, + Advantage provides security, stability and data integrity while being + completely maintenance-free.
 
+
+ With no mandatory configuration requirements, Advantage is easily installed + on an existing network infrastructure. Because of the embedded qualities of + Advantage, it works tirelessly behind the application, delivering + client/server performance, stability, and data integrity that today's business + applications demand.
+ In addition to Harbour, Advantage applications can be developed using a + wide variety of languages including Borland Delphi, Borland Kylix, Microsoft + Visual Basic, Microsoft Visual C++, Borland C++Builder, CA-Visual Objects, + Perl, PHP and many other languages including those that can use ODBC, ADO, + ADO.NET and OLE DB.
+
+ ADS supports NetWare, Linux, Windows + 9x/ME/NT/2000/XP/Vista operating systems and can be downloaded at: http://www.sybase.com/products/databasemanagement/advantagedatabaseserver
 
 
 
 
 
  + + + + + +
Vista software for Harbour
+Harbour supports Vista Software's legendary, award-winning Apollo data engines now! Vista Software took over Apollo from Luxent (formerly SuccessWare International) in July of 1999 and have since re-engineered and re-designed Apollo to work with Delphi, Visual Basic, Active Server Pages, VBScript, Visual C++, Visual Interdev, C++Builder, and now also Harbour.
 
+
+ Apollo COM 6.1 can be used with Harbour via the TOleAuto() class to access CA-Clipper (DBF/DBT/NTX), FoxPro (DBF/FPT/CDX/IDX) and HiPer-SIx (DBF/NSX/SMT) data files.
+
+ Apollo engines can even connect to the new royalty-free Apollo Database Server for true client/server processing over LANs and over the Internet.
+
+ More information and a trial version of Apollo COM 6.0 can be found here http://www.vistasoftware.com.
+ NOTE: + The TOleAuto Class can be freely downloaded from the contribution download page.
 
 
 
 
 
GUI - Comercial 
  + + + + + + +
Fivewin for Harbour (FWH)
+
FiveWin is original a library for Clipper 5 which you use in + exactly the same way that you have been using other third party libraries in + clipper. The main difference is that + FiveWin lets you build executables that run in Microsoft Windows as REAL + Windows Programs.
+
+ You have all the power of Windows and it's environment + at your fingertips! Only downside of the FiveWin for Clipper... it's still + 16bits. Now FiveTech Software has managed to make the library work with + Harbour.
 
+
+ More info can be found here: http://www.fivetechsoft.com/english/fwh.html +
 
 
 
 
 
  + + + + + + +
Visual Report designer for + Harbour/FiveWin
+
EasyReport provides every Harbour/Fivewin user a very simple and + fast way to add a visual report designer to his/her applications.EasyReport is very flexible, cost-effective, multilingual and you can give the + visual designer to all of your end users without paying anything extra (royalty + free).
 
+
+   EasyReport supports up to 100 areas with 1000 items each. The possible item + types are Text, Image (supports 8 different image file formats), Graphic (Lines, + Rectangles, Ellipse etc.) and Barcodes.
+
+ More details and a full working test version are available at http://www.reportdesigner.info 
 
 
 
 
 
  + + + + + + +
Xalier
+ Xailer is a complete 32 bits visual development environment for Xbase users, following the guide lines of other already existing programming environments (Delphi, Visual Basic,...). As any other complete visual environment includes: +
    +
  • Form designer
  • +
  • Professional Source code editor
  • +
  • Property inspector
  • +
  • Project manager
  • +
  • Report generator
  • +
  • Resource manager
  • +
  • Integrated Debugger
  • +
+ And all these features are built over a unique interface, which is tremendously intuitive and permits the development of any project in record time.
+
+ More info can be found here: + +
http://www.xailer.com/
 
 
 
 
 
 
  + + + + + + +
Clip2win
+
Clip2win 3.9 is a tool to convert your old DOS programs for Windows so easy. Adding only one line in .PRG of your project and you get a program similar to Windows with menus, controls TextBox, Buttons and other characteristics of the environment.
+
+ Clip2win  is a + simple way to pass clipper to windows based on Harbour & ooHG.
+ More info can be found here: http://sistemascvc.tripod.com/id10.html
 
 
 
 
 
 
  + + + + + + +
ViaCoral
+ ViaCoral + for Windows & Pocket PC is able to manage transparent bitmaps without pixelation using + Harbour & Fivewin but + ViaCoral is more than a simple control library.
+
+ ViaCoral
will be an enormous step forward for + the developing of your applications, giving good appearance, dynamism and + capacity to develop your own style.
+
+ For more info, visit www.viaopen.com
 
 
 
 
 
 
GUI - Free and Open Source 
  + + + + + + +
MiniGUI
+ Harbour MiniGUI (HMG) is a xBase WIN32 / GUI Development System based on Harbour + MiniGUI library, Harbour MiniGUI IDE, Harbour compiler and MingW compiler. + This implements a semi-oop model and is a ready to use Harbour distribution who include all needed components for you work.
 
+
+ More info can be found here: 
+ http://harbourminigui.googlepages.com/ + +
+ http://sourceforge.net/projects/harbourminigui/ +
+
+ MiniGUI unofficial build with EXTENDED many new features:
+ http://www.hmgextended.com/

 
 
 
 
 
  + + + + + + +
ooHG
+ Object-Oriented Harbour Graphical interface. This is an object-oriented style conversion from the MiniGUI's library. Supporting existing code, and adding new and powerful advantages of the object oriented programming.
+
+ It offers a great flexibility for the well-know MiniGUI functionality, and a very easy way to add new features with the lesser affectation to working code (anyone can subclass any control and add it's own features to it).
 
+
+ More info can be found here: http://sourceforge.net/projects/oohg/
 
 
 
 
 
  + + + + + + +
HwGUI
+ Is a cross-platform GUI library for Harbour, it is written on C and Harbour. +
+
+ HwGUI includes two versions - Win32 and Linux. Win32 version is based on direct calls of Win32 API - this allows to keep it quite fast and compact. Linux version is based on GTK, it supports the same set of classes, commands and functions as the Win32 version, though not all yet. Thus, using some base subset of HwGUI, you can create crossplatform GUI applications.
+
+ Currently Win32 version of HwGUI supports 5 C compilers: Borland C, MS Visual C, Mingw, Pelles C and Open Watcom C
 
+
+ More info can be found here: http://sourceforge.net/projects/hwgui/
 
 
 
 
 
  + + + + + + +
wxHarbour
+ wxHarbour is a set of Harbour language bindings for wxWidgets. Providing a portable multi-platform GUI toolkit for Harbour.
+
+ Note: wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, Harbour and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native. This is because wxWidgets uses the platform's own native controls rather than emulating them. It's also extensive, free, open-source, and mature.
 
+
+ More info can be found here: http://sourceforge.net/projects/wxharbour/
 
 
 
 
 
  + + + + + + +
HbWxW
HbWxW is a multiplatform GUI library for Harbour. It is built on top of wxWidgets platform GUI library, available on Unix like systems, Windows, MacOS and WinCE operating systems. wxWidgets is "An open source C++ GUI framework to make cross-platform programming child's play".
+
+ The main goal of HbWxW is to provide an easy to use GUI library, which can be utilized on all platforms xHarbour currently supports. That's why it is based on a library which gives you a single, easy-to-use API for writing GUI applications on multiple platforms.
+
+ HbWxW, like its underlying GUI library, is powerfull and efficient enough to realize the most common tasks, as expected by the average and advanced programmers. Its main advantage over other GUI libraries is the 'native look & feel' on all supported platforms, simplyfying application usage and giving users the same sense of comfort they are already used to.
 
+
+ More info can be found here: http://harbour.fm.interia.pl/
 
 
 
 
 
  + + + + + + +
xbGTK
+ xbGTK is an open source library for Linux and WIN32. It allows to use GTK+ in programs written in xBase-like languages. The library is written by Phil Krylov. It is based on the PyGTK - Project by James Henstridge. Some files are modified, though, to generate proper xBase code (instead of Python).
 
+
+ More info can be found here: http://xbgtk.sourceforge.net/
 
 
 
 
 
  + + + + + + +
xHGtk
+ xHGtk is an multiplataform GUI library for Harbour. Use GTK+ to create programs that can run in Windows and Linux. It provides a library of commands, functions and classes for multiplatform development using Harbor, MinGW graphics library and GTK + 2.10 or higher.
 
+
+ More info can be found here: http://xhgtk.sourceforge.net/
 
 
 
 
 
  + + + + + + +
T-Gtk
+ GUI for Harbour toolkit for GTK+. This library allows to give the compilers of Habour from the full power of GTK + Cross-platform.
 
+
+ More info can be found here: http://sourceforge.net/projects/t-gtk/
 
 
 
 
 
 
+ + + + + +
+ + diff --git a/harbour/website/tools.html b/harbour/website/tools.html index 252ecda142..23390a333a 100644 --- a/harbour/website/tools.html +++ b/harbour/website/tools.html @@ -1,78 +1,78 @@ - - - - -Harbour Project - Auxiliar tools - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - -
  Auxiliar tools  
 Auxiliar tools Bison, GCC, FLEX, Tortoise, download link 
 
 
- - - - - -
- - + + + + +Harbour Project - Auxiliar tools + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + +
  Auxiliar tools  
 Auxiliar tools Bison, GCC, FLEX, Tortoise, download link 
 
 
+ + + + + +
+ + diff --git a/harbour/website/tshirts.html b/harbour/website/tshirts.html index d43249eb2a..9340ab7247 100644 --- a/harbour/website/tshirts.html +++ b/harbour/website/tshirts.html @@ -1,84 +1,84 @@ - - - - -Harbour Project - T-Shirts - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - -
 
- - - - - - - - - - - - - - - - - - - - -
 The Harbour - Project T-Shirt!  
 You can order the Harbour-Project T-Shirt for 20 US Dollar per piece (exclusive mail cost)
- We have them In sizes eXtra Large and Large. Click on the image to order!
-
-
 
   
 Download ZIP with this T-Shirt Art (984Kb) 
 
- - - - - -
- - + + + + +Harbour Project - T-Shirts + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + +
 
+ + + + + + + + + + + + + + + + + + + + +
 The Harbour - Project T-Shirt!  
 You can order the Harbour-Project T-Shirt for 20 US Dollar per piece (exclusive mail cost)
+ We have them In sizes eXtra Large and Large. Click on the image to order!
+
+
 
   
 Download ZIP with this T-Shirt Art (984Kb) 
 
+ + + + + +
+ + diff --git a/harbour/website/tutorials.html b/harbour/website/tutorials.html index 488d905231..2eec6189f3 100644 --- a/harbour/website/tutorials.html +++ b/harbour/website/tutorials.html @@ -1,87 +1,87 @@ - - - - -Harbour Project - Tutorials - - - - - - - -
- - - - - - - - - - - - -
- - - - - - -
- - - - -
- - - - -
- - - - - - - - - - - - - -
 
- - - - - - - - - - -
 Tutorials 
 

Some topics to be explained:
-
- * How to install the files of the Harbor in Windows?
- * How to download and compile the Harbor in Linux?
- * How to print via Harbor using the Putty?
- * How to access MySQL or PostgreSQL using the content?
- etc..
-
  -

-
 
 
 
- - - - - -
- - + + + + +Harbour Project - Tutorials + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + +
+ + + + +
+ + + + +
+ + + + + + + + + + + + + +
 
+ + + + + + + + + + +
 Tutorials 
 

Some topics to be explained:
+
+ * How to install the files of the Harbor in Windows?
+ * How to download and compile the Harbor in Linux?
+ * How to print via Harbor using the Putty?
+ * How to access MySQL or PostgreSQL using the content?
+ etc..
+
  +

+
 
 
 
+ + + + + +
+ +