* contrib/hbxbp/listbox.prg
+ Extended: method :addItem( cText, qImage ) in XbpListBox() class.
This is Harbour extension, Xbase++ does not accepts <qImage>.
+ contrib/hbide/resources/dc_class.png
+ contrib/hbide/resources/dc_method.png
+ contrib/hbide/resources/dc_procedure.png
* contrib/hbide/docks.prg
* contrib/hbide/editor.prg
* contrib/hbide/hbide.qrc
* contrib/hbide/main.prg
* contrib/hbide/misc.prg
* contrib/hbide/tags.prg
+ Added: icons to represent the type of identifier in <Functions List>.
The following four types are considered:
1. Class 2. Method 3. Procedure 4. Function
STATIC FUNCTION/PROCEDURE is considered normal FUNCTION/PROCEDURE.
* contrib/hbide/docks.prg
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
* contrib/hbide/hbide.qrc
+ contrib/hbide/resources/align_at.png
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
+ Implemented: aligning a selected-text fragment (column-selection mode)
to a contained string. The activation is selected-text toolbar icon
<Align At...>. This activation presents a input dialog to provide
string to align-at. The following illustration will make it clear:
abc := 212
bcdefg := 323
a := 413
xyzab := 33
=>
Select above lines with column-selection mode
Clock on <Align At...> icon
Type ":=" in the input dialog
=>
abc := 212
bcdefg := 323
a := 413
xyzab := 33
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
+ Pair-matching of DO CASE/ENDCASE and DO WHILE/ENDDO.
* contrib/hbide/docks.prg
* contrib/hbide/hbqtoolbar.prg
* contrib/hbide/saveload.prg
* contrib/hbide/setup.ui
+ Implemented: <Setup><HbIDE Setup><General><Show Selection Toolbar>.
This toggle the selected-text toolbar to appear as soon as
selection process starts.
+ Enhanced: Selected-text toolbar orientation for column-selection mode.
It is now verutical and is positioned 30 pixels to the right of
selected rectangle. Also toolbar never leaves the top and bottom
edges of editing-instance's viewport.
* contrib/hbide/docks.prg
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
! Refined: selected-text's in-line toolbar; its positioning and
the actions which bring it up and hide. Now toolbar has title-bar
and X button, and is positioned in the center of the
editing-instance horizintally. Vertical it follows the cursor
position but one line down.
* contrib/hbide/docks.prg
* contrib/hbide/edit.prg
* contrib/hbide/main.prg
+ Implemented: in-place toolbar of actions belonging to selected text.
The moment selection of text is initiatiated, either via keyboard
or mouse, a highlighted toolbar will follow the current cursor
position containing actions pertaining to selected text. The toolbar
will hide itself as soon as selection process is over. This seems
to be natural as such but opinions are welcome. Also I foresee
some other attributes which can be implemented on this protocol,
which may follow in next commits.
* harbour/contrib/make.hb
* enable concurrent compilation of contrib projects when -j<n>
GNU make switch is used. It reduced compilation time of clean
Harbour SVN tree in my system from 5m:16s to 2m:30s
Please review me. I do not know if chose good place to enable it.
* harbour/src/3rd/tiff/LICENSE
! fixed EOLs and set svn:eol-style to native
* harbour/src/3rd/tiff/tiff.dif
* rediffed with
hbmk2 ../../../bin/3rdpatch.hb -rediff
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new C function:
PHB_ITEM hb_objGetVarPtr( PHB_ITEM pObject, PHB_DYNS pVarMsg );
it returns pointer to object instance variable
* harbour/src/rtl/tclass.prg
* cleand parameter name
* harbour/contrib/hbmisc/spd.c
* removed unnecessary comment for older version which didn't use
hb_snprintf()
* formatting
* harbour/contrib/hbmxml/3rd/minixml/config.h
% use hb_snprintf() and hb_vsnprintf() instead of local emulation
based on CRTL sprintf()
* harbour/include/hbdefs.h
+ added HB_PF64 definition - it's printf format for HB_[UI]64 type
* harbour/src/3rd/tiff/print.c
* harbour/src/3rd/tiff/tiffconf.h
! use HB_PF64 instead of PFLL
* harbour/src/3rd/tiff/tiffconf.h
+ added TIFF_FILE_HANDLE definition
* harbour/src/3rd/tiff/tiffio.h
! use TIFF_FILE_HANDLE
* harbour/src/3rd/tiff/dirread.c
! fixed typo in TIFF_UINT32_MAX definition
* harbour/src/3rd/tiff/Makefile
! enabled fcntl.h in *unix builds
* harbour/src/3rd/tiff/tiff.dif
* updated
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* Optimizations: pair-matching of Harbour control structures
shifted to C++ level and made in-line, no need to click
on the keywords. Pairs are highlighted while navigaing the
source. This is spontaneous.
! Tab key to behave differently while in column-selection mode.
Before tab spaces were inserted at the last column selected,
now it is first column selected, which is the normal behavor.
% While in selection mode, pair-matching is disabled, giving
us speed advantage.
- Removed: PRG block call on QEvent_MouseButtonPress.
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
! Refined: the way bookmarks were published. Now line-area's
background is painted with the same color that of bookmark
line, instead of inreasing the width of line-area and painting
a rectangle at the left side. This had two unwanted effects:
1. A flicker of entire editing area,
2. Selection of text by mouse was leaving a weired trail sometimes.
* contrib/hbide/dict.prg
* contrib/hbide/edit.prg
* contrib/hbide/themes.prg
+ Implemented: The concept of <User-Dictionaries> for sake of
syntax highlighting and case conversion while editing a
source. User has the ability to pull keywords from :
a. standard text file (.txt),
b. Harbour's symbol collection mechanism knows
as .hbx files,
c. a text file with the extension .dic (xMate),
d. or any other type of text file ( be careful ).
Dictionaries can be kept activated/deactivated.
The following attributes can be assigned to the keywords:
1. Bold
2. Italic
3. Underlined
4. Text Color
5. Back Color
6. Case Sensitivity : from coloring point of view
Keywords can be attributed to be converted to:
1. As is typed by the user
2. Upper-cased
3. Lower-cased
4. As published in the dictionary.
All changes in the dictionary management are reflective
in next run of HbIDE. The changes cannot be made effective inline.
; This commit completes a long-standing and much requested feature.
* contrib/hbide/actions.prg
- Removed: some options which cannot be implemented, at least
from here.
* contrib/hbide/dict.prg
* contrib/hbide/saveload.prg
* contrib/hbide/setup.ui
* contrib/hbide/themes.prg
+ Advanced: User-Dictionaries.
* contrib/hbide/dict.prg
+ Added: line number to the Book-Mark button's tooltip.
* contrib/hbide/edit.prg
* contrib/hbide/saveload.prg
+ Advanced: the user-interface elements needed to implement
User-Dictionaries, still a work-in-progress.
* contrib/hbide/docks.prg
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
+ Implemented: tooltip on BookMark Buttons.
The tooltip content will be the source line over which
visited bookmark is installed. With many bookmarks active,
one tends to forget which belongs to what and where one
wants to jump. This is very handy visual element in those
situations.
* contrib/hbide/edit.prg
! Refined: Alignment of assigment opertaor ":=" on previous lines
starting at the same indent position. Now object:variable :=
is also honoured. For example:
oError:severity := ES_ERROR
oError:args :=.
=>
oError:severity := ES_ERROR
oError:args :=.
* harbour/include/hbgtinfo.ch
+ added new hb_gtInfo() action: HB_GTI_UNITRANS
It allows to set translation table for UNICODE characters
* harbour/src/rtl/gtwvt/gtwvt.c
* harbour/src/rtl/gtwvt/gtwvt.h
+ added support for HB_GTI_UNITRANS - due to limited support
for unicode vlaues in MS-Windows raster fonts it's necessary
for some custom fonts.
* harbour/src/rtl/tpersist.prg
+ implemented 2-nd parameter <lIgnoreErrors> in ::LoadFromFile()
and ::LoadFromText() methods
* harbour/src/rtl/cdpapi.c
* indenting
* contrib/hbqt/hbmk2_qt.hb
! Fixed: the treatment of html compliant ->setToolTip( calls.
It has been tedius because it went unnoticed due to Qt versions
where they always keep on changing the string treatment.
This fixes issue reported on users list.
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
! Reinstated: execution of Mouse events to PRG level. These events
cannot be catched with our existing event handeller, probably
Qt does not propogate them to the widget in QPlainTextEdit().
* contrib/hbide/edit.prg
+ Implemented: <Setup><HbIDE Setup><Intelli-sense><Align Operator := to Prev Lines>
If activated you will experience the following behavior:
IF lThis
abc := 200 /* . == editing cursor */
bcdefghijk :=.
ENDIF
=>
IF lThis
abc := 200
bcdefghijk :=.
ENDIF
You continue:
IF lThis
abc := 200
bcdefghijk := 3044
x :=.
ENDIF
=>
IF lThis
abc := 200
bcdefghijk := 3044
x :=.
ENDIF
+ contrib/hbqt/tests/browarray.prg
+ Added: an array browser which also allows to add data rows
to the existing array. This facilitates the understanding
of HBQAbstractItemModel()'s internal working. This commit
answers to many question posted in the mailing-list and
also directed to my mail-box.
* contrib/hbide/edit.prg
! Fixed: a nasty side-effect of pair-matching; weired editing behaviour.
Now another click will clear the matching but keeping the cursor
position at its previous row/column. You may need to click twice
to place cursor at desired position if matched/pair is active.
* contrib/hbide/edit.prg
+ Added: class/endclass, function|procedure|method/return to control
structures list, for the purpose of highlighting pairs.
! Refined: the cuursor position exactly where it should been after
highlight operation.
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* Called: <block> on QEvent::MouseButtonPress. For unknown reasons
this event is not being received on PRG level with current
mechanism [TOBE: investigated].
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
+ Implemented: highlighting matching control structure.
The supported matches are:
if/endif; do while/enddo; do case/endcase; switch/endswitch; for/next
; HOWTO: click on any control strucure keyword as above, this and
its matching pair will be highlighted. Next click will clear the
previous one and initiate the new match. Any key will clear the
current match.
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
% Optimized: collection of variables:
a) longer than 3 characters,
b) variable is collected if space,coma,collon " ,:" follows it.
+ Started: matching of control structures, a work-in-progress.
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
+ Implemented: collection of variables while editing the source
and making them available next time that variable is started
to be typed again. Thus collected variable is populated in
Code Completion List of Prototypes and Keywords. This is a
productivity tool and comes handy where one is addict to
long variable names.
* harbour/src/rtl/valtype.c
* modified HB_ISEVALITEM() to use HB_IS_EVALITEM() macro
* harbour/src/pp/ppcore.c
! fixed typo in .ppt file handle - many thanks to Teo Fonrouge
for the information about the problem.
* harbour/include/hbthread.h
* harbour/src/vm/thread.c
+ added new C function:
HB_THREAD_NO hb_threadNO( void )
it returns unique thread number
* harbour/src/vm/classes.c
* cleaned static function names
* harbour/src/rdd/dbffpt/dbffpt1.c
* use RDDINFO() method instead of direct access to RDD TSD data
* harbour/src/rdd/dbfntx/dbfntx1.c
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* changed initialization method - now RDD TSD data is initialized
by each thread which access it. It resolves the problem with
memo type in NSX and NTX RDDs - it was SMT/DBT in main thread
but in child threads default FPT driver was used.
* harbour/tests/speedtst.prg
! fixed xHarbour compilation - it was broken by HB_EOL()
* contrib/hbide/edit.prg
+ Implemented: <Class Declaration> complete with class name.
CLASS abc .
OR
CREATE CLASS abc .
=>
CREATE CLASS abc .
DATA xDummy INIT NIL
METHOD new()
METHOD create()
ENDCLASS
METHOD new() CLASS abc
RETURN Self
METHOD create() CLASS abc
RETURN Self
* contrib/hbide/dict.prg
% Added: some more data members, q work-in-progress.
* contrib/hbide/themes.prg
* Minor.
* contrib/hbide/setup.ui
* contrib/hbide/edit.prg
* contrib/hbide/saveload.prg
+ Added: <Setup><HbIDE Setup><Intelli-sense><Function Declaration>
To Toggle [LOCAL] [YES], [RETURN] [YES], [SEPERATOR] [YES], [DOCUMENTATION] [NO] [TOBE]
FUNCTION|function|Function|fUnCtioN .
=>
FUNCTION .
LOCAL
RETURN
/*....................*/ // User defined separator line
// and a blank line after the separator
* contrib/hbide/edit.prg
! Fixed: undo stack was behaving weired once statement structures
were inserted.
% Changed: the behaviour of "Embrace Lines on Same Indent", activable
from <Setup><HbIDE Setup><Intelli-sense>, not to embrace if
immediate next line is empty on. Here is the illustration:
ORIGINAL:
DO WHILE .T.
abc := 12
bcd += 2
IF bcd > 200
EXIT
ENDIF
ENDDO
DO WHILE .T.
IF . // type IF . ( dot means your cursor )
abc := 12 // note, there is no blank line in between
bcd += 2 // IF . and abc := 12
IF bcd > 200
EXIT
ENDIF
ENDDO
DO WHILE .T.
IF . // Converted to ( dot means your cursor )
abc := 12
bcd += 2
IF bcd > 200
EXIT
ENDIF
ENDIF
ENDDO
DO WHILE .T.
IF . // type IF . ( dot means your cursor )
// note, there is a blank line in between
abc := 12 // IF . and abc := 12
bcd += 2
IF bcd > 200
EXIT
ENDIF
ENDDO
DO WHILE .T.
IF . // Converted to ( dot means your cursor )
ENDIF
abc := 12
bcd += 2
IF bcd > 200
EXIT
ENDIF
ENDDO
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
% Code cleanup.
* contrib/hbide/setup.ui
+ Added: a new page <Intelli-sense> next to <General>.
It holds the user-defined values for next level of
source editing intellisense. Read below.
* contrib/hbide/edit.prg
+ Implemented: most of the next level of editing intellisense
points are configurable by the developer. These include:
1. To activate the closing structure of a statements
as a whole lot [YES]
2. To toggle IF/ENDIF [YES] ELSE [NO] Embrace Lower Lines [NO]
3. To toggle FOR/NEXT [YES]
4. To toggle DO WHILE/ENDDO [YES]
5. To toggle DO CASE/ENDCASE [YES] # CASES [3] OTHERWISE [NO]
6. To toggle SWITCH/ENDSWITCH [YES ] # CASES [3] OTHERWISE [NO]
EXIT on same line [NO]
7. To toggle ADD CLOSING PARENTHESIS of a function [NO]
8. To toggle INSERT SPACES - () >= ( . ) [NO]
9. To toggle ADD CODEBLOCK BODY - {|. => {|.| } [NO]
10.To toggle ADD SPACE AFTER := [NO]
11.To toggle ALIGN := WITH PREVIOUS LINES [NO] [TOBE]
12.To toggle FORMAT LINE AFTER ENTER [NO] [TOBE]
; Please forward your suggessions.
* contrib/hbide/edit.prg
+ Included: qtcore; qtgui; qtnetwork; functions list to be
properly cased while writing the code.
; QUESTION: .hbx files contain upper-cased function list,
the only exception is harbour.hbx where functions are
properly cased. Is there a way to get .hbx(es) with
properly cased functions ?
* contrib/hbide/edit.prg
+ Implemented: auto insertions of statements closing structure.
IF, FOR, DO CASE, DO WHILE, SWITCH
The moment you type SPACE after the statement, the next
elements are inserted automatically. The cursor stays at
where . is shown:
IF . Is it logical to insert ELSEIF ?
ENDIF
FOR .
NEXT
DO CASE
CASE . CASE can be configured to
CASE allign the DO CASE indentation
CASE or one more tab to the right.
OTHERWISE Also number of CASE stements.
ENDCASE
DO WHILE .
ENDDO
SWITCH . CASE can be configured to
CASE allign the SWITCH indentation
EXIT or one more tab to the right.
CASE Also number of CASE stements.
EXIT
CASE
EXIT
ENDSWITCH
* contrib/hbide/edit.prg
* contrib/hbide/hbide.qrc
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.h
* contrib/hbqt/qtgui/qth/HBQPlainTextEdit.qth
% Changed: the way function prototype was being displayed.
It now take use of QToolTip() instead of QWidget/QLabel
combination tied to editor's viewport.
- contrib/hbide/hbfunc.txt
- Removed: hbfunc.txt
* contrib/hbide/edit.prg
% Applied: harbour.hbx instead of hbfunc.txt provided listing
of Harbour core functions. Thanks Viktor for the tip.
TODO: set right the camel casing of some function groups,
for example, dbSetOrder => DbSetOrder and its group.