* harbour/contrib/gtwvg/hbgtwvg.ch
+ #define HB_GTI_SETPOSANDSIZE
+ #define HB_GTI_HB_GTI_REFRESH
+ Two more events to manage new CUI-GUI objects.
+ #define GOBJ_OBJSTATE_*
+ #define GOBJ_OBJDATA_*
+ #define GOBJ_IMAGESOURCE_*
+ Constants to manage CUI=GUI objects.
* harbour/contrib/gtwvg/gtwvg.h
* harbour/contrib/gtwvg/wvggui.h
! Updated to be compilable for WinCE builds.
* harbour/contrib/gtwvg/gtwvg.c
! Updated to honor WinCE builds.
! Implemented double-buffering of console. Now flickering
should be the topic of the past.
* harbour/contrib/gtwvg/wvggui.c
! Updated to honor WinCE builds.
* harbour/contrib/gtwvg/wvgcuig.c
+ Implemented a highly optimized GUI controls for CUI consoles.
Implementation includes auto-destruction, data-substitution,
enable/disable feast, etc. These controls are almost identical
which are available with Wvt_Draw*() namespace but with a
great difference that these are tied to the urrent GT and
are handelled transparently by the GT itself. Developer
has only to define it. The only requirement is that
SaveScreen()/RestScreen() needs to be changed to new
Modal GT window. Appln screens will never get blurred. It
also employs optimized double-buffering and hence almost
eliminates screen flickering.
* harbour/contrib/gtwvg/wvgcore.c
* harbour/contrib/gtwvg/wvgsink.c
* harbour/contrib/gtwvg/wvgutils.c
* harbour/contrib/gtwvg/wvgwin.c
! Updated to honor WinCE builds.
* harbour/contrib/gtwvg/wvgcrt.prg
! A couple of methods fine-tuned.
! Modal GT's more responsive to user needs.
* harbour/contrib/gtwvg/tests/demowvg.prg
! Demonstrated the latest implemention of CUI-GUI controls. See below.
Please try <Traditional><WVG Console with CGUI> option in the main menu.
Also note the usage of Modal GT to simulate Alert() in new window.
Every GUI object returns a handle to it which may be used to
change its parameters.
; TOFIX( WINCE BUILDS ) - GetSystemDirectory()
/* IMPLEMENTATION OF CUI-GUI CONTROLS - A CODE PREVIEW
#xTranslate Alert( => MyAlert(
PROCEDURE GCUIConsole( oCrt )
LOCAL dDate := date()
LOCAL cName := pad( 'Some Usefule Name' , 35 )
LOCAL cAdd1 := pad( 'Linda Goldman Avenue', 35 )
LOCAL cAdd2 := pad( 'Excellent Street' , 35 )
LOCAL cAdd3 := pad( 'Suit #415' , 35 )
LOCAL nSlry := 9000
LOCAL nColGet := 8
LOCAL GetList := {}
LOCAL cLabel := "VOUCH, that GROWS with you"
LOCAL oTab, oStat, hBoxR, hTxt
SET SCOREBOARD OFF
SetColor( "N/W,N/GR*,,,N/W*" )
CLS
hb_gtInfo( HB_GTI_WINTITLE, "WVG Simplified yet Powerful CUI-GUI Console!" )
@ MaxRow(), 0 SAY PadC( "Navigate the Gets", maxcol()+1 ) COLOR "W+/B"
@ 2, nColGet SAY "< Date >"
@ 5, nColGet SAY "<" + PadC( "Name" , 33 ) + ">"
@ 8, nColGet SAY "<" + PadC( "Address", 33 ) + ">"
@ 15, nColGet SAY "< Salary >"
@ 3, nColGet GET dDate ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 1 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,0,0 ) ), .t. }
@ 6, nColGet GET cName ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 2 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,255,0 ) ), ;
Wvg_SetGObjState( hBoxR, 3 ), .t. }
@ 9, nColGet GET cAdd1 ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 3 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,0,255 ) ), .t. }
@ 11, nColGet GET cAdd2 ;
WHEN {|| Wvg_SetGObjData( hTxt, 1, FetchText( 4 ) ) } ;
Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 255,255,255 ) ), ;
Wvg_SetGObjState( hBoxR, 1 ), .t. }
@ 13, nColGet GET cAdd3 ;
WHEN {|| Wvg_SetGObjData( hTxt, 6, RGB( 198,21,140 ) ), .t. }
@ 16, nColGet GET nSlry PICTURE "@Z 9999999.99" ;
WHEN {|| Wvg_SetGObjData( hTxt, 6, RGB( 0,0,0 ) ), .t. }
// The only additional calls to render your console GUI
//
// The GETLIST : This can be embedded via @ GET preprocessor command
aEval( GetList, {|oGet| Wvg_BoxGet( oGet:Row, oGet:Col, Len( Transform( oGet:VarGet(), oGet:Picture ) ) ) } )
//
hBoxR := Wvg_BoxRaised( 1,2,18,49, {-5,-5,5,5} )
//
Wvg_BoxRecessed( 1,2,18,49 )
//
// Wvg_BoxGroup( 2,4,17,47 )
//
Wvg_BoxGroupRaised( 2,4,17,47, {-7,-7,7,7} )
//
hTxt := Wvg_TextBox( 3,57,16,75, {10,10,-10,-10}, 'This is first TextBox Line!', 2, 2 )
//
Wvg_Image( 15,36,16,42, {-3,-3,3,3}, GOBJ_IMAGESOURCE_FILE, 'Vouch1.bmp' )
//
Wvg_BoxRaised( 15,36,16,42,{-2,-2,2,2} )
//
Wvg_ShadedRect( 1,54,18,79, { -5,-5,5,5 }, 0, {65000,21000,7000,56000}, {255,32255,16000,32500} )
//
Wvg_BoxRaised( 1,54,18,79, {-5,-5,5,5} )
// Instruct GT to Repaint the Screen with GUI elements.
oCrt:refresh()
// Issue the read
READ
Alert( 'How did you like the "Alert" replacement?', { 'WOW','OK','OOps'} )
RETURN
/*----------------------------------------------------------------------*/
#xUntranslate alert( =>
FUNCTION MyAlert( cMsg, aOpt )
LOCAL nSel, oCrt
oCrt := WvgCrt():New( , , { -1,-1 }, { 9, MaxCol()-6 }, , .t. )
oCrt:lModal := .t.
oCrt:icon := "dia_excl.ico"
oCrt:create()
oCrt:resizable := .t.
SetColor( 'N/W' )
CLS
hb_gtInfo( HB_GTI_WINTITLE, cMsg )
nSel := Alert( cMsg, aOpt )
oCrt:destroy()
RETURN nSel
#xTranslate Alert( => MyAlert(
/*----------------------------------------------------------------------*/
STATIC FUNCTION FetchText( nMode )
LOCAL cText
DO CASE
CASE nMode == 1
cText := 'Do you know Harbour is gaining a popularity what Clipper enjoyed at one time! '
cText += 'Enjoy it.'
CASE nMode == 2
cText := 'Do you know Harbour can host pure console, cui+gui console, pure gui consoles applications? '
cText += 'This demonstration is a proof of that.'
CASE nMode == 3
cText := 'Do you know Harbour is a multi-gt, multi-window, multi-thread compiler far superior than others in the market! '
cText += 'And is FREE.'
CASE nMode == 4
cText := 'Enjoy and contribute to the project any way you can. Develop, Debug, Support, and spread a word of mouth!'
ENDCASE
RETURN cText
/*----------------------------------------------------------------------*/
*/
;TODO - Write a comprehensive help to exploit CUI-GUI functionality.
Will do in a few days.
* bin/postinst.bat
+ Added owatcom and pocc support for implib generation.
* utils/hbmk2/hbmk2.prg
+ Fixed win/pocc support.
+ Added resource support for win/pocc.
+ Added .dll support for win/pocc.
+ Added win/xcc support (untested).
+ -DHB_DYNLIB is passed to C compiler in -hbdyn (.dll) mode
for win targets. (still need fixing to create usable .dlls)
; NOTE: pocc support is very limited as pocc compiler doesn't
support multiple input files.
* contrib/hbgt/strasint.c
% Using HB_ISDIGIT()
! Fixed to not include hbtrace.h directly.
* make_gnu.bat
% make clean and install phases merged in HB_BUILD_DLL mode.
* bin/postinst.bat
! Fix to recent change.
* include/hbdefs.h
! Moved #include hbtrace.h after HB_EXPORT is defined.
(hack)
* make_gnu_xmingwce.sh
- Disabled modifying PATH when host OS is Windows.
; NOTE: Hack.
* include/hbtrace.h
+ Added HB_EXPORT.
* doc/whatsnew.txt
* contrib/hbfimage/fi_winfu.c
* contrib/hbfimage/fi_wrp.c
* contrib/hbfimage/Makefile
- Restored previous state, because latest changed addressing
Linux build failure were causing problems for the Windows
platform.
; TOFIX: We must clean our types, to avoid these problems
and all bad hacks to work it around.
* mpkg_win.bat
* mpkg_win.nsi
+ Added files ChangeLog, TODO, ERRATA, INSTALL to root dir.
* Some changed to batch targeting robustness for situations
which cannot normally happen in normal cases, but it's
useful for debugging.
* make_gnu.bat
* config/win/global.cf
* HB_BUILD_DLL is now processed by make_gnu.bat and another
internal envvar is used to request DLL flags from the GNU
Make. This way some side effects are avoided when doing a
make_gnu.sh launched build.
* make_gnu.sh
+ Emptying CLIPPER/HARBOUR envvars before starting the build.
(please test)
* contrib/hbfbird/firebird.c
* Minor formatting.
* contrib/hbcurl/hbcurl.c
! Fixed warning/bug in recently added feature.
* mpkg_win.bat
* Cleanup.
- Removed checking for errorlevel as it made it exit
even when doing successful builds. [ Why? Could someone
look at this? ]
* contrib/hbwin/wapi_commctrl.c
! Fix of the fix of the fix for non-ANSI comment fixes.
* tests/ac_test2.prg
* Updated.
* source/rtl/achoice.prg
! Fixed to not call user func in AC_NOITEM mode.
! Added more visual corrections for better CA-Cl*pper compatibility.
; Thanks to Vladislav Lavrecky for the above.
* INSTALL
+ Further refined GNU Make usage instructions for Windows
compilers. The recommended way of setting it up is now
stricter and there is mention of recommended build and
version number.
* contrib/hbapollo/apollo.c
* contrib/hbapollo/apollo1.prg
* Formatting.
* config/dos/owatcom.cf
* config/win/poccce.cf
* config/win/pocc64.cf
* config/win/owatcom.cf
* config/win/pocc.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
! Cleanups and fixes after yesterday's changes.
Turned out that CFLAGS has an important and strange
difference compared to CPPFLAGS: It's also passed to the
_linker_ :( This should be cleaned in the future.
! HB_USER_LDFLAGS honored in dos/owatcom.
* contrib/hbgf/hbgfwin/winapi.c
* Formatting.
* contrib/hbwin/win_misc.c
! Fixed WIN_SHELLEXECUTE() for WinCE (converted to stub).
! Fixed WIN_RUNDETACHED() to compile with WinCE (4th parameter
is ignored and fixed to CREATE_NEW_CONSOLE).
* contrib/hbwin/win_regc.c
! HKEY_CURRENT_CONFIG disabled for WinCE builds.
* source/rtl/gtwvt/gtwvt.c
! Complete "layered" window support disabled for WinCE builds.
* source/rtl/achoice.prg
* tests/ac_test2.prg
! ACHOICE() made more Clipper compatible. Still not fully, pls
continue Clipper/Harbour tests with updated ac_test2.prg.
* harbour/source/rtl/gttrm/gttrm.c
+ added some missing xterm key sequences
* harbour/utils/hbmk2/hbmk2.prg
! fixed curses name in SunOS builds (here we are using native curses
library not ncurses)
* harbour/config/hpux/global.cf
* harbour/config/sunos/global.cf
* enabled GTXWC disabled for default builds
* contrib/hbtpathy/telepath.prg
! Fixed to use __PLATFORM__UNIX instead of __PLATFORM__LINUX.
! Fixed to check for string lengths instead of using Empty().
This way full whitespace data is also handled now.
* source/rtl/memoedit.prg
* Minor formatting.
* source/rtl/achoice.prg
! Fixed to always dehilight active item on exit.
(probably could be done more efficiently, feel free to
optimize it.)
Please test.
; TOFIX: ? gttrm on Darwin changes console color from my
default green, to Harbour default gray on exit.
* doc/whatsnew.txt
* Minor.
* bin/postinst.bat
* mpkg_win.bat
* HB_DIR_IMPLIB -> HB_BUILD_IMPLIB
ATTENTION: Please modify your local settings. This setting
is now closer to final.
* mpkg_win.bat
+ Turning on optimizations.
+ Turning off debug mode.
* ChangeLog
* Added comment to previous entry. (-d1 vs -d2 in owatcom)
* config/rules.cf
! Fixed typo in prev.
* config/dos/owatcom.cf
* config/win/owatcom.cf
* config/linux/owatcom.cf
* config/os2/owatcom.cf
% Removed unnecessary -i C compiler options. (pls check,
I've tested with Windows and applied it to other platforms)
% Removed DOS cmdline length hack from win/os2.
* source/rtl/achoice.prg
! Fixed handling of empty items.
* INSTALL
* config/rules.cf
* config/darwin/gcc.cf
* config/hpux/gcc.cf
* config/dos/djgpp.cf
* config/win/mingwce.cf
* config/win/poccce.cf
* config/win/pocc64.cf
* config/win/icc.cf
* config/win/cygwin.cf
* config/win/msvc.cf
* config/win/owatcom.cf
* config/win/xcc.cf
* config/win/msvcce.cf
* config/win/mingw.cf
* config/win/pocc.cf
* config/win/bcc.cf
* config/linux/gcc.cf
* config/linux/icc.cf
* config/os2/gcc.cf
* config/sunos/gcc.cf
* config/bsd/gcc.cf
+ Added support HB_BUILD_DEBUG=yes.
This will work identically to the former non-GNU make
systems.
! Added missing -MT for MSVC. (from non-GNU make)
* Changed a few CPPFLAGS to CFLAGS. (these are currently
synonyms, and both are utilized without any apparent order).
This could use more cleanup.
* harbour/source/common/hbgete.c
* disabled unsetenv() from Watcom builds - looks that this function
exists only in OpenWatcom header files.
* harbour/source/common/hbprintf.c
* do not use some FL functions which operates on long double values
in SunOS builds
* doc/whatsnew.txt
+ Added new entries since last update. Please review, etc...
; TODO: There is still 500K worth of ChangeLog to process
for the timeframe 200808/09-20081219.
Someone pls help.
* doc/man/hbmk.1
* CC* envvar name change.
* harbour/source/common/hbgete.c
! fixed setenv() usage in some OpenWatcom ports
* harbour/source/compiler/cmdcheck.c
! fixed casting for C++ compilation
* harbour/source/rtl/gttrm/gttrm.c
* removed some trailing spaces
2009-03-10 18:18 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* ChangeLog
* Updates.
* contrib/xhb/txml.prg
* Update HB_REGEXMATCH() calls, to keep old logic.
; TOFIX: Above doesn't mean it's now correct, so
someone familiar with this code, please
correct it.
* contrib/hbapollo/apollo.c
* Removed essentially empty comments.
* source/rtl/achoice.prg
! Applied fix from Vladislav Lavrecky.
I didn't test it just assumed okay, please do so.
* ChangeLog
* Updates.
* contrib/xhb/txml.prg
* Update HB_REGEXMATCH() calls, to keep old logic.
; TOFIX: Above doesn't mean it's now correct, so
someone familiar with this code, please
correct it.
* contrib/hbapollo/apollo.c
* Removed essentially empty comments.
* source/rtl/achoice.prg
! Applied fix from Vladislav Lavrecky.
I didn't test it just assumed okay, please do so.
* source/rtl/hbregex.c
* 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.
* utils/hbmk2/hbmk2.prg
* -debug description extended.
* contrib/xhb/hbcompat.ch
- Disabled dangerous bitop compatibility macros + comment added.
Enabled them with #define XHB_BITOP. Or even better
to change code to use HB_BIT*() functions natively.
* utils/hbmk2/hbmk2.prg
+ Added support for static lib creation (experimental).
win/msvc, win/bcc are supported.
+ Added support for dynamic lib creation (experimental).
win/msvc is currently support.
; Please help adding support for the rest of compilers.
* harbour/source/compiler/hbusage.c
! fixed the /u+ description - it does not work like #include.
Only preprocessor command are significant in files included
by -u<file> and -u+<file>
* harbour/doc/man/harbour.1
+ add -u+<file> description
* harbour/source/pp/ppcore.c
! fixed typo in error message table (missing ',')
* harbour/source/compiler/cmdcheck.c
* generate error when -u+ is used without <file>
* harbour/source/compiler/hbmain.c
* do not display usage screen if other errors were generated before
* source/compiler/hbusage.c
+ Added -u+ to help screen.
* One remaining non-ASCII char cleaned from credit list.
* include/hbpp.h
* source/pp/ppcore.c
! Renamed HB_PP_MAX_REPATS to HB_PP_MAX_REPEATS.
* ChangeLog
* Added one line to my prev entry.
* harbour/include/hbcompdf.h
* harbour/source/compiler/cmdcheck.c
* harbour/source/compiler/hbcomp.c
* harbour/source/compiler/ppcomp.c
+ added support for extended definition files in Harbour compiler
switches: -u+<file>
This option can be repeated if user wants to use more then one
file with extended definitions. The definitions are added after
standard ones and after defines specified by -D<name>[=<value>]
Harbour compiler switch.
The behavior of -u[<file>] remains unchanged and -u or -u<file>
can can be used together with -u+<file>.
Note for xHarbour users: it's not exactly the same behavior as
in xHarbour compiler.
! fixed memory leak when repeated -u[<file>] options are used.
* harbour/include/hbpp.h
! changed the NOT operator precedence - it should be bigger then
logical .and./.or. operators in #if expressions
* harbour/source/vm/thread.c
! fixed typo HB_OS_WIM -> HB_OS_WIN - thanks to Francesco.
* harbour/include/hbthread.h
* harbour/source/vm/thread.c
* emulate POSIX thread conditional variables in Windows builds.
It should fix some possible bad behavior in MS-Windows Harbour
MT programs.
* harbour/source/rtl/hbinet.c
! fixed typo in HB_INETDATAREADY() - the second parameter (timeout)
was ignored.
* harbour/contrib/examples/uhttpd/uhttpdc.c
* fixed typo in conditional iMsec usage.
* harbour/contrib/examples/uhttpd/uhttpd.prg
* set default timeout for socket operations to 3 sec.
* use timeout parameter in HB_INETDATAREADY() and
increased default timeout for accept to 250 millisecs.
Please correct this modification if you prefer different values.
* INSTALL
+ Added short information for Darwin/MacPorts and contribs.
* contrib/hbmysql/Makefile
* contrib/gtalleg/Makefile
* contrib/rddsql/sddmy/Makefile
* contrib/rddsql/sddpg/Makefile
* contrib/hbpgsql/Makefile
+ Enabled on Darwin (for MacPorts).
* include/hbdefs.h
* contrib/hbfimage/fi_wrp.c
* contrib/hbfimage/Makefile
+ Enabled on Darwin (for MacPorts).
+ Added ugly hack to make it compile on Darwin.
* contrib/hbtpathy/Makefile
+ Enabled on Darwin.
* utils/hbmk2/hbmk2.prg
+ Normalizing paths of cfg files.
* CCPREFIX, CCPATH renamed to HB_CCPREFIX, HB_CCPATH
(seems these are Harbour specific settings)
* contrib/examples/uhttpd/home/testxmldb.html
* Added Safari as unsupported browser.
(BTW, what would it need to support Safari and Chrome, or
WebKit browsers in general?)
* harbour/contrib/examples/uhttpd/uhttpd.prg
- Commented hb_GCAll() in main loop, I got newly one GPF randomly.
In meanwhile I will do other tests.
! Reverted and corrected closing threads because with last changes
finished threads were not correctly released.
* harbour/source/common/hbgete.c
* added suport for BSD systems
* harbour/contrib/examples/uhttpd/uhttpd.prg
! fixed private declaration - after last modification they were not
declared for threads at all
! fixed close procedure, s_aRunningThreads and s_aServiceThreads
where not protected at all in the moment when these variables
variables where used inside aeval() and other threads were
resizing them removing their pointers. In short word it was
in practice impossible to cleanly close uhttpd server without
GPF, deadlock or other bad side effects. I changed this code so
these arrays are modified only by calling procedure.
I do not know why it was written in such way but I guess it
was workaround for xHarbour bugs. In xHarbour is race condition
inside some functions like ThreadJoin() (RTE if thread finished
just before ThreadJoin(<pThID>)). Harbour does not have such
problems so I simply cleaned this code making it much simpler.
* reactivated hb_gcAll( .T. ) in the main loop for tests.
I made some tests with linux and current uhttpd works perfectly
without any problems with and without hb_gcAll( .t. ).
I haven't noticed any problems. I used this scripts to make
tests:
#!/bin/sh
function GT_UHTTPD()
{
while curl http://127.0.0.1:8082/ > /dev/null
do
if ! curl http://127.0.0.1:8082/serverstatus > /dev/null
then
exit
fi
# disable it if you want to increase traffic
if ! curl http://127.0.0.1:8082/info > /dev/null
then
exit
fi
if [ -f stop ]
then
exit
fi
done
}
for i in `seq 10`
do
GT_UHTTPD &>/dev/null &
done
wait
on three CPU machine. Please make some test with other systems.
* contrib/examples/uhttpd/uhttpdgd.hbm
+ Added *nix GD lib name.
* contrib/hbwin/win_prt.c
! WINPORTWRITE() potential GPF if non char type is passed as 2nd arg.