* contrib/hbxbp/Makefile
* contrib/hbxbp/xbpgeneric.prg
* contrib/hbxbp/xbpwindow.prg
+ contrib/hbxbp/hbpqtui.prg
- contrib/hbxbp/xbpqtuiloader.prg
% Renamed XbpQtUiLoader() class to HbpQtUI()
This is Harbour extension to Xbase++ class framework.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idethemes.prg
* contrib/hbide/resources/projectproperties.ui
% Changed <Main Menu> prompts:
+ <Environments> in <Project>
- <Options> => <Setup>
- <Codecs> => <Setup> <Codecs>
! Separated the <Define Environments> dialog from <Project Properties>
And added a menu option in <Projects> main-menu prompt.
+ Implemented to load xMate's Project file (.xhp) when a new project
is created. Can be invoked via a push button on top-right corner of
<General> tab.
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/resources/hbide.env
- Dropped {shell} and {ext} placeholders from hbide.env.
These are now auto detected, thanks Viktor.
* contrib/hbnetio/utils/netiocmd.prg
! Fixed remote execution protection to work even when
the source was compiled from another directory.
; QUESTION: Is there a better way to make this kind of
protection? Current system will break if
the source filename of the caller happens to
change in the future.
* contrib/hbnetio/utils/netiosrv.prg
+ Show internal error and quit and if above self-protection
got broken for some reason.
* utils/hbmk2/hbmk2.prg
! Fixed entry function detection builting project in
different than current dir, possibly also in -inc mode.
[TOMERGE 2.0]
* ChangeLog
+ Added TOMERGE to /INSTALL doc modifications.
I had not marked any changes regarding .rpm generation, as
I can't oversee this packaging type, have minor experience
with it and got no user feedback whatsoever. If someone cares
to review/comment/fix, whole current INSTALL can go to 2.0.x.
[TOMERGE 2.0]
* harbour/contrib/hbwin/win_misc.c
! fixed buffer overflow in WIN_WIDETOANSI() caused by wrongly calculated
buffer size
* harbour/utils/hbmk2/hbmk2.prg
* updated names of xHarbour libraries - now it works in static mode
TOFIX: -xhb shared mode uses 'harbour' instead of 'xharbour' library
and 'hbmainstd' instead of 'mainstd'
TOFIX2: -gui switch in -xhb mode cause compile time error:
/tmp/hbmk_auhl2d.c:8: error: syntax error before "void"
* contrib/hbxbp/Makefile
* contrib/hbxbp/hbpprocess.prg
+ Implemented first HbpProcess() class ( Harbour Extension )
which is based on Qt's process management classes.
The usage concept is well defined in
/contrib/hbide/ideprojmanager.prg.
I will write the documentation at some later date.
* contrib/hbide/resources/projectproperties.ui
+ More components.
* contrib/hbide/projects/hbide.hbi
+ More info.
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesaveload.prg
! Updated to hold Development Environments concept introduced.
Read below.
- contrib/hbide/hbide.env
+ contrib/hbide/resources/hbide.env
+ The environment skeletons (working) on my machine connecting
hbIDE to hbMK2 engine. You can copy it and place it
in projects folder with suitable path amendments and
call it in hbIDE. This implementation facilitae to
generate any project on any compiler from within
single instance of hbIDE without leaving it.
Here are the implementation details:
FORMAT
======
[ BCC55 5.5.1 Command Line Tools ]
{hb_comp} bcc
{shell} cmd.exe
{ext} bat
#
{content} set HB_COMPILER=bcc
{content} set PATH=c:\harbour_dev;c:\harbour_dev\bcc\bin;C:\harbour_dev\harbour\bcc\bin;
[ MINGW 4.4.2 Windows ]
{hb_plat} win
{hb_comp} mingw
{content} set PATH=c:\mingw\bin;c:\qt\2009.03\qt\bin;
{content} set PATH=c:\harbour_dev;c:\harbour_dev\harbour\mingw\bin;%path%
{content} set HB_WITH_QT=c:\qt\2009.03\qt
...
{hb_plat} == set HB_ARCHITECTURE=
{hb_comp} == set HB_COMPILER=
{shell} == shell command to execute
{ext} == the extension of shell commands file
{content} == active contents placed in the shell commands file
Any lines with {contents} marker will form the
body of commands file. You can place remarks
preceded with # sign.
Currently {contents} are implemented, rest will take a couple of days.
PLACEHOLDER
===========
<Environments Tab> in <Project Properties> dialog but with separate
button to save this and its path information alone. Just avoided one
more dialog.
ACTIVATION
==========
Right-click on <Projects> node in "Projects" tree and select <Environments...>.
The selected environment will become the default for current session and will
be saved for next invocation until it is changed. Next build will respect
this setting.
EFFECTIVENESS
=============
Create a desktop icon pointing to hbIDE.exe and place the only parameter
poing to "hbide.env" file. You can copy it anywhere in your project tree,
amend it to suit your requirements, and just execute hbIDE on your desktop.
NOTE: you _MUST NOT_ set any compiler specific variables before invoking
hbIDE. Your working slate must be clean.
WHAT_IS_NOT_DONE
================
The bash commands and their shell invocation. But I know a lot of you
will implement that in no time.
* contrib/hbwin/Makefile
* contrib/hbwin/hbwin.hbc
* contrib/hbwin/win_bmp.c
* contrib/hbwin/win_tprn.prg
+ WIN_BITMAPDIMENSIONS(): Added PNG support.
(in fact the internal function can also be used to validate
.png files)
Please review/test.
+ Added libpng dependency for hbwin lib. libpng requires
zlib, so that's also added, but it's required by core
already anyway.
Please test cross-platform scenarios.
* WIN_BITMAPISSUPPORTED(): Now simply returns numeric
results, where zero is success. Same done to low level
function.
* contrib/hbwin/hbwin.ch
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_tprn.prg
+ Added constants for bitmap types.
* Minor cleanups to jpg/png handling.
* contrib/hbxbp/xbpdataref.prg
% Changed the way class is recognized to facilitate sub-classing.
Currently only for XbpSLE and XbpMLE.
* contrib/hbxbp/xbpwindow.prg
! Method :isDerivedFrom( cClassOrObject ) extended to match
the class name of oParent till it matches the given parameter.
I am wondering if this functionality be included in class
engine itself. Przemek ?
* contrib/hbwin/win_prn1.c
+ Added support for printing RAW compressed formats JPEG and PNG BitMaps.
+ Added new PRGs functions: win_TypeBitMap() and win_CheckPrnDrvFormat()
Example of use in the class win_BMP()
* Changes in WIN_LOADBITMAPFILE, WIN_DRAWBITMAP to support new formats.
* contrib/hbwin/win_tprn.prg
+ Extended the class win_BMP() to allow printing compressed formats JPEG and PNG
if the printer driver allows.
+ Added method CheckPrnDrvFormat( oPrn, @cErrMsg ) for check printer driver.
+ New VAR INT Type. Type of BitMap: 1 == BM, 2 == JPEG, 3 == PNG
+ New VAR array DimXY. Original Image Dimensions X Y in pixels.
* New parameter aDimXY in LoadFile( cFileName, aDimXY )
* New parameter aDimXY in Draw( oPrn, aRectangle, aDimXY )
to introduce the original image dimensions in pixels X Y.
Some printer drivers may require the insertion of the original image dimensions
for processing, others read from the data source and by default only need have
aDimXY := { 1, 1 }
* Use DimXY VAR of win_BMP() in method DrawBitMap( oBmp ) of win_PRN()
* src/compiler/hbusage.c
+ Added author ID mail
* src/vm/estack.c
! Replaced printf() calls with hb_snprintf() and hb_conOutErr()
calls. This will avoid reported problems where MinGW binary
build refers to internal printf function. As a rule we should
never use printf() in Harbour code. There are still a few
commented ones in hbrtl.
[TOMERGE 2.0]
* src/vm/hvm.c
! Replaced printf() (commented) call with HB_TRACE().
[TOMERGE 2.0]
* utils/hbmk2/hbmk2.prg
! Fixed -build option not being recognized.
! Fixed -build option not being ignored in second option
parsing loop.
! Fixed -lang= option not being ignored in second option
parsing loop.
[TOMERGE 2.0]
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Extended help text for -head option.
* contrib/hbwin/win_prn1.c
% WIN_LOADBITMAPFILE() optimized to use hb_retclen_buffer().
! WIN_LOADBITMAPFILE() fixed to return empty string instead
of NIL in case of file read failure.
* examples/rddado/adordd.ch
+ Added new 'adCmd*' constants. From xhb.
(2010-01-20 20:53 UTC+0100 Miguel Angel Marchuet)
* Formatting.
* contrib/hbide/idefindreplace.prg
! Fixed: error when find operation was unsuccessful.
* contrib/hbxbp/xbp.ch
+ Added HBXBP_DBG( HB_TR_ALWAYS,... )
* contrib/hbxbp/xbppushbutton.prg
+ Behavior: if focus is set on the object, then its property is
changed to autodefault() which means the button will be highlighted
with additional border to indicate that it can be activated
with "Return" press. However this property does not work in
buttons if XbpDialog() is the parent.
* contrib/hbxbp/xbpgeneric.prg
* contrib/hbxbp/xbpwindow.prg
* contrib/hbxbp/xbpdialog.prg
+ Implemented: XbpDialog():maxButton, :minButton
QUESTION: which instance variable controls the resizing behavior?
* contrib/hbxbp/xbpsle.prg
+ Added: callback slot :returnPressed.
oSle1:returnPressed := {|| SetAppFocus( oSle2 ) }
This facilitates the TAB behavior which navigating the SLE's.
This effectively also means you can control the SLE's like
ReadModal(). Just validate the SLE (oGet) and move to
another SLE or any other part.
Angel, your observation will matter.
* contrib/hbwin/hbwapi.h
* contrib/hbwin/wapi_alloc.c
* contrib/hbwin/wapi_wingdi.c
* contrib/hbwin/tests/testgdi.prg
+ Reworked the way DEVMODE structure is handled. As many winapi
interfacing methods, this is also a strange beast, it contains
some hidden information, so it must be created using some
winapi calls. I finally settled with these three functions
to handle DEVMODE structure from .prg level:
__WAPI_DEVMODE_NEW( <cPrinterName> ) => <pDEVMODE>
__WAPI_DEVMODE_SET( <pDEVMODE>, <hashToWriteFrom> )
__WAPI_DEVMODE_GET( <pDEVMODE>, <hashToReadInto> )
Then <pDEVMODE> can be passed to WAPI_CREATEDC() and WAPI_RESETDC().
Remember to recreate <pDEVMODE> after using __WAPI_DEVMODE_SET()
and before using __WAPI_DEVMODE_GET() to refresh the structure
content with actual device settings.
* contrib/hbide/ideprojmanager.prg
! Don't delete temp .hbp file when creating PPO file, otherwise
hbmk2 couldn't find it (at least on my system).
* Changed temp .hbp name to have "_tmp.hbp" appended (instead of "._tmp.hbp").
* utils/hbmk2/hbmk2.prg
+ Added -env: option, command line only, it serves to alter local
environment, which is used by fix itself and which is passed to
external commands. This means it's now possible to call hbmk2
in a way that it configures the whole build environment for itself:
hbmk2 hello.hbp -env:PATH#C:\mingw\bin; -env:HB_WITH_QT=C:\qt\4.5.3
Read more in --help.
; Please experiment with it.
* contrib/hbide/ideprojmanager.prg
+ Added simple way (HBIDE_DIR_HBMK2 envvar) to configure location
of hbmk2.
* contrib/hbqt/generator/hbqtgen.prg
! Minor formatting fix to generated code.
* contrib/hbnetio/utils/netiosrv.prg
* contrib/hbnetio/utils/netiocmd.prg
% Optimizations to latest patch (using FOR EACH).
* Formatting and indenting to latest patch.
* contrib/hbxbp/xbpdataref.prg
% Formatting.
* contrib/hbxbp/xbpgeneric.prg
! Little refinment in MsgBox().
* contrib/hbxbp/xbpwindow.prg
! A major fix to not allow XbpDialog() to invalidate buffers.
* contrib/hbxbp/xbpdialog.prg
+ Implemented :setModal() method.
; Angel now your submitted application will run out of the box.
You may need one or two changes.
oSLE1:oWIDGET:selectAll()
SetAppFocus(oSLE1)
oDlg:showModal()
nEvent := 0
DO WHILE ! lExit .AND. ! lOk .AND. nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
oSle1:getdata() //// DOESN'T WORK
oSle2:getdata() //// GIVES ME DATA OF FIRST SLE !!!!
SetAppFocus(SetAppWindow())
oDlg:Destroy() //RECURSIVE RUNTIME ERROR !!
//oDlg:hide()
NOTE: See how a little interest of you have fixed many artifacts !!!
* contrib/hbide/ideprojmanager.prg
% Changed the behavior of placement of project components.
1 If <Working Directory> is empty
<Working Directory> == <Project Location>
.hbp will be placed in <Working Directory> as
<Working Directory>/<Output Name>.hbp
.hbp will include
-workdir=<Working Directory>/${hb_plat}/${hb_compl}
2. If <Destination Folder> is empty
<Destination Folder> == <Project Location>
.hbp will include
-o<Destination Folder>/<Output Name>
This has facilitated to build projects from any location.
< Example follows on the mailing-list taking Angel Pais's
recent sent hbXBP based small application which bears
the 99% Xbase++ code >
* harbour/src/rdd/dbf1.c
! fixed trailing character in empty DBF file - thanks to Saulius
* added common RTE function, cleaned some RTE and added some missing ones
* contrib/hbnetio/utils/netiosrv.hbp
* contrib/hbnetio/utils/netiosrv.prg
+ contrib/hbnetio/utils/netiocmd.prg
+ Applied patch sent by Vailton Renato.
* Some formatting applied to it.
* contrib/hbwin/wapi_wingdi.c
- Dropped array support for DOCINFO parameter.
; Array has only any point for really simple/obvious structures
like point and rect, for anything more complicated hash is
a much convenient answer (don't have to remember structure
member positions, can pass them in any order and combination,
and MSDN docs can be used when coding .prg for Windows).
* contrib/hbwin/tests/testgdi.prg
% Inlined DOCINFO hash parameter syntax.
* harbour/src/vm/strapi.c
* allow to pass NULL as item pointer in hb_item{Get,Copy}Str*() functions
* updated hb_itemCopyStr*() functions to set '\0' in the buffer if not
string item is passed as parameter
* updated hb_itemCopyStr to return number of characters which could be
stored in buffer if buffer when passed buffer is NULL and its size is 0
Now all hb_itemCopyStr*() functions can be used to retirve the size in
character of destination string by:
ulSize = hb_itemCopyStr*( pItem ..., NULL, 0 )
* harbour/contrib/hbnetio/netiocli.c
* simplified the code by removing one unnecessary protection
* harbour/contrib/xhb/xhw32prn.prg
! fixed stupid typo in method redirecting:
:StartPage() was redirected to :Create() and :Create() was
redirected to :StartPage()
* contrib/hbwin/hbwapi.h
* contrib/hbwin/wapi_wingdi.c
! Fixed potential GPD in hbwapi_par/stor*() functions
when parameter was not passed at all.
+ Added hbwapi_par_DOCINFO() and hbwapi_strfree_DOCINFO()
pairs to retrieve structures with strings in them.
Hashes are supported now as well.
; TODO: Low-level string handling functions will GPF
yet if the related hashes are missing (f.e. in
posted test code). This requires proposed extra
guards in low-level string functions.
+ WAPI_STARTDOC() changed to use hbwapi_par_DOCINFO().
% Minor cleanup in WAPI_SELECTOBJECT().
+ contrib/hbwin/tests/testgdi.prg
+ Added test code for GDI function structure parameter exchange.
* contrib/hbide/idethemes.prg
* contrib/hbide/ideeditor.prg
+ Added 'sequence' and 'endsequence' to keywords.
; TOFIX: try/catch and a few more are not Harbour keywords.
* contrib/hbide/ideeditor.prg
% Optimized low-level keyword lookup functions:
- Use hashes instead of arrays and ascan.
- Use STATIC vars to avoid rebuilding tables on every call.
* contrib/hbwin/wapi_wingdi.c
* contrib/hbwin/wapi_winuser.c
* contrib/hbwin/hbwapi.h
+ Added hbwapi_stor_*() functions to store Windows structures
RECT, POINT and DEVMODE. Latter supports hash only (due
to large number of structure members), other two supports
both array and hash.
Please review my code.
+ WAPI_MOVETOEX() now uses hbwapi_stor_POINT().
! WAPI_DRAWTEXT() fixed to return RECT (using hbwapi_stor_RECT()).
* contrib/hbwin/legacy.prg
* contrib/xhb/xhw32prn.prg
* Moved Win32Bmp compatibility class from hbwin to xhb lib.
! Deleted Win32Prn compatibility clsss from hbwin, as it's
now implemented in xhb in a better way.
* harbour-win-spec
* harbour-wce-spec
* harbour.spec
* include/hbver.h
* config/global.mk
+ Changed to new major version number:
2.1.0dev (from 2.0.1dev)
This gives way for 2.0.x branch to take
the 2.0.1dev version number.
* contrib/hbqt/generator/qt45.qtp
+ contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbqt/qth/QApplication.qth
* contrib/hbqt/qth/QPlainTextEdit.qth
* contrib/hbqt/qtgui/filelist.mk
* contrib/hbqt/qtgui/QApplication.cpp
* contrib/hbqt/qtgui/QPlainTextEdit.cpp
+ contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
+ contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/filelist.mk
* contrib/hbqt/hbqt.h
* contrib/hbqt/hbqt_garbage.h
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesources.prg
+ Added HBQPlainTextEdit() class which implements some constructs
which were not possible in pure prg code. The underlying code has
been borrowed from TextEdit.c of QWriter - a work of
Gancov Kostya <kossne@mail.ru>, a big thank you. The code has been
extensively formatted and changed to adopt to Harbour standards.
The direct benefits by adopting this class are:
:
* Current line highlighting is absolutely ok now.
* Line numbers display is extremely fast and optimized.
* Book-marks are shown at the left of line-numbers.
* Parenthesis matching is absolutely delightful.
* To Upper/Lower implementation is accurate spanning many lines.
* Stream commenting is made possible.
* Book-marks management is smooth.
In IDE book-marks are implemented in different way than
most IDE's offer. Here is the description:
* Click on "Toggle Mark" icon on the toolbar.
* A small dot will appear on the left of current line.
* Look at status-bar, a small colored pushbutton will appear.
* Navigate the document as usual.
* Click on the colored push button staying in statusbar.
* The editing cursor will stay at book-mark represented by
that colored button and current line will appear highlighted
with the same color as that of button.
* Navigate to another location and click again on "Toggle Mark" icon.
* A new dot and one more colored button will appear in the statusbar.
* You can create 6 book marks as such and all will have different colors.
* You can click on any of desired usage.
* To delete a book-mark click on the button then "Toggle Mark"
* One button at the right will disappear.
* All tabs will contain their own book-marks.
* And every split window will have its own.
* Navigating different tabs or split windows will rearrange the
buttons according to its own settings.
; QUESTION : Is it worth the effort to save book-marks settings for next session?
* contrib/hbtip/sendmail.prg
! Applied set of HB_SENDMAIL() patches sent by Francesco Perillo:
- nTimeOut defaults to 10 seconds
- check for actually receiving "250 " to EHLO and not waiting for timeout
- don't wait for timeout
- check for actually receiving "250 " to HELO and not waiting for timeout
[TOMERGE 2.0]
* contrib/hbwin/wapi_wingdi.c
+ Added TODO to WAPI_SELECTOBJECT() to implement reference counting
when assigning an GC collected object to another one (DC).
Any idea how to do this properly?
* contrib/hbwin/wapi_winuser.c
+ Added WAPI_GETSYSTEMMETRICS().
* contrib/hbwin/hbwin.ch
+ Added WIN_SM_* constants for WAPI_GETSYSTEMMETRICS()..
* contrib/hbwin/wapi_winuser.c
* contrib/hbwin/wapi_shellapi.c
- Deleted unnecessary Windows headers.
* contrib/hbwin/win_dlg.c
+ WAPI_PRINTDLGDC() now sets owner window for better
results (f.e. in GTWVT it will block clicking on
app window and newer style printer dialog will be presented)
* contrib/hbwin/win_prn1.c
* Minor.
* harbour/src/rtl/gtxwc/gtxwc.c
+ added support for independent CP setting for BOX and normal characters
* disabled Clipper VGA compatible memory buffer in GTXWC default
settings to keep information about character sets (box vs normal)
+ added support for HB_GTI_BOXCP
* src/rtl/memoedit.prg
! Fixed to not return edited memoedit buffer if :Saved
flag is false. This patch is meant to fix sf.net bug #2936334.
Again such a huge bug I wonder no one noticed it so far.
MEMOEDIT() is the remaining last dark corners of Harbour RTL
(maybe with AChoice()) which is not fully C5.x compatible,
and it's a heap of patches and hacks to give answer to
reported problems.
Eventually some concerned MEMOEDIT() user will have to rework
it like we did with GET/TBROWSE to give a proper fix to all
reported issues.
(F.e. in TEditor() there is a bug where chars are stuffed to
the wrong position if initially we position cursor after EOL.
Try by deleting text.txt in attached example.)
Please test, review, fixme, look also for regressions.
+ Added initial support for ME_PAST Xbase++ event. Please test,
I didn't make any testing against Xbase++.
* contrib/hbwin/wapi_wingdi.c
+ WAPI_SELECTOBJECT() got support for HBRUSH.
* contrib/hbwin/win_prn1.c
+ Added two TOFIX comments to serious security holes and potential
GPFs to bitmap handling functions. Enough to load a malformed or
corrupted .bmp file to exploit it.
Any takers for fixing them?
* contrib/hbide/idemisc.prg
* Two STATIC variables prefixed with 's_'