* source/rtl/gtwin/gtwin.c
* source/rtl/gtwvt/gtwvt.h
* source/rtl/gtwvt/gtwvt.c
* Updated to use ints instead of [U]SHORTs internally.
; Please review me and correct any possible mistakes.
* contrib/xhb/xhbscr.c
% Deleted explicit casts.
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
* changed last parameter of hb_gtRepChar() from USHORT uiCount to
ULONG ulCount
* removed basic parameter validation from hb_gtScroll() - such
things should be done by GT driver
* minor cleanup
* harbour/source/rtl/hbgtcore.c
% moved pbyBuffer initialization outside the loop in Rest/Save methods
* minor cleanup in casting
* harbour/source/rtl/mouse53.c
% minor optimization
* harbour/source/rtl/gtdos/gtdos.c
* changed buffer type in Mouse{Save,Restore}State methods from char *
to void *
* harbour/source/rtl/gtxwc/gtxwc.c
* harbour/source/rtl/gtcrs/gtcrs.c
! fixed casting
* harbour/source/rtl/xhelp.c
* harbour/source/rtl/console.c
% use 'int' instead of 'USHORT'
* harbour/source/rtl/saverest.c
* removed explicit casting
* harbour/source/rtl/scroll.c
* harbour/source/rtl/console.c
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/screen2.c
! fixed casting from 'char *' items which was wrongly changing
the results.
* harbour/contrib/hbct/screen1.c
* harbour/contrib/hbct/screen2.c
% eliminated not longer necessary intermediate variables used for
passing by reference in previous version with [U]SHORT casting
* harbour/contrib/hbnf/dispc.c
* harbour/contrib/hbnf/ftattr.c
* harbour/contrib/hbnf/ftshadow.c
* changed screen coordinates from [U]SHORT to int
* include/hbgtcore.h
* include/hbapigt.h
* include/hbapi.h
* source/rtl/scroll.c
* source/rtl/maxrow.c
* source/rtl/gtapi.c
* source/rtl/saverest.c
* source/rtl/console.c
* source/rtl/oldclear.c
* source/rtl/hbgtcore.c
* source/rtl/scrrow.c
* source/rtl/shadow.c
* source/rtl/setcurs.c
* source/rtl/mouse53.c
* source/rtl/gx.c
* source/rtl/mouseapi.c
* contrib/hbct/cursor.c
* contrib/hbct/ctwfunc.c
* contrib/hbclipsm/gauge.c
* Changed all USHORT to int in high-level GT API layer which
already had an int representation on the low-level.
Please review me. It's possible that some extra checks (or else)
need to be added since signedness has changed.
* Change mouse state buffer from char * to void *.
; TODO: Review remaining BYTE/USHORT usage for attr, color
and char. Char is sometimes represented by UCHAR,
sometimes by char and sometimes by USHORT. Color is
represented by both int and BYTE. attr is BYTE, which
can be changed to hbU8.
* include/hbgtcore.h
* source/rtl/gtapi.c
* source/rtl/hbgtcore.c
* Changed low level GT SAVE/REST method buffer parameter type
to void * from BYTE *. Some explicit casts removed.
* Few more BYTE *s to char *.
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/base64c.c
+ source/rtl/base64.prg
+ Added HB_BASE64ENCODE(), HB_BASE64DECODE() to core.
They were copied from hbtip and hbvpdf and currently
the decoder is .prg code while encoding is .c code.
Latter has one TOFIX for an error situation.
* contrib/hbtip/encurl.prg
* contrib/hbtip/thtml.prg
* contrib/hbtip/sessid.prg
* contrib/hbtip/popcln.prg
* contrib/hbtip/sendmail.prg
* contrib/hbtip/tip.ch
* contrib/hbtip/cgi.prg
* contrib/hbtip/url.prg
* contrib/hbtip/encqp.prg
* contrib/hbtip/base64x.c
* contrib/hbtip/httpcln.prg
* contrib/hbtip/client.prg
* contrib/hbtip/encoder.prg
* contrib/hbtip/smtpcln.prg
* contrib/hbtip/encb64.prg
* contrib/hbtip/mail.prg
* contrib/hbtip/credent.prg
* contrib/hbtip/ftpcln.prg
+ Added TOFIXes, QUESTIONs
! Fixed to use hb_MemoRead() instead of MemoRead() in one place.
! Fixed a wrong error checks after FCreate() calls.
! Fixed to use Len( hb_inetCRLF ) instead of hardwired length.
! Using hb_ntos() instead of Str() in POP3 commands.
* Changed explicit values to manifest constants (F_ERROR)
* Changed high ASCII chars in source to Chr() representation,
now source can be edited with any editor.
! Added missing copyright header to tip.ch. Although this header
seems to be unnecessary.
! TipMail:MakeBoundary() to not add any date punctuations in the ID.
! Fixed tIPClientFTP:fileSize() to not return permantent zero.
% Heavier optimizations and cleanup in TIpClientSmtp().
% Optimizations.
* Formatting.
; Please test.
* harbour/include/hbexpra.c
% reduce macro expressions used in POP operation.
It allows to use code like: &("((M->VAR))") := 1
* harbour/include/hbexprb.c
+ added support for iif() used in macro expressions passed by references:
proc MAIN()
local s := "IIF( lVar, xVar1, xVar2 )"
M->xVar1 := 1
M->xVar2 := 2
M->lVar := .T.
? M->xVar1, M->xVar2
P( @&s )
? M->xVar1, M->xVar2
proc P(x)
x+=1000
* harbour/source/vm/hvm.c
! fixed possible assign value lost in extended references
* harbour/contrib/hbxbp/xbpbitmap.prg
+ Implemented XbpBitmap() class - mostly working.
* harbour/contrib/hbxbp/xbpfiledialog.prg
! Shifted constants to hbqt.ch
* harbour/contrib/hbxbp/xbpfontdialog.prg
+ Implemented XbpFontDialog() and XbpFont() class with interaction.
* harbour/contrib/hbxbp/xbpstatic.prg
+ Implemented :type == XBPSTATIC_TYPE_BITMAP.
* harbour/contrib/hbxbp/xbpwindow.prg
+ Implemented :setFont( oXbpFont ).
! Enhanced "Attribute" factor of :compoundName to accept bold and italic together.
Integrated with :setFont()
* harbour/contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated XbpFontDialog() and XbpFont() implementation.
1. Click on <MLE> tab-page.
2. Click on <Font Dialog> toolbar icon.
3. Adjust and select a font.
4. See the result in MLE text editor.
+ Demonstrated XbpBitmap() functionality as in Xbase++, code shows up with both compilers.
* harbour/contrib/hbqt/hbqt.ch
* harbour/contrib/hbqt/QBitmap.cpp
* harbour/contrib/hbqt/QBrush.cpp
* harbour/contrib/hbqt/QCursor.cpp
* harbour/contrib/hbqt/QImage.cpp
* harbour/contrib/hbqt/QLine.cpp
* harbour/contrib/hbqt/QLinearGradient.cpp
* harbour/contrib/hbqt/QPicture.cpp
* harbour/contrib/hbqt/QPixmap.cpp
* harbour/contrib/hbqt/QPoint.cpp
* harbour/contrib/hbqt/QPointF.cpp
* harbour/contrib/hbqt/QRadialGradient.cpp
* harbour/contrib/hbqt/QRect.cpp
* harbour/contrib/hbqt/QRectF.cpp
* harbour/contrib/hbqt/QRegion.cpp
* harbour/contrib/hbqt/QSizeF.cpp
* harbour/contrib/hbqt/TQBitmap.prg
* harbour/contrib/hbqt/TQImage.prg
* harbour/contrib/hbqt/TQLine.prg
* harbour/contrib/hbqt/TQLinearGradient.prg
* harbour/contrib/hbqt/TQPicture.prg
* harbour/contrib/hbqt/TQPixmap.prg
* harbour/contrib/hbqt/TQPoint.prg
* harbour/contrib/hbqt/TQPointF.prg
* harbour/contrib/hbqt/TQRadialGradient.prg
* harbour/contrib/hbqt/TQRect.prg
* harbour/contrib/hbqt/TQRectF.prg
* harbour/contrib/hbqt/TQRegion.prg
* harbour/contrib/hbqt/TQSizeF.prg
* harbour/contrib/hbqt/qth/QBitmap.qth
* harbour/contrib/hbqt/qth/QBrush.qth
* harbour/contrib/hbqt/qth/QCursor.qth
* harbour/contrib/hbqt/qth/QImage.qth
* harbour/contrib/hbqt/qth/QLine.qth
* harbour/contrib/hbqt/qth/QLinearGradient.qth
* harbour/contrib/hbqt/qth/QPalette.qth
* harbour/contrib/hbqt/qth/QPicture.qth
* harbour/contrib/hbqt/qth/QPixmap.qth
* harbour/contrib/hbqt/qth/QPoint.qth
* harbour/contrib/hbqt/qth/QPointF.qth
* harbour/contrib/hbqt/qth/QRadialGradient.qth
* harbour/contrib/hbqt/qth/QRect.qth
* harbour/contrib/hbqt/qth/QRectF.qth
* harbour/contrib/hbqt/qth/QRegion.qth
* harbour/contrib/hbqt/qth/QSizeF.qth
! Updated for exact constructor parameters.
If the constructor accepts parameters with identical .prg supplied values,
a new parameter is inserted as a first argument and then resolved in .cpp.
oBrush := QBrush():new( "QPixmap" , pQPixmap )
oBrush := QBrush():new( "QImage" , pQImage )
oBrush := QBrush():new( "QGradient", pQGradient )
Note that constructor fetches only one argument, a pointer to relevant
object, which at prg to cpp level can never be differed so this
mechanism was necessary. The first parameter will be matched exact
and hence it is case sensitive. If this parameter is of the same type
object is being created then it call will only supply pointer:
oBrush := QBrush():new( pQBrush_other )
* utils/hbmk2/hbmk2.prg
+ Added -[no]ignore option which tells hbmk2 to ignore
errors returned by compiler tools and continue as normal.
Useful to gather all build errors in one pass.
! Fixed hbmk2 errorlevel on resource compiler error.
* harbour/source/rdd/dbfntx/dbfntx1.c
* harbour/source/rdd/dbfnsx/dbfnsx1.c
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbf1.c
! cleaned initialization code - use INIT method to make independent
from initialization code. It fixes default memo type setting in
DBFNSX (SMT) and DBFNTX (DBT) on some platforms
* contrib/xhb/xhbat.c
* contrib/hbtip/utils.c
* Moved ATI() function to xhb lib.
ATI() is different from HB_ATI() since it doesn't support
national chars, but it supports negative start/end values in
xhb style.
* contrib/hbtip/thtml.prg
* Changed to use core HB_ATI() instead of xhb specific ATI().
To me it looks that negative positions aren't used by hbtip code,
also respect for national chars is fine, so this replacement is okay.
Please review me and correct it if needed.
* contrib/xhb/xhbfunc.c
* contrib/hbtip/legacy.prg
* Moved HB_EXEC() to xhb lib. Restored the C version.
* contrib/hbtip/Makefile
- contrib/hbtip/legacy.prg
- Deleted. No longer necessary.
* include/hbextern.ch
* source/rtl/Makefile
+ source/rtl/ati.c
+ Added HB_ATI() function. This is the same as HB_AT(), but
case-insensitive. It supports national chars.
* contrib/hbtip/Makefile
* contrib/hbtip/thtml.prg
* contrib/hbtip/utils.c
+ contrib/hbtip/legacy.prg
* Renamed ATI() to TIP_ATI().
(Probably we should have a proper, CP-aware HB_ATI() function in core)
* Readded ATI() as legacy function.
% Using <sym>:exec() instead of HB_EXEC() local .c function.
+ HB_EXEC() moved to legacy status and reimplemented in .prg.
(Thanks Przemek and Petr)
% Minor optimization where TIP_ATI() is only used where
we're looking for alphabetic data.
I'd appreciate if someone could review me, I'm not using this code.
* harbour/contrib/hbqt/generator/hbqtgen.prg
! Some refinements and formatting.
* harbour/contrib/hbxbp/xbpstatic.prg
+ Implemented :type == XBPSTATIC_TYPE_SYSICON
With this XbpStatic() class is 100% Xbase++ compliant plus
Harbour has more goodies to play with, i.e., more sysicons to
display ( about 60+ ) instead of only 4 provided in Xbase++.
Plus Harbour has implemented to define mouse cursor from any image format.
* harbour/contrib/hbxbp/tests/demoxbp.prg
! Demonstrated all XbpStatic() implementation.
* 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.