* 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_'
* harbour/contrib/hbct/video.c
! fixed compilation for compilers using 'char' as unsigned type
* harbour/contrib/hbmzip/hbmzip.c
! fixed to work with HB_FATTR
* harbour/contrib/hbnetio/netiocli.c
* pacified BCC warning
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
+ Implemented: Formatting - <Format Braces>
; These formatting actions are initiated from the fact that
code examples scattered on the net about Qt examples are
written in such a way that I was unable to grasp the contents.
I found it usual to include such functionality into hbIDE.
Hopefully it will be useful to all.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idesaveload.prg
+ Implemented: Formatting - <Replace Tabs with Spaces>
<Remove Trailing Spaces>
This can be achieved via Mainmenu <Edit><Format...> option.
! New: Find/Replace: Current selelcted text in "Find what:" control
in selected state.
% Changed: The way hbide.ini is loaded.
cHbideIni := hb_argv( 0 )
IF empty( cHbideIni )
IF file( "hbide.ini" )
cHbideIni := "hbide.ini"
ELSE
cHbideIni := hb_dirBase() + "hbide.ini"
ENDIF
ENDIF
oIde:cProjIni := cHbideIni
! Improved qTextDocument:isModified() handelling.
; TO CONSIDER: QPlainTextEdit() class by itself is not providing
enough methods to have finest of the editing experience.
So, it may be necessary to subclass it for extended features.
* harbour/contrib/hbnetio/netiocli.c
* harbour/contrib/hbnetio/readme.txt
+ added new client side function:
NETIO_DECODE( [@]<cFullName>, [@<cServer>], [@<nPort>], [@<nTimeOut>], ;
[@<cPasswd>], [@<nCompressionLevel>], [@<nStrategy>] )
-> <lDecoded>
Decode connection parameters from <cFullName> and default settings.
Return .T. if <cFullName> contains any connection settings.
<cFullName> should not contain "net:" prefix.
* harbour/src/rtl/itemseri.c
+ added support for hash array flags and default value serialization
Warning: before this modification hash arrays were always restored
with binary sorting with default auto assign setting and
without any default value and resorted if necessary. Now
only non binary hash arrays are resorted what may cause
problems for hash arrays not using binary sorting serialized
by old code and restored by the current one. In such case
it's necessary to restore original flags manually using
hb_h*() functions to force resorting.
- removed my TODO note:
"extended hash format with default value and hash flags"
* INSTALL
+ Added new item to TROUBLESHOOTING section describing
common problem when native executables are forgotten to be
rebuilt, and causing error in cross-build.
This typically causes problems when compiler/pp/hbmk2 get
new feature.
* contrib/hbwin/win_tprn.prg
! Deleted trace msg left there by mistake.
* contrib/hbwin/hbwin.ch
+ Added WIN_*_QUALITY constants.
* config/global.mk
+ Displaying HB_BIN_COMPILE even if explicitly specified by user.
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
! More improved syntax highlighting, specially in quoted strings.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/idethemes.prg
+ Ctrl+D - Duplicate Line.
! Improved current line highlighting.
But seems some more work is required.
! Tried to disable zooming in line numbers area but seems
Qt has it by default. In edit area zooming is now made available
via toolbar icons only.
* contrib/hbwin/wapi_wingdi.c
! Guarded for ! HB_OS_WIN_CE.
(mingwarm compiles it, but poccarm doesn't)
Maybe to focus on important things, we should drop
POCC support altogether?
* contrib/hbwin/win_tprn.prg
* WIN_DELETEDC() calls deleted. 'hDC := NIL' is enough.
* contrib/hbwin/Makefile
+ contrib/hbwin/wapi_alloc.c
* contrib/hbwin/win_prn1.c
+ Moved hbwapi_* low-level object handling functions to
separate WAPI source.
* WIN_DELETEDC() converted to compatibility stub, it
will no longer release the handle.
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_prn2.c
* contrib/hbwin/win_prn3.c
* contrib/hbwin/win_dll.c
% Deleted '#if defined( HB_OS_WIN )' guards.
(we can readd them for extra safety, but in this case
they should be readded consistently for all source files)
% Deleted '! defined( __RSXNT__ )' guards
RSXNT is not supported a dead compiler since long.
% Deleted '! defined( __CYGWIN__ )' guards.
It compiles with current Cygwin, if someone is interested
in older versions, pls send build results.
* contrib/hbwin/Makefile
+ contrib/hbwin/wapi_wingdi.c
+ Added experimental WAPI wrappers for Windows GDI printing
functions also found in win_prn1.c.
This is partially to avoid the legacy interface which
is a combination of WIN_* functions and Harbour class.
Which may seem to make thing more complicated at first,
but IME it provides a much cleaner interface, as you
only have to adapt to MSDN docs.
It's also a test bed for structure passing in WAPI
situations. I've used hashes as the best looking
solution, but even this has some things left to solve
(like handling string types and returning values).
Anyway it's a food for thought.
* contrib/hbwin/hbwin.ch
+ Added WIN_DMORIENT_* constants.
* contrib/hbwin/win_prn1.c
! Fixed to not accept raw pointers where HDC or HPEN is
expected. I've added this feature last year, without
making special mention of it in ChangeLog, so it was
a double-mistake.
* Minor cleanups (hb_retnl() vs hb_retni())
% Optimization in WIN_SETBKMODE().
* harbour/contrib/hbcairo/pdf.c
* harbour/contrib/hbcairo/png.c
* updated harbour level functions to be available, but return error
result, if it is not supported by some version of cairo library
* harbour/contrib/hbcairo/image.c
* comment typo
* contrib/hbwin/win_tprn.prg
* contrib/hbwin/win_prn1.c
+ WIN_CREATEFONT() extended with 10th parameter which makes
it possible to switch to raw height/width specification.
This is crucial for precise positioning using integer
parameters. Not very elegant parameter, but this class
and low-level interface is already extremely hacky so this
won't really make it any worse.
+ WIN_PRN():SetFont() extended with lManualSize option which
maps to above 10th parameter.
* contrib/hbwin/tests/testprn.prg
+ Added some text on the solution for overwritten underline
problem described in test program.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideobject.prg
+ Started : auto indentation and keyword capitalization.
; Please test and forward your suggessions.
* utils/hbmk2/hbmk2.prg
+ Allowing -hbdyn and -shared option together.
Absolutely not tested combination, so it may need further
development to make it usable.
! Fixed bad typo in .c stub enabler logic, which have
added .c stub also to libs/dynlibs when -main option
was used (plus some other rare cases)
! Fixed gcc linker option order in -hbdyn mode.
; Please test.
* harbour/contrib/hbwin/win_prn1.c
! fixed missing dmFields assignment - please test if this fix does
not change the behavior of printer dialog window when :AskProperties
is set to .T. - thanks to Chen for information
* harbour/src/pp/ppcore.c
* pacified BCC warning
* harbour/src/compiler/harbour.yyc
* harbour/src/compiler/harbour.yyh
* regenerated with patched bison to pacify BCC warnings
* harbour/include/hbwinuni.h
+ added HB_ITEMCOPYSTR() macro
* harbour/src/common/hbwince.c
* redirected Beep() to MessageBeep() - it does not allow to set
time and duration but should generate some default system voice
signal - please test the results with real devices using WinCE/
Win Mobile
TODO: New MinGW support LockFileEx() and UnlockFileEx() but they are
part of coredll6 library not coredll. I guess it's designed to
use with Windows Mobile 6.x. Add compile and link time support
for it.
TODO: Add link time support for MinGWCE and non ARM processors.
New MinGWCE supports x86 compatible Intel CPUs for pocket devices.
* contrib/hbqt/hbqt_base.cpp
* contrib/hbqt/hbqt_hbevents.cpp
* contrib/hbqt/hbqt_hbslots.cpp
! HB_TRUE/FALSE <=> true/false.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
! Updated to manage split windows properly.
Presently the behavior is as such:
Horizontal Split - Top row is columns are splitted
Vertical Split - More row is added at the bottom.
Delete Splitted Window - Focus is always shifted to
main edit window. i.e., parent of all.
Please comment.