* 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.
* 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.