diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 85b61a65ef..04432c175e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,18 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-08-05 15:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/contrib/libct/Makefile + + harbour/contrib/libct/keysec.prg + + harbour/contrib/libct/keytime.prg + + added KEYSEC() and KEYTIME() modified code by Pavel Tsarenko + borrowed from xHarbour + + * harbour/contrib/libct/Makefile + * harbour/contrib/libct/makefile.bc + * harbour/contrib/libct/makefile.vc + * updated for new files + 2007-08-05 11:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/contrib/libct/screen2.c + added CLEARSLOW() diff --git a/harbour/contrib/libct/Makefile b/harbour/contrib/libct/Makefile index be8a8df2eb..1908a3a471 100644 --- a/harbour/contrib/libct/Makefile +++ b/harbour/contrib/libct/Makefile @@ -87,6 +87,8 @@ PRG_SOURCES= \ getinput.prg \ getsecrt.prg \ keysave.prg \ + keysec.prg \ + keytime.prg \ numconv.prg \ screen3.prg \ showtime.prg \ diff --git a/harbour/contrib/libct/keysec.prg b/harbour/contrib/libct/keysec.prg new file mode 100644 index 0000000000..de7fe9f604 --- /dev/null +++ b/harbour/contrib/libct/keysec.prg @@ -0,0 +1,103 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * CT3 Miscellaneous functions: - KEYSEC() + * + * Copyright 2005 Pavel Tsarenko - + * www - http://www.harbour-project.org + * + * 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 misleading + * 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. + * + */ + +#include "common.ch" + +STATIC s_hIdle + +FUNCTION KeySec( nKey, nTime, nCounter, lMode ) + LOCAL nSeconds + + IF s_hIdle != NIL + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + + IF ISNUMBER( nKey ) + IF !ISNUMBER( nTime ) + nTime := 0 + ELSEIF nTime < 0 + nTime := -nTime / 18.2 + ENDIF + IF !ISNUMBER( nCounter ) + nCounter := 1 + ENDIF + IF !ISLOGICAL( lMode ) + lMode := .f. + ENDIF + + nSeconds := SECONDS() + s_hIdle := HB_IDLEADD( {|| doKeySec( nKey, nTime, lMode, ; + @nCounter, @nSeconds ) } ) + RETURN .T. + ENDIF + +RETURN .F. + +STATIC PROCEDURE doKeySec( nKey, nTime, lMode, nCounter, nSeconds ) + LOCAL nSec := SECONDS() + + IF lMode .AND. ! EMPTY( NEXTKEY() ) + nSeconds := nSec + ELSEIF nCounter != 0 .AND. nSec - nSeconds >= nTime + __KEYBOARD( nKey ) + IF nCounter > 0 + nCounter-- + ENDIF + IF nCounter == 0 + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ELSE + nSeconds := nSec + ENDIF + ENDIF +RETURN diff --git a/harbour/contrib/libct/keytime.prg b/harbour/contrib/libct/keytime.prg new file mode 100644 index 0000000000..cb51971679 --- /dev/null +++ b/harbour/contrib/libct/keytime.prg @@ -0,0 +1,114 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * CT3 Miscellaneous functions: - KEYTIME() + * + * Copyright 2005 Pavel Tsarenko - + * www - http://www.harbour-project.org + * + * 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 misleading + * 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. + * + */ + +#include "common.ch" + +STATIC s_hIdle + +FUNCTION KeyTime( nKey, cClockTime ) + LOCAL nHour, nMin, nSec, nLast + + IF s_hIdle != NIL + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + + IF ISNUMBER( nKey ) .AND. ISCHARACTER( cClockTime ) + nHour := VAL( SUBSTR( cClockTime, 1, 2 ) ) + nMin := VAL( SUBSTR( cClockTime, 4, 2 ) ) + nSec := VAL( SUBSTR( cClockTime, 7, 2 ) ) + nLast := -1 + s_hIdle := HB_IDLEADD( {|| doKeyTime( nKey, cClockTime, nHour, nMin, nSec, ; + @nLast ) } ) + RETURN .T. + ENDIF +RETURN .F. + +STATIC PROCEDURE doKeyTime( nKey, cClockTime, nHour, nMin, nSec, nLast ) + LOCAL ccTime := TIME() + LOCAL nHr := VAL( SUBSTR( ccTime, 1, 2 ) ) + LOCAL nMn := VAL( SUBSTR( ccTime, 4, 2 ) ) + LOCAL nSc := VAL( SUBSTR( ccTime, 7, 2 ) ) + + IF nHour = 99 + IF nHr > nLast + __KEYBOARD( nKey ) + nLast := nHr + IF nHr == 23 + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + ENDIF + ELSEIF nMin = 99 .AND. nHr == nHour + IF nMn > nLast + __KEYBOARD( nKey ) + nLast := nMn + IF nMn == 59 + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + ENDIF + ELSEIF nSec = 99 .AND. nHr == nHour .AND. nMn == nMin + IF nSc > nLast + __KEYBOARD( nKey ) + nLast := nSc + IF nSc == 59 + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + ENDIF + ELSEIF ccTime > cClockTime + __KEYBOARD( nKey ) + HB_IDLEDEL( s_hIdle ) + s_hIdle := NIL + ENDIF + RETURN diff --git a/harbour/contrib/libct/makefile.bc b/harbour/contrib/libct/makefile.bc index 1b790b8497..ffcfe84d1d 100644 --- a/harbour/contrib/libct/makefile.bc +++ b/harbour/contrib/libct/makefile.bc @@ -169,6 +169,8 @@ TOOLS_LIB_OBJS = \ $(OBJ_DIR)\getinput.obj \ $(OBJ_DIR)\getsecrt.obj \ $(OBJ_DIR)\keysave.obj \ + $(OBJ_DIR)\keysec.obj \ + $(OBJ_DIR)\keytime.obj \ $(OBJ_DIR)\numconv.obj \ $(OBJ_DIR)\screen3.obj \ $(OBJ_DIR)\showtime.obj \ @@ -523,6 +525,20 @@ $(OBJ_DIR)\keysave.obj : $(OBJ_DIR)\keysave.c $(CC) $(CLIBFLAGS) -o$@ $** tlib $(TOOLS_LIB) $(ARFLAGS) -+$@,, +$(OBJ_DIR)\keysec.c : $(TOOLS_DIR)\keysec.prg + $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ + +$(OBJ_DIR)\keysec.obj : $(OBJ_DIR)\keysec.c + $(CC) $(CLIBFLAGS) -o$@ $** + tlib $(TOOLS_LIB) $(ARFLAGS) -+$@,, + +$(OBJ_DIR)\keytime.c : $(TOOLS_DIR)\keytime.prg + $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ + +$(OBJ_DIR)\keytime.obj : $(OBJ_DIR)\keytime.c + $(CC) $(CLIBFLAGS) -o$@ $** + tlib $(TOOLS_LIB) $(ARFLAGS) -+$@,, + $(OBJ_DIR)\numconv.c : $(TOOLS_DIR)\numconv.prg $(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@ diff --git a/harbour/contrib/libct/makefile.vc b/harbour/contrib/libct/makefile.vc index 9183d7e2f1..a9834bd77d 100644 --- a/harbour/contrib/libct/makefile.vc +++ b/harbour/contrib/libct/makefile.vc @@ -187,6 +187,8 @@ TOOLS_LIB_OBJS = \ $(OBJ_DIR)\getinput.obj \ $(OBJ_DIR)\getsecrt.obj \ $(OBJ_DIR)\keysave.obj \ + $(OBJ_DIR)\keysec.obj \ + $(OBJ_DIR)\keytime.obj \ $(OBJ_DIR)\numconv.obj \ $(OBJ_DIR)\screen3.obj \ $(OBJ_DIR)\showtime.obj \ @@ -274,6 +276,8 @@ CLEAN: -@if exist $(OBJ_DIR)\getinput.* del $(OBJ_DIR)\getinput.* -@if exist $(OBJ_DIR)\getsecrt.* del $(OBJ_DIR)\getsecrt.* -@if exist $(OBJ_DIR)\keysave.* del $(OBJ_DIR)\keysave.* + -@if exist $(OBJ_DIR)\keysec.* del $(OBJ_DIR)\keysec.* + -@if exist $(OBJ_DIR)\keytime.* del $(OBJ_DIR)\keytime.* -@if exist $(OBJ_DIR)\numconv.* del $(OBJ_DIR)\numconv.* -@if exist $(TOOLS_LIB) del $(TOOLS_LIB)