* 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.
* contrib/hbide/hbfunc.txt
% Extracted: function names from harbour.hbx and applied capitalization
for few groups. I really had never viewed harbour.hbx, an
excellent repository what Harbour contains.
+ contrib/hbide/hbfunc.txt
* contrib/hbide/hbide.qrc
+ Added: Harbour core's functions list with proper capitalization.
Please review and add/delete/change as per set standards.
* contrib/hbide/edit.prg
* contrib/hbide/editor.prg
* contrib/hbide/saveload.prg
+ Implemented: auto case conversion of Harbour functions as per
disctionary which is contained inside HbIDE executable as a
resource.
+ Implemented: auto-tab placement based on the Harbour keyword.
So if you start typing a keyword, say at col 4, and tab-spaces
are set to 3, then that keyword will automatically placed at
column 3.
+ Implemented: logical text operators to be converted to uppercase.
These are .OR. .AND. .NOT. .F. .T.
NOTE: this commit also improves the speed of editing, plus corrects
the function names as per Harbour standards. So if a Harbour
function is called you need not to pay attention in which way
you are writing. You simply need to remember that opening brace
must follow the end of function which triggers the corrective
action. Regression is possible to some extent, please report.
You can also forward suggessions to improve the editing part.
* contrib/hbide/sources.prg
% Remoded: redundant code parts and organized with more options.
* contrib/hbqt/qtgui/hbqtgui.hbx
* contrib/hbqt/qtgui/qth/filelist.hbm
+ contrib/hbqt/qtgui/qth/QToolTip.qth
+ Added: class QToolTip(). Note that this class is usable from within
QEvent_ToolTip signal which will post QHelpEvent() object like:
oWidget:connect( QEvent_ToolTip, {|oEvent| ::execEvent( QEvent_Help, oEvent ) } )
Then
METHOD myClass:execEvent( nEvent, oEvent )
LOCAL oToolTip
IF oEvent:type() == QEvent_ToolTip
oToolTip := QToolTip()
oToolTip:setText( "some other text" )
RETURN .T. /* To stop the event chain */
ENDIF
RETURN .F.
* contrib/hbide/tools.prg
+ Implemented: removal of a editng panel with confirmation.
All modified sources will be confirmed to be saved if modified
before a panel is removed.
! Fixed: if order has not been changed, alert message requesting
re-loading HbIDE will not be displayed. Before the message was
displayed in every click on <OK> button.
+ contrib/hbide/panels.ui
* contrib/hbide/hbide.hbp
+ Added: new widget to manage editing panels.
* contrib/hbide/docks.prg
* contrib/hbide/saveload.prg
* contrib/hbide/tools.prg
+ Implemented: 1. to reorder editing panels : drag & drop mechanism
2. to define panel tabs shape : rounded | triangular
3. to define panel tabs position : top | left | bottom | right
Activation is through <Panels> icon on top-toolbar of editing area.
* contrib/hbide/resources/b_18.png
* contrib/hbide/resources/b_19.png
* contrib/hbide/resources/b_2.png
* contrib/hbide/resources/b_5.png
* contrib/hbide/resources/b_8.png
% Reordered: to put more glamour to HbIDE.
* contrib/hbide/edit.prg
* contrib/hbqt/qtgui/hbqt_hbqplaintextedit.cpp
! Fixed: tab key was misbehaving on an empty line.
! Fixed: while in column mode, if the original text cursor was
before logical cursor, insertion of any key was clearing the selection.
An annoying bug it was.