* config/postinst.hbs
* implemented same ASORT() fix as in prev commit by Przemek.
(it may be important once we modify hbrun/hbmk2 to run
scripts under UTF8 CP)
* contrib/hbnetio/utils/hbnetio/modules.hbp
- contrib/hbnetio/utils/hbnetio/rpcdemo.hbs
+ contrib/hbnetio/utils/hbnetio/rpcdemo.hb
- contrib/hbide/plugins/hbide_script_qtgui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hb
- contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hb
- utils/hbmk2/examples/plug_tpl.hbs
+ utils/hbmk2/examples/plug_tpl.hb
- tests/stripdoc.hbs
+ tests/stripdoc.hb
* .hbs -> .hb for Harbour scripts.
* tests/stripdoc.hb
+ use directry.ch
* contrib/hbqt/qtcore/hbqt_pointer.cpp
* contrib/hbqt/qtcore/hbqt_hbqslots.cpp
* contrib/hbqt/qtcore/hbqt_hbqevents.cpp
* contrib/hbqt/qtcore/hbqt_misc.prg
* contrib/hbqt/utils/hbqtgen.prg
* Renamed HBQT_PTR() -> __HBQT_PTR().
(HBQT_PTR() still present and can be renamed once sources were regenerated)
* Renamed QT_[SLOTS|EVENTS]_*() -> __HBQT_[SLOTS|EVENTS]_*()
This also fixes the problem where these were missing from .hbx file.
* Renamed HBQT_ERROR() -> __HBQT_ERROR().
+ Added NOTE about contradiction where :hasValidPointer() will never
return .T. for valid objects created with <class>FromPointer() call.
Another reason to drop this object instantiation method.
+ Added more TODO/NOTE/TOFIX text.
* contrib/hbqt/qtcore/hbqtcore.hbx
* contrib/hbqt/qtnetwork/hbqtnetwork.hbx
* Refreshed.
* contrib/hbqt/tests/dialogqt.prg
* contrib/hbide/plugins/hbide_script_qtgui.hbs
* QT_[SLOTS|EVENTS]_*() -> __HBQT_[SLOTS|EVENTS]_*()
; QUESTION: Should these examples changed to use :connect()/:disconnect()?
* 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
! Changed: the space character not to terminate the code completion dialog.
It is needed for commands to be selected at next level.
+ contrib/hbide/plugins/hbide_script_rdds.prg
+ Added a dummy script to supply the required info
for different actions of an RDD operation if another
RDD is linked with hbIDE. DBFCDX and DBFNTX are
linked by default.
To make this feature functional, this dummy script has
to be popiulated with real-time code and be copied inside
"resources" folder with another name prefixed as:
hbide_persist_myrdd.prg
A complete example will be published in the meantime.
* contrib/hbide/hbide.prg
* contrib/hbide/idebrowse.prg
* contrib/hbide/ideplugins.prg
+ Implemented: persistent record/order/rowpos/colpos
of ideDBU views. Now tables are opened in the same
state of last run.
+ Totally reworked table-management engine. Now supports
external RDDs if linked which take effect automatically
for database operations, i.e., /rdds/exists/select/open;
more actions will follow.
* contrib/hbide/hbide.hbp
- Deleted: ideprotos.prg
- contrib/hbide/plugins/example_gui.hbs
+ contrib/hbide/plugins/hbide_script_qtgui.hbs
+ Added: the prefix "hbide_script_" to hbide callable script files.
- contrib/hbide/plugins/savebackup.hbs
+ contrib/hbide/plugins/hbide_plugin_savebackup.hbs
+ Added: the prefix "hbide_plugin_" to hbIDE plugin files.
+ contrib/hbide/resources/file-open.png
* contrib/hbide/hbide.qrc
+ Added: one more image for tool-buttons on "Files" page of "Setup".
* contrib/hbide/editor.ui
* contrib/hbide/environments.ui
* contrib/hbide/setup.ui
% Modified and Added: some of the components.
* contrib/hbide/hbide.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/ideenviron.prg
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idehbprotos.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideplugins.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idesaveload.prg
* contrib/hbide/ideskeletons.prg
* contrib/hbide/idesources.prg
* contrib/hbide/idethemes.prg
+ Implemented: hbIDE installation independent paths to hold
various files and components. Now only hbide.ini reference is
required to load all other parameters pointing to next
needed locations for various components. It also effectively
means that hbIDE can be distributed as stand alone single
executable ( if linked statically with Qt ) or only with
Qt's run-time .dlls. hbIDE now makes no assumptions itself.
User has to furnish few infos, though, interfaced at a single point.
The Interface to hold information : <Setup><Files>
The Paths and Files Interpretation:
0. hbide.ini Path - File - Cmd Line: APPDATA|HOME/hbide
1. Harbour's Root Path - Path - No Assumptions: should be provided
2. Hbmk2 Executable Location - File - Default: hb_getenv("HBIDE_DIR_HBMK2")/hbmk2
3. Resources [Plugins,Scripts,etc] - Path - Default: _Path_of_hbIDE_ini_
4. Temporary Files - Path - Reserved: TODO
5. Environments [.env] - File - Default: _Path_of_hbIDE_ini_dot_env
6. Keyboard Mappings [.scu] - File - Default: _Path_of_hbIDE_ini_dot_scu
7. Code Snippets [.skl] - File - Default: _Path_of_hbIDE_ini_dot_skl
8. Syntax Highlighter Themes [.hbt]- File - Default: _Path_of_hbIDE_ini_dot_hbt
The interface provides for a quick editing of .env.skl.hbt files in-place.
Interface also provides for viewing facility of hbide.ini file.
Plugins and scripts have gone prefix and usage changes:
1. _Path_to_Resources/hbide_auto_*.hbs|prg are automatically executed
just after hbIDE appears on the screen.
2. _Path_to_Resources/hbide_plugin_*.prg|hbs|hrb can be defined to be
executed as per previous instructions.
3. _Path_to_Resources/hbide_protos_* are automatically loaded for
code completion lists leading to proto-tips. [New - details below]
+ Implemented: auto loading of code completion lists and proto-tips.
Any file as hbide_protos_SOMENAME_with_or_without_extention placed in
_Resources_ folder will be automatically loaded at startup. These files
are plain text files. The following rules apply:
1. Each proto must be placed on one line.
2. Blank lines are permissible.
3. Commands can be placed on multiple lines,
each line ending with ";" except the last one, like:
COPY [TO <(f)>] [SDF] [FIELDS <fields,...>] ;
[FOR <for>] [WHILE <while>] [NEXT <next>] ;
[RECORD <rec>] [<rest:REST>] [ALL] [CODEPAGE <cp>]
4. Functions must be opened with a brace without any preceeding space:
MyFunction ( abd, cde, efg ) => Wrong
MyFunction( abd, cde, efg ) => Right
I must be omitting some more facts which may have been changed|removed.
Also regression is possible, please make few tests and report back if
something went weired.
+ contrib/hbide/plugins/example_gui.hbs
+ Added: a gui dialog script which can be executed from
"Run as Script" toolbar icon or as auto executable script.
The aim to put this script in SVN is to facilitate third party
libraries to provide their users with a GUI interactive interface
to set library specific environment based on user options.
* contrib/hbide/ideplugins.prg
+ Added support for .hbs extension (handled similarly as .prg).
The logic is very fuzzy here, it could be greatly simplified
like it is in hbrun or hbmk2. I don't understand why hbide
is trying to guess the filename, shouldn't it be the basic
input parameter? or even better the result of a DIRECTORY()
scan, as we've discussed?
* contrib/hbide/plugins/savebackup.prg
- Deleted .ch header reference to make it work as source
code plugin.
- contrib/hbide/plugins/savebackup.hrb
- Delete prebuilt .hrb. It's better to use the source version
by default.
* 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/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.