diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 29aa6b99f6..7c1dcb7a25 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,19 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-12-28 13:43 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbqt/hbqt_misc.prg + % Fixed small omission, thanks Vailton. + * contrib/hbxbp/xbprtf.prg + % Fixed wrong Qt call, thanks Vailton. + + * contrib/hbide/hbide.hbp + * contrib/hbide/hbide.prg + + contrib/hbide/idefindreplace.prg + ! Separated Find/Replace class. + 2nd round of reforms. + More follows. + 2009-12-28 20:48 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * src/vm/fm.c * include/hbapi.h diff --git a/harbour/contrib/hbide/hbide.hbp b/harbour/contrib/hbide/hbide.hbp index ea96002cea..d4ce6fec97 100644 --- a/harbour/contrib/hbide/hbide.hbp +++ b/harbour/contrib/hbide/hbide.hbp @@ -20,4 +20,5 @@ idetags.prg idemisc.prg ideactions.prg ideeditor.prg +idefindreplace.prg ideparseexpr.c diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index 33f3b3adfd..ae90974b90 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -98,8 +98,7 @@ PROCEDURE Main( cProjIni ) s_resPath := hb_DirBase() + "resources" + hb_OsPathSeparator() s_pathSep := hb_OsPathSeparator() - oIde := HbIde():new( cProjIni ) - oIde:create() + oIde := HbIde():new( cProjIni ):create() oIde:destroy() RETURN @@ -225,13 +224,6 @@ CLASS HbIde DATA oProps DATA oFR - METHOD find() - METHOD onClickFind() - METHOD replace() - METHOD replaceSelection() - METHOD onClickReplace() - METHOD findReplace() - METHOD updateFindReplaceData() METHOD manageFocusInEditor() METHOD convertSelection() @@ -327,7 +319,7 @@ METHOD HbIde:create( cProjIni ) //::setPosAndSizeByIni( ::oProjTree:oWidget, ProjectTreeGeometry ) - ::findReplace( .f. ) + ::oFR := IdeFindReplace():new():create( Self ) #if 0 qSet := QSettings():new( "Harbour", "HbIde" ) @@ -377,15 +369,15 @@ HB_TRACE( HB_TR_ALWAYS, "QSettings", qSet:applicationName(), qSet:value( "state" CASE ::mp1 == xbeK_CTRL_F IF !empty( ::qCurEdit ) - ::findReplace( .t. ) + ::oFR:show() ENDIF CASE ::mp1 == xbeK_CTRL_N IF !empty( ::qCurEdit ) - ::find() + ::oFR:find() ENDIF CASE ::mp1 == xbeK_CTRL_R IF !empty( ::qCurEdit ) - ::replace() + ::oFR:replace() ENDIF CASE ::mp1 == xbeK_TAB IF !empty( ::qCurEdit ) @@ -398,9 +390,7 @@ HB_TRACE( HB_TR_ALWAYS, "QSettings", qSet:applicationName(), qSet:value( "state" ::oXbp:handleEvent( ::nEvent, ::mp1, ::mp2 ) ENDDO - IF !empty( ::oFR ) - ::oFR:destroy() - ENDIF + ::oFR:destroy() /* Very important - destroy resources */ HBXBP_DEBUG( "======================================================" ) @@ -1565,7 +1555,7 @@ METHOD HbIde:executeAction( cKey ) ENDIF CASE cKey == "Find" IF !empty( ::qCurEdit ) - ::findReplace( .t. ) + ::oFR:show() ENDIF CASE cKey == "SetMark" CASE cKey == "GotoMark" @@ -2227,195 +2217,6 @@ METHOD HbIde:readProcessInfo( nMode, iBytes ) RETURN nil -/*----------------------------------------------------------------------*/ -// Find / Replace -/*----------------------------------------------------------------------*/ - -METHOD HbIde:onClickReplace() - - ::updateFindReplaceData( "replace" ) - - IF ::oFR:qObj[ "comboReplaceWith" ]:isEnabled() - ::replace() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:replaceSelection( cReplWith ) - LOCAL nB, nL, cBuffer - - DEFAULT cReplWith TO "" - - ::qCursor := QTextCursor():configure( ::qCurEdit:textCursor() ) - IF ::qCursor:hasSelection() .and. !empty( cBuffer := ::qCursor:selectedText() ) - nL := len( cBuffer ) - nB := ::qCursor:position() - nL - - ::qCursor:beginEditBlock() - ::qCursor:removeSelectedText() - ::qCursor:insertText( cReplWith ) - ::qCursor:setPosition( nB ) - ::qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, len( cReplWith ) ) - ::qCurEdit:setTextCursor( ::qCursor ) - ::qCursor:endEditBlock() - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:replace() - LOCAL cReplWith - LOCAL nFound - - IF !empty( ::qCurEdit ) - cReplWith := QLineEdit():configure( ::oFR:qObj[ "comboReplaceWith" ]:lineEdit() ):text() - ::replaceSelection( cReplWith ) - - IF ::oFR:qObj[ "checkGlobal" ]:isChecked() - IF ::oFR:qObj[ "checkNoPrompting" ]:isChecked() - nFound := 1 - DO WHILE ::find( .f. ) - nFound++ - ::replaceSelection( cReplWith ) - ENDDO - ::oSBar:getItem( SB_PNL_MAIN ):caption := 'Replaced [' + hb_ntos( nFound ) + "] : "+ cReplWith + "" - ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkGlobal" ]:setChecked( .f. ) - ::oFR:qObj[ "checkNoPrompting" ]:setChecked( .f. ) - ELSE - ::find() - ENDIF - ENDIF - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:onClickFind() - LOCAL lFound, nPos - - ::updateFindReplaceData( "find" ) - - IF ::oFR:qObj[ "radioEntire" ]:isChecked() - ::oFR:qObj[ "radioFromCursor" ]:setChecked( .t. ) - ::qCursor := QTextCursor():configure( ::qCurEdit:textCursor() ) - nPos := ::qCursor:position() - - ::qCursor:setPosition( 0 ) - ::qCurEdit:setTextCursor( ::qCursor ) - IF !( lFound := ::find() ) - ::qCursor:setPosition( nPos ) - ::qCurEdit:setTextCursor( ::qCursor ) - ENDIF - ELSE - lFound := ::find() - ENDIF - - IF lFound - ::oFR:qObj[ "buttonReplace" ]:setEnabled( .t. ) - ::oFR:qObj[ "checkGlobal" ]:setEnabled( .t. ) - ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .t. ) - ELSE - ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkGlobal" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .f. ) - ENDIF - - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:find( lWarn ) - LOCAL nFlags - LOCAL cText := QLineEdit():configure( ::oFR:qObj[ "comboFindWhat" ]:lineEdit() ):text() - LOCAL lFound := .f. - - DEFAULT lWarn TO .t. - - IF !empty( cText ) - nFlags := 0 - nFlags += iif( ::oFR:qObj[ "checkMatchCase" ]:isChecked(), QTextDocument_FindCaseSensitively, 0 ) - nFlags += iif( ::oFR:qObj[ "radioUp" ]:isChecked(), QTextDocument_FindBackward, 0 ) - - IF !( lFound := ::qCurEdit:find( cText, nFlags ) ) .and. lWarn - ShowWarning( "Cannot find : " + cText ) - ENDIF - ENDIF - - RETURN lFound - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:updateFindReplaceData( cMode ) - LOCAL cData - - IF cMode == "find" - cData := QLineEdit():configure( ::oFR:qObj[ "comboFindWhat" ]:lineEdit() ):text() - IF !empty( cData ) - IF ascan( ::aIni[ INI_FIND ], {|e| e == cData } ) == 0 - hb_ains( ::aIni[ INI_FIND ], 1, cData, .t. ) - ::oFR:qObj[ "comboFindWhat" ]:insertItem( 0, cData ) - ENDIF - ENDIF - // - ::oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + cData - ELSE - cData := QLineEdit():configure( ::oFR:qObj[ "comboReplaceWith" ]:lineEdit() ):text() - IF !empty( cData ) - IF ascan( ::aIni[ INI_REPLACE ], cData ) == 0 - hb_ains( ::aIni[ INI_REPLACE ], 1, cData, .t. ) - ::oFR:qObj[ "comboReplaceWith" ]:insertItem( 0, cData ) - ENDIF - ENDIF - ENDIF - RETURN Self - -/*----------------------------------------------------------------------*/ - -METHOD HbIde:findReplace( lShow ) - - IF empty( ::oFR ) - ::oFR := XbpQtUiLoader():new( ::oDlg ) - ::oFR:file := s_resPath + "finddialog.ui" - ::oFR:create() - ::oFR:setWindowFlags( Qt_Sheet ) - - aeval( ::aIni[ INI_FIND ], {|e| ::oFR:qObj[ "comboFindWhat" ]:addItem( e ) } ) - aeval( ::aIni[ INI_REPLACE ], {|e| ::oFR:qObj[ "comboReplaceWith" ]:addItem( e ) } ) - - ::oFR:qObj[ "radioFromCursor" ]:setChecked( .t. ) - ::oFR:qObj[ "radioDown" ]:setChecked( .t. ) - - ::oFR:signal( "buttonFind" , "clicked()", {|| ::onClickFind() } ) - ::oFR:signal( "buttonReplace", "clicked()", {|| ::onClickReplace() } ) - ::oFR:signal( "buttonClose" , "clicked()", ; - {|| ::aIni[ INI_HBIDE, FindDialogGeometry ] := PosAndSize( ::oFR:oWidget ), ::oFR:hide() } ) - - ::oFR:signal( "comboFindWhat", "currentIndexChanged(text)", {|o,p| o := o, ::oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + p } ) - - ::oFR:signal( "checkListOnly", "stateChanged(int)", {|o,p| o := o, ; - ::oFR:qObj[ "comboReplaceWith" ]:setEnabled( p == 0 ), ; - iif( p == 1, ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ), NIL ) } ) - - // Comment out following line to generate run-time error - // ::oFR:qObj[ "checkGlobal" ]:seteEnabled( .f. ) - ENDIF - - IF lShow - ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkGlobal" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .f. ) - ::oFR:qObj[ "checkListOnly" ]:setChecked( .f. ) - ::setPosByIni( ::oFR:oWidget, FindDialogGeometry ) - ::oFR:qObj[ "comboFindWhat" ]:setFocus() - ::oFR:show() - ENDIF - RETURN Nil - /*----------------------------------------------------------------------*/ METHOD HbIde:goto() diff --git a/harbour/contrib/hbide/idefindreplace.prg b/harbour/contrib/hbide/idefindreplace.prg new file mode 100644 index 0000000000..d42e86833f --- /dev/null +++ b/harbour/contrib/hbide/idefindreplace.prg @@ -0,0 +1,308 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * + * Copyright 2009 Pritpal Bedi + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/* + * EkOnkar + * ( The LORD is ONE ) + * + * Harbour-Qt IDE + * + * Pritpal Bedi + * 17Nov2009 + */ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/*----------------------------------------------------------------------*/ +/* + * Many thanks to Vailton Renato for adding new functionalities. + */ +/*----------------------------------------------------------------------*/ + +#include "hbide.ch" +#include "common.ch" +#include "hbclass.ch" +#include "hbqt.ch" + +/*----------------------------------------------------------------------*/ + +CLASS IdeFindReplace + + DATA oIde + DATA oFR + + ACCESS qCurEdit INLINE ::oIde:qCurEdit + + METHOD new() + METHOD create() + METHOD destroy() + METHOD show() + METHOD onClickReplace() + METHOD replaceSelection() + METHOD replace() + METHOD onClickFind() + METHOD find() + METHOD updateFindReplaceData() + + ENDCLASS + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:new( oIde ) + + ::oIde := oIde + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:create( oIde ) + + DEFAULT oIde TO ::oIde + + ::oIde := oIde + + ::oFR := XbpQtUiLoader():new( ::oIde:oDlg ) + ::oFR:file := ::oIde:resPath + "finddialog.ui" + ::oFR:create() + ::oFR:setWindowFlags( Qt_Sheet ) + + aeval( ::oIde:aIni[ INI_FIND ], {|e| ::oFR:qObj[ "comboFindWhat" ]:addItem( e ) } ) + aeval( ::oIde:aIni[ INI_REPLACE ], {|e| ::oFR:qObj[ "comboReplaceWith" ]:addItem( e ) } ) + + ::oFR:qObj[ "radioFromCursor" ]:setChecked( .t. ) + ::oFR:qObj[ "radioDown" ]:setChecked( .t. ) + + ::oFR:signal( "buttonFind" , "clicked()", {|| ::onClickFind() } ) + ::oFR:signal( "buttonReplace", "clicked()", {|| ::onClickReplace() } ) + ::oFR:signal( "buttonClose" , "clicked()", ; + {|| ::oIde:aIni[ INI_HBIDE, FindDialogGeometry ] := PosAndSize( ::oFR:oWidget ), ::oFR:hide() } ) + + ::oFR:signal( "comboFindWhat", "currentIndexChanged(text)", ; + {|o,p| o := o, ::oIde:oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + p } ) + + ::oFR:signal( "checkListOnly", "stateChanged(int)", {|o,p| o := o, ; + ::oFR:qObj[ "comboReplaceWith" ]:setEnabled( p == 0 ), ; + iif( p == 1, ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ), NIL ) } ) + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:destroy() + + ::oFR:hide() + ::oFR:oWidget:pPtr := 0 + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:show() + + ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkGlobal" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkListOnly" ]:setChecked( .f. ) + ::oIde:setPosByIni( ::oFR:oWidget, FindDialogGeometry ) + ::oFR:qObj[ "comboFindWhat" ]:setFocus() + ::oFR:show() + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:onClickReplace() + + ::updateFindReplaceData( "replace" ) + + IF ::oFR:qObj[ "comboReplaceWith" ]:isEnabled() + ::replace() + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:replaceSelection( cReplWith ) + LOCAL nB, nL, cBuffer, qCursor + + DEFAULT cReplWith TO "" + + qCursor := QTextCursor():configure( ::qCurEdit:textCursor() ) + IF qCursor:hasSelection() .and. !empty( cBuffer := qCursor:selectedText() ) + nL := len( cBuffer ) + nB := qCursor:position() - nL + + qCursor:beginEditBlock() + qCursor:removeSelectedText() + qCursor:insertText( cReplWith ) + qCursor:setPosition( nB ) + qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, len( cReplWith ) ) + ::qCurEdit:setTextCursor( qCursor ) + qCursor:endEditBlock() + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:replace() + LOCAL cReplWith + LOCAL nFound + + IF !empty( ::qCurEdit ) + cReplWith := QLineEdit():configure( ::oFR:qObj[ "comboReplaceWith" ]:lineEdit() ):text() + ::replaceSelection( cReplWith ) + + IF ::oFR:qObj[ "checkGlobal" ]:isChecked() + IF ::oFR:qObj[ "checkNoPrompting" ]:isChecked() + nFound := 1 + DO WHILE ::find( .f. ) + nFound++ + ::replaceSelection( cReplWith ) + ENDDO + ::oIde:oSBar:getItem( SB_PNL_MAIN ):caption := 'Replaced [' + hb_ntos( nFound ) + "] : "+ cReplWith + "" + ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkGlobal" ]:setChecked( .f. ) + ::oFR:qObj[ "checkNoPrompting" ]:setChecked( .f. ) + ELSE + ::find() + ENDIF + ENDIF + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:onClickFind() + LOCAL lFound, nPos, qCursor + + ::updateFindReplaceData( "find" ) + + IF ::oFR:qObj[ "radioEntire" ]:isChecked() + ::oFR:qObj[ "radioFromCursor" ]:setChecked( .t. ) + qCursor := QTextCursor():configure( ::qCurEdit:textCursor() ) + nPos := qCursor:position() + + qCursor:setPosition( 0 ) + ::qCurEdit:setTextCursor( qCursor ) + IF !( lFound := ::find() ) + ::qCursor:setPosition( nPos ) + ::qCurEdit:setTextCursor( qCursor ) + ENDIF + ELSE + lFound := ::find() + ENDIF + + IF lFound + ::oFR:qObj[ "buttonReplace" ]:setEnabled( .t. ) + ::oFR:qObj[ "checkGlobal" ]:setEnabled( .t. ) + ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .t. ) + ELSE + ::oFR:qObj[ "buttonReplace" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkGlobal" ]:setEnabled( .f. ) + ::oFR:qObj[ "checkNoPrompting" ]:setEnabled( .f. ) + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:find( lWarn ) + LOCAL nFlags + LOCAL cText := QLineEdit():configure( ::oFR:qObj[ "comboFindWhat" ]:lineEdit() ):text() + LOCAL lFound := .f. + + DEFAULT lWarn TO .t. + + IF !empty( cText ) + nFlags := 0 + nFlags += iif( ::oFR:qObj[ "checkMatchCase" ]:isChecked(), QTextDocument_FindCaseSensitively, 0 ) + nFlags += iif( ::oFR:qObj[ "radioUp" ]:isChecked(), QTextDocument_FindBackward, 0 ) + + IF !( lFound := ::qCurEdit:find( cText, nFlags ) ) .and. lWarn + ShowWarning( "Cannot find : " + cText ) + ENDIF + ENDIF + + RETURN lFound + +/*----------------------------------------------------------------------*/ + +METHOD IdeFindReplace:updateFindReplaceData( cMode ) + LOCAL cData + + IF cMode == "find" + cData := QLineEdit():configure( ::oFR:qObj[ "comboFindWhat" ]:lineEdit() ):text() + IF !empty( cData ) + IF ascan( ::oIde:aIni[ INI_FIND ], {|e| e == cData } ) == 0 + hb_ains( ::oIde:aIni[ INI_FIND ], 1, cData, .t. ) + ::oFR:qObj[ "comboFindWhat" ]:insertItem( 0, cData ) + ENDIF + ENDIF + // + ::oIde:oSBar:getItem( SB_PNL_SEARCH ):caption := "FIND: " + cData + ELSE + cData := QLineEdit():configure( ::oFR:qObj[ "comboReplaceWith" ]:lineEdit() ):text() + IF !empty( cData ) + IF ascan( ::oIde:aIni[ INI_REPLACE ], cData ) == 0 + hb_ains( ::oIde:aIni[ INI_REPLACE ], 1, cData, .t. ) + ::oFR:qObj[ "comboReplaceWith" ]:insertItem( 0, cData ) + ENDIF + ENDIF + ENDIF + + RETURN Self + +/*----------------------------------------------------------------------*/ + diff --git a/harbour/contrib/hbqt/hbqt_misc.prg b/harbour/contrib/hbqt/hbqt_misc.prg index e8a25afb6c..a0f93a351f 100644 --- a/harbour/contrib/hbqt/hbqt_misc.prg +++ b/harbour/contrib/hbqt/hbqt_misc.prg @@ -134,6 +134,8 @@ FUNCTION hbqt_showError( cMsg ) ELSE IF SubStr( cMsg, 1, 1 ) == "_" s := SubStr( cMsg, 2 ) + ELSE + s := cMsg ENDIF hbqt_messageBox( ":" + s, "Message not found - " + ProcName( 2 ) + ":" + hb_ntos( ProcLine( 2 ) ) ) ENDIF diff --git a/harbour/contrib/hbxbp/xbprtf.prg b/harbour/contrib/hbxbp/xbprtf.prg index bbeb291afb..72d5593698 100644 --- a/harbour/contrib/hbxbp/xbprtf.prg +++ b/harbour/contrib/hbxbp/xbprtf.prg @@ -700,7 +700,7 @@ METHOD XbpRtf:textRTF( ... ) // "" LOCAL aP := hb_aParams() IF len( aP ) == 1 .and. hb_isChar( aP[ 1 ] ) - ::oWidget:setHtmlText( aP[ 1 ] ) + ::oWidget:setHTML( aP[ 1 ] ) ENDIF IF len( aP ) >= 1