* contrib/hbide/resources/curlinehilight.png
+ contrib/hbide/resources/horzruler.png
* contrib/hbide/resources/togglelinenumber.png
* contrib/hbide/resources/toolsutilities.ui
* contrib/hbide/resources/toolsutilities.uic
* contrib/hbide/resources/setup.ui
* contrib/hbide/resources/setup.uic
* contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbqt/qth/QTableWidget.qth
- contrib/hbqt/qth/HBQSyntaxHighLighter.qth
+ contrib/hbqt/qth/HBQSyntaxHighlighter.qth
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* contrib/hbqt/doc/en/class_hbqsyntaxhighlighter.txt
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/QTableWidget.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/qtgui/HBQSyntaxHighlighter.cpp
* contrib/hbqt/qtgui/THBQSyntaxHighlighter.prg
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
* contrib/hbide/hbide.hbp
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
+ contrib/hbide/idedict.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideshortcuts.prg
* contrib/hbide/idestylesheets.prg
* contrib/hbide/idethemes.prg
* contrib/hbide/idetools.prg
% Widened padding for menubar prompts to show up at a proper distance.
+ Controlled "RETURN" keyword not to jump to first indentation place,
with env variable - HBIDE_RETURN_ATBEGINING=yes. Scheduled to be
included in "Setup" interface.
+ Allowed hbIDE execution with any text type file. It was accepting .PRG.CPP only.
+ Broadened the scope of keyword coloring for any case, mixed or absolute.
It was all lower or all upper previously.
+ Prepared ground for user defined keywords through user dictionaries.
+ Added new flags in "Setup" dialog ( yet not active ).
Please have a look into the contents of different pages and
let me know what else can qualify to be included therein.
+ More macro for Tools parameter - ${source_fullname_less_ext}
% Tools & Utilities dialog made modeless. At times it is desirable
to execute a tool multiple times and also to gather output logs.
+ Tools & Utilities dialog now remembers its last opened position.
+ Implemented: user-configurable 5 toolbars which can be populated
through Tool & Utilities interface. Invoke "Tools & Utilities"
interface and play with the toolbars. You will find it really
rewarding. I am also trying to find a way to hook
"Kayboard Mappings" macros to be included under this interface.
Your input is welcome. I will write the help in about a week,
but interface is straight enough to grab/grasp/use.
+ Implemented: to switch on/off horizontal ruler.
+ Implemented: to remember the last settings for next run for
Horizontal Ruler, Line Numbers display and Current Line highlighting.
+ contrib/hbide/resources/go-bottom.png
+ contrib/hbide/resources/go-down.png
+ contrib/hbide/resources/go-first.png
+ contrib/hbide/resources/go-jump.png
+ contrib/hbide/resources/go-last.png
+ contrib/hbide/resources/go-next.png
+ contrib/hbide/resources/go-prev.png
+ contrib/hbide/resources/go-top.png
+ contrib/hbide/resources/go-up.png
+ contrib/hbide/resources/hilight-all.png
+ contrib/hbide/resources/updown.ui
+ contrib/hbide/resources/updown.uic
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! An important fix.
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idetools.prg
+ Extended: in addition to next/previous buttons to naviagte
occurances of selected text, three more buttons are added:
"first", "last", occurance and "highlight all" occurances.
+ Implemented: macros parsing in "Parameters" list of
"Tools and Utilities" protocol. Currently following macros
are parsed:
{source_fullname} => full sourcename of current edit instance
{source_name} => mere name of current edit instance
{source_path} => only path of source in current edit instance
{%MY_ENV_VAR%} => result of hb_GetEnv( "MY_ENV_VAR" )
C:\temp\mycopy.bat {source_fullname} {source_path}\mysource.bkp
=>
C:\temp\mycopy.bat C:\harbour\contrib\hbide\hbide.prg C:\harbour\contrib\hbide\mysource.bkp
( assuming that current editor is containe hbide.prg )
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/ideobject.prg
+ Implemented: interface to find next/previous occurance of selected
text in the current editing instance.
The moment some text is selected in the editor, two tool-buttons will
automatically show-up on the lower-right corner of the editing window
to facilitate you execute "find" operation for selected text up or down.
Buttons will disappear where there is no more selected text.
The feature was requested by Antonio Linares.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Minor.
* contrib/hbide/resources/buildsource.png
+ Icon for "Build Source" action.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
+ Implemeted: to compile a source, source is not saved
if in modified state. Action was already defined but inactive.
+ Implemented: to build a source, current defined environment is
used and build process stays in the folder where source resides.
Also source is not saved. hbIDE attempts to executable it also.
Action defines a new icon on the top-toolbar and also an entry
into the "Build" menu.
% Few more fixes in selections and find processes.
NOTE: new setup is also uploaded on my site.
* contrib/hbqt/hbqt.h
* contrib/hbqt/hbqt_hbqtableview.h
* contrib/hbqt/hbqt_hbevents.h
* contrib/hbqt/hbqt_hbdbfmodel.cpp
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.cpp
* contrib/hbqt/hbqt_hbqmainwindow.h
* contrib/hbqt/hbqt_hbqtableview.cpp
* contrib/hbqt/hbqt_hbevents.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/hbqt_hbdbfmodel.h
* contrib/hbqt/hbqt_destruct.cpp
* contrib/hbqt/hbqt_utils.cpp
* contrib/hbqt/hbqt_hbqsyntaxhighlighter.h
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbslots.cpp
* contrib/hbqt/qth/QVariant.qth
* contrib/hbqt/qth/QCursor.qth
* contrib/hbqt/qth/QClipboard.qth
* contrib/hbqt/qth/QApplication.qth
* contrib/hbqt/qth/QCoreApplication.qth
* contrib/hbqt/qth/QImage.qth
* contrib/hbqt/qth/QUrl.qth
* contrib/hbqt/qth/QAbstractItemModel.qth
* contrib/hbqt/qth/QImageReader.qth
* contrib/hbqt/qth/QWebHistoryItem.qth
* contrib/hbqt/qth/QFont.qth
* contrib/hbqt/qth/QFontDatabase.qth
! Fixed to use '#include <QModule/QName>' format when referring
to QT headers. This is the official way and it allows to clean
the include header paths.
! Fixed to use '#include <QtCore/qglobal>' instead of
'#include <qglobal.h>' for the same reason as above.
* contrib/hbqt/hbqt.h
+ Added '#include "QtCore/QObject"' to make hbmk2 component
detection happy. This is slight hack as I didn't want to
introduce parsing of '<>' style system headers just for the
sake of QT. Anyway it's quite humble hack without side effects.
* contrib/hbqt/detect.mk
* Changed to 'QtCore/qglobal.h' as key header name used for
detection.
! Fix to header dir autodetection path on darwin platform.
(it would have caused potential problem with QT 5.x releases)
% Simplified header path list for non-darwin platforms.
+ contrib/hbqt/hbqt_common.hbm
+ contrib/hbqt/hbqt.hbp
+ contrib/hbqt/hbqts.hbp
+ contrib/hbqt/hbqtcore.hbp
+ contrib/hbqt/hbqtcores.hbp
+ contrib/hbqt/hbqtgui.hbp
+ contrib/hbqt/hbqtguis.hbp
+ contrib/hbqt/hbqtnetwork.hbp
+ contrib/hbqt/hbqtnetworks.hbp
+ Added hbmk2 make files for HBQT libs.
Features are equivalent to the GNU Make flavour.
(only tested on Windows so far)
+ contrib/hbxbp/hbxbp.hbp
+ Added hbmk2 make file for HBXBP lib.
* contrib/hbfbird/hbfbird.hbp
* contrib/hbsms/hbsms.hbp
* Use ${hb_name} instead of ${hb_dirname}.
+ Added -w3 -es3 options.
* utils/hbmk2/hbmk2.prg
+ Set pathseps to '/' in "-reqheader=' and
'-reqpkg=' header names.
- utils/hbmk2/examples/plug_moc.prg
+ contrib/hbqt/plug_moc.prg
* Moved inside hbqt lib.
* contrib/hbqt/qtgui/*
* contrib/hbqt/qtcore/*
* Regenerated.
* contrib/hbqt/generator/hbqtgen.prg
! A minor fix, no effect on sources.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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
+ Added more PRG callable methods.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idedocwriter.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefunctions.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/ideshortcuts.prg
+ Implemented: selection "persistancy" controllable programatically"
Ctrl+F11 is designated for this task. A slot in "Keyboard Mappings"
is also provided. By default persistant selection is disabled and
hence behaves exectly like it was before persistancy and more natural
like other editors. Ctrl+F11 toggles it on/off and if switched on,
behaviour will follow the implemenation just before this commit.
If selection mode is activated programatically, behavior remains
the same as before. Please test, bumps are expected.
% Some major artifacts how cursor should behave after paste, etc.
+ Implemented: document writer is now capable to pulls the existing
help body and correctly reinstates the changes. This implies that
for your sources help it can be used in real-time. Please test
and post if you find difficulties.
TODO: the same behavior with disk files.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
% Shifted: all actions which operate on editing instance, to
the micro levels. This implies that ::IdeEdit() object can be
used independent of interface constraints and hence becomes
eligible to be included in hbXBP as a HBP class.
This also implies that hbIDEMap can be manipulated through
Keyboard Mappings macros the same way as main editing instance
with the exception that it cannot be editied. For example,
you can call ::zoom( nPointSizeORKey ) to adjust its size.
You can also use Ctrl+C to copy and can use block operations.
+ Added: <Edit><Format><Replace Spaces with Tabs> option. Tabs
are set to stop at same distance of 3 characters which
makes it possible to modify sources with/without tabs but
with same visual display.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideshortcuts.prg
+ Implemented: proper hbIDEMap protocol. Now you can keep open
"Source Thumbnail" dock and keep on clicking the tabs. Current
source map will be displayed inside.
hbIDEMap Features:
1. hbIDEMap carries highlighted code lines which are visible
in main editing instance window. Navigaing the editor also
changes highlighted area corresponding to main instance.
2. All keyboard mappings are active in the map also which implies
that you can exercise copy operations which can be pasted
in the current code, a very useful feature.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideobject.prg
! Fixed: selected text when viewed in a narrow window and
using horizontal scrollbars was showing incorrectly.
+ Implemented: current source's thumbnail view.
It is presented in a right-hand docking widget which
can be activated via <View> menu. it is almost identical with
current editor but with a significant difference that
it is loaded from the disk whenever the dock is brought to view.
It contains smaller font and is entirely idependent
of main editing instance.
It is just a quick commit. Refinement will follow.
Please submit your suggestions.
Re-compile hbQT alongwith hbIDE.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
+ Finalized: all the three modes of selection programatically.
::toggleStreamSelection() No Key
::toggleColumnSelection() No Key
::toggleLineSelection() == F11
::clearSelection() == Sh+F11
If a selection mode is initiated by above three methods,
it can only be exited by calling the same method again.
During such selection process all other keys than navigable
keys will remain disabled. Mouse-move will also not work.
Mouch click will work. If Column selection mode is ON,
caret will not show up. Toolbar icon will not respond to
change such action. Once exited, previous normal behavior
for stream and column selection will be available.
Please test.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
+ Prepared to handle three modes of selections programatically.
F11 Line Selection is broken currently.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/idedocwriter.prg
% Guarded against inserting help if "readonly" flag is ON.
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
+ Added: navigational methods plus methods pertaining to
line operations into public API. Naviagable methods are :
::up(), ::down(), ::pageUp(), ::pageDown(), ::goTop(),
::goBottom(), ::right(), ::left(), ::end(), ::home(),
::panEnd(), ::panHome().
//
These methods can be used in combination with selection modes.
+ Grouped: public methods list by category which is displayed
under visually distinguished colors. Now it is easy to find
a method of interest easily. Before it was a literal mess.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbide/ideedit.prg
! More fluency and refinements in selection process spanning
across all three modes.
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
! Just to recompile hbqtgui.lib
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/ideedit.prg
! Fixed: more artifacts about selection/copy operations.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
! Fixed: the artifacts reported by Mindaugas and Itamar.
! Optimized: C++ code.
! Fixed: many other artifacts, i.e., status-bar panel was wrongly
reporting selection mode.
Mindaugas, can you please test again ?
* contrib/hbide/ideprojmanager.prg
! Synchronized to open "Project Tree" if "Open Project..."
is selected from <MainMenu><Files>.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
% Many artifacts belonging to horizontal scroll while
text is selected. Also few aspects are optimized.
To me it appears as if selection protocol in hbIDE is OK.
Please post your experiences if something is not upto the
expectations.
* contrib/hbide/resources/curlinehilight.png
! Some refinement though not sufficient yet.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbide/ideedit.prg
! More optimization and behavioral changes is selected text.
Still litte more work to be done.
* contrib/hbide/idesaveload.prg
! Reintroduced "settings.ide" .ini like file, placed along
hbide.ini", to hold Qt written hbIDE settings. This reversal
is triggered by the fact that, under unknown circumstances,
Qt just mangles the hbIDE.ini contents to a level that a lot of
information it stores is lost. This has happened to me many
times after the settings info was made to be retained in
hbIDE.ini itself. Please do not change it until I come up
with the way to read and write byte arrays per Qt.
Below is the little snapshot what Qt inserts some info
inside existing other text not meant for "idesettings" keyword:
=================================
[FIND]
find_1=setselection
find_2="imagesfind_3=images/"
find_4=":/\r\nfind_5=ShowCaretAtCurrentPosition\r\nfind_6=moveExtendsSelection\r\nfind_7=oDlg\r\nfind_8[ MORE LIKE IT ] +
,,,,,\r\n \r\n[General]\r\n \r\n"
[ ALL OTHER SECTIONS BELOW MANGLED AS ABOVE ]
[General]
hbidesettings="@ByteArray( [ PLUS MORE, IT IS CORRECT ]
=================================
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
+ Implemented: column selection with mouse honoring vertical scrolling.
Hopefully I may be able to implement horizontal scrolling too.
* contrib/hbide/plugins/savebackup.hrb
* contrib/hbide/plugins/savebackup.prg
! Fine tuned to receive correct number of parameters.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/idedocks.prg
+ Added Icon: Toggle current Line Highlight in "Lines" toolbar.
Public API method is ::toggleCurrentLineHilight().
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideenviron.prg
! Reverted: line edits font - monospace to GUI.
* contrib/hbide/ideobject.prg
* contrib/hbide/ideplugins.prg
! tuned to send oIDE and cVer as first and second
argument to {plugin}_init( oIde, cVer ).
* contrib/hbide/ideprojmanager.prg
! Reverted: line edits font - monospace to GUI.
* contrib/hbide/ideshortcuts.prg
+ Public Method - ::toggleCurrentLineHilight().
Toggles displaying current line in distinct color.
* contrib/hbide/idethemes.prg
+ Activated: Selection Background slot.
It facilitates to control the color of selections per theme basis.
+ Prepared to toggle matching braces mode - both vs single.
"Setup" dialog will contain its place holder.
% Fixed many other artifacts coming into way, and possibly
might have broken a few ones, please report.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
% Optimized: selections display with proprietory color.
Now it oply operates within viewport() coordinates.
% Changed: the behavior of matching brace. Now only corresponding
brace is highlighted instead of both. This is exactly like
xMate. Please note that highlighting both braces create
confusion and at time I am lost.
+ contrib/hbide/plugins
+ contrib/hbide/plugins/savebackup.hrb
+ contrib/hbide/plugins/savebackup.prg
+ Source and corresponding .hrb ( -gh ) plugin.
In practice .prg is never required for this purpose.
The source accompanying here is for demonstration purposes
which exposes elements to comprehend.
+ contrib/hbide/resources/selectionline.png
+ Image to be activated when "Line" selection mode is on.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbide/hbide.hbp
+ Added ideplugin.prg
* contrib/hbide/idethemes.prg
+ Added more keywords for syntax-highlighting.
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
+ contrib/hbide/ideplugins.prg
+ Priliminary commit to handle plugins.
* contrib/hbide/ideshortcuts.prg
+ Implemented: a very simple yet powerful interface to hook plugins.
The idea got polished with Francesco Perillo's description of the thought.
Creating a hbIDE plugin
=======================
A .hrb ( compiled with -gh as the minimum ), i.e., savebackup.prg,
having two mandatory functions:
1. hrb_file_name_without_extension_plus_underscrore_plus_INIT()
savebackup_INIT( ... ) -> TRUE/FALSE
2. hrb_file_name_without_extension_plus_underscrore_plus_EXEC()
savebackup_EXEC( oIde, ... ) -> xValue
savebackup_INIT() will be used to establish hand-shake and it must
return a logical indicating success or failure. Currently it is
called with "1.0" as version no but is scheduled to be enhanced
in future.
If hand-shake is successful, means, savebackup_INIT( ... ) returns
with TRUE, savebackup_EXEC( oIde, ... ) is called as per user
request. oIDE is sent as the first argument followed by user supplied
arguments. Within this function in .hrb, all action takes place.
User can write n number of functions withing the same source but
all other functions will always be STATIC ones.
The whole hbIDE object is passed with each execution and hence
user is having utmost control over what he wants to accomplish.
Location of the Plugin
======================
All plugins ( .hrb ) must reside within "plugins" sub-folder from hbIDE.exe
location. The location is determined with return value of
hb_dirBase() + hb_osPathSeparator() + "plugins" + hb_osPathSeparator().
Loading Plugins
===============
At startup hbIDE looks into "plugins" folder for all .hrb files.
It then tries to establish hand-shake with them. If successful, a
handle is retained in static array. When an execution request is
encountered, this static array is searched for and
savebackup_EXEC( oIDE, ... ) is called and return value is passed
back to the caller macro.
Executing Plugins in hbIDE
==========================
A public method ::execPlugin( cPlugin, ... ) is implemented under
"Keyboard Mappings". ::execPlugin is called with plugin name, which
essentially is the .hrb file name. So in demo example, it is
"savebackup". Final expression would be like :
::execPlugin( "savebackup", "saveas" )
Here "saveas" is the identifier which is used in this demo to invoke
STATIC FUNCTION savebackup_saveAs( oIde )
Author of plugin has to decide how and what he would like to pass
what and in how many. So simply build a macro to call a plugin
with parameters, that's it.
I am hopeful that you, brilliant programmers, with help extending hbIDE
to an amazing levels. Send your critics to the list to enrich this thought.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
+ Added more public methods and default macros.
* contrib/hbide/idethemes.prg
+ Implemented: persistent blocks per all three modes; stream, column and line.
This follows xMate footsteps but enhanced to suit any scenarion. By xMate
footsteps, I mean, blocks are streamed to clipboard when cut/copied/pasted
as per the standard rules. Enhancement describes that blocks cut/copied
as such are subject to be pasted in the same format as are copied. Last
cut/copy operation is pasted and if clipboard contain data which matches
last cut/copy action within from hbIDE, its format is used to paste; but
if it is alien text then "stream" is applied by default.
Block remain persistent until another selection action is not initiated or
is explicitly cleared with Sh+F11. There is no need to use any other key
to make it persistent.
Cut/copy operation can be carried on any time after block is visible.
This effectively empowers hbIDE for a variety of applications. One
block per source can remain active for entire duration of that instance.
Just click on required instance and activate copy operation. Go anywhere
on another instance and carry a paste operation. Thus blocks are movable
across instances and are also available for external clipboard operations.
All supported actions on blocks are now fully functional for all three flavours.
You will really like "Indents" action on column selections. Now more actions
can be defined for blocks, so please submit your requests supported with
use-case.
In the coming days on-line documentation to explore this feature will be
posted at http://hbide.vouch.info, stay tuned.
Please forward your suggessions or bug reports. It was such a complex logic
that for sure I found it extremely difficult to carry all debug operations,
so your input will be of immense value.
* contrib/hbqt/THbQtUI.prg
+ Added functionality for "WhatsThis" feature of Qt.
- contrib/hbide/resources/projectproperties.ui
- contrib/hbide/resources/projectproperties.uic
- Deleted: no longer required dialog.
* contrib/hbide/resources/projectpropertiesex.ui
* contrib/hbide/resources/projectpropertiesex.uic
* contrib/hbide/resources/shortcuts.ui
* contrib/hbide/resources/shortcuts.uic
% Shifted: tooltips to WhatsThis slot. Shift+F1 key is the
universal key to activate it. Alternatively "?" icon appears
on the left of "X" button in titlebat; press it and move over
the dialog; where "WhatsThis" will be defined, cursor will
change its shape and click there, tooltip like popup will open.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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.hbp
+ contrib/hbide/ideedit.prg
+ Added: new source file which contains code to handle
editing window at the micro level. It was going unmanageable
in single file due to heavy changed needed for future.
* contrib/hbide/ideeditor.prg
- IdeEdit() class moved to ideedit.prg.
+ Implemented: base protocol to keep all the three variants of
selections, viz., stream, column and line, persistant. It is a
work in progress and may be some features of "cut" may not be
working as expected yet.
Please play with it a little and tell me about the artifacts
it must respect to.
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
* 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
! Removed: close button on "Stats" panel.
+ Implemented: line selection mode. Designated key is F11.
It is still a work in progress but a working prototype is there and
currently selection is available and paste behaves the standard way.
Mindagaus, please explore as the artifacts are OK.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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
+ Started: basework for different kinds of block copy/paste/move/etc
operations. Nothing is final yet but hope it to be ready
within a day or two.
* contrib/hbqt/qth/HBQPlainTextEdit.qth
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* contrib/hbqt/qtgui/HBQPlainTextEdit.cpp
* contrib/hbqt/qtgui/THBQPlainTextEdit.prg
* contrib/hbqt/hbqt_errorsys.prg
+ Error trace copied to clipboard, requested by Massimo.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
+ Implemented: persistent blocks and cut/copy/paste operations
across files and locations within the same file.
Persistance: block remains intact untill another block marking
operation is initiated. Any other editing actions can be carried
as normal outside of the block boundaries. One block per source is
permitted.
Keyboard Mappings can be redefined for
CTRL+ X.Cut C.Copy V.Paste Z.Undo Y.Redo A.SelectAll
Those macros will be honored in block cut/copy/paste actions as well.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
% Fixed to honor right-to-left selection.
Now text can be selected in either directions with
keyboard and mouse, both.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
+ Implemented: horizontally scrolled text to be copied.
So now it is identical to xMate in all respects plus
selection through mouse as properitory to hbIDE.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbide/ideeditor.prg
+ Implemented: much-awaited and extremely-required feature - block copy/paste.
This implementation closely follows xMate's footsteps and is highly optimized,
having maximum tasks carried through .prg code. Probably this opens up
hbIDE to wider audience. This has been the most difficult feature so far,
and has consumed an entire week with intensive schedule.
Here is how it should be used:
Activation:
Clicking on the "Toggle Selection Mode" top-toolbar icon.
It must appear depressed after activation.
Selection Process:
Keyboard : Shift + Navigation Keys ( Left, Right, Up, down, PgUp, PgDn, Home, End ).
Mouse : Mouse-move while left-button pressed ( Only available for visible text ).
Copy : Ctrl+C ( text is also available on the clip-board )
Paste : Ctrl+V ( text only copied through Ctrl+C while in "Column Selection" mode ).
Inserts : Position cursor at first line and column,
Press Shift+Down arraow upto some ending row,
A thin-vertical-line should appear follwoing your cursor path,
Start typing any characters,
Any other navigation key will end this sesion,
Backspace key can be used to deleted previous characters.
If block is already selected, visible through color differentiation,
typing any charcter(s) will merely fill the selection with it,
Deletes : Select the text with Shift+Navigation Keys,
Press "Del".
It is highly possible that some of the artifacts may have gone not exactly like
xMate, so please report back. Also note that selections left-to-right are known
for accuracy, right-to-left may not produce accurate results. Other thing to
note is that horizontal scrolling has not been possible, so if your text goes
beyond right-edge of the window and you have a need to copy it, then first zoom-in
to brought it into viewport, then start selection process. Vertical length does
not matter. However with mouse you can only select a window-full of text.
xMate does not support column-selection with mouse.
* contrib/hbxbp/xbplistbox.prg
% Fixed a nasty bug.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
* contrib/hbqt/hbqt_hbslots.cpp
+ Implemented: horizontal ruler in the editor instances at the top
of the window. Opinions are welcome about its base and tab colors.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Fix to handle space key when code completion popup is visible.
* contrib/hbide/ideeditor.prg
! Corresponding fix to above one.
* contrib/hbide/idethemes.prg
+ Added more Harbour keywords to be distinguished in color.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideshortcuts.prg
! Fixed few artifacts belonging to function prototype display
as tooltip and code completion behavior.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Little formatting.
* contrib/hbxbp/xbpdialog.prg
+ Added :removeEventFilter() on destruction.
* contrib/hbide/resources/environments.ui
* contrib/hbide/resources/environments.uic
* contrib/hbide/resources/projectpropertiesex.ui
* contrib/hbide/resources/projectpropertiesex.uic
* contrib/hbide/resources/shortcuts.ui
* contrib/hbide/resources/shortcuts.uic
* contrib/hbide/hbide.ch
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idehome.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideshortcuts.prg
! Removed keyboard shortcuts from menu items.
! Attempted fix on nixes when project folder is not created before
definition is saved.
! Dialog control labels: Exit => Close.
! More fixes to detect the executable from linker output ( still not perfect ).
! Changed the way project is launched. hope it will be useful for *nixes.
+ Implemented user-defined keyboard macros with following functionality:
New : whatever definition is typed-in the relevant fields is validated
with existing ones and if unique is appended at the end of list.
The macro is also validated for compilation.
Set : current hilighted macro is redefined from values from fields
after duplicate validation. The macro is also validated for compilation.
Test : Attempts to compile the macro as a block and reports back if
successful or not. It just compiles but not evaluates.
delete : deletes the highlighted macro after confirmation.
Load : loads macros from a disk-file and merges them with existing ones.
In case of duplicacy, last loaded macro is retained.
Save : Saves the macros in hbide.scu disk-file in hb_serialize()d form.
Save As: Saves the macros in a disk-file with any name but with .scu extension.
Any change is visible instantly,
Unless <Save> is clicked, current loaded macros are not saved on disk.
This allows to use temporary created macros for current session.
More info at http://hbide.vouch.info/ ( Topic: Keyboard Mappings )
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Removed some debug calls.
+ contrib/hbide/resources/shortcuts.ui
+ contrib/hbide/resources/shortcuts.uic
+ Added shortcuts interface widget.
* contrib/hbide/resources/themesex.ui
* contrib/hbide/resources/themesex.uic
! Fixed some resizing issues when objects were appearing at
dis-proportioned locations.
* contrib/hbide/hbide.hbp
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideshortcuts.prg
* contrib/hbide/idetools.prg
* contrib/hbide/idewizard.prg
* contrib/hbide/resources/check.png
+ Implemented: interface to define keyborad shortcuts.
This implementation is like xMate and provides a powerful
mechanism to write developer-friendly code to simulate
exact same behavior he/she might be adept to other editors.
The development is under progress, just play with its interface
and let me know if some more elements can be added.
More on http://hbide.vouch.info/ ( Topic: Keyboard Mappings )
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Optimization and LineNumbers area refinements.
* contrib/hbide/hbide.hbp
+ contrib/hbide/hbide.ico
+ Added icon for windows builds.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idehome.prg
* contrib/hbide/idestylesheets.prg
* contrib/hbide/idethemes.prg
! Some dialogs made static instead of locals.
! Line number area of editor instances is now optimized to
not show empty space at the left if no "Book Mark" is employed.
! Few more optimizations.
+ contrib/hbide/resources/arguments.png
+ contrib/hbide/resources/description.png
* contrib/hbide/resources/docviewgenerator.ui
* contrib/hbide/resources/docviewgenerator.uic
+ contrib/hbide/resources/docwriter.png
+ contrib/hbide/resources/docwriter.ui
+ contrib/hbide/resources/docwriter.uic
+ contrib/hbide/resources/editstree.png
+ contrib/hbide/resources/example.png
+ contrib/hbide/resources/helpdoc.png
+ contrib/hbide/resources/load_1.png
+ contrib/hbide/resources/load_2.png
+ contrib/hbide/resources/load_3.png
+ contrib/hbide/resources/panel_8.png
+ contrib/hbide/resources/projtree.png
* contrib/hbide/resources/tabs.png
+ contrib/hbide/resources/tests.png
* contrib/hbide/resources/togglelinenumber.png
+ contrib/hbide/resources/unload_1.png
+ Added more images, refind few.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! More artifacts corrected.
* contrib/hbqt/hbqt_hbslots.cpp
* contrib/hbqt/hbqt_hbslots.h
+ Added more slots.
* contrib/hbxbp/xbptoolbar.prg
! Provided the "objectName" TO main toolbar.
* contrib/hbide/hbide.hbp
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
+ contrib/hbide/idedocwriter.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idehome.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideobject.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idestylesheets.prg
* contrib/hbide/idethemes.prg
! Corrected many artifacts, so many that cannot be mensioned precisely.
+ Implemented: basic documentation writer.
Documentation Writer
--------------------
1. Click on "Documentation Writer" icon on the right-toolbar,
2. Open some source in the editor,
3. Position cursor somewhere inside a function body,
4. Click on "Load from current function" icon on the
top-toolbar of "Document Writer" widget,
5. Look at the contents, few fields will be auto filled
with various info from current function,
6. Complete the other fields with relevent information,
7.1 Click on "Save the documentation with current function",
.2 Look at the function body in the editor,
The NANFORUM compliant documentation will be inserted
at the top of function's prototype.
8.1 Click on "Save written/updated documentation" icon,
and provide the filename to save on disk,
.2 Copy such generated .txt in /harbour/doc/en,
.3 Open "Harbour Document Viewer" and you should be viweing
newly written documentation there.
.4 Such generated file is ready to be uploaded to SVN,
just send it to the list and group will decide if it needs
something extra.
It is a quick way to generate help. You can keep the documentation
in your sources or can create a tree like Harbour's. I know
there is a lot more to be done in this tool, but at least group
can start using it.
My humble request is: start writing the documentation. I will polish
this tool in coming week, so be assured that everything which need
be done will be done. You cooperation is more important than this tool.
;TODO: Loading existing doc and merging it back after edits, on disk.
Loading doc from source file and replacing old with new one.
And many more, plus, whatever you will demand.
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/hbqt_hbqplaintextedit.h
! Fixed behavior of book-marks. Now color representation
on bookmarked lines is persistent and consistent with
corresponding buttons in the statusbar.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/resources/themesex.ui
* contrib/hbide/resources/themesex.uic
* contrib/hbide/ideeditor.prg
* contrib/hbide/idethemes.prg
+ Reimplemented "Themes".
* Now it is possible to change current line and line area background
colors. Also synchronized the current colors for these areas
with rest of the theme.
* Now you can apply a particular theme globally to all tabs.
* Made easy the way GUI elements are presented, it is more intuitive.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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
+ Prepared to manage current line and line area colors.
* contrib/hbqt/doc/en/class_hbqplaintextedit.txt
* 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/ideeditor.prg
* contrib/hbide/idefunctions.prg
* contrib/hbide/ideobject.prg
+ Implemented "Code Completion" feature.
How it works:
1. Load prototype tags in "Projects Functions Lookup".
2. Activate some editor tab.
3. Start typing a function proto.
4. After 3 characters a popup will appear beneth the cursor.
5. Select from the list, by mouse or use navigation keys.
6. Prototype will be there in the editor exactly with
same cases your prototype is defined.
Input is welcome.