* harbour/debian/changelog
* harbour/debian/rules
* changed version number to 3.1.0-1
* removed HB_BUILD_DEBUG=yes
* use 'dh_prep' instead of deprecated 'dh_clean -k'
* harbour/src/rtl/gttrm/gttrm.c
! fixed my C&P typo in HB_TRACE() message
+ harbour/doc/locks.txt
+ added descirption of DBF locking schemes
* contrib/gtwvg/gtwvg.hbp
+ Added: wvggenrc.prg
* contrib/gtwvg/gtwvg.h
+ Added: structure member - PHB_ITEM pNotifierGUI
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgwing.c
* contrib/gtwvg/hbgtwvg.ch
+ Added: event notification - HB_GTE_ANY
* contrib/gtwvg/wvg3stat.prg
* contrib/gtwvg/wvgax.prg
* contrib/gtwvg/wvgcheck.prg
* contrib/gtwvg/wvgclass.prg
* contrib/gtwvg/wvgcombo.prg
* contrib/gtwvg/wvgcrt.prg
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvgdarea.prg
* contrib/gtwvg/wvgdatar.prg
* contrib/gtwvg/wvgdlg.prg
+ contrib/gtwvg/wvggenrc.prg
+ Implemented: Xbase++ compliant SetAppWindow() function.
The function simulates a WvgCRT() window from current
thread specific GT console if the function is called
without parameters and current thread has not posted
any application window. This facilitates hosting
WVG*Gui controls on pure GT invoked console.
* contrib/gtwvg/wvghtmlv.prg
* contrib/gtwvg/wvglistb.prg
* contrib/gtwvg/wvgmenub.prg
* contrib/gtwvg/wvgmle.prg
* contrib/gtwvg/wvgpaint.prg
+ Added: WVT_GetRGBColorByString( cClipperColorString, nForeBack )
Retrieves RGB color given the clipper color string from
active GT palette:
WVT_GetRGBColorByString( "W+/GR", 0 ) => nRGBForeColor
WVT_GetRGBColorByString( "W+/GR", 1 ) => nRGBBackColor
* contrib/gtwvg/wvgphdlr.prg
* contrib/gtwvg/wvgpushb.prg
* contrib/gtwvg/wvgradio.prg
* contrib/gtwvg/wvgscrlb.prg
* contrib/gtwvg/wvgsle.prg
* contrib/gtwvg/wvgstatb.prg
* contrib/gtwvg/wvgstatc.prg
* contrib/gtwvg/wvgsysw.prg
* contrib/gtwvg/wvgtoolb.prg
* contrib/gtwvg/wvgtreev.prg
* contrib/gtwvg/wvgwnd.prg
+ Restructured: GTWVG at GUI space.
Xbase++ compatible controls can be hosted on CUI console.
The only requirement is that the parent of such GUI
controls is an object created with WvgCRT(). If there
is no object of type WvgCRT() is in sight, in case of a
pure GT invoked console, a WvgCRT() object is created and
current console window handle is assigned to it. This is
achieved through SetAppWindow() function which is called
if a control's parent is supplied as NIL, in accordance
with Xbase++ documentation.
The events assigned and executed by such controls are not
posted to inkey() processing, instead, are executed directly.
Just before executing an assigned event, focus is imposed
on GT console and returned to GUI control after processing
the execution. This ensures that GT is always in focus while
GUI control executes an assignment.
+ Introduced: In accordance with console coordinate system, the
positioning and size parameters supplied at the time of
construction of GUI objects now support
aPos == { nRow, nColumn } and aSize == { nRows, nColumns }
protocol. This has been achieved by supplying all four values
in negative. Thus WVG engine checks for negativity of position
and size values and determines that coordinate system be
interpreted as row/column instead of x/y(s). For example,
WvgPushButton( , , { -10, -2 }, { -3, -10 } )
call will render the push button at 10,2,13,12 console area
in terms of rows and columns. These coordinates will be
maintained with resizing of console, etc.
To extend this coordinate system a step further, the pos
and size arrays can be populated with code blocks evaluating
to a negative numeric value. This implimentation facilitates
to ancor any GUI control to a specific postion always. Thus,
WvgPushButton( , , { {|| -( maxrow()-3 ) }, -2 }, { -10, -3 } )
will always position push button on last row-3 of the console
no matter how many rows the console is resized to.
+ Introduced: oWVG:SetColorFG/BG() now accept clipper color string
and renders the corresponding RGB color of active GT palette.
This facilitates the embedding of GUI controls on Clipper
complaint screen colors. Thus,
oStatic:setColorBG( "GR*" )
will render the background of text label as yellow.
IMPORTANT: The above concepts are on the top of existing ones
so no current functionality is lost.
* contrib/gtwvg/tests/demowvg.prg
* contrib/gtwvg/tests/wvgtbrowser.prg
* contrib/gtwvg/tests/wvgutilities.prg
* contrib/gtwvg/tests/wvgxbp.prg
+ Restructured: the code parts to demonstrate newly introduced
GTWVG concepts. Specialy look at main window's menu system,
push buttons at the bottom. Also look at
<Main Menu><Traditional><Browser - GTWVG - Threaded>.
This example is reworked entirely and is a testimony to
GTWVG power.
NOTE: more changes and code shifting and simplifying is
on the drawing board. Hopefully code will get an
an overhaul in coming days.
* harbour/include/hbrdddbf.h
* modified DB_DBFLOCK_HB64 locking scheme
- extended RLOCK/FLOCK area from 2^31-2 to 2^32-2
it effectively changes maximum number of records in this
locking scheme to 4'294'967'294
- use COMIX like hyper locking mode
it should increase performance
Warning: INCOMPATIBLE!
all applications using DB_DBFLOCK_HB64 locking mode should
be updated - it is not safe to concurrently access the
same files using programs compiled with older Harbour
versions and current one.
* renamed the following DB_DBFLOCK_* macros:
DB_DBFLOCK_CLIP to DB_DBFLOCK_CLIPPER
DB_DBFLOCK_CL53 to DB_DBFLOCK_COMIX
DB_DBFLOCK_CL53EXT to DB_DBFLOCK_HB32
* added new locking scheme: DB_DBFLOCK_CLIPPER2
This locking scheme is designed to replicate _real_ locking scheme
used by Cl*pper applications linked with NTXLOCK2.OBJ
It's different then the documented one.
; Now Harbour supports the following locking schemes:
DB_DBFLOCK_CLIPPER 1 default Clipper locking scheme
DB_DBFLOCK_COMIX 2 COMIX and CL53 DBFCDX hyper locking scheme
DB_DBFLOCK_VFP 3 [V]FP, CL52 DBFCDX, SIx3 SIXCDX, CDXLOCK.OBJ
DB_DBFLOCK_HB32 4 Harbour hyper locking scheme for 32bit file API
DB_DBFLOCK_HB64 5 Harbour hyper locking scheme for 64bit file API
DB_DBFLOCK_CLIPPER2 6 extended Clipper locking scheme NTXLOCK2.OBJ
* harbour/include/hbrdddbf.h
* harbour/include/hbrddntx.h
* harbour/include/hbrddnsx.h
* harbour/include/hbrddcdx.h
* harbour/src/rdd/dbf1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ finished support for COMIX like hyper locking.
This modification enables periodical switch to write locks
by readers to eliminate starvation effect on some systems
where many readers can completely block writer.
By default readers use exclusive lock once per each 16 operations.
+ added optional support for delayed index write locks (flush locks)
in hyper locking modes.
If index RDD can use such locks then write lock can be divided into
two parts:
1) block writers and new readers (write lock)
[prepare index modifications in memory]
2) wait for old readers still active (flush lock)
[write modifications to index file]
[release locks]
This mode reduces time when index is locked exclusively increasing
reader performance and also increase writer performance because
waiting for active readers it can prepare index modifications in
memory.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
+ added support for delayed index write locks (flush locks) in DBFCDX
* harbour/src/rtl/filebuf.c
* automatically change write file locks to read locks when file is
open in readonly mode in POSIX systems.
* harbour/src/vm/classes.c
* disabled inheriting of class variables values from ancestor classes
when new class is dynamically created.
Warning: INCOMPATIBLE!
This modification is not backward compatible and can
interact with some existing code which has to be updated
for new behavior.
* contrib/hbqt/qtgui/qth/QClipboard.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
+ Implemented: commented out methods returning data of type QMimeData.
* harbour/package/mpkg_rpm.sh
! fixed RPM _topdir detection.
Patch created by Raphael Gozzo - many thanks.
* harbour/INSTALL
* added info about libraries necessary to build hbgs and hbmagic
in Ubuntu.
* harbour/contrib/hbmagic/hbmagic.hbx
* added HB_MAGIC_SIMPLE (regenerated automatically)
==> ChangeLog <==
2011-11-17 09:46 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rtl/filebuf.c
! fixed silly typo in previous fix: 2011-09-02 14:03 UTC+0200
! fixed race condition in code emulating DOS/Windows file lock
behavior in POSIX systems. The problem could be exploited by
Harbour MT programs using the same files in many threads in
more then on process. Many thanks to Zsolt for the info and
test code example.
[TOMERGE 3.0]
* src/rtl/hbini.prg
+ keep order of ini items.
Patch by Qatan.
* modified to use HB_HKEEPORDER() instead of HB_HSETORDER()
to be consistent along the patch and because former is the
native, faster synonym.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
! Guarded: QLibraryInfo::buildDate() to be avialble
only for Qt 4.6 and above. Function call stays as is, only
return value will be nil.
* harbour/contrib/hbwin/hbwapi.h
* harbour/contrib/hbwin/wapi_winbase.c
* harbour/contrib/hbwin/hbwin.hbx
+ added to new WIN API wrappers:
WAPI_QueryPerformanceCounter( @nCounter ) -> <lSuccess>
WAPI_QueryPerformanceFrequency( @nFrequency ) -> <lSuccess>
Warning: read in MSDN about above functions and possible
interactions with multi CPU machines.
* harbour/contrib/hbwin/win_misc.c
* harbour/contrib/hbwin/hbwin.hbx
+ added new function which converts QueryPerformance counters
to seconds:
WIN_QPCOUNTER2SEC( nCounter ) -> <nSeconds>
I suggest to use it to convert difference between two calls
to WAPI_QueryPerformanceCounter(), i.e.:
WAPI_QueryPerformanceCounter( @nCounterStart )
[...]
WAPI_QueryPerformanceCounter( @nCounterEnd )
? "total time:", ;
WIN_QPCOUNTER2SEC( nCounterEnd - nCounterStart ), "sec."
* harbour/src/rtl/gtxwc/gtxwc.c
+ added support for selecting text with mouse and coping it
to clipboard buffer.
By default this functionality is disabled and can be enabled by:
hb_gtInfo( HB_GTI_SELECTCOPY, .t. )
Marked mode is started by LEFT MOUSE button pressed with SHIFT key
and stopped when LEFT MOUSE button is released. Selected text is
highlight in similar way to GTWVT.
- contrib/hbclipsm
* contrib/hbplist
* doc/dirstruc.txt
- deleted local implementation of CA-Cl*pper SOURCE/SAMPLE
functions. Many of these have equivalents in hbct, hbmisc
libs and core, and some functions had implementation bugs
(notably ADDMONTH(), even in original Cl*pper implementation,
though a different one there). Simply compile original Cl*pper
sources to use these functions in your app or use the alternatives.
* harbour/src/rtl/gtxwc/gtxwc.c
! create initial console window in fullscreen mode if user called
hb_gtInfo( HB_GTI_ISFULLSCREEN, .T. )
before window was created
* harbour/tests/gtkeys.prg
* modified to optionally test different CPs some extended GT keys
* harbour/src/rtl/gtxwc/gtxwc.c
* return HB_GTI_RESIZEMODE_ROWS for HB_GTI_RESIZEMODE
HB_GTI_RESIZEMODE_FONT is not supported yet by GTXWC
+ added support for HB_GTI_ISFULLSCREEN and HB_GTI_ALTENTER
They work like in GTWVT with HB_GTI_RESIZEMODE_FONT.
Some window managers may not support it so please test it.
+ added support for HB_K_CLOSE, HB_K_GOTFOCUS and HB_K_LOSTFOCUS
like in GTWVT
* harbour/src/rtl/gtxwc/gtxwc.c
+ added support for 'Root' input context for systems where
XLib supports Xutf8LookupString()
It should resolve problems with national characters and
some local signs supported by different keyboards
(i.e. 1/2, euro sign, itp.)
Please test it with different systems.
* harbour/src/rtl/gtxwc/gtxwc.h
* harbour/src/rtl/gtxwc/gtxwc.c
* minor code cleanup
* harbour/src/rtl/gttrm/gttrm.c
+ added support for HB_GTI_WINTITLE for XTerm compatible terminals
* contrib/hbide/ideedit.prg
+ Implemented: F3 key as "Search Next" per default key for
next search of previous string on some platforms.
NOTE: if you have mapped F3 for some other action than
"Search Next" action will be ceased.
* harbour/src/rtl/hbdyn.c
* added dummy assignment to pacify warning
* harbour/src/rtl/hbsocket.c
* added workaround for EREFUSED == ECONNREFUSED.
It has to be tested with different OS-es
* contrib/hbziparc/ziparc.prg
% minor optimization to last change. checkme.
- contrib/hbxlsxml
+ examples/hbxlsxml
! moved to examples. this code is not even close
to Harbour code quality and implements not .xls
file format but HTML format renamed to .xls. It's
not understood by lots of tools, it's not a standard.
see details on list.
+ contrib/hbxlsxml
+ contrib/hbxlsxml/hbxlsxml.hbp
+ contrib/hbxlsxml/xlsxml.prg
+ contrib/hbxlsxml/xlsxml_s.prg
+ contrib/hbxlsxml/xlsxml_y.prg
+ Added: Fausto Di Creddo Trautwein's XML compliant interface
to generate native files for Microsoft's Excel. The work
is based on Robert F Greer's PHP based interface.
Thanks to both of them.
+ contrib/hbxlsxml/tests
+ contrib/hbxlsxml/tests/example.prg
+ contrib/hbxlsxml/tests/example2.prg
+ contrib/hbxlsxml/tests/example3.prg
+ contrib/hbxlsxml/tests/hbmk.hbm
+ Added: user test code based on above library written by Fausto Di Creddo.
; NOTES: As I have found this library quite useful it is placed in
contrib section instead of in examples.
I have simply formatted sources to Harbour standards tweaking
something here and there only. The sources have the potential
to further optimize, but as in its current state itself,
it is robust.
* src/rtl/tget.prg
! fixed RTE when setting :picture to NIL for
N and C types in some certain rare circumstantances.
The :picture setting operation is ignored in such case,
since the internally stored original value is not known.
Tested OK against CA-Cl*pper 5.3, though maybe it's
possible to refine this even further with more test cases.
* tests/rto_get.prg
+ added test case for RTE reported by Quique
! fixed warnings
* contrib/hbqt/qtcore/hbqtcore.ch
+ Added: QLocale_* constants extracted by Luigi Ferraris
* contrib/hbqt/qtgui/hbqtgui.ch
+ Added: QImage_* and QTextOption_* constants extracted by Luigi Ferraris.
* contrib/hbmysql/tmysql.prg
! tinyInt type in MySQL is now always regarded as numeric value (was bool)
Patch by Mitja Podgornik.
; This causes unavoidable INCOMPATIBILITY. [INCOMPAT]
* doc/howtosvn.txt
+ added INCOMPAT as new tag. Use it to mark changes which introduce
incompatibility.
* harbour/src/vm/fm.c
! do not enable by default DLMALLOC in WinCE builds.
It was the source of problems reported by Jarek with file read/write
operation in WinCE builds. Now it should work correctly - please
make some tests with real devices - I used emulator only.
* harbour/contrib/hbwin/wapi_wingdi_font.c
+ added WAPI_ADDFONTRESOURCE() and WAPI_REMOVEFONTRESOURCE()
* contrib/hbziparc/ziparc.prg
+ added support for HB_UNZIPFILE() lWithPath parameter
! fixed HB_UNZIPFILE() after latest patch and added better error checking
! fixed setting attribs
; Patch by Grigory Filatov, with these changes of mine:
* deleted changes to existing code and replaced it with optimizated code
* deleted reformatting of existing code
! fixed adding ending pathsep
* minor simplification
! fixed RTE when using progress bar (from Leandro's new patch)
; Please test
- contrib/hbpgsql/tests/hdbctest.prg
- deleted HDBC/PGSQL tests
* harbour/src/rtl/gtwvt/gtwvt.c
! fixed infinite recursive loops and GPF in WinCE builds caused by
SetWindowPos()/ProcessMessages() when WM_SIZE message is processed.
Now GTWVT can be used again in WinCE builds.
* harbour/src/compiler/hbmain.c
! take starting line number from PP to eliminate possible
synchronization problem
* harbour/src/compiler/hbcmplib.c
! minor fix in meta filename detecting
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/src/pp/ppcore.c
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcmplib.c
+ added support for setting starting line number in code compiled
from memory buffer
! removed unnecessary EF_CANDEFULT flag from recently added
compiler RTE
* harbour/include/hbpp.h
* harbour/include/hbcomp.h
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/hbgenerr.c
+ added support for redirecting compiler warning and error messages
to user function.
* harbour/src/compiler/hbcmplib.c
+ optional support for generating RTE in HB_COMPILE*() functions
on compile errors.
* contrib/hbpgsql/hbpgsql.hbx
* contrib/hbpgsql/hbpgsql.hbp
- contrib/hbpgsql/hdbcpg.prg
- Deleted HDBC class layer due references to deprecated
wrapper function which caused link errors in dynamic builds
or HDBC apps. Please readd the file if interested in making
this technially simple fix.
* contrib/hbmzip/mzip.c
% eliminated one local variable in HB_UNZIPFILEREAD()
* contrib/hbziparc/ziparc.prg
+ HB_UNZIPFILE(): added progress bar support.
Patch by Leandro Damasio, with following changes:
! refixed to use cPath when forming target filename
! missing hHandle declaration
% FERASE() removed, FCREATE() will recreate it
% Left() eliminated from FWRITE() call
* minor symbol casing
; I didn't test this code, so please do it.
* harbour/src/rtl/transfrm.c
% eliminated hb_charUpper() called for picture clauses and minor
code optimization
* harbour/src/rtl/gtapi.c
! fixed typo in function name: hb_gtBoxS() was wrongly redirected
to HB_GTSELF_BOXD() instead of HB_GTSELF_BOXS()