* 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/docks.prg
+ contrib/hbide/docs/faq.htm
* contrib/hbide/hbide.qrc
+ Discovered: how .html resources can be embedded into executable
and brought to service in QTextBrowser.
HbIDE's FAQ is now shown in <HbIde Help> docking widget.
It is scheduled to be extended to bring all the help I could
write over-time under it. The design may be changed.
Now it is much easier to write/edit/embed .htm pages
inside HbIDE.
* contrib/hbide/hbide.qrc
+ contrib/hbide/resources/view_docks.png
+ Added: one more image.
* contrib/hbide/editor.prg
! Removed the source's extension from the editor's tab display
which facilitates more tabs to be visible in the editor's manager.
Good for low resolution monitors. Note that full pathname is
available under tooltip.
* contrib/hbide/actions.prg
+ Added: <HbIDE Views> icon on the <Main> toolbar.
* contrib/hbide/hbqtoolbar.prg
! Changed the toolbar's basic attributes.
* contrib/hbide/misc.prg
! Fixed some dialogs to release memory properly on exit.
* contrib/hbide/tools.prg
+ Started: implementation of user defined views of HbIDE.
It is working but will write the details after applying
finer points. Expression is through <HbIDE View> icon
on <Main> toolbar.
* 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/hbide/idefindreplace.prg
! Fixed: Find action in FindInFiles was opening the source in
"Main" view before searching. It should had been if source
is opened only then take it from editing instance otherwise
from disk. I suspect yesterday night I was too tired.
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
! Fixed: Search and Replace in <FindInFiles> where multiple
S&R operations were producing irritating behavior.
Please test properly ( only lightly tested ).
! Fixed and Optimized: CTRL+F - Find & Replace dialog behavior.
It was not as par with standard dialogs of this kind.
; This commit finishes touches in Search & Replace functionality.
* 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/ideuisrcmanager.prg
! Fixed: a regression caused by changes in .ui manipulation;
accessing objects from a hash to genuine class variable.
; INCOMPATIBLE: any class created through IdeUISourceManager
should begin with "uie_" instead of "ui_" ( the namespace
in use in new .ui manipulation ). So please change this
in "cls_"uiFileName.prg manually.
* contrib/hbide/resources/maximize_all.png
* contrib/hbide/resources/maximize.png
* contrib/hbide/resources/minimize_all.png
* contrib/hbide/resources/minimize.png
% further optimized them using ImageOptim.
* contrib/hbide/hbide.qrc
+ contrib/hbide/resources/maximize.png
+ contrib/hbide/resources/maximize_all.png
+ contrib/hbide/resources/minimize.png
+ contrib/hbide/resources/minimize_all.png
+ Added: more images.
* contrib/hbide/ideprojectwizard.prg
* contrib/hbide/projectwizard.ui
! Advanced: user interface is almost done and is ready for
final show-down. Please review the working of the components.
; QUESTION: should everything go inside .hbp or should I introduce
templates to hold the project sections and be reloadable
by 1) only switches and parameters, 2) sources also.
* contrib/hbide/resources/collapse_m.png
* contrib/hbide/resources/expand_m.png
% optimized them using ImageOptim.
Please run at least 'optipng' (available for all platform
for free) on .png files before uploading them to SVN.
Thank you.
* contrib/hbide/hbide.qrc
+ contrib/hbide/resources/collapse_m.png
+ contrib/hbide/resources/expand_m.png
+ Added: two more images.
* contrib/hbide/ideprojectwizard.prg
* contrib/hbide/projectwizard.ui
! Advanced: now many components of the interface are complete.
Specially the section where "Libraries" etc. are requested,
play; you will enjoy.
* 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/hbide/idemain.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojectwizard.prg
* contrib/hbide/projectwizard.ui
! Advanced: to a comfortable level how a project can be constructed.
Please play with <Main Menu><Project><New Project Wizard>.
It implements very nice constructs to enter various elements.
Still a work-in-progress, but concept has begining to impress.
* contrib/hbide/idetools.prg
* Minor.
* contrib/hbide/hbide.hbp
* contrib/hbide/ideactions.prg
* contrib/hbide/idemain.prg
* contrib/hbide/ideobject.prg
+ contrib/hbide/ideprojectwizard.prg
+ contrib/hbide/projectwizard.ui
+ Added: .ui and class to offer the facility to create a project
with minimum of efforts. It is just the begining, only user
interface is available currently, a work-in-progress. This
can be accessed via <Main Menu><Project><New Project Wizard>.
Do have a look and let me know if more can be added...
* 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/hbide/idebrowse.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idemain.prg
* contrib/hbide/idesources.prg
+ Implemented:
1. IdeDBU mode where .dbf(s) can be passed on command-line, as:
HbIDE.exe \harbour\tests\test.dbf myOther.dbf
This mode can be combined with pure source editing mode
where source(s) are passed on the command-line, like;
HbIDE.exe \harbour\tests\test.dbf myOther.dbf \mysources\first.prg.
This mode also hides "Main" and "Docking Widgets" toolbars,
thus presents a lean look. If a .dbf is passed as above,
then IdeDBU gets preference over source editor in terms of
application's real-estate, which seems logical. Currently,
DBFCDX driver is used to open these tables, but logic is in
place to honour other drivers; the only issue is how to get this
information on the command-line.
2. A "default.prg" source will welcome the user on "Main" panel
ready to accept input, if HbIDE is opened without any sources
made available to be opened. The actual filename will be requested
at the time of saving that source; either explicitly saved, or
on termination. This request will come-up only if the source
has been modified.
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
! Optimizations: what exactly should get fired with which event.
User must experience speed improvement while navigating and
editing the sources.
; NOTE: this is the first commit in series of enhancements,
optimizations and improvements in HbIDE. Please speak out
your expectations, concerns, suggestions, what-ever, about
HbIDE. Next few weeks I will be working on this tool only.
* 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/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.
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Implemented: Events, Slots, Destroyers on thread level.
Previously those were created per object level. This greatly
decreased the os-resource count and also simplifies the code.
Thanks to Przemek for the tip.
+ Implemented: release of all objects per thread level.
hbQT employs internal counter to identify threads.
All widgets are created in one global list which has
made it possible to use Qt's blocking widgets, like
QMessageBox, in Harbour MT applications. It seems that
Qt looks for the event processing only in main appln
thread and hence these widgets were not usable in
other threads. The testbed is hbqt/tests/demoqt.prg
which is now multithreaded. You check it with
menu option <Dialog><Another Dialog>.
+ Formatting: in tracelog entries.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
- Commented out: a hack where QClosEvent was being treated
differently then other events.
* contrib/hbqt/tests/demoqt.prg
* Parented: QMessageBox() ( Read below )
* contrib/hbide/idedocks.prg
- Removed: one hack which at begining was there to activate
QMainWindow's docking area resizable.
* contrib/hbide/idemain.prg
+ Changed: ::cWrkCodec to be "EN" by default.
It fixes recent regression in hbIDE for certain users.
* contrib/hbide/idemisc.prg
* Parented: QMessageBox() should always be constructed with a
parent because of special handelling of blocking dialog
where parent is treated slightly different than other
Qt widgets. This fixes a long-standing bug in hbIDE where
appnl was rendered in indefinite loop when "X" button
was employed to terminate and confirm dialog would
not be terminated internally.
So for QMessageBox() and, to be on the safer side, all
widets derived from QDialog() should be constructed
with a parent and at the end be reparented with a
just-to-be-deleted-QWidget(), like:
oMB := QMessageBox( oParent )
...
oMB:setParent( QWidget() )
RETURN something
* contrib/hbide/hbide.hbp
* contrib/hbide/idemain.prg
+ enabled rddads by default. Requires rddads dynamic
build, use HB_BUILD_CONTRIB_DYN=yes
* contrib/hbrun/plugins.prg
! fixed shell plugin extension changed in prev
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/hbmk2.es_PE.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.pt_BR.po
+ -env: option is now available inside .hbp/.hbp files
! fixed -env: option to be processed only for the main
project (and not processed again for subprojects)
* contrib/hbide/hbqreportsmanager.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/ideskeletons.prg
* contrib/hbide/ideuisrcmanager.prg
- Removed: all calls to :hasAValidPointer().
* contrib/hbqt/qtcore/hbqt_bind.cpp
+ Added: more debug code to view what happens when
appln exits.
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.h
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/qth/HBQEvents.qth
! Synchronized: per QObject standards.
* contrib/hbqt/qtgui/qth/QStringListModel.qth
! Fixed: wrong if/else if constructs.
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/qtgui/THbQtUI.prg
- Removed: the use of :pPtr variable plus method :hasValidPointer().
* contrib/hbqt/tests/demoqt.prg
! Reworked: to adapt to revamped hbQT where variable is not needed
to hold the built widget if parent is provided or is :connect()ed.
* contrib/hbqt/gtqtc/gtqtc.cpp
* contrib/hbqt/hbmk2_qt.hb
* contrib/hbqt/qtcore/hbqt.h
* 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_misc.prg
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/qth/HBQEvents.qth
* contrib/hbqt/qtcore/qth/HBQSlots.qth
* contrib/hbqt/qtcore/qth/QLibraryInfo.qth
* contrib/hbqt/qtcore/qth/QMimeData.qth
* contrib/hbqt/qtgui/hbqt_hbqabstractitemmodel.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqtableview.cpp
* contrib/hbqt/qtgui/hbqt_init.cpp
* contrib/hbqt/qtgui/qth/HBQAbstractItemModel.qth
* contrib/hbqt/qtgui/qth/HBQGraphicsItem.qth
* contrib/hbqt/qtgui/qth/HBQGraphicsScene.qth
* contrib/hbqt/qtgui/qth/HBQPlainTextEdit.qth
* contrib/hbqt/qtgui/qth/HBQTableView.qth
* contrib/hbqt/qtgui/qth/QApplication.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
* contrib/hbqt/qtnetwork/hbqt_init.cpp
* contrib/hbqt/tests/draggable.prg
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
+ Implemented: Revamped HBQT.
The complete code base has been cleaned as per new API
and there is no leftover is kept inside the sources.
All demos and hbIDE seems TO be working fine with few
exceptions here and there, but usually all seems fine.
The only issue left, so far I can assess is that no object
is subject to destrution if a connect is issued onto that.
And I have no idea how TO handle this situation. It is the
programmers responsibility to disconnect whenever an object
is supposed to go out of scope.
TODO: still debug tracelog entries ( under HB_TR_DEBUG ) are
retained in hbqt_bind.c which are schduled TO be
removed once code base stabilizes enough.
* include/harbour.hbx
* src/vm/dynsym.c
+ added HB_ISFUNCTION( <cName> ) -> <lExists>
uses Przemek's code from hbfship/ISFUNCTION() with minor
adaptation for VM.
Use it instead of __DYNSISFUN() and TYPE( <cName> ) == "UI".
* include/harbour.hbx
* formatted HB_IS*() functions used for type checking
* contrib/hbfship/isfunc.c
% converted ISFUNCTION() to wrapper for HB_ISFUNCTION()
* contrib/hbide/ideplugins.prg
* contrib/hbrun/hbrun.prg
* contrib/hbxpp/xppop.prg
* contrib/xhb/xhbcomp.prg
* contrib/xhb/xhberr.prg
* examples/hbdoc/hbdoc.prg
% Using HB_ISFUNCTION() instead of __DYNSISFUN() and TYPE( <cName> ) == "UI"