* INSTALL
* minor clarifications to INSTALL/TROUBLESHOOTING
* config/os2/watcom.mk
* config/wce/mingwarm.mk
* config/wce/msvcarm.mk
* config/wce/poccarm.mk
* config/win/bcc.mk
* config/win/mingw.mk
* config/win/msvc.mk
* config/win/pocc.mk
* config/win/watcom.mk
* config/win/xcc.mk
+ added std header paths to RC commands
* utils/hbmk2/Makefile
+ utils/hbmk2/hbmk2.rc
* utils/hbmk2/hbmk2.hbp
+ added std windows versioninfo and manifest to hbmk2
* utils/hbmk2/hbmk2.prg
+ utils/hbmk2/p_extdyn.hb
+ added almost complete hbrun functionality into hbmk2
to run it, type: 'hbmk2 .'
Missing is extension registration, plugins don't seem
to work yet, and I plan to switch from full screen
prompt to shell-like prompt. Plugin paths, extension
configuration, history on-disk files need further
polishing.
+ hbmk2 will act as a hbrun, if renamed to hbrun
* contrib/hbqt/qtcore/hbqt_misc.prg
+ added two TOFIXes for missing PROTECTED keyword
for two object variables of unknown purpose. Not
even HBQT developers know what it is, but without
it, HBQT breaks.
; Those who need "stable" hbqt (meaning "it builds")
Go to:
http://sourceforge.net/p/hbqt/
* contrib/hbqt/qtcore/hbqt_bind.cpp
! using core constant instead of arbirary buffer size
% use HB_SIZEOFARRAY() instead of calculated explicit
versions of above arbitrary sized buffers
* contrib/hbqt/qtcore/hbqt_misc.prg
* minor formatting
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqtcore.hbx
- __HBQT_ISPOINTER()
+ TODO for HBQT_ISEQUAL()
- __HBQT_PTR() from .hbx
! fixed insane inverse camel casing in hbqt_bindGetHbObjectBYqtObject()
+ TOFIX for MT which is completely broken now.
- deleted '#if 1's. Experiment locally, do not readd them.
- deleted code protected by '#if 0'. Experiment locally, do not readd them.
+ QUESTION for code like: 'if( 1 == 1 )'
- HBQT_PROMOTEWIDGET2() -> HBQT_PROMOTEWIDGET()
.hbx is now in sync with the code
+ QUESTION for HbQtObjectHandler (_three_ different lists for events? two for slots? Is this needed?)
! hEvents -> __hEvents, made PROTECTED. Fix other code if this broke anything.
! __Slots/__Events made PROTECTED. Fix other code if this broke anything.
! _destroy() -> __destroy(). Fix other code if this broke anything.
; I'd like to ask HBQT developers to enable in their editor
the deletion of line-ending spaces and to enable
HB_REBUILD_EXTERN=yes in their local configuration to
keep .hbx files up to date (asking these for the umpteenth times!).
* contrib/hbide/hbqreportsmanager.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/ideskeletons.prg
* contrib/hbide/ideuisrcmanager.prg
- Removed: all calls to :hasAValidPointer().
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: more debug code to view what happens when
appln exits.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.h
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/qth/HBQEvents.qth
! Synchronized: per QObject standards.
* contrib/hbqt/qtgui/qth/QStringListModel.qth
! Fixed: wrong if/else if constructs.
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/qtgui/THbQtUI.prg
- Removed: the use of :pPtr variable plus method :hasValidPointer().
* contrib/hbqt/tests/demoqt.prg
! Reworked: to adapt to revamped hbQT where variable is not needed
to hold the built widget if parent is provided or is :connect()ed.
* contrib/hbqt/gtqtc/gtqtc.cpp
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_init.cpp
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/qth/HBQEvents.qth
* contrib/hbqt/qtcore/qth/HBQSlots.qth
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.qth
* contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
* contrib/hbqt/qtgui/qth/HBQAbstractItemModel.qth
* contrib/hbqt/qtgui/qth/HBQGraphicsItem.qth
* contrib/hbqt/qtgui/qth/HBQGraphicsScene.qth
* contrib/hbqt/qtgui/qth/HBQPlainTextEdit.qth
* contrib/hbqt/qtgui/qth/HBQTableView.qth
* contrib/hbqt/qtgui/qth/QApplication.qth
* contrib/hbqt/qtgui/qth/QClipboard.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QDropEvent.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QGraphicsSceneDragDropEvent.qth
* contrib/hbqt/qtnetwork/hbqt_init.cpp
* contrib/hbqt/tests/draggable.prg
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
+ Implemented: Revamped HBQT.
The complete code base has been cleaned as per new API
and there is no leftover is kept inside the sources.
All demos and hbIDE seems TO be working fine with few
exceptions here and there, but usually all seems fine.
The only issue left, so far I can assess is that no object
is subject to destrution if a connect is issued onto that.
And I have no idea how TO handle this situation. It is the
programmers responsibility to disconnect whenever an object
is supposed to go out of scope.
TODO: still debug tracelog entries ( under HB_TR_DEBUG ) are
retained in hbqt_bind.c which are schduled TO be
removed once code base stabilizes enough.
* contrib/hbqt/qtgui/qth/filelist.hbm
* added remark to QDeclarativeParserStatus since all other
QDeclarative* classes are remmed and it break build on
Qt 4.5
* INSTALL
+ extended troubleshooting instructions for code that
involves non-ASCII chars
* utils/hbmk2/hbmk2.prg
+ use UTF8 HVM in runner mode
+ enabled translations in runner mode
! in runner mode fixed setting up core header dir when no
dyanmic libs are used
! in runner mode, dynamic lib location should now be detected
also on *nix systems (untested)
* some other minor cleanups and tweaks to runner mode
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
+ Implemented: [*D=1*] token of methods in .qth for __HBQT_REVAMP__.
This changes the ownership of an object from Harbour to Qt.
* contrib/hbhttpd/log.prg
* contrib/hbtip/log.prg
* contrib/hbziparc/ziparc.prg
* src/rtl/hbdoc.prg
* src/rtl/hbi18n2.prg
* src/rtl/memvarhb.prg
* src/rtl/tlabel.prg
* src/rtl/treport.prg
% use HB_FNAMEEXTSETDEF() instead of manual logic.
it also fixes RTEs in hbziparc when passed non-string
filename to nearly any of its APIs.
* utils/hbi18n/hbi18n.hbp
* missed -shared enabler in .hbp
* utils/hbmk2/Makefile
* utils/hbmk2/hbmk2.hbp
+ enabled -shared build for hbmk2
* utils/hbmk2/hbmk2.prg
% consolidated .hbc finder logic
% moved 'hbmk' structure initializations to subfunctions
+ added Harbour installation autodetection for hbmk2's
runner mode. It's copy-paste code yet.
+ added automatic include path configuration in hbmk2's
runner mode. It means that now #require-d extensions
will have their include paths setup, so their header
will be found, so they can be used now.
; I more and more see it a reality to integrate hbrun
functionality into hbmk2. #require logic needs
much of hbmk2's facilities, and hbmk2 already has
basic runner capabilities. Contrib libs (and plugins)
will all have to be loaded dynamically in such case,
but since it works well, it should not be a problem.
Finally hbmk2 can be the utility that runs scripts
dynamically and also able to build an exe from them,
using the exact same source code, without any external
configuration, if the source code provides "#require"
clues. All it needs is both dynamic and static versions
of extensions (=contribs or addons).
+ contrib/hbqt/tests/dbfbrowser.prg
+ contrib/hbqt/tests/dbfbrowserclass.prg
+ Added: Table browser demo code by Bacco, thank you.
This code works absolutely flawless both with current and
__HBQT_REVAMP__ protocols.
* harbour/contrib/hbct/misc1.c
% optimized XTOC()
* harbour/doc/xhb-diff.txt
* added some additional description to the section
OOP AND CLASS OBJECT/CLASS MESSAGES
* harbour/doc/Makefile
* added xhb-diff.txt
* harbour/include/hbapi.h
* harbour/src/vm/arrays.c
+ added new C function hb_arrayFromId()
* harbour/contrib/hbqt/qtcore/hbqt_bind.cpp
* use hb_arrayFromId() instead of local hb_arrayCreateClone()
with hb_arrayPushBase() inside
* do not use hbvmint.h
! fixed few bugs in this code. I haven't analyzed this code deeply
and how it's used so I cannot say it's correct. I only fixed few
completly wrong places which caused HVM stack corruption, internal
GC item list corruption or were completly dummy calls.
* include/harbour.hbx
* src/vm/dynsym.c
+ added HB_ISFUNCTION( <cName> ) -> <lExists>
uses Przemek's code from hbfship/ISFUNCTION() with minor
adaptation for VM.
Use it instead of __DYNSISFUN() and TYPE( <cName> ) == "UI".
* include/harbour.hbx
* formatted HB_IS*() functions used for type checking
* contrib/hbfship/isfunc.c
% converted ISFUNCTION() to wrapper for HB_ISFUNCTION()
* contrib/hbide/ideplugins.prg
* contrib/hbrun/hbrun.prg
* contrib/hbxpp/xppop.prg
* contrib/xhb/xhbcomp.prg
* contrib/xhb/xhberr.prg
* examples/hbdoc/hbdoc.prg
% Using HB_ISFUNCTION() instead of __DYNSISFUN() and TYPE( <cName> ) == "UI"
* bin/hbcommit.hb
+ To configure your own name and e-mail address used
in ChangeLog entries, create a file called ".hbcommit"
in the root of Harbour SVN sandbox, and fill it with this:
'Firstname Lastname (my domain.net)'
(in single line. no EOLs and padding is necessary)
* contrib/hbrun/hbrun.prg
+ use .hb as default extension for Harbour sources.
(was .prg)
+ bin/hbcommit.hb
+ added commit preparer script. It will pull all changed
files, format it according to Harbour ChangeLog standard,
add standard commit header and prepend the entry before
latest on into ChangeLog file.
Usage:
<harbour SVN root>$ hbrun hbcommit.hb
Please try it and use it when committing to Harbour SVN
* contrib/hbplist
* disabled hbqt and its dependencies, until the nightly
build breaker problem is resolved.
* contrib/hbblat/hbblat.hbp
+ added experimental support for installing 3rd party .dll
to bin dir. Enabled with new build option, not yet documented,
see it in the patch.
* contrib/hbhpdf/tests/harupdf.prg
* formatted
* contrib/hbqt/hbmk2_qt.hb
! Fixed: some formatting in generated source.
* contrib/hbqt/qtcore/hbqt.h
+ Added: HB_EXPORT PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags );
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: static PHB_DYNS s_dynsym_SETSLOTS = NULL;
Used to initiate __Slots hash to contain code block for slots.
+ Added: PHB_ITEM hbqt_bindSetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags )
Used for class inheritance with :new() method.
void hbqt_bindDelSlots( PHB_ITEM pSenderObject );
Used to delete all slots for an object.
+ Added: HB_FUNC( HBQT_PROMOTEWIDGET2 )
Provided by Francesco.
+ Added: HB_FUNC( HBQT_ITEMSONGLOBALLIST )
Provided by Francesco.
- Transferred: some HB_EXPORT prototypes in hbqt.h from hbqt_bind.cpp.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
+ Transferred: code blocks exploiting slots to PRG level from C++ level.
* contrib/hbqt/qtcore/hbqt_init.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
* Formatting.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Added: VAR __Slots
+ Added: METHOD setSlots()
* contrib/hbqt/qtcore/qth/QObject.qth
+ Uncommented: metaObject() method.
* contrib/hbqt/tests/inherit.prg
+ Added: demo code to exploit inheritance of classes.
This implementation is aimed at transferring signal/slot codeblocks from C++
level to PRG level. This to happen, I am driffting from Przemek's orginal idea
of a separate class, encapsulating the same in exsting superclass HbqtObjectHandeller.
So far has been successful but the concept has introduced a GPF on exit.
* utils/hbmk2/hbmk2.prg
+ added support for #require directive in minimal script
runner. The plan is to model .hbc processing and header
directory setup for #require-ed extensions and backport
it to hbrun.
* src/rtl/cdpdet.prg
! *nix specific CP autodetection code missed to call
a local conversion subfunction.
* src/rtl/gtfunc.c
* HB_SETDISPCP(), HB_SETTERMCP(), HB_SETKEYCP() will
now not RTE when passed NIL as 1st paramater. This
makes it smoother to fall-back on purposedly invalid
values, f.e. return values of new HB_CDPOS() and
HB_CDPTERM() in case of failure.
* contrib/hblzf/tests/test2.prg
+ replaced in-source hbmk2 cmdline instructions with
#require directive
* contrib/gtwvg/tests/wvgactivex.prg
! fixed reference to non-existing batch file
* doc/en/file.txt
* doc/gmake.txt
* doc/windll.txt
* examples/gtwvw/docs/gtwvw.txt
* examples/gtwvw/docs/whatsnew.txt
* examples/gtwvw/tests/drawimg.prg
* examples/guestbk/guestbk.txt
* examples/hscript/readme.txt
- deleted references to non-existing/obsolete batch files
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/cdpdet.prg
+ src/rtl/cdpdetc.c
+ moved terminal and OS detection logic from hbmk2 to RTL
with changes necessary to fit into core. New functions are:
hb_cdpOS() -> <cCP | NIL>
hb_cdpTerm() -> <cCP | NIL>
it means these functions can be used in any apps now.
Example:
hb_SetTermCP( hb_cdpTerm() )
Set( _SET_OSCODEPAGE, hb_cdpOS() )
* contrib/hbrun/hbrun.prg
* utils/hbmk2/Makefile
- utils/hbmk2/hbmk2c.c
* utils/hbmk2/hbmk2.hbp
* utils/hbmk2/hbmk2.prg
* using hb_cdpOS() and hb_cdpTerm() to automatically
configure OS and terminal CP
* contrib/hbrun/hbrun.prg
+ enabled UTF8EX as default CP for hbrun script. This makes
scripts portable and on par with other script languages.
It also syncs this aspect with hbmk2's script runner
facility. INCOMPATIBLE. Make sure to create scripts
that are unicode compatible and use UTF8 CP for accents.
If you need old behavior, add 'hb_cdpSelect( "EN" )' to
the top of your script.
; contains copy/paste code from hbmk2 for OS and terminal
CP detection. These should eventually make it into the
RTL
* INSTALL
! minor
* contrib/make.hb
% use $d in hb_strformat() instead of calling hb_ntos()
! switched to UTF8EX to be in sync with hbmk2
* utils/hbmk2/hbmk2.prg
! fixed nasty regression caused by old problem where --hbinfo
output might have contained other information. Now hbmk2
makes sure to keep -info disabled and -quiet enabled when
in --hbinfo mode
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_init.cpp
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.qth
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
* contrib/hbqt/qtgui/qth/QApplication.qth
* contrib/hbqt/qtgui/qth/QClipboard.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QDropEvent.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QGraphicsSceneDragDropEvent.qth
! Changed:
PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, PHB_SYMB pClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags )
=>
PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags )
This facilitates the easy manipulation of objects and also a central
point to scale its usage. It is much easier to recognize the non-QObject
derived classes, which are in plenty, and hence take corrective actions
in case of some exceptions are buried inside descriptions instead of headers.
* contrib/hbgd/gdbar.prg
* contrib/hbgd/gdbarcod.prg
* contrib/hbgd/gdchart.prg
* contrib/hbgd/gdimage.prg
* formatting
% using HB_DEFAULT() instead of DEFAULT TO and local DEFAULT() macro
(it means that in these places, type checking is more thourough
than before). I left DEFAULT TO in places where the default expression
is complex.
! fixed TCODE():New() to not use Alert(), use ::DrawError() instead
% HGetValue(): use HB_HGETDEF() instead of equivalent local logic
% use HB_ISHASH() instead of ValType()
% use hb_ntos() instead of LTrim( Str() )
; build tested only, pls review
* contrib/hbqt/tests/draggable.prg
+ Added: a draggable Harbour Logo without titlebar.
* contrib/hbqt/tests/testres.prg
! Rewritten: per current hbQT implementation.
; Both are supplied by Bacco, thankyou.
* contrib/hbrun/hbrun.hbp
+ build hbrun in -shared mode if HB_BUILD_CONTRIB_DYN is
enabled. This means that new dynamic loading feature
will work out of the box if Habrour is build using
HB_BUILD_CONTRIB_DYN=yes.