* harbour/contrib/gtwvg/wvgutils.c
* harbour/contrib/gtwvg/wvgwing.c
* eliminated HB_TCHAR_*() macros
; TOFIX: replace hb_parvc() and nCopyAnsiToWideChar() function
with valid HB_STR* macros.
Function nCopyAnsiToWideChar() should be removed.
* harbour/contrib/xhb/xhw32prn.prg
! added missing ;
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvggui.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgwing.c
! Removed: TCHAR_* macros, almost.
Only 6 occurances are still present in the code which I do not
know how to cover.
* contrib/gtwvg/wvgmenub.prg
! Adapted: the conversion of character '~' to '&' at prg level
instead of C level.
* harbour/ChangeLog
! fixed typo in file name in my previous commit.
It should be gtwvg.c not gtwvg.h
* harbour/src/rtl/disksphb.c
! fixed variable declaration for strict ANSI C compilers
* INSTALL
* further clarified the way to submit diffs (use _one_ .dif
file created from root of SVN sandbox using 'svn diff', use
extension '.zip')
* clarified the names of mailing list.
* clarified which mingw tdm 4.6.1 version is okay.
* simplified to use 'zip' tool and .zip extension for submitted
logs.
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvggui.c
* contrib/gtwvg/wvggui.h
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgwing.c
! Replaced: HB_TCHAR_* macros to HB_STR*() API.
I could not find the hb_str*() api interface for remaining macros.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
! Synchronized: with GTWVT as much possible.
Mainly eliminated TCHAR_* macros and used hb_str* api.
Also tried to synchronize codepage issue, not sure
how much I succeeded.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Embedded: oQt:hbSetEventBlock( QEvent_Paint, bBlock )
=>
oQt:connect( QEvent_Paint, bBlock )
NOTE: the difference is that in all other events only one
parameter is passed to bBlock, i.e., an object of
type relevant QEvent, whereas, for paintEvent two
parameters are passed, first as usual qPaintEvent,
the other qPainter.
* contrib/hbqt/tests/demoqt.prg
! Replaced: oBtn:hbSetEventBlock( QEvent_Paint, bBlock )
=>
oBtn:connect( QEvent_Paint, bBlock )
* contrib/hbqt/hbmk2_qt.hbs
! Fixed: a strategic omission where return value of a block
was not being retrieved properly. Now newly introduced
engine to render owner-drawn objects at the .prg level is
working flawlessly.
* contrib/hbqt/qtgui/qth/QPushButton.qth
* contrib/hbqt/qtgui/qth/QWidget.qth
+ Added: PaintEvent = YES to check if engine is working ok.
Yes, it is working.
* contrib/hbqt/tests/demoqt.prg
+ Added: functionality to paint a PushButton via user code.
Still looking for the how to determine state of the object,
in this case, pushbutton, whether it is being pushed or
otherwise.
* contrib/hbqt/hbmk2_qt.hbs
+ Implemented: engine to receive protected methods, i.e., events
and a way to exploit them. The code needs some more make-over
but the proof of concept is working. Lookfor hbqt/tests/demoqt.prg
for a live example.
NOTE: there is only a minimal need to add few keywords, rest all
is handelled by the engine. The next step is to synchronize
this methodology with :connect() / :disconnect() protocol.
* contrib/hbqt/qtgui/qth/QItemSelection.qth
* contrib/hbqt/qtgui/qth/QItemSelectionModel.qth
+ Enforced: methods with QModelIndexList => QList< QModelIndex ).
* contrib/hbqt/qtgui/qth/QWidget.qth
! Fixed: to honor QModelIndexList cast.
+ Added: building blocks to create classes with their protected
methods. The constructor methods are valid for only QWidget
class and this code will be replaced with real-code soon.
Still I am looking for how to include resultant .cpp in final
binaries. Till then this code stays as is.
Viktor: can you look into new methods and fix the logic from hbmk2's
point of view ?
qqwidget.h is created ok.
moc_qqwidget.cpp is created ok.
moc_qqwidget.o is missing.
QWidget.cpp is compiled fine.
But when compiling demoqt.prg, it reports missing
vtable for QQWidget which is because moc_qqwidget.cpp
is not being linked.
To invoke, in QWidget.qth, set PaintEvent = YES and
rebuild QWidget.*.
* src/rdd/usrrdd/rdds/arrayrdd.prg
! formatting/cleanup, removed unncessary e"" string
! replaced '='/'!=' operator on strings with ==. It's most probably
still broken, but at least now consistently so.
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* Cleaned windows xhb debug using HB_TRACE() function and removed old
lines
* harbour/ChangeLog
* formatted previous log entry
* contrib/hbqt/qtgui/qth/QPrinter.qth
* contrib/hbqt/qtgui/qth/QPrintPreviewDialog.qth
* Fixed: constructors.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QGraphicsGridLayout.qth
* contrib/hbqt/qtgui/qth/QGraphicsLayout.qth
* contrib/hbqt/qtgui/qth/QLineEdit.qth
* contrib/hbqt/qtgui/qth/QPlainTextEdit.qth
* contrib/hbqt/qtgui/qth/QWizard.qth
* contrib/hbqt/qtwebkit/qth/QWebFrame.qth
* contrib/hbqt/qtwebkit/qth/QWebPage.qth
+ Added: methods introduced in later versions of Qt than 4.5.3.
Please speak-out if some are missing.
* contrib/hbqt/hbmk2_qt.hbs
+ Implemented: Qt version dependant class and methods compilations.
Current implementation does not generate any error for methods
which are called in application but are not present in used
Qt version. It can be changed to throw run-time error.
Classes are only compiled when version of Qt is what is intended.
NOTE: this implemenattion opens the door to include any new classes
and methods to existing classes no matter which version is
current on the users system.
* contrib/gtwvg/wvgtoolb.prg
* contrib/gtwvg/wvgwing.c
* Fixed: WvgToolbar() was wrongly displaying toolbar buttons
when number was exceeding 16. Now n number of buttons can
be displayed.
* contrib/gtwvg/wvgax.prg
* contrib/gtwvg/wvgcheck.prg
* contrib/gtwvg/wvgdarea.prg
* contrib/gtwvg/wvglistb.prg
* contrib/gtwvg/wvgpushb.prg
* contrib/gtwvg/wvgscrlb.prg
* contrib/gtwvg/wvgsle.prg
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvtwin.ch
+ Implemented: ::pointerFocus for WvgPushButton() and WvgCheckBox().
This facilitates not to keep focus on push buttons after click.
! Fixed: focussing issues for WvgScrollBar() objects.
+ Implemented: WvgActiveXControl() for CUI hosting.
* contrib/gtwvg/tests/demowvg.prg
* contrib/gtwvg/tests/wvgtbrowser.prg
+ Reworked: The browser demonstration now holds Shell.Explorer.2
active-x control to navigate the web. Just click on "Active-X"
check box.
! Fixed: navigation glitch when another control was activated
while the current focus has been on another GUI control.
NOTE: this implementation is now production ready, take use of it.
* harbour/src/rdd/dbfnsx/dbfnsx1.c
! fixed index header verification when index is loaded.
In Harbour DBFNSX and DBFNTX automatically switch to different
internal format when HB_DBFLOCK_HB64 is used. In this format
they store in index files page numbers instead of page offsets
what effectively increase maximal file size to 4TB (from 4GB).
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiosvc.prg
+ use latest hbwin/wapi capabilities to install service thus
allowing to change back the default run mode to interactive
+ install service as auto-start
+ added Windows service related option to cmdline help screen
+ display textual error msg on service related errors
! minor typo in an error msg
* contrib/gtwvg/wvgwing.c
* Replaced: hbwin specific argument casting to local implementation.
Maybe this fixes compilation error with BCC55, though I feel that
could be a result of some local modifications, reported by Jacek.
* contrib/gtwvg/wvggenrc.prg
* contrib/gtwvg/wvglistb.prg
* contrib/gtwvg/wvgphdlr.prg
* contrib/gtwvg/wvgsle.prg
* contrib/gtwvg/wvgwnd.prg
* Changed: SetAppWindow() => WvgSetAppWindow()
To facilitate simultaneous use of GTWVG with HBXBP.
* Fixed: the way an indivisual child was being destroyed.
It was causing flicker and GUI loss when clicking
inside a control. Thanks Zoran for pointer and code example.
* contrib/gtwvg/tests/demowvg.prg
* contrib/gtwvg/tests/wvgtbrowser.prg
* Refined: to accomodate above issues.
* contrib/gtwvg/tests/wvgtbrowser.prg
+ Extended: the way to anchor tree-view control's row-to to
maxrow()-1. This facilitattes that the control is automatically
resized keeping height adjusted to tbrowse's nBottom.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/wvgtoolb.prg
* contrib/gtwvg/wvgtreev.prg
* contrib/gtwvg/wvgwin.c
! Fixed: some focussing issues.
For controls spread over GT console it is important to
set the input focus onto console window instead of child
window to execute defined action.
* contrib/gtwvg/tests/wvgtbrowser.prg
! Minor.
* 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.