* 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)
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.es_PE.po
! synced help text with actual list of supported macros.
* contrib/hbformat/hbfmtcls.prg
+ use harbour.hbx as proper-casing database (instead of
incomplete local list of Harbour functions)
+ completed list of IS*() macros
* contrib/hbziparc/ziparc.prg
! fixed for unicode in another location
% optimization to prev unicode fix
* contrib/hbtip/thtml.prg
! fixed chr() usage for unicode mode
* formatted (hbformat and manual)
% deleted excessive parantheses
* contrib/hbtip/cgi.prg
* contrib/hbtip/httpcli.prg
* contrib/hbtip/client.prg
* contrib/hbtip/tests/base64.prg
! fread()/fwrite() calls fixed for unicode
! fixed some more anomalies, like wrongly checkingg fwrite() for
negative result, calling fread() with 4 parameters, passing
buffer by reference to fwrite(), minor optimizations and formatting.
* contrib/hbtip/url.prg
* formatting
; build tested only
* contrib/hbqt/qtcore/hbqt.h
! deleted hbqt_par_QString() macro. It was not translating
between HVM CP, so it was wrong.
; TOFIX: HBQSCINTILLA is broken now, because it's still used there.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: requested by the group protocol - to handle
parent-child relations internally by hbQT leading not
to hold everything in scoped variables. All objects will
behave accordingly except QAction() which is never get a
parent accoring to Qt docs.
; NOTE: will explain this in detail in reply to the message
of this commit.
* contrib/hbqt/hbmk2_qt.hb
! Changed: hb_itemReturn() => hb_itemReturnRelease() to honor
Harbour variable scoping protocol. We need another method to
keep it alive inside new methodology.
+ contrib/hbqt/qtcore/hbqt_destroyer.cpp
+ contrib/hbqt/qtcore/hbqt_destroyer.h
+ Contains: HBQDestroyer() a generic class whose sole purpose
is to catch "destroyed()" signal of any QObject and then
forward it to new engine to delete harbour object.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: "destroyed()" signal on QObject() derived classes.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Added: #define __HBQT_REVAMP__ then commented out.
Activated: destructor guarded against above define.
* contrib/hbqt/qtcore/hbqtcore.hbm
+ Added: new sources.
; NOTE: this implementation prevents double freeing of Qt objects
while keeping Harbour variable's scope protocol intact. So
if Qt deletes an object, Harbour object is also cleared
automatically. The same applies if Harbour variable goes
out of scope, Qt object is deleted, which is safe, because
Qt allows it.
Now no GPF on exit on any demo, including hbIDE, with
__HBQT_REVAMP__ enabled.