* utils/hbmk2/hbmk2.prg
+ -xhp= converter switch now recognizes some more types of file.
(lib, object and libpaths)
* contrib/hbnetio/utils/netiosrv.prg
* contrib/hbnetio/utils/netiocmd.prg
- Deleted call protection.
* contrib/hbwin/Makefile
* contrib/hbwin/hbwin.h
* contrib/hbwin/win_bmp.c
+ contrib/hbwin/win_bmpd.c
* contrib/hbwin/win_tprn.prg
+ contrib/hbwin/win_tbmp.prg
+ Moved WIN_BMP() class to separate source file.
+ Moved WIN_BITMAPDIMENSIONS() and its low-level support functions
to separate source file, to avoid creating unwanted
dependency to libpng.
+ Applied Xavi's patches to WIN_BMP().
* Restored nError parameter for ::IsSupported()
* ::LoadFile() now fills dimensions automatically.
* ::Draw() 3rd dim array parameter replaced with nError.
* contrib/hbwin/hbwapi.h
+ Added 'extern' keyword.
* utils/hbmk2/hbmk2.prg
+ Added -hbexe option. This is the default, but it may help hbide
and other tools to clear doubts about target type. (or to override
some previous -hbdyn/-hblib options for whatever reasons)
* contrib/hbide/ideprojmanager.prg
* "hbMK2.exe" -> "hbmk2 Executable"
.exe extension is Win/OS2/DOS specific.
* harbour/utils/hbmk2/hbmk2.prg
* use HB_EXTERN_BEGIN / HB_EXTERN_END macros instead of HB_EXTERN_C
in -xhb mode. It fixes the problem with -gui switch.
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.prg
! Fixed rare problem where options containing .hbp/.hbm/.clp
extesions have been mistaken as file recursions instead
of being processes as options. F.e. -runflag=test.hbp
! Updated help text about possible filter keywords.
! Fixed to use xharbour[mt] for dynlib name for mingw targets.
Added NOTE that in newer xhb version this is not true
anymore. Support for other targets also doesn't work,
because of non-existent or not consistent dynlib naming
scheme in xhb.
! Fixed to use 'mainstd' instead of 'hbmainstd', and not
to use 'hbmainwin' at all in -xhb mode for mingw targets.
For rest of targets the xhb solution is inconsistent, so
it's not currently possible give them any meaningful
support in hbmk2.
* 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()