* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_misc.prg
* Moved: all slots related functions from hbqt_pointer to hbqt_hbqslots
.cpp.
- Removed: __pSlots variable and use of harbour class HBQSlots
Partially implemented hbqt_disconnect function
hbqt_connect now also accepts harbour style
(qtObject, signal, codeblock).
It is the preferred way of making a signal/slot connection...
- contrib/hbqt/qtcore/qth/HBQSlots.qth
* contrib/hbqt/qtcore/qth/filelist.hbm
* removed generated harbour HBQSlots class
* INSTALL
+ documented hbmk2 usage as shell, script runner and
.hrb builder/runner
* package/mpkg_win.nsi
* package/winuni/mpkg_win_uni.nsi
+ use hbmk2 as interactive shell instead of hbrun
* utils/hbmk2/hbmk2.prg
+ display Harbour version when starting up the interactive shell
- utils/hbmk2/p_ext.hb
* utils/hbmk2/hbmk2.prg
* embedded shell plugin into hbmk2.prg
! fixed typos in prev causing shell plugin to not load
* killed the word 'dynamic extension'. All extensions are
now dynamic
* killed word 'hbrun' from hbmk2 source, now the shell is
called 'hbshell', 'shell' or 'Harbour shell'
* contrib/hbide/hbide.hbp
* contrib/hbide/idemain.prg
+ enabled rddads by default. Requires rddads dynamic
build, use HB_BUILD_CONTRIB_DYN=yes
* contrib/hbrun/plugins.prg
! fixed shell plugin extension changed in prev
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
+ -env: option is now available inside .hbp/.hbp files
! fixed -env: option to be processed only for the main
project (and not processed again for subprojects)
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
! Fix to prev.
* contrib/hbqt/tests/browqt.prg
* contrib/hbqt/tests/dbfbrowser.prg
* contrib/hbqt/tests/demoqt.prg
* contrib/hbqt/tests/draggable.prg
* contrib/hbqt/tests/inherit.prg
* contrib/hbqt/tests/qtrevamp.prg
* contrib/hbqt/tests/testbrow.prg
- Removed: :disconnect() calls. Now all is working like
the way we are accustomed to.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Enabled: by default to clear all items in the global list.
This has fixed GPF on exit under certain situations.
DemoQt.prg is now fully functional even with multiple
dialogs open at once.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
+ Added: protection against HVM is active or not.
* contrib/hbqt/qtgui/hbqt_init.cpp
* contrib/hbqt/qtgui/qth/QApplication.qth
- Removed: unnecessary code written at early days.
* contrib/hbxbp/xbplistbox.prg
- Commented out: few signals not being used.
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
- contrib/hbnetio/utils/hbnetio/netiomgm.prg
+ contrib/hbnetio/utils/hbnetio/netiomgm.hb
* renamed hbrun/hbmk2 shell plugin code to .hb extension
* contrib/hbnetio/utils/hbnetio/netiosvc.prg
! added missing copyright and SVN ID header
* utils/hbmk2/hbmk2.prg
+ documented '.' parameter on -help screen.
; With this, hbmk2 has all the features of hbrun. Except:
- it doesn't contain the selection of statically linked
contribs:
hbct, hbxpp, hbexpat, hbmemio, hbmzip, hbnetio, hbunix, hbwin
These can now be loaded on-demand, f.e. by speccing
them in envvar HB_EXTENSION, from shell prompt or
#require directive, etc
- it doesn't contain the 'hbnetio management console' shell
plugin.
It now can be loaded by copying /contrib/hbnetio/utils/hbnetio/netiomgm.hb
to <home>/.harbour/.
It means hbmk2 can now be used to:
- convert Harbour source code to various kind of executables/binaries
- run Harbour source code directly
- serve as an interactive Harbour prompt/shell.
; As a next steps, HB_BUILD_CONTRIB_DYN may be enabled by
default, hbrun be deleted and hbmk2 renamed to f.e. simply 'hb'.
; Needs testing on non-Windows envs
* utils/hbmk2/hbmk2.hbp
+ copied some remaining options from hbrun.hbp
* utils/hbmk2/hbmk2.prg
+ added -hbreg[=global] and -hbunreg[=global] to register/unregister
.hb file type on Windows. It uses a trick to load hbwin dynamically,
so this will only work with HB_BUILD_CONTRIB_DYN=yes. It's grey
area of dependency because core cannot depend on contrib, but in
this case it's done dynamically and optionally and it gracefully
fails if the contrib component is missing, but still, it uses it,
if available. Hopefully in the future win registry functions can
be moved to core so it can be cleaned, or this functionality
removed from hbmk2 anytime, since it's not critical.
+ always detecting Harbour dir layout when entering runner mode,
so all subsystems can now use that information
* cleaned loading user configured dynamic extensions in runner mode
! fixed not adding global Harbour include dir in runner mode
+ all strings moved from hbrun code made translatable (except some
CUI elements for now)
% experimentally disabled embedded Harbour headers (build break
possible)
! fixed loading "ext" (dynamic extension loader) shell plugin
+ output shell plugin load RTE to stderr
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
% minor optimization to not try to create ~/.harbour directory
on each __hbrun_ConfigDir() call, only when saving there.
* harbour/include/hbset.h
* harbour/src/vm/set.c
% removed HB_SET_OSCODEPAGE
% replaced HB_SET_DBCODEPAGE with hb_set_dbcp
* generate RTE when wrong parameter type (not string or NIL) is
passed to HB_SET_LANGUAGE, HB_SET_CODEPAGE, HB_SET_OSCODEPAGE,
HB_SET_DBCODEPAGE
* harbour/src/rtl/langapi.c
* generate RTE 1303 when not existing lang module name is passed to
hb_langSelectID() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
* harbour/src/rtl/cdpapi.c
* generate RTE 1302 when not existing codepage name is passed to
hb_cdpFindExt() C function. It affects on all upper level
code using this function. NULL is accepted as valid parameter.
If programmer does not want to generate RTE when wrong codepage
name is passed then he should use hb_cdpFind() instead.
* harbour/src/rtl/cdpapihb.c
* use hb_cdpFindExt() instead if hb_cdpFind() in HB_CDPUNIID()
function.
* harbour/src/rtl/cdpapihb.c
* harbour/contrib/hbexpat/internal.c
! use hb_parc() instead of hb_parcx() to get codepage name
from optional parameter.
* harbour/utils/hbmk2/Makefile
! fixed build process, now hbmk2 need HB_LIBS_MT_RDD
* harbour/src/rtl/tpersist.prg
% optimized decoding code which could be two slow with UTF8EX or
similar CPs.
* contrib/hbamf/amfdec.c
* contrib/hbamf/amfenc.c
* contrib/hbamf/amfstdio.c
! fixed about 30 compiler warnings mostly on missing
paranthesis causing ambiguous expressions, superfluous
variable initializations and one case where probably
an 'else' was missing. Please review the patch to
see if ambiguous cases were correctly fixed.
- contrib/hbqt/qtcore/hbqt_obj.prg
- Deleted: hbQT already has a super class HBQTOBJECTHANDELLER
and concerned protocol is embedded into that.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.h
! Changed: constructor without a parent.
In certain situations under current protocol, this had
a overhead where destructor on this object was not being
called at appropriate time.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.h
! Formatting.
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/qtcore/hbqtcore.hbm
* contrib/hbqt/qtcore/hbqtcore.hbx
- Deleted: hbqt_obj.prg
* contrib/hbqt/qtcore/qth/HBQEvents.qth
- Deleted: un-used variables.
- contrib/hbamf/hbref.c
* contrib/hbamf/amfdec.c
* contrib/hbamf/amfenc.c
* contrib/hbamf/amfstdio.c
* contrib/hbamf/hbamf.hbp
* contrib/hbamf/hbcls.c
* added hbamf_ prefix to public C functions
* locally used public C functions converted to static
* utils/hbmk2/hbmk2.prg
* minor
* contrib/hbplist
+ contrib/hbamf
+ contrib/hbamf/amf.h
+ contrib/hbamf/amfdec.c
+ contrib/hbamf/amfenc.c
+ contrib/hbamf/amfstdio.c
+ contrib/hbamf/hbamf.hbc
+ contrib/hbamf/hbamf.hbp
+ contrib/hbamf/hbamf.hbx
+ contrib/hbamf/hbcls.c
+ contrib/hbamf/hbref.c
+ contrib/hbamf/issues.txt
+ contrib/hbamf/readme.txt
+ contrib/hbamf/tests
+ contrib/hbamf/tests/hbmk.hbm
+ contrib/hbamf/tests/tstendin.prg
+ added AMF3 encoder/decoder
work of Aleksander Czajczynski and Ilina Stoilkovska
(with minor additions of mine: build file
cleanup, some C level formatting/comment cleanup, C++
fixes)
; NOTE: this is only the pure AMF3 encoder/decoder,
and doesn't include websocket layers
; TODO: adding license
* utils/hbmk2/hbmk2.prg
* minor in comments
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* utils/hbmk2/hbmk2.prg
* synced recent changes
+ changed extension filename to <home>/.harbour/hb_extension (hb_ext.ini in MS-DOS)
envvar to HB_EXTENSION
+ plugins are now loaded from <home>/.harbour/*.hb, <home>/.harbour/*.hrb
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
* renamed history file to have a tool agnostic name
INCOMPATIBLE (history will be lost unless you rename
the existing file from .hbrun_history to .hb_history)
* 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"