* contrib/hbqt/qtgui/hbqtgui.ch
+ Added: QSettings_* and QIODevice_* constants.
+ contrib/hbide/env
+ contrib/hbide/env/pritpalsfav.ide
+ contrib/hbide/settings.qrc
+ Added: new folder containing HbIDE settings embedded as a resource.
Only one environment is added, quickly, to review its usefulness.
* contrib/hbide/findreplace.prg
! Formatting.
* contrib/hbide/actions.prg
* contrib/hbide/hbide.hbp
* contrib/hbide/main.prg
* contrib/hbide/misc.prg
* contrib/hbide/saveload.prg
* contrib/hbide/tools.prg
+ Implemented: Multiple-view of HbIDE's application window.
The views take care of toolbars associated with mainwindow and
all the docking widgets. The view remembers their state and dimensions,
whether these are visible, floating, etc.
; How To:
1. Click on <Main Toolbar><HbIDE Views> icon.
2. Opens a FileSave dialog, provide a location and name,
your current view will be saved.
3. Click on <Main Toolbar><HbIDE Views> icon's drop-down menu.
4. You can see, beside others, an entry <Pritpals Favourite>.
5. Click on it and see your view is changed instantly.
6. Repeat #4 and click on the entry representing your view
saved via #2.
7. And you are back with your original settings.
These views are switchable with a click of a key. This also
covers a gread demand from users where it is asked that HbIDE
should be like, Starter, Advanced, Professional, Enterprised, etc.
Or where desk-top territory is compalined. For example, activate
IdeDBU and then make it floatable, adjust windows size to your
taste, save this view. Then at single click you can brought it back.
This is a big productivity boost, believe me.
; REQUEST: send me the useful views you employ in day-to-day needs
and if deemed fit will be included in HbIDE itself for
others to be benefitted.
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h
% An exhaustive commit focused on selctions management,
specially column selection. It also fixes the regression
injected in last commit where I broke few here-and-theres.
The changes are so exhaustive that I lost many to document,
but following are the main points you should know:
1. + Tripple click selection of a line.
Unlike other editors, HbIDE implements tripple-click
like this: double-click selects a word; do-not move
the cusor, click once, line is selected. Standard editors
measure the time between clicks, HbIDE measure the position
of click. This way user is not constrained to quickly
inject the third click. However, double-click carries
standard behavior.
2. + Shift+TAB now behaves as expected. It removes preceeding
<nTabSpaces>. <nTabSpaces> can be configured via
<Setup><Setup HbIDE>. Defaults to 3.
3. + TAB and Shift+TAB are also available in column selection.
4. + Ctrl+Left|Right, TAB/Shift+TAB and Backspace moves the
selection cursor without affecting selected rows in
column-selection mode when starting and ending columns are the
same; which eventually becomes the multiline editing cursor.
In practice there are lot many times when moving to
another column without leaving the multi-line selection
is needed.
5. + Enabled the physical cursor at all times, no matter in
which selection mode the cursor is. Earlier it was disabled
in column selection mode.
6. + TAB keys management is brought to PRG level instead of C++.
This has made it possible to have them working under
multi-line block editing mode ( extended column-selection mode).
;; A good amount of efforts have gone in this direction, and
as I am into it deep, please forward your suggessions as to
how the various behaviors should be.
* contrib/hbgt/doc/en/hbgt.txt
* doc/en/gtslang.txt
* extras/gfspell/spell.prg
* tests/mousetst.prg
* tests/testdbf.prg
* tests/testrdd2.prg
* contrib/hbmisc/numtxthu.prg
* contrib/hbqt/tests/wvtqt.prg
* contrib/hbxbp/tests/wvtqt.prg
* include/hbapigt.h
* tests/db_brows.prg
* tests/gtchars.prg
* tests/tb1.prg
* tests/testbrw.prg
* tests/wcecon.prg
! fixing high 8-bit chars (using various methods)
(finished)
; NOTE: Some sources have been converted to UTF-8,
so from now on make sure to use an UTF-8 enabled
editor and use only UTF-8 chars when typing
non-ASCII (7-bit) characters.
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
! Fixed: clicking on selected area was not removing the selection.
Was ever waiting the user if he/she will drag the text.
Now only one chance of dragging is available, otherwise
selection will disappear.
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideprojectwizard.prg
* contrib/hbide/ideuisrcmanager.prg
! Optimized: character constants to numeric ones.
Must speed up the user experience.
* contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.h
+ Implemented: any #define with front and back as two underscores
will be displayed in different color in HbIDE. Like..
#define __this_is_some_constant__ 212
* contrib/hbide/projectpropertiesex.ui
! HBMK2 -> hbmk2 to be consistent with everywhere else
* contrib/hbqt/hbmk2_qt.hb
! fixed misleading RTE subsystem
* include/hbver.ch
+ added HB_VERSION_MAX_ to denote the highest valid
paramater. Please note that the valid values start
at 0
* contrib/hbqt/hbmk2_qt.hb
- Reverted: a minor change in logic which produced regression at a
particular .ui.
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idesources.prg
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
+ Enhancements:
- tremendous speed improvements while editing and selecting.
- fixed many small but important artifacts about column-selections.
+ added bookmark icon on the statusbar too. It makes it convinient
to manipulate them in speedy way.
- Lost: number of characters selected. It has been a speed breaker.
- TODO: cleanup the hbqt_hbqplaintextedit.cpp source.
* contrib/hbqt/qtgui/hbqtgui.ch
* contrib/hbqt/hbmk2_qt.hb
+ Applied: patch received from Ryszard Glab ( with my fixes of one overlook ).
fixes:
- some issues with QApplication:translation method
- it allows for binding QAction to a window for wchich the action
was deined, for example,
if SomeDialog.ui file has actions defined then virtual methods:
<actionName>_triggered is added to UI_SomeDialog class.
Thanks Ryszard, it is pleasure to see you on-board again.
* contrib/hbqt/hbmk2_qt.hb
! Added: destroy() method.
* Changed: order of generated ui_* class methods plus some formatting.
* contrib/hbqt/qtgui/hbqtgui.ch
+ Added: a few more constants.
* contrib/hbqt/qtgui/hbqtgui.hbm
* contrib/hbqt/qtgui/hbqtgui.hbx
- contrib/hbqt/qtgui/THbQtUI.prg
- Removed: class HbQtUi() no longer required.
* contrib/hbqt/hbmk2_qt.hb
+ Implemented: .ui manipulation as proper class object.
Now any object of interface can be accessed by its objectName
given in the Qt Creator. To keep compatibility with old
code, the "q_" prefix is also retained. User will see no
difference in his code but is encouraged to use new syntax
which is mode in line with a true object.
For example: oUI := hbqtui_uifilename( oParent )
oUI:q_btnClose:connect( ...)
=>
oUI := ui_uifilename():new( oParent )
oUI:btnClose:connect( ... )
; INCOMPATIBLE: to access qObj[ cObjectName ] is no more available.
Please update your code to honor new syntax.
* contrib/hbqt/hbmk2_qt.hb
! Fixed: to identify and set the object's name.
Though it was not doing any harm, but it is a futuristic
move where we would be able to retrieve an object given its name.
* contrib/hbqt/hbmk2_qt.hb
+ Added: few more Qt defined variable types.
Miss from prev commit.
* contrib/hbqt/qtcore/hbqt_bind.cpp
! Fixed: some more rare cases where GPF on exit was there.
; NOTE: with this commit I feel the new engine is working
absolutely fine without GPF's and also along the
Harbour way of programming practice. If you find any
regression, please report. Till then I concentrate on
other parts of HbQt.
* contrib/hbqt/qtgui/hbqt_hbqsyntaxhighlighter.cpp
! Fixed: QRegExpression - patternQuotation - which was displaying
more than one per line string literals wrongly.
Patch provided by Grzegorz on users-list, thanks.
* contrib/hbide/idebrowse.prg
* contrib/hbide/ideconsole.prg
* contrib/hbide/idedocks.prg
! Fixed: some regressions plus releasing objects no longer
required during execution of HbIDE.
* contrib/hbqt/gtqtc/gtqtc.cpp
! Fixed: a regression caused by latest changes i HbQt.
* contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth
! Fixed: regression as per prev commit.
QTreeWidgetItem() can receive another QTreeWidgetItem
as its child and hence is subject to not destroy Qt
object by Harbour.
* contrib/hbqt/tests/browqt.prg
+ Enabled: Build_TreeView() which was causing GPF on exit,
a result of above fix.
* contrib/hbqt/qtgui/qth/QBoxLayout.qth
* contrib/hbqt/qtgui/qth/QComboBox.qth
* contrib/hbqt/qtgui/qth/QDirModel.qth
* contrib/hbqt/qtgui/qth/QDockWidget.qth
* contrib/hbqt/qtgui/qth/QDrag.qth
* contrib/hbqt/qtgui/qth/QGraphicsScene.qth
* contrib/hbqt/qtgui/qth/QGridLayout.qth
* contrib/hbqt/qtgui/qth/QLayout.qth
* contrib/hbqt/qtgui/qth/QMainWindow.qth
* contrib/hbqt/qtgui/qth/QMenu.qth
* contrib/hbqt/qtgui/qth/QMenuBar.qth
* contrib/hbqt/qtgui/qth/QScrollArea.qth
* contrib/hbqt/qtgui/qth/QStandardItemModel.qth
* contrib/hbqt/qtgui/qth/QStatusBar.qth
* contrib/hbqt/qtgui/qth/QTabWidget.qth
* contrib/hbqt/qtgui/qth/QToolBar.qth
* contrib/hbqt/qtgui/qth/QTreeWidgetItem.qth
* contrib/hbqt/qtgui/qth/QWidget.qth
% Replaced: [*D=n*] => [*X=n*] except for
QTreeWidget/QListWidget/QTableWidget as per the change
in core engine where deletion of a Qt object is entirely
thought of on new grounds.
* contrib/hbqt/tests/demoqt.prg
! Optimizations and removal of redundant code.
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_bind.cpp
* contrib/hbqt/qtcore/hbqt_destroyer.cpp
* contrib/hbqt/qtcore/hbqt_destroyer.h
+ Overhauled: the Qt object destruction protocol.
This commit is the result of two weeks intensive debugging
spree. This commits now handles MT applications better
then before. This commit also covers the mem leaks evident
for certain widgets.
WARNING: regression is possible, please report.
* contrib/hbqt/hbmk2_qt.hb
+ Implemented: some missing functionality which seemed not
possible at the time this tool was developed. Now very
rich interfaces created by Qt Creator can be deployed
in an Harbour application. Alain's report on users-group
led to this maturity.
* contrib/hbqt/qtcore/qth/QTimer.qth
! Removed: :singleShot() method as it cannot be implemented
as per documented because of how signal/slots are implemented
in Harbour. Instead, use code like this ( courtesy Ligui ):
::oQtSingleShot := QTimer( ::oQtObject )
::oQtSingleShot:setSingleShot( .T. )
::oQtSingleShot:setInterval( 0 )
::oQtSingleShot:connect( "timeout()", { || ::__OnReadyExec() } )
::oQtSingleShot:start()
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
* contrib/hbqt/qtcore/hbqt_init.cpp
- Removed: a hack introduced some months back where
C++ static items were held in a list them released
at exit of an application. This was double work and
now is not needed at all.
* contrib/hbqt/qtcore/hbqt_bind.cpp
- Reverted: last fix where <qtObject> was compared against
a numeric, which, BTW was a stupid implementation.
A pointer casted to a numeric is always true.
* contrib/hbqt/qtgui/hbqt_init.cpp
- Deleted: deleting the QApplication object.
It was breaking such code:
oWnd:connect( QEvent_Close, {|| QApplication():quit() } )
QApplication():exec()
the reason was any code executed after
QApplication():quit() was rendered unexcutable because
appln was forced to stop execution.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
+ Reintroduced: QEvent_Close's return value to true.
It is necessary to intercept this event at appln level.
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtgui/qth/QDesktopServices.qth
+ Reworked: constructors.
Previous implementation was wrong.
Applied Francesco's thought and it worked, thanks.
* contrib/hbqt/qtgui/qth/QSound.qth
+ Added: two slot methods.
* contrib/hbide/idedocks.prg
! Fixed: one more QIcon() regression, though not used.
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
! Fixed: to pass correct class name for some type of slots
<pList> in constructors.