* contrib/hbide/ideuisrcmanager.prg
+ Implemented: the refreshed .ui in "UI Src Manager" positions
its current object and action exactly in same state it
was before editing in "cls_*ui.prg" was intiated and saved.
Now, it is true two-way editing of class source; changes
in one is reflected instantly in the other; a great
productivity boost.
* contrib/hbide/idemain.prg
* contrib/hbide/idesources.prg
* contrib/hbide/ideuisrcmanager.prg
+ Implemented: click on a .ui note in <Projects Tree> will open
the <UI Src Manager> dock containing .ui widget.
+ Implemented: modifying a "cls_*ui.prg" in the editor will
refresh the related .ui in the "UI Src Manager> if it is already
opened there. This facilitates the 2-way editing of event methods.
* contrib/hbide/ideuisrcmanager.prg
* Completed: minimum required components to materialize some
project based on this protocol.
+ contrib/hbqt/tests/cls_dbstruct.prg
+ contrib/hbqt/tests/dbstruct.prg
+ contrib/hbqt/tests/dbstruct.ui
+ contrib/hbqt/tests/ideui.hbp
+ Added: a small project where cls_dbstruct.prg is created by
hbIDE's UI Src Manager.
; Note: event is define for only first button. Try with other
buttons yourselves and come-out with suggessions.
* harbour/contrib/sddpg/sddpg.c
* harbour/contrib/sddsqlt3/sddsqlt3.c
* harbour/contrib/sddmy/sddmy.c
* harbour/contrib/sddfb/sddfb.c
* harbour/contrib/sddodbc/sddodbc.c
* harbour/contrib/sddoci/sddoci.c
* removed redundant fieldname conversions
; I left one TOFIX note in sddfb.c - It's not critical but I'd like
to ask someone with FB experience to verify it.
* harbour/package/harbour.spec
! added missing attribute for harbour.ld.conf file
! added optional hbhttpds library
* harbour/contrib/hbct/envparam.c
* harbour/contrib/hbct/dummy.c
* harbour/contrib/hbct/hbct.hbp
* harbour/contrib/hbct/hbct.hbx
+ added ENVPARM() - now it's implemented for all platforms but
it should be tested on different *nixes - some of them may not
support 'char * environ' public variable
* harbour/contrib/xhb/hbserv.c
* added missing dummy functions in DOS builds
* harbour/utils/hbmk2/hbmk2.prg
! do not set binding to hb_forceLinkMainWin() when -nohblib and -gui
switches are used together
* harbour/include/hbapicdp.h
* harbour/src/rtl/cdpapi.c
+ added new C functions hb_cdpnDupUpper(), hb_cdpnDupLower(),
hb_cdpnDup2Upper() and hb_cdpnDup2Lower().
They should be used instead of hb_strUpper() and hb_strLower()
functions because they can work well with CPs where upper and
lower characters uses different number of bytes, i.e. UTF8 has
such characters.
* harbour/src/rtl/strcase.c
* harbour/src/rtl/fstemp.c
* harbour/src/rtl/filesys.c
* harbour/src/rdd/dbfcdx/dbfcdx1.c
* harbour/src/rdd/hbsix/sxsem.c
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
* harbour/src/rdd/hbsix/sxutil.c
* replaced obsolete hb_charUpper() function with hb_cdpnDupUpper()
* harbour/contrib/sddpg/sddpg.c
* harbour/contrib/sddsqlt3/sddsqlt3.c
* harbour/contrib/sddmy/sddmy.c
* harbour/contrib/sddfb/sddfb.c
* harbour/contrib/sddodbc/sddodbc.c
* harbour/contrib/sddoci/sddoci.c
! fixed memory leaks
* replaced obsolete hb_strUpper() and hb_strLower() functions with
new hb_cdpnDup*Upper()/hb_cdpnDup*Lower() ones.
; TODO: these conversions are redundant - I'll remove them in next
commit.
* utils/hbmk2/hbmk2.prg
! in '.hbc not found' messages show .hbc reference without
rebased path (=as it appears in .hbp file or on cmdline),
after macro expension.
* contrib/hbide/ideuisrcmanager.prg
- Deleted: hack "HB_QTPATH" embedding in batch file.
I was wrong in my assertion that fired process does not take
over current process's enviroment.
* contrib/hbide/ideenviron.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idemain.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideuisrcmanager.prg
! Improved: how Harbour's root path is detected for .ui Source Manager.
This is tried in the order below:
1. If any hbIDE specific environment protocol is used.
( It is hbQT specific or not is not verified so can fail )
2. If entry is present in <Setup><hbIDE Setup><Paths><Harbour Root>.
( The most preferred way to avoid any ambiquity )
3. If HB_INSTALL_PREFIX env variable is detected.
( Covers Harbour Developers )
4. If "harbour.exe" or "harbour" file is detected alongside hbide.exe.
( Covers users of Harbour Nightly Builds )
! Improved: how Qt path is detected, needed for uic.exe.
HB_QTPATH is detected and then populated in the temp batch file.
; This commit is primarily focussed on tool detection.
Please try again as per above specifications.
* contrib/hbide/hbide.hbp
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideenviron.prg
* contrib/hbide/idemain.prg
* contrib/hbide/ideobject.prg
+ contrib/hbide/ideuisrcmanager.prg
+ Started: implementation of IDE's next evolution step to
write the upper level code to manipulate Qt Designer
generated ".ui" dialogs.
HOW IT WORKS
1. Click on "UI Source Manager" icon or "View" menu option.
Will open a dock widget at the right docking area.
2. Drop a .ui ( take one from hbide included .ui's ) onto it.
The dialog will show up.
3. Click on "Build Source" icon on top-toolbar of "UI Src Manager"
dock widget. Notice that a new editing instance is initiated
on the current panel with source file prefixed with "cls_"
and suffixed by .ui's filename. For example, if you have
dropped "dbstruct.ui" then source will be "cls_dbstruct.prg".
This .prg will reside in the same folder where .ui is.
4. Examine the class code contained in the .prg.
5. Click on various controls and see a focus rectangle is placed
around that control. Also viaualize the status-bar.
6. If the control happens to be of type QToolButton or QPushButton
( proof of concept is build for these controls only, yet ),
you will see two entries in lower-left tree view.
7. Click on "Activated" tree-node and see the right-side editor
comes into focus. Write some code in this editor, and then
click on some other control or other tree-node.
8. Visualize that editing instance containing "cls_*ui.prg" will
be refreshed and will contain some additional methods.
9. Now change something in the source itself, save, and come out,
then re-drop the same .ui. See that changes will be reflected
in methods represented in the tree-nodes.
PLAY AROUND. Concept is in the making and have to go a long way,
but surely it has a potentiality to reach a mile-stone.
Your suggestions are welcome.
+ package/harbour.rb
+ experimental (and untested) Homebrew formula
* debian/dirs
* debian/rules
+ added contrib dir (untested)
* utils/hbmk2/hbmk2.prg
* autodetect contrib/addons dirs at
/usr/local/share/harbour/ and /usr/share/harbour/
* config/global.mk
* changed contrib location on *nix systems to <root>/share/harbour/contrib
unless the <root> is /opt/harbour.
* contrib/hbct/hbct.hbp
* contrib/hbwin/hbwin.hbp
* contrib/xhb/xhb.hbp
+ install .h headers to contrib dir only (and not anymore to
the central Harbour include dir). This means that 3rd party
or user code that uses these C-level contrib headers will now have
to add contrib package using <contrib>.hbc hbmk2 option instead
of manual -l options. INCOMPATIBLE.
* contrib/hbpost.hbm
+ install .hbx files to respective contrib dirs.
; TODO: delete all '-instfile=inc:' options from contrib .hbp files
so that contrib headers are no longer duplicated in central
Harbour include dir. This WILL BE INCOMPATIBLE change requiring
users to use <contrib>.hbc files to add contrib packages
to their projects (as opposed to manual -l options).
* contrib/make.hbs
* contrib/hbpost.hbm
+ implemented contrib-specific public file copy process using
standard hbmk2 logic. (with very minor help from make.hbs)
* contrib/make.hbs
* cleaned up previously added logic, then disabled the whole
thing, now replaced by standard hbmk2 logic.
* config/postinst.hbs
* minor fmt
; TODO: replace global contrib-specific file rules with contrib-local
ones. so that unnecessary files won't be copied and any
extra/special files will be.
* package/winuni/mpkg_win_uni.bat
- deleted windows-only contrib specific file installation
procedure. now done by contrib/make.hbs.
; it also means that contrib-specific public files are
now included in non-unified installation packages,
created using HB_BUILD_PKG=yes.
; TODO: modify *nix package creation scripts to include
/opt/harbour/contrib in the package.
* config/global.mk
* INSTALL
* changed HB_INSTALL_IMPLIB default to 'yes'. This means
that now the implibs for 3rd party .dlls will be included
in install packages, including the nightly/stable releases.
This is theoretically wrong solution and bad practice, but
to me real life shows that users don't have a clue about
implibs and how to generate them and it also requires users
to build Harbour themselves if they want to use any of the
many libs with implib dependencies, instead of being able
to use binary releases.
One big WARNING applies (quote from INSTALL):
"Also note that the generated implibs will require .dlls
compatible with the ones used at build time."
IOW you must be using the same (or binary compatible)
.dll as was used at built time. If you use something else,
you still will have to generate the implib yourself or
change your .dll version according to above.
[I hope Marek Paliwoda doesn't mind.]
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
* changed #include filename references to _CASE-SENSITIVE_. This
is to ensure and enforce that .hbs scripts and hbmk2 plugins are
created in portable form so f.e. once developed on a win
system, they won't crash on a *nix system.
INCOMPATIBLE: Change all your #include references to exactly match
casing of the filename. For Harbour headers, this
means plain lowercase, so f.e. '#include "FileIO.ch"'
is wrong, '#include "fileio.ch"' is right.
* config/global.mk
* minor
* contrib/make.hbs
+ added installation support of contrib specific public files
(.hbc, .hbs, local headers, .def files, readmes and tests)
* config/global.mk
* set install destination for contrib specific public files to
<root>/contrib for non-*nix and /opt/harbour/contrib for *nix
systems.
* utils/hbmk2/hbmk2.prg
* changed HB_INSTALL_CONTRIB to HB_INSTALL_ADDONS
F.e.:
export HB_INSTALL_ADDONS=/usr/local/share/harbour/contrib:/usr/local/share/harbour/addons
* utils/hbmk2/hbmk2.prg
+ support for HB_INSTALL_CONTRIB envvar to specify dir(s)
of contribs/addons for .hbc autofind purposes. Accepts
multiple dirs. F.e.:
export HB_INSTALL_CONTRIB=/usr/local/share/harbour/contrib:/usr/local/share/harbour/addons
Experimental.
* utils/hbmk2/hbmk2.prg
* tuned Harbour root autodetection code to avoid corner
case where another Harbour installation is present one
or two dir levels upper in the tree.
Regressions are possible. Please test.
* utils/hbmk2/hbmk2.prg
+ show .hbp file reference when .hbc is not found
* config/postinst.hbs
* corrected double dirseps in one case.
* contrib/hbqt/qtgui/hbqtgui.hbx
* contrib/hbqt/qtgui/qth/filelist.hbm
! disabled QDeclarative* wrappers until reported link
problems are fixed.
This allows HB_BUILD_CONTRIB_DYN=yes to work again.
* contrib/hbqt/hbqt.hbc
* contrib/hbqt/hbqt_all.hbp
! disabled hbqtsql until link problems (missing functions
and wrappers) are fixed.
This allows HB_BUILD_CONTRIB_DYN=yes to work again.
* contrib/hbxbp/hbxbp.hbp
* contrib/hbxbp/hbxbp.hbc
* include hbqt.hbc instead of relative references to
hbqt sublib .hbcs. This means hbxbp now includes all
hbqt sublibs.
* contrib/hbxbp/hbxbp.hbc
* deleted reference to qtqtc.hbc.
* contrib/hbide/hbide.hbp
+ removed relative path from .hbc references.
* hbqt sublib reference replace with hbqt.hbc
* contrib/hbxbp/hbxbp.hbp
* contrib/hbide/hbide.hbp
- deleted -prgflag=-D_HB_TR_NOALWAYS_
* contrib/sddpg/sddpg.hbp
* contrib/sddpg/sddpg.hbc
* contrib/hbziparc/hbziparc.hbp
* contrib/hbziparc/hbziparc.hbc
* contrib/hbhttpd/hbhttpd.hbc
* contrib/hbhttpd/hbhttpds.hbp
* contrib/hbhttpd/hbhttpds.hbc
* contrib/gtwvg/gtwvg.hbc
* contrib/gtwvg/gtwvg.hbp
* contrib/sddsqlt3/sddsqlt3.hbp
* contrib/sddsqlt3/sddsqlt3.hbc
* contrib/sddmy/sddmy.hbp
* contrib/sddmy/sddmy.hbc
* contrib/xhb/xhb.hbc
* contrib/xhb/xhb.hbp
* contrib/sddfb/sddfb.hbp
* contrib/sddfb/sddfb.hbc
* contrib/sddodbc/sddodbc.hbp
* contrib/sddodbc/sddodbc.hbc
* contrib/hbgd/hbgd.hbc
* contrib/hbgd/hbgd.hbp
* contrib/sddoci/sddoci.hbc
* contrib/sddoci/sddoci.hbp
* contrib/hbtip/hbtipssl.hbc
* contrib/hbtip/hbtipssl.hbp
* contrib/hbtip/hbtip.hbc
+ removed relative path from .hbc references from contrib area
except: hbqt related cases, which is more complicated
and hbmk.hbm files in test dirs (to avoid this extra point
of failure for now).
; path-free reference to hbc files was pioneered by hbrun
and it works on all systems (except one or two, yet to
be determined why).
* contrib/hbmysql/utils/hbmk.hbm
* contrib/hbnetio/utils/hbnetio/hbnetio.hbp
* contrib/hbnetio/utils/hbnetioq/hbnetioq.hbp
* contrib/hbformat/utils/hbformat.hbp
+ removed relative path from .hbc references
* utils/hbmk2/hbmk2.prg
+ show warning when referenced .hbc file could not be found
* contrib/hbqt/qtcore/qth/QSignalMapper.qth
- Commented-out: QWidget specific method calls.
This is in accordance of our goal to keep modularity of
HbQt libraries intact.
* harbour/include/hbcompdf.h
* harbour/src/compiler/hbmain.c
* harbour/src/compiler/hbcomp.c
* harbour/src/compiler/harbour.y
* harbour/src/compiler/harbour.yyc
! fixed compile time GPF exploited by strings used in CASE values
of SWITCH statement compiled with active TEXHIDDEN pragma.
Warning: strings used in such context (CASE values) are not encrypted
in generated code, i.e. ".jpeg", ".jpg", ".png" in this code:
SWITCH hb_FNameExt( cFileName )
CASE ".jpeg"
CASE ".jpg"
CASE ".png"
show_pict( "Article picture", cFileName )
ENDSWITCH
* harbour/contrib/hbct/ctwin.c
* harbour/contrib/hbct/ctwin.h
* harbour/contrib/hbct/ctwfunc.c
* modified CTWLASTKEY() to set optionaly last key value
TODO: finish support for KEYREAD()/KEYSEND()
* harbour/src/3rd/zlib/zutil.h
* removed not longer necessary workaround for fdopen(),
current ZLIB do not use stdio file functions
* harbour/src/3rd/zlib/zlib.dif
* rediffed with ../../../bin/hb3rdpat.hbs -rediff
* harbour/src/3rd/zlib/gzlib.c
! do not use _lseeki64 in MinGWCE builds - such function does not
exists in CTRL
* harbour/contrib/3rd/sqlite3/sqlite3.c
! fixed declaration of 64bit integer constant value in WinCE builds
; TOFIX: in WInCE builds the following error is generated:
implicit declaration of function 'osUnlockFileEx'
and of course such functions does not exists (it's internal
SQLITE3 macro)
* harbour/contrib/3rd/sqlite3/sqlite3.hbp
! fixed declaration of _WIN32_WCE macro - it should be set to
WinCE API version number.
* harbour/contrib/3rd/sqlite3/sqlite3.dif
* rediffed with ../../../bin/hb3rdpat.hbs -rediff
* harbour/contrib/hbzebra/qrcode.c
* pacified warning