* harbour/config/dos/watcom.cf
* harbour/config/win/watcom.cf
* harbour/config/os2/watcom.cf
* disabled DOS/4GW Banner
* harbour/utils/hbmk2/hbmk2.prg
* use DOS/4G for DOS OpenWatcom binaries instead of causeway which seems
to have some troubles with executing child processes. At least in
FreeDOS inside DOSEMU.
Warning DOS/4G reduce maximal size of command line. Ideal seems to
be PMDEV but it's not free for commercial use though we can think
about using it to create Harbour binaries.
* harbour/contrib/hbxbp/xbpwindow.prg
+ Implemented :setPointer() of type XBPWINDOW_POINTERTYPE_ICON.
Presently it accepts an image disk file whereas Xbase++ rely on
resource icon. In this scenario Harbour-Qt is more powerful because
you can pass any image format for a cursor shape.
* harbour/contrib/hbxbp/xbpstatic.prg
+ Implemented XbpStatic():type == XBPSTATIC_TYPE_BITMAP
:options == XBPSTATIC_BITMAP_SCALED
Image now scales to bounding rectangle of the static object.
* harbour/contrib/hbxbp/tests/demoxbp.prg
! Updated to reflect above implementations.
Move mouse over the different parts. Also notice image in one of the
static in group-box.
* harbour/source/rtl/gttrm/gttrm.c
! do not catch SIGCHLD
* harbour/include/hbapifs.h
* harbour/source/rtl/hbproces.c
+ added C function: hb_fsProcessRun()
* harbour/source/rtl/hbprocfn.c
+ added .prg function:
hb_processRun( <cCommand>, [ <cStdIn> ], [ @<cStdOut> ], ;
[ @<cStdErr> ], [ <lDetach> ] ) -> <nResult>
This function is implemented for all builds also in DOS ones where
temporary files are used to simulate pipes.
TODO: in OS2 builds it should be possible to implement this function
without temporary files just like in *nixes and MS-Windows builds.
I would like to ask OS2 users to make it.
* bin/postinst.bat
+ Added .hbc search paths: /contrib, /contrib/rddsql, /addins, /examples.
NOTE: addins will be the directory where 3rd party addins
can be added.
* utils/hbmk2/hbmk2.prg
* Refinements to path handling of -icon= parameter.
- utils/hbrun/hbrun.rc
* utils/hbrun/hbrun.hbp
* Switched to use -icon option instead of .rc file.
* contrib/hbtip/client.prg
! Minor cleanups and fixes to proxy handling.
% Deleted second parameter from HB_BASE64() calls.
* contrib/hbtip/smtpcln.prg
% Deleted second parameter from HB_BASE64() calls.
+ harbour/contrib/hbqt/doc/html
+ Added this folder to hold auto generated pure .htm documentation files.
These files can be used by any decent tool to form a useful compiled help
manual. You can visit
http://www.vouch.info/harbour-qt/
to have first impressions. This on-line help source
seemlessly links with Qt's online help system, so it can be a very useful
reference source for developers.
* harbour/contrib/hbqt/generator/hbqtgen.prg
+ Implemented <DOC> </DOC> section of a .qth header. This section
is placed as is in TQ*.txt and html/Q*.htm at appropriate place.
+ Re-implemented :new() method of TQ*.prg classes. If <CLASS></CLASS> section
contains "Type = PlainObject" entry, it generates this method as
METHOD New( ... )
LOCAL aP, nParams
aP := hb_aParams()
nParams := len( aP )
DO CASE
CASE nParams == 0
::pPtr := Q*()
CASE nParams == 1
::pPtr := Q*( aP[ 1 ] )
CASE nParams == 2
::pPtr := Q*( aP[ 1 ], aP[ 2 ] )
...
ENDCASE
RETURN Self
This construct was necessary for those classes which are not inherited from
QWidget and which do not have parent and their contructors are either complex
or cannot be supplied later after creation. Moreover, it simplifies .prg
code considerably.
* harbour/contrib/hbqt/qth/QFont.qth
* harbour/contrib/hbqt/hbqt_qfont.cpp
* harbour/contrib/hbqt/TQFont.prg
+ Implemented :new( ... ) construct. First in its series.
Now you can construct QFont():new() with varies number of parameters.
More details can be found in doc/TQFont.txt and doc/html/QFont.html.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added support for -icon= option to specifiy application icon.
If used multiple times, all icons will be added to the target
executable and the first one will be used as app icon.
Currently supported platforms: win, wce, darwin, os2.
(OS/2 is just guesswork)
+ Added resource support for OS/2 + watcom targets.
(untested)
* Minor correction in one warning messages.
* config/os2/watcom.cf
% Suppressing 'echo' commands from build log.
* utils/hbmk2/hbmk2.pt_BR.po
+ Portuguese translation. Work of Vailton Renato. Thank you very much.
* contrib/hbxbp/tests/demoxbp.prg
! Fixed to use lowercase extensions. Please remember that
uppercase extensions are only used in DOS.
* contrib/hbxbp/xbpbitmap.prg
! Fixed warning.
* utils/hbmk2/hbmk2.prg
* Minor.
* INSTALL
* Minor corrections.
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/hbxbp/xbp.ch
+ harbour/contrib/hbxbp/xbpbitmap.prg
* harbour/contrib/hbxbp/xbpdialog.prg
* harbour/contrib/hbxbp/xbpfiledialog.prg
* harbour/contrib/hbxbp/xbpfontdialog.prg
* harbour/contrib/hbxbp/xbphtmlviewer.prg
* harbour/contrib/hbxbp/xbpstatic.prg
* harbour/contrib/hbxbp/xbpstyle.prg
* harbour/contrib/hbxbp/xbpwindow.prg
+ Implemented XbpBitmap() class.
+ More advances in XbpFontDialog() class.
+ Implemented XbpStatic():type == XBPSTATIC_TYPE_ICON.
* harbour/contrib/hbxbp/tests/abs1.png
* harbour/contrib/hbxbp/tests/abs2.png
* harbour/contrib/hbxbp/tests/abs3.png
* harbour/contrib/hbxbp/tests/abs4.png
* harbour/contrib/hbxbp/tests/vr.png
+ Few more .png(s) for futuristic demo concepts.
* harbour/contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated the use of XbpBitmap() class as a image conversion
menu option. Click on <Miscellaneous> main menu prompt then click on
<Convert Images>. Harbour-QT provides more formats to convert from/to
whereas Xbase++ is limiting. However Harbour cannot write to .GIF
format, may be it has something to do with GIF licensing.
+ Demonstrated XBPSTATIC_TYPE_ICON ::type of XbpStatic() class.
The only difference is load from file/resource.
* contrib/hbbtree/hb_btree.c
* fixed one warning: cast from pointer to integer of different size
; TOFIX:
hb_btree.c:739: warning: cast from pointer to integer of different size
* contrib/hbbtree/tbtree.prg
* clear class var when underlying hb_btree is closed
* utils/hbmk2/hbmk2.prg
+ Added app bundle generation for OS X targets in -gui mode.
It's experimental yet. (f.e. clean will not clean it f.e.)
Thanks to Teo Fonrouge for the hints.
* Using escapting function (instead of manual escaping) when
launching Windows apps on NT.
; TOFIX: hb_FCopy()
* source/rtl/fscopy.c
+ Now it will copy flags on *nix systems (just like __COPYFILE()).
* source/rtl/copyfile.c
* Minor formatting.
; TODO: Add generic app icon support. Possible?
* utils/hbmk2/hbmk2.prg
* commandResult() merged into hbmk_run().
This also means that 'getFirstFunc()' will now use
hb_process*() API on non-DOS platforms to retrieve
stdout output of 'nm' command executed.
; Przemek, could you please review this logic? It may be
wrong according to one of your recent mails. In this
case, maybe the temp file method should be used on all
platforms.
* contrib/xhb/freadlin.c
* examples/hbdoc/hbdfrdln.c
* examples/hbmake/hbmakec.c
* BYTE -> char
% Some casts optimized out.
; NOTE: Please review me, this is quite popular function and
I don't want to mess it up.
* utils/hbmk2/hbmk2.prg
* Cleanups to command substitution support. Added examples.
! Fixed RTE due to typo. This code branch was activated
today, due to the MT optimization modification.
* make_gnu.bat
- Deleted pocc64 autodetection. With newer versions this wouldn't
work just mask normal pocc autodetection.
* contrib/xhb/hboutdbg.c
% Cast.
* utils/hbmk2/hbmk2.prg
+ Added support for `<command-creating-stdout>` type of macro
in all options where regular macros are accepted.
It's now possible to use this in an .hbp file:
-cflag={unix&gcc}"`wx-config --cflags`"
* harbour/contrib/hbxbp/Makefile
* harbour/contrib/hbxbp/xbp.ch
* harbour/contrib/hbxbp/xbpfiledialog.prg
* harbour/contrib/hbxbp/xbpfontdialog.prg
+ harbour/contrib/hbxbp/xbphtmlviewer.prg
+ Implemented XbpFileDialog() class - almost Xbase++ compatible.
+ Implemented XbpHTMLViewer() class with all its features.
* harbour/contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated XbpFileDialog() usage - click on toolbar buttons.
+ Demonstrated XbpHTMLViewer() class.
Hi, can someone play with all callbacks of XbpHTMLViewer() and
can look into details of XbpFileDialog()?
* INSTALL
- Deleted QT version number from example settings to
ease on maintenance without making the doc look outdated.
* source/rtl/hbmd5.c
! Minor typo in comment.
* config/win/global.cf
* config/wce/global.cf
% Removed unnecessary @ chars.
* contrib/hbmisc/Makefile
+ contrib/hbmisc/fcomma.prg
- source/rdd/usrrdd/rdds/fcomma.prg
* source/rdd/usrrdd/rdds/Makefile
* fcomma.prg moved to hbmisc, since it depends on
hbmisc features.
* examples/hbextern/hbextern.prg
- Removed special treatment of fcomma.prg.
+ harbour/include/hbtask.h
+ harbour/source/vm/task.c
* harbour/include/hbthread.h
* harbour/include/hbatomic.h
* harbour/source/vm/thread.c
* harbour/source/vm/hvm.c
* harbour/source/vm/fm.c
* harbour/source/rtl/idle.c
* harbour/source/rtl/filesys.c
+ implemented OS independent task switching system - it gives PTHREAD
compatible basic API so it can be used in HVM as alternative MT support
which does not use any OS threads. As long as Harbour does not call
any blocking OS function then it's possible to create and execute
simultaneously many threads though only one CPU is used and switched
between HVM threads. It gives similar scalability to xbase++ threads
and also similar behavior in item protection at .prg level.
Now it's possible to use HVM threads in any OS.
Of course it does not mean that Harbour adds in some magic way
thread support to OS-es which does not support threads like DOS.
It only means that HVM supports threads for .prg code just like
in native MT environment as long as some C code does not block
task switching or process execution will not be frozen by sth, i.e.
executing other process (__run()) in single process OS like DOS.
In some cases it can be interesting alternative even in OS which
have native thread support.
All tests/mttest*.prg programs and speedtst --thread=<n> --scale
are executed correctly with new task switching just like with
OS native MT support.
Compilation with task switching in hbvmmt library can be forced
by HB_TASK_THREAD macro which also disable native OS threads
support.
For task context switching two alternative methods are used:
1) getcontext()/makecontext()/swapcontext() (SUSv2, POSIX.1-2001)
which is preferable because does not need any additional
hacks but not all OS-es supports these functions.
It's enabled by default in Linux builds.
2) setjmp()/longjmp() (POSIX, ISO 9899 (C99)) otherwise.
These functions are supported by most of C compilers
but there is no function to set new stack in saved context
so it's necessary to introduce for each architecure/C compiler
peace of code which makes it. Macro HB_TASK_STACK_INIT() in
task.c makes it. I defined this macro for x86@32 in DJGPP
Linux GCC and OpenWatcom builds. I tested OpenWatcom builds only
in DOS and Linux but probably it works in all x86@32 builds.
If someone is interesting in adding support for some other
platforms which does not support ucontext.h and 1-st methods
then please define above macro for them.
Have a fun with new toy ;-)
* harbour/source/vm/Makefile
* enabled hbvmmt in DJGPP and OpenWatcom DOS builds. It works well.
Viktor if possible please add support for -mt switch in hbmk2
in all builds even if we do not compile hbvmmt by default so
it can be used with DJGPP and OW and any other builds for which
someone enable hbtask.c though OS does not support threads.
* harbour/contrib/hbmzip/hbmzip.c
! fixed '[const] char|BYTE *' casting in DOS and OS2 builds
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
* harbour/source/compiler/harbour.y
* harbour/source/compiler/harbour.yyc
% reduced INASSING definition - thanks to Xavi for information
* harbour/source/compiler/hbopt.c
! fixed stupid bug in logical expression optimization - thanks to Randy
for self contain example
* harbour/include/hbapi.h
* harbour/include/hbmacro.h
* harbour/include/hbexprb.c
* harbour/source/vm/macro.c
* harbour/source/vm/hvm.c
* harbour/source/macro/macro.y
* harbour/source/macro/macro.yyc
+ added direct support for pushing references to macro expressions.
It resolves the problem with Clipper compatibility (thanks to Alex
for information and example) in code like:
m->var := {0}
&("var[1]") += 10
and also many other things, f.e. now Harbour can cleanly compile
and execute this code:
proc main
local s
m->o := errorNew()
s:="o:tries"
? m->o:tries
? &s
? &(s+"+=2")
? m->o:tries
? &(s+":=3")
? m->o:tries
?
&s := 4
? m->o:tries
&s -= 2
? m->o:tries
&s++
? m->o:tries
?
s := "o"
m->o := 1
? &s
&s := &s + 4
? &s
? &s += 5
? --&s
?
s := "o[2]"
m->o := { 1, 2 }
? &s
&s := &s + 4
? &s
? &s += 5
? --&s
return
* harbour/utils/hbtest/Makefile
* force hbtest compilation with line numbers - information about line
numbers is important part of this test.
* contrib/hbxbp/tests/demoxbp.prg
* contrib/hbxbp/xbpstatic.prg
+ Implemented XBPSTATIC_TYPE_BITMAP. It is not Xbase++ compatible
in the sense it is pulled from a disk file. But by attributes wise
it is exactly like Xbase++.
SUGGESSIONS: Should I implement Harbour extensions to the Xbp* classes?
I find a wide scope to add few more instance variables to the
class.