* include/Makefile
* include/common.ch
+ include/hbhash.ch
+ moved hash-related constants from common.ch to new hbhash.ch
; common.ch include hbhash.ch for compatibility, protected by
HB_LEGACY_LEVEL4 so it will stop being included automatically.
If you use HB_HAUTOADD_* or HB_HMERGE_* constants, make sure
to #include "hbhash.ch".
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
+ include hbhash.ch
* src/rdd/hbsix/sxini.prg
* use hbhash.ch instead of common.ch
* contrib/hbqt/tests/qtrevamp.prg
- Removed: note on returned QAction if it is not of same type
as stated in previous commit. New hbQT is always returning
NIL if a valid Qt pointer could not been obtained. This holds
true for all type of objects. Actually I did not test it
along these lines. So with __HBQT_REVAMP__ there is no need
of :isValidPointer() any more, just test a returned object
against NIL.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* Struggled: to set pointer arithmatic to be used properly.
Also at times Qt returns different type instead of one
defined in documentation, but referred in description part only.
For example, a popup menu returns null instead of QAction if
no item is selected or user pressed escape. This is not
possible to manage such instances in present engine. For
this reason only :isValidPointer() method was introduced.
In REVAMPED hbQT this is different. So to test it, the only
way to ascertain is if the Harbour class name is of same type.
* contrib/hbqt/tests/qtrevamp.prg
+ Added: popup menu option to demonstrate what happens
at the background, if tracelog is activated.
; NOTE: I am not from C or C++ background at all, so some things
may not be as elegant as those should be when viewed from
source point of view. Also trace entries are left in the
code, though under DEBUG mode, which will be cleaned once
code settles down.
* include/hbapi.h
- deleted unused old HB_BASEARRAY_PTR type. INCOMPATIBLE.
Same as PHB_BASEARRAY, use this instead.
* include/hbtypes.h
* src/vm/maindllp/dllext.c
+ added hb_macroTextValue() to hbmaindllp.
; TODO: rename all HB_ITEM_PTR to PHB_ITEM and delete former.
pls shout if there is any difference in usage between
these two.
* contrib/make.hb
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.prg
+ use JSON format instead of hand-rolled microformat for
--hbinfo output (used in Harbour SVN for communication
between contrib make.hb script and hbmk2)
INCOMPATIBLE. Update your system in the unlikely event
you use --hbinfo output.
+ contrib/hbrun/extdyn.prg
+ contrib/hbrun/extdynpl.hb
+ contrib/hbrun/extstat.prg
- contrib/hbrun/pullext.prg
- contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* internal cleanup, renames and restructuring
+ findinpath function to accept arrays
+ loaded dynamic extensions are now searched in curdir,
hbrun dir and PATH on non-*nix and LD_LIBRARY_PATH on *nix
systems
! fixed findinpath always returning success
* renamed some stuff recently introduced:
HBRUN_DYN -> HBRUN_EXT
hbrun.dyn -> hbrun.ext
dyn plugin -> ext plugin (f.e. ext.list, ext.load, ext.unload)
; all non-core modules are called "extensions", the ones
linked at build time are called "static extensions", ones loaded
dynamically are called "dynamic extensions". Console command
plugins are called "plugins". It's still not final.
* utils/hbmk2/hbmk2.prg
! misplaced comment
* src/pp/ppcore.c
+ accept and ignore '#require' PP directive
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
+ use '#require "name"' to request modules.
(This replaces former '//#require', '//#pragma module' and
'*#pragma module' directives.)
* utils/hbmk2/hbmk2.prg
+ add .hbc automatically for '#require' directives (experimental)
; TODO: to work also in non-incremental mode and to work
reliably in -inc mode. To not impact performance, the
compiler could do a callback when #require is found,
hbmk2 could find the .hbc and extend compiler options
dynamically.
! fixed finding .hbc files that were detected automatically
* contrib/hbrun/hbrun.1
+ added my name as author
* contrib/hbrun/hbrun.prg
* contrib/hbrun/pullext.prg
+ changed to use '//#require' syntax.
! filter empty dynamic modules
+ display error when trying to load dynamic modules in static
hbrun build
* include/hbver.ch
* src/rtl/version.c
+ added hb_Version( HB_VERSION_SHARED ) to query whether
the app was built in shared mode or static.
* contrib/hbrun/hbrun.prg
+ added experimental script syntax to dynamically load modules:
--- testcurl.hb
*#pragma module "hbcurl"
? curl_version()
---
; QUESTION: Is it possible to allow unknown #pragmas so above
comment-hack could be avoided? ATM harbour compilers
issues and error whenever an unknown pragma is found.
+ contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* contrib/hbrun/pullext.prg
+ added experimental support for dynamic loading of
modules into hbrun. Modules can be speficied using
HBRUN_DYN envvar using space delimited list, or
using text file named 'hbrun.dyn' in the same dir
as hbrun, each line containing module name, lines
beginning with '#' are considered comments. Modules
can be loaded/unloaded from the console using
'dyn.load <list>', 'dyn.unload <list>' commands
and listed using 'dyn.list'. F.e.: 'dyn.load hbgd'
Names, UI and everything else may still change.
Important: hbrun must be built in -shared mode
for this to work, notice that by default it's built
in -static mode ATM. Loadable modules can be created
using HB_BUILD_CONTRIB_DYN=yes Harbour build-time
option. Headers belonging to dynamic modules are
not available in embedded for, so they need to
be present on disk in current dir.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: Harbour way of looking at hbQT. QAction has been controlled,
which has facilitated to achieve the desired behavior.
+ contrib/hbqt/tests/qtrevamp.prg
+ Added: demo source to review if __HBQT_REVAMP__ protocol is
upto Harbour expectations. I have added few notes here and there
so that user is aware of some sublities.
; NOTE: please add to qtrevamp.prg any functionality to test all
parts of Qt which may not be confirming to Harbour vision,
and report back on the list.
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
% use '$d' in hb_strformat() instead of manually converting to string
using hb_ntos() or str()
! fixed header misalignment in generated .hbx files after today's mods
* utils/hbmk2/hbmk2.prg
* default -plugin= extension is .hb (was .prg)
+ hbmk_FindInPath() API now accepts array as second parameter
+ .hbp files are now looked for in addons/contrib paths. They
will be found the same way as .hbc files, f.e. hello.hbp
in addons/hello/hello.hbp or contrib/hello/hello.hbp
(dir and .hbp name must be the same for this to happen).
You can extend the list of root dirs using HB_INSTALL_ADDONS
(same as for .hbc files). '-info' option will output the
the path where an .hbp file was found by hbmk2. This works
both for .hbp files passed to cmdline directly and embedded
.hbp subprojects.
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
* updated with new original strings
* utils/hbmk2/hbmk2.prg
+ added all public plugin API function with "hbmk_" prefix.
old "hbmk2_" prefixed ones still exist for compatibility,
but it's recommended to change them. "hbmk2" is only used
now as the tool's name, but internally it's uniformly
referred to as "hbmk".
* utils/hbmk2/examples/plug_tpl.hb
+ most "hbmk2" converted to "hbmk"
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
+ "hbmk2" name avoided inside the source and generated comments
+ "hbmk2" name converted to variable so it can be easily changed
! fixed few typos in outputs/help
* utils/hbmk2/hbmk2.prg
+ added extra protection to not delete the VCS revision
information when it already exist but current VCS revision
extraction command didn't return any results. This often
happens with new SVN 1.7.5, which fails with internal sqlite
error nearly always unless 'svn cleanup' is issued.
* src/debug/debugger.prg
* src/rdd/dbstrux.prg
* src/rdd/dbtotal.prg
* src/rdd/dbupdat.prg
* src/rdd/rddord.prg
* src/rdd/usrrdd/rdds/logrdd.prg
* src/rtl/adir.prg
* src/rtl/alert.prg
* src/rtl/checkbox.prg
* src/rtl/dbedit.prg
* src/rtl/getsys.prg
* src/rtl/getsys53.prg
* src/rtl/hbi18n2.prg
* src/rtl/hbini.prg
* src/rtl/listbox.prg
* src/rtl/menuto.prg
* src/rtl/objfunc.prg
* src/rtl/pushbtn.prg
* src/rtl/radiobtn.prg
* src/rtl/radiogrp.prg
* src/rtl/scrollbr.prg
* src/rtl/tbrowse.prg
* src/rtl/tget.prg
* src/rtl/tgetlist.prg
* src/rtl/tlabel.prg
* src/rtl/tmenuitm.prg
* src/rtl/tmenusys.prg
* src/rtl/tpopup.prg
* src/rtl/treport.prg
* src/rtl/ttopbar.prg
* converted 'DEFAULT ... TO ...' to
a) __defaultNIL() where bug compatibility is desired
b) IF ... == NIL ... where default value had execution cost
c) hb_default() where above side-effect were not in play
% deleted '#include "common.ch"'
* minor formatting
; "common.ch" is now eliminated from all core core and all
contribs except gtwvg/hbide/hbxbp/xhb/examples where it's
used excessively and very few more places. Please
don't readd it, but use HB_DEFAULT() and HB_IS*() functions
instead. Only use "common.ch" if you need HB_HAUTOADD_* or
HB_HMERGE_* constants.
* src/rtl/radiogrp.prg
% deleted '#include "common.ch"'
* contrib/hbtip/sessid.prg
! playing it safe: using simple IF/ENDIF instead of HB_DEFAULT()
on a multi-type variable
; NOTE: One more implication of HB_DEFAULT vs. DEFAULT ... TO ...
is that the default expression is always evaluated with
the former.
* contrib/hbqt/hbmk2_qt.hb
! Tweaked: ( QString * ) casted argument to be compilable.
* contrib/hbqt/qtgui/qth/QFileDialog.qth
+ Enabled: getOpenFileName() etc. methods which we commented out because
of lack of knowledge how those should been handelled.
* contrib/hbqt/hbmk2_qt.hb
! Guarded: qth_is_QObject() function under __HBQT_REVAMP__.
This facilitates to change how we would like to use this
construct in the future. Also there is a lot which may be
added to this protocol, apart from only detecting if a class
is QObject() derived, and hence is subject to change.
We will do what is proposed after all is settled on new
protocol.
- Removed: QIcon() hack which was exploiting hbqt_par_Qstring()
usage. Also it was not per Qt documantation. Now anywhere
an icon is needed, it has to be constructed explicitily
with a call to QIcon( cFileName ). Earlier QIcon() was passed
as only a <cFileName>
INCOMPATIBLE: 3rd party libs have to modify their code.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.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
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* contrib/hbqt/qtgui/qth/QPushButton.qth
- Removed: <CLASS> PaintEvent = </CLASS> token.
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* 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_pointer.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot/events management.
; NOTE: hbIDE is almost running under __HBQT_REVAMP__ methodoly
with signal/slots/events catched anfired properly.
This implementation is subject to a lot of improvements
but at of current shows up a good promise to achieve
the end-results soon.
* utils/hbmk2/hbmk2.prg
+ use HB_DEFAULT()
% deleted common.ch
* contrib/hbrun/hbrun.prg
! fixed typo causing scripts being found in PATH to fail
to open.
* include/harbour.hbx
* src/rtl/Makefile
+ src/rtl/hbdef.c
+ added HB_DEFAULT( @<xVariable>, <xDefaultValue> )
it can replace DEFAULT ... TO ... command. In addition
it will set the value to the default one even when the
variable has any other type, not only NIL.
* src/3rd/zlib/Makefile
* src/3rd/zlib/*
* updated to 1.2.7 from 1.2.6. Using 3rdpatch.hb and .dif reapplied manually.
* src/rtl/hbzlibgz.c
+ HB_GZOPEN() updated to use new in zlib 1.2.7 wide gzopen()
on Windows. It means now it supports unicode filenames.
* contrib/hbmzip/3rd/minizip/zip.c
* updated manually from zlib 1.2.7 (two warnings fixed)