* contrib/hbwin/hbwin.ch
+ Added HB_WIN_DLL_CALLCONV_* macros. (so far only privately defined inside .c code)
+ Added HB_WIN_DLL_CTYPE_* macros. (so far only privately defined inside .c code)
+ Reworked HB_WIN_DLL_CTYPE_* macro values. INCOMPATIBLE. Since they weren't
previously documented, this should not be a breakage, pls report it if this is
a problem.
! Fixed .ch syntax to also work in .c files.
* contrib/hbwin/hbwin.h
* contrib/hbwin/legacycd.c
* contrib/hbwin/win_dll.c
* contrib/hbwin/tests/testdll.prg
* Using hbwin.ch for callconv and C type constants.
+ Added public low-level interface: hbwin_dllCall().
This has provision for exact parameter type specification.
* Changed Harbour level functions to use new public
interface hbwin_dllCall().
+ Moved CALLDLL(), CALLDLLBOOL(), CALLDLLTYPED() to legacy source.
* HB_DLLEXEC structure made private to XPP compatibility
section.
+ Added new WIN_DLLCALL() API. This can replace all old CALL*()
function and give more flexibility. Its first parameter is an
optional array, which can specify calling convention (it was
fixed in old implementation), return type and UNICODE swicth,
plus it has provision to specify parameter types, too.
+ Changed test app to use new WIN_DLLCALL() API.
* hb_getprocaddress() made public (but not exported) and
renamed to hbwin_getprocaddress().
* config/wce/mingwarm.mk
* config/win/mingw.mk
- Deleted hack to always add frame buffer for hbwin.
It's not necessary anymore.
* contrib/hbwin/win_dll.c
+ Reimplemented win32 .dll calls using pure C code.
; Please review it. Especially around the few TODO/TOFIX
notes. It would also be great of someone could make
some test on WinCE platform.
* contrib/hbwin/win_dll.c
% Simplified win64 support.
! Fixed win64 support for returning parameters passed by reference.
* ChangeLog
* Old TOFIXes marked DONE.
* contrib/hbwin/win_dll.c
- Deleted WINAPI keyword from win64 .dll support.
It has no meaning under win64, and win64 .dll support is
not only meant to access winapi functions anyway.
* src/rtl/direct.c
* int -> HB_SIZE
* contrib/hbwin/wapi_wingdi.c
! Fixed return value of WAPI_SELECTOBJECT()
* contrib/hbwin/tests/testdll.prg
+ Minor.
* contrib/hbwin/win_dll.c
! Fixed typo in byref parameter handling. Thanks to
Xavi for noticing it.
* Deleted unused union members from win32 retval support,
renamed the rest.
* utils/hbmk2/hbmk2.prg
+ Added -3rd= option. This is always ignored by hbmk2 and it
allows to store extra, non-hbmk2 information in hbmk2 make files.
F.e.: -3rd=-hbide_friendlyname=MyProject
* harbour/src/rtl/achoice.prg
! fixed typo in one of recent modifications which caused RTE in
ac_test.prg
! fixed yet another typo which removed nMode setting
! fixed to not execute user procedure when no item is active at
startup. This problem was visible in ac_test2.prg
* utils/hbmk2/hbmk2.prg
+ Enabled -implib option in -hbexe (default) mode.
(except for dos/djgpp, pls add it manually)
+ Enabled -map option in -hbdyn mode for some targets where it was missing.
(except for dos/djgpp, pls review this case)
* harbour/src/pp/Makefile
* harbour/src/pp/hbpp.c
! fixed compilation with HB_DYNLIB macro
- harbour/src/vm/maindll.c
- removed unused dummy file
* harbour/src/vm/Makefile
* harbour/include/hbapi.h
+ harbour/src/vm/procaddr.c
+ added hb_vmProcAddress() function
* harbour/include/hbdefs.h
+ added HB_EXPORT_ATTR and HB_IMPORT_ATTR macros - they are always
defined regardless of HB_DYNLIB macro state
* harbour/src/vm/maindllh/Makefile
* disabled HB_DYNLIB
* harbour/src/vm/maindllp/Makefile
+ harbour/src/vm/maindllp/dllpcode.c
+ added new import library for PCODE DLLs. It contains wrappers for
hb_vmProcessSymbols() and hb_vmExecute() implemented in a way
which creates minimal speed overhead.
+ added error reporting (MessageBox()) when redirected functions
cannot be found.
+ added hb_dllGetProcAddress() C function
* harbour/include/hbtypes.h
- harbour/src/vm/maindllp.c
+ harbour/src/vm/maindllp/dllext.c
* moved old wrappers to some of extended and array API functions
into separate file
* updated to use hb_dllGetProcAddress()
- removed functions which should not be used by user code
% cleaned, optimized and added error reporting to function wrappers.
I do not know who chose exported functions but it looks like a
quite random set which should be extended for real functionality.
If someone is interested then he can do that. I updated this file
only for backward compatibility.
Above modifications allows to use PCODE DLLs with any application
also static ones using Harbour compiled without exported symbols.
It's enough to link it with this function:
HB_EXPORT_ATTR PHB_FUNC dll_hb_vmProcAddress( const char * szFuncName )
{
return hb_vmProcAddress( szFuncName );
}
The official form of including above function to final binaries is not
defined yet.
+ contrib/hbide/docs
+ contrib/hbide/docs/idemainpage.html
+ contrib/hbide/docs/interfaceelements.html
+ contrib/hbide/docs/multiviews.html
* contrib/hbide/resources/help.png
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideobject.prg
+ Implemented basics of ib-build help mechanism.
It is working in a limited manner and is scheduled to be
matured in next few days, at-least from operations
point-of-view. QtextBrowser() accepts a sub-set of
html commands and hence is very limited in appearnce.
As we have decided against QtWebkit, this implementation
may not look highly professional, will surely solve
our purpose.
If someone is willing to extend help in this direction,
then following are the guidelines how you should design
html page:
1. Open Qt Creator
2. Create a widget in the designer.
3. Place a QTextBrowser control somewhere.
4. Double-click within the control.
5. A rich-text editing box will appear.
6. Design the page.
7. Click on the "Source" tab at the bottom.
8. Select the whole source with Ctrl+A and copy with Ctrl+C.
9. Create a .html file with notepad, paste the source, and save.
The process is lengthy, but no other html editor solves our
purpose due to limited html tags availability in QTextBrowser.
* include/hbdefs.h
+ Added more info on HB_SIZE/HB_ISIZ future plans.
* contrib/hbmemio/memio.c
* contrib/hbnetio/netiocli.c
- Deleted ( HB_SIZE ) casts in more obscure places.
* utils/hbmk2/hbmk2.prg
+ -hbnolib option is now automatically enabled in -hbdyn mode.
To disable it anyway, -hbnolib- option can be used.
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/idesources.prg
+ Implemented multiple views.
How it works:
* Select "New..." from drop-down menu of "Views" combo-box in toolbar.
* An input dialog opens, provide a useful name,
keep it "one word" if possible
* Press <ENTER> or click "Ok", a blank edit area will come-up.
* Make ususal operations to add/delete/move sources.
* You must be able to see view's name in the status-bar in blue.
* Thus created "view" name will appear in the drop-down list.
* To switch to another view, select it from same drop-down.
* To verify, come out of the hbIDE and re-enter.
* Voila, you have the "views" created.
* "Main" view or say "root" view is always present.
;Please report if anything is missing or could be better.
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideobject.prg
% More ground cover in preperation of multiple views.
Just to versionize changes.
;NOTE: Unreleased memory blocks have reduced considerably
after parent/child relations fix in prev commit.
This implies that in sometime in near future,
memory issue is going to be the ghost of past.
* contrib/hbxbp/xbp.ch
* contrib/hbxbp/xbpparthandler.prg
* contrib/hbxbp/xbpstatusbar.prg
* contrib/hbxbp/xbptoolbar.prg
* contrib/hbxbp/xbpwindow.prg
! Fixed a rare parent/child relation issue in XbpStatusBar()
and XbpToolBar() classes.
+ Implemented Harbour extension:
Method :hbLayout( HBPLAYOUT_TYPE_* )
Currently HBPLAYOUT_TYPE_HORZBOX and
HBPLAYOUT_TYPE_VERTBOX are supported.
This is essentially executed after :create().
When executed class attemps to all children of
it to be laid accordingly, if some are already created.
Any other Xbp part created with "this" object as parent,
that is also laid appropriately.
This reduces a lot of code writing.
Example:
oStatic := XbpStatic():new():create( oDlg,... )
oStatic:hbLayout := HBPLAYOUT_TYPE_HORZBOX
oBtn := XbpPushButton():new( oStatic ):create( ... )
oBtn1 := XbpPushButton():new( oStatic ):create( ... )
oBtn2 := XbpPushButton():new( oStatic ):create( ... )
Then, these buttons will be nicely placed inside
oStatic. No need to go for complex calculations.
* contrib/hbxbp/tests/demoxbp.prg
+ Applied :hbLayout for :drawingArea and tabPages.
* src/vm/runner.c
* src/vm/garbage.c
* src/vm/classes.c
* src/rtl/cdpapi.c
* src/rtl/cdpapihb.c
* src/rdd/dbcmd.c
* include/hbapicdp.h
* include/hbapiitm.h
* include/hbextern.ch
* include/hbdefs.h
* include/hbsetup.h
* include/hbapi.h
- Deleted code guarded with (previously disabled) HB_LEGACY_LEVEL2
* include/rdd.api
* include/clipdefs.h
+ Permanently enabled HB_LEGACY_LEVEL2 related changes.
* contrib/xhb/bkgtsks.c
- Deleted HB_OS_WIN_USED. It wasn't used.
* include/hbapi.h
* src/vm/cmdarg.c
* hb_winmainArgGet() changed to not use Windows types.
This function is declared in hbapi.h and this header
shouldn't depend on windows.h.
* include/hbwince.h
* include/hbsetup.h
* HB_OS_HAS_DRIVE_LETTER is now configured in central
place (hbsetup.h) for WinCE platform also.
* include/hbwince.h
* include/hbdefs.h
* Windows (CE and not-CE) specific declarations moved from
hbwince.h to hbdefs.h.
* include/hbdefs.h
% hbwince.h inclusion now better guarded to not include it
for non WinCE platforms.
+ HB_OS_WIN_USED macro will now autodetected by checking
whether windows.h was included before this header.
This is required for hbwince.h. I don't like it, since
hbapi.h still depends on windows.h for WinCE platform,
which still ties us to unnecessary windows.h inclusion
rules. Rather, hbwince.h should be included directly
by .c files when needed and when HB_OS_WIN_CE is defined.
After all this our little Windows API implementation
for compilers which need it.
* include/hbdefs.h
* include/hbwmain.c
+ hb_winmainArgInit() declaration moved to hbwmain.c, the
only place where this is used.
* Deleted HB_EXPORT from hb_winmainArgInit. Pls speak up if
this is wrong. It's possible to move this back to hbdefs.h,
but parameter types should be changed to ANSI ones.
* contrib/gtwvg/gtwvg.c
* contrib/gtwvg/gtwvg.h
* contrib/gtwvg/wvggui.c
* contrib/gtwvg/wvgcuig.c
* contrib/gtwvg/wvggui.h
* contrib/gtwvg/wvgwin.c
* contrib/gtwvg/wvgutils.c
* contrib/gtwvg/wvgcore.c
* contrib/gtwvg/wvgwing.c
- Deleted HB_OS_WIN_USED. Now it should work without it.
windows.h was already included in non-official method, so
it's now okay also.
* include/hbsetup.ch
+ HB_LEGACY_OFF will also enable HB_LEGACY_TYPES_OFF.
* contrib/hbfimage/Makefile
* contrib/hbfimage/fi_winfu.c
* contrib/hbfimage/fi_wrp.c
+ Forcing HB_LEGACY_TYPES_OFF.
+ Switched to new regular kind of windows.h inclusion.
+ Enabled for *nix platforms. Now it should build w/o problems.
; New regular windows.h inclusion goes as follows:
---
/* After #include "hbapi.h", write this: */
#if defined( HB_OS_WIN )
#include <windows.h> /* or any other Windows API header you may need, in any valid order or combination. */
#endif
---
Old hacky method can now be safely deleted:
'#define HB_OS_WIN_USED' and/or
'#define HB_OS_WIN32_USED'
* contrib/hbbtree/hb_btree.c
! Cleaned '{};' to be '{}' after prev cleanup (';' -> '{};')
* doc/whatsnew.txt
+ Added section for version 2.1.0.
* src/pp/pplib.c
* src/common/hbprintf.c
* src/rtl/gtclip.c
* src/rdd/dbfntx/dbfntx1.c
* src/rdd/dbfnsx/dbfnsx1.c
* src/rdd/dbfcdx/dbfcdx1.c
* src/rdd/dbffpt/dbffpt1.c
* src/compiler/hbpcode.c
* include/hbgtcore.h
* contrib/hbbmcdx/bmdbfcdx.c
* contrib/hbbtree/hb_btree.h
* contrib/hbbtree/hb_btree.c
! Fixed remaining type conversion problems after doing
live testing on win/bcc.
Please test it on other platforms.
* config/rules.mk
+ Enabled HB_LEGACY_TYPES_OFF on default Harbour
builds. This is required to keep new type usage
enforced.
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
* replaced 'unsigned char' with 'HB_UCHAR'
* harbour/src/rtl/cdpapihb.c
* harbour/contrib/hbwin/wapi_shellapi.c
% minor optimization
* harbour/src/vm/maindllp.c
* use already existing HB_MACRO2STRING() macro instead of locally
defined HB_DLLSTR_()
* respect defined but not used so far HB_DLL_NAMEMT and HB_DLL_NAMEMT2
* include/hbdefs.h
+ Changed HB_LONG and HB_ULONG to 'long' and 'unsigned long'
32-bit integer types, the new equivalents of legacy
types LONG and ULONG.
WARNING, INCOMPATIBLE: The legacy meaning of these types
were 64-bit integers. Existing code
should changes these types to HB_VMMAXINT,
HB_VMMAXUINT respectively.
Notice this change is non-delayable and non-togglable, so
you must update your code now.
- Deleted HB_CHAR type.
* HB_UCHAR/HB_BYTE marked with QUESTION.
- Deleted some commented new types.
* contrib/hbbmcdx/bmdbfcdx.c
+ Attempt to sync with DBFCDX RDD source.
Please try to help in this, there are some larger patches
which I didn't apply.
I'd be very nice if someone could take this code and convert
it to a filter RDD instead of current copy+patch approach.
In such case it could even be moved to core.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/idesources.prg
* contrib/hbqt/generator/qt45.qtp
* contrib/hbqt/hbqt.h
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
* contrib/hbqt/qtgui/filelist.mk
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp
+ contrib/hbqt/qtgui/QStackedWidget.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg
+ contrib/hbqt/qtgui/TQStackedWidget.prg
* contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbqt/qth/HBQSyntaxHighLighter.qth
+ contrib/hbqt/qth/QStackedWidget.qth
+ Added one more class in hbQT.
+ Prepared to present multiple-views of tabbed-editor.
The term multiple-view is a bit confusing. The concept
I am thinking of is to present stacked tabs of common interest
together switchable from "Editor" tree-presentation or from
a combo-box containing such different "views".
A better name to this feature is requested.
% Code shifting, normalization.
+ Started to have block(column)copy and paste operation.
But appears it is a huge task, probably leading to
rewriting the whole HBQPlainTextEdit() class.
I must confess that the more I try in the direction,
the more I am in troubles. Reason: Qt does not provide
any inbuild mechanism to achieve it.
* include/hbdefs.h
+ Readded HB_U8 and HB_I8. Currently mapped to HB_BYTE/HB_CHAR,
but it should be used where 8-bitness of a char is a requirement.
F.e. when writing/reading to/from files.
+ HB_CHAR changed from 'char' to 'signed char'. This is brand
new type, not yet used in Harbour code, so it's safe.
For char with non-guaranteed signedness, ANSI type 'char'
should be used.
* HB_UCHAR is now a synonym for HB_BYTE. It's now also legacy.
* HB_SCHAR is now a synonym for HB_CHAR. It's now also legacy.
; TODO: Replace all HB_SCHAR with HB_CHAR and HB_UCHAR with HB_BYTE,
and move the old types to compatibility status.
* ChangeLog
! Fixed date in my today's entries.
* bin/hb-mkimp.bat
+ Added support for Apollo 7.
* utils/hbmk2/hbmk2.prg
+ Accepting '&&' and '||' as 'and' and 'or' operators.
* examples/hbsqlit2/hbsqlit2.hbp
* examples/hbapollo/hbapollo.hbp
+ HB_INC_* -> HB_WITH_*
* examples/hbapollo/apollo.c
* examples/hbapollo/hbapollo.hbc
+ Added support for Apollo 7.
+ Version 6.1 can now be selected by defining HB_WITH_APOLLO_VER61 envvar.
* examples/gtwvw/gtwvw.c
* HB_LONG -> HB_MAXINT
* include/hbdefs.h
+ Changed types to have our "new" types as primary
ones, and old types as legacy ones. This also means
that all old/legacy types are now based on new types.
+ Added HB_LEGACY_TYPES_OFF #define, with which you can
disable all legacy types for testing purposes.
This mode will become the default in the future,
so start to prepare for the new types.
; NOTE: Harbour and 3rd party components can't be compiled
with this switch enabled yet, since there is still some
type conversions tasks left. For now its purpose
is to look for remaining legacy types in Harbour code.
* include/hbvmpub.h
* BYTE -> HB_BYTE
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
+ Implemented <Line Move Up>, <Line Move Down> - Current Line
If the line is already selected, selection is cleared.
! Slight change in <Edit> main-menu drop-down.
<Line...> and <Block...> sub-menus now club the
line and block actions.
; Please test.