* contrib/hbqt/tests/draggable.prg
+ Added: a draggable Harbour Logo without titlebar.
* contrib/hbqt/tests/testres.prg
! Rewritten: per current hbQT implementation.
; Both are supplied by Bacco, thankyou.
* contrib/hbrun/hbrun.hbp
+ build hbrun in -shared mode if HB_BUILD_CONTRIB_DYN is
enabled. This means that new dynamic loading feature
will work out of the box if Habrour is build using
HB_BUILD_CONTRIB_DYN=yes.
* include/Makefile
* include/common.ch
+ include/hbhash.ch
+ moved hash-related constants from common.ch to new hbhash.ch
; common.ch include hbhash.ch for compatibility, protected by
HB_LEGACY_LEVEL4 so it will stop being included automatically.
If you use HB_HAUTOADD_* or HB_HMERGE_* constants, make sure
to #include "hbhash.ch".
* contrib/hbrun/headers.prg
* utils/hbmk2/hbmk2.prg
+ include hbhash.ch
* src/rdd/hbsix/sxini.prg
* use hbhash.ch instead of common.ch
* contrib/hbqt/tests/qtrevamp.prg
- Removed: note on returned QAction if it is not of same type
as stated in previous commit. New hbQT is always returning
NIL if a valid Qt pointer could not been obtained. This holds
true for all type of objects. Actually I did not test it
along these lines. So with __HBQT_REVAMP__ there is no need
of :isValidPointer() any more, just test a returned object
against NIL.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* Struggled: to set pointer arithmatic to be used properly.
Also at times Qt returns different type instead of one
defined in documentation, but referred in description part only.
For example, a popup menu returns null instead of QAction if
no item is selected or user pressed escape. This is not
possible to manage such instances in present engine. For
this reason only :isValidPointer() method was introduced.
In REVAMPED hbQT this is different. So to test it, the only
way to ascertain is if the Harbour class name is of same type.
* contrib/hbqt/tests/qtrevamp.prg
+ Added: popup menu option to demonstrate what happens
at the background, if tracelog is activated.
; NOTE: I am not from C or C++ background at all, so some things
may not be as elegant as those should be when viewed from
source point of view. Also trace entries are left in the
code, though under DEBUG mode, which will be cleaned once
code settles down.
* contrib/make.hb
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.prg
+ use JSON format instead of hand-rolled microformat for
--hbinfo output (used in Harbour SVN for communication
between contrib make.hb script and hbmk2)
INCOMPATIBLE. Update your system in the unlikely event
you use --hbinfo output.
+ contrib/hbrun/extdyn.prg
+ contrib/hbrun/extdynpl.hb
+ contrib/hbrun/extstat.prg
- contrib/hbrun/pullext.prg
- contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* internal cleanup, renames and restructuring
+ findinpath function to accept arrays
+ loaded dynamic extensions are now searched in curdir,
hbrun dir and PATH on non-*nix and LD_LIBRARY_PATH on *nix
systems
! fixed findinpath always returning success
* renamed some stuff recently introduced:
HBRUN_DYN -> HBRUN_EXT
hbrun.dyn -> hbrun.ext
dyn plugin -> ext plugin (f.e. ext.list, ext.load, ext.unload)
; all non-core modules are called "extensions", the ones
linked at build time are called "static extensions", ones loaded
dynamically are called "dynamic extensions". Console command
plugins are called "plugins". It's still not final.
* utils/hbmk2/hbmk2.prg
! misplaced comment
* src/pp/ppcore.c
+ accept and ignore '#require' PP directive
* contrib/hbrun/hbrun.prg
* utils/hbmk2/hbmk2.prg
+ use '#require "name"' to request modules.
(This replaces former '//#require', '//#pragma module' and
'*#pragma module' directives.)
* utils/hbmk2/hbmk2.prg
+ add .hbc automatically for '#require' directives (experimental)
; TODO: to work also in non-incremental mode and to work
reliably in -inc mode. To not impact performance, the
compiler could do a callback when #require is found,
hbmk2 could find the .hbc and extend compiler options
dynamically.
! fixed finding .hbc files that were detected automatically
* contrib/hbrun/hbrun.1
+ added my name as author
* contrib/hbrun/hbrun.prg
* contrib/hbrun/pullext.prg
+ changed to use '//#require' syntax.
! filter empty dynamic modules
+ display error when trying to load dynamic modules in static
hbrun build
* include/hbver.ch
* src/rtl/version.c
+ added hb_Version( HB_VERSION_SHARED ) to query whether
the app was built in shared mode or static.
* contrib/hbrun/hbrun.prg
+ added experimental script syntax to dynamically load modules:
--- testcurl.hb
*#pragma module "hbcurl"
? curl_version()
---
; QUESTION: Is it possible to allow unknown #pragmas so above
comment-hack could be avoided? ATM harbour compilers
issues and error whenever an unknown pragma is found.
+ contrib/hbrun/pullextp.hb
* contrib/hbrun/hbrun.hbp
* contrib/hbrun/hbrun.prg
* contrib/hbrun/plugins.prg
* contrib/hbrun/pullext.prg
+ added experimental support for dynamic loading of
modules into hbrun. Modules can be speficied using
HBRUN_DYN envvar using space delimited list, or
using text file named 'hbrun.dyn' in the same dir
as hbrun, each line containing module name, lines
beginning with '#' are considered comments. Modules
can be loaded/unloaded from the console using
'dyn.load <list>', 'dyn.unload <list>' commands
and listed using 'dyn.list'. F.e.: 'dyn.load hbgd'
Names, UI and everything else may still change.
Important: hbrun must be built in -shared mode
for this to work, notice that by default it's built
in -static mode ATM. Loadable modules can be created
using HB_BUILD_CONTRIB_DYN=yes Harbour build-time
option. Headers belonging to dynamic modules are
not available in embedded for, so they need to
be present on disk in current dir.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: Harbour way of looking at hbQT. QAction has been controlled,
which has facilitated to achieve the desired behavior.
+ contrib/hbqt/tests/qtrevamp.prg
+ Added: demo source to review if __HBQT_REVAMP__ protocol is
upto Harbour expectations. I have added few notes here and there
so that user is aware of some sublities.
; NOTE: please add to qtrevamp.prg any functionality to test all
parts of Qt which may not be confirming to Harbour vision,
and report back on the list.
* src/rtl/radiogrp.prg
% deleted '#include "common.ch"'
* contrib/hbtip/sessid.prg
! playing it safe: using simple IF/ENDIF instead of HB_DEFAULT()
on a multi-type variable
; NOTE: One more implication of HB_DEFAULT vs. DEFAULT ... TO ...
is that the default expression is always evaluated with
the former.
* contrib/hbqt/hbmk2_qt.hb
! Tweaked: ( QString * ) casted argument to be compilable.
* contrib/hbqt/qtgui/qth/QFileDialog.qth
+ Enabled: getOpenFileName() etc. methods which we commented out because
of lack of knowledge how those should been handelled.
* contrib/hbqt/hbmk2_qt.hb
! Guarded: qth_is_QObject() function under __HBQT_REVAMP__.
This facilitates to change how we would like to use this
construct in the future. Also there is a lot which may be
added to this protocol, apart from only detecting if a class
is QObject() derived, and hence is subject to change.
We will do what is proposed after all is settled on new
protocol.
- Removed: QIcon() hack which was exploiting hbqt_par_Qstring()
usage. Also it was not per Qt documantation. Now anywhere
an icon is needed, it has to be constructed explicitily
with a call to QIcon( cFileName ). Earlier QIcon() was passed
as only a <cFileName>
INCOMPATIBLE: 3rd party libs have to modify their code.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.qth
* contrib/hbqt/qtgui/qth/QClipboard.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QDropEvent.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QGraphicsSceneDragDropEvent.qth
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* contrib/hbqt/qtgui/qth/QPushButton.qth
- Removed: <CLASS> PaintEvent = </CLASS> token.
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot firing objects.
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_init.cpp
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
+ Implemented: _HBQT_REVAMP__ specific signal/slot/events management.
; NOTE: hbIDE is almost running under __HBQT_REVAMP__ methodoly
with signal/slots/events catched anfired properly.
This implementation is subject to a lot of improvements
but at of current shows up a good promise to achieve
the end-results soon.
* utils/hbmk2/hbmk2.prg
+ use HB_DEFAULT()
% deleted common.ch
* contrib/hbrun/hbrun.prg
! fixed typo causing scripts being found in PATH to fail
to open.
* src/3rd/zlib/Makefile
* src/3rd/zlib/*
* updated to 1.2.7 from 1.2.6. Using 3rdpatch.hb and .dif reapplied manually.
* src/rtl/hbzlibgz.c
+ HB_GZOPEN() updated to use new in zlib 1.2.7 wide gzopen()
on Windows. It means now it supports unicode filenames.
* contrib/hbmzip/3rd/minizip/zip.c
* updated manually from zlib 1.2.7 (two warnings fixed)
* contrib/hbformat/hbfmtcls.prg
+ use harbour.hbx as proper-casing database (instead of
incomplete local list of Harbour functions)
+ completed list of IS*() macros
* contrib/hbziparc/ziparc.prg
! fixed for unicode in another location
% optimization to prev unicode fix
* contrib/hbtip/thtml.prg
! fixed chr() usage for unicode mode
* formatted (hbformat and manual)
% deleted excessive parantheses
* contrib/hbtip/cgi.prg
* contrib/hbtip/httpcli.prg
* contrib/hbtip/client.prg
* contrib/hbtip/tests/base64.prg
! fread()/fwrite() calls fixed for unicode
! fixed some more anomalies, like wrongly checkingg fwrite() for
negative result, calling fread() with 4 parameters, passing
buffer by reference to fwrite(), minor optimizations and formatting.
* contrib/hbtip/url.prg
* formatting
; build tested only
* contrib/hbqt/qtcore/hbqt.h
! deleted hbqt_par_QString() macro. It was not translating
between HVM CP, so it was wrong.
; TOFIX: HBQSCINTILLA is broken now, because it's still used there.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: requested by the group protocol - to handle
parent-child relations internally by hbQT leading not
to hold everything in scoped variables. All objects will
behave accordingly except QAction() which is never get a
parent accoring to Qt docs.
; NOTE: will explain this in detail in reply to the message
of this commit.
* contrib/hbqt/hbmk2_qt.hb
! Changed: hb_itemReturn() => hb_itemReturnRelease() to honor
Harbour variable scoping protocol. We need another method to
keep it alive inside new methodology.
+ contrib/hbqt/qtcore/hbqt_destroyer.cpp
+ contrib/hbqt/qtcore/hbqt_destroyer.h
+ Contains: HBQDestroyer() a generic class whose sole purpose
is to catch "destroyed()" signal of any QObject and then
forward it to new engine to delete harbour object.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: "destroyed()" signal on QObject() derived classes.
* contrib/hbqt/qtcore/hbqt_misc.prg
+ Added: #define __HBQT_REVAMP__ then commented out.
Activated: destructor guarded against above define.
* contrib/hbqt/qtcore/hbqtcore.hbm
+ Added: new sources.
; NOTE: this implementation prevents double freeing of Qt objects
while keeping Harbour variable's scope protocol intact. So
if Qt deletes an object, Harbour object is also cleared
automatically. The same applies if Harbour variable goes
out of scope, Qt object is deleted, which is safe, because
Qt allows it.
Now no GPF on exit on any demo, including hbIDE, with
__HBQT_REVAMP__ enabled.
* contrib/hbqt/qtgui/qth/QCalendarWidget.qth
* contrib/hbqt/qtgui/qth/QCheckBox.qth
* contrib/hbqt/qtgui/qth/QCloseEvent.qth
* contrib/hbqt/qtgui/qth/QCommandLinkButton.qth
* contrib/hbqt/qtgui/qth/QCompleter.qth
* contrib/hbqt/qtgui/qth/QConicalGradient.qth
* contrib/hbqt/qtgui/qth/QDateEdit.qth
* contrib/hbqt/qtgui/qth/QDateTimeEdit.qth
* contrib/hbqt/qtgui/qth/QDeclarativeContext.qth
* contrib/hbqt/qtgui/qth/QDial.qth
* contrib/hbqt/qtgui/qth/QDialog.qth
* contrib/hbqt/qtgui/qth/QDockWidget.qth
* contrib/hbqt/qtgui/qth/QDoubleSpinBox.qth
* contrib/hbqt/qtgui/qth/QDrag.qth
* contrib/hbqt/qtgui/qth/QErrorMessage.qth
* contrib/hbqt/qtgui/qth/QFileSystemModel.qth
* contrib/hbqt/qtgui/qth/QFocusFrame.qth
* contrib/hbqt/qtgui/qth/QFontComboBox.qth
* contrib/hbqt/qtgui/qth/QFontMetrics.qth
* contrib/hbqt/qtgui/qth/QFontMetricsF.qth
* contrib/hbqt/qtgui/qth/QGroupBox.qth
* contrib/hbqt/qtgui/qth/QInputDialog.qth
* contrib/hbqt/qtgui/qth/QItemSelection.qth
* contrib/hbqt/qtgui/qth/QKeySequence.qth
* contrib/hbqt/qtgui/qth/QLCDNumber.qth
* contrib/hbqt/qtgui/qth/QListView.qth
* contrib/hbqt/qtgui/qth/QMatrix.qth
* contrib/hbqt/qtgui/qth/QMessageBox.qth
* contrib/hbqt/qtgui/qth/QMovie.qth
* contrib/hbqt/qtgui/qth/QPainterPath.qth
* contrib/hbqt/qtgui/qth/QPixmap.qth
* contrib/hbqt/qtgui/qth/QProgressBar.qth
* contrib/hbqt/qtgui/qth/QProgressDialog.qth
* contrib/hbqt/qtgui/qth/QRadioButton.qth
* contrib/hbqt/qtgui/qth/QSpacerItem.qth
! Fixed: constructors.
This has been a tidious process and I could have
broken something in the process, though, all demoes
and hbIDE is working fine. If you find some inconsistency,
please shout. Also if someone can overlook the .qth's
for remaining files yet needs the constructors reworked,
it will be a great help.
* contrib/hbide/hbqtoolbar.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idethemes.prg
! Changed: a little to pass correct parameters to methods
as per the changes in constructors.
; NOTE: now hbIDE neither throws any GPF on exit nor reports
"object destructure failure : reference to freed block"