2010-07-08 19:01 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/hbide.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idefunctions.prg
* contrib/hbide/ideharbourhelp.prg
+ Implemented: Harbour function definitions which are part of
Harbour documentation files in /doc/en folders viewable in
Documentation Viewer available as code completion lists.
For this to happen, you must have Harbour's root path
provided in Documentation Viewer dialog.
So, as an example, if definitions are loaded ok, you
must see a list of QWeb*() functions as soon as you type "Web"
in an editing instance.
Please provide your input what else is missing.
This commit is contained in:
@@ -16,6 +16,24 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2010-07-08 19:01 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/hbide.prg
|
||||
* contrib/hbide/idedocks.prg
|
||||
* contrib/hbide/ideedit.prg
|
||||
* contrib/hbide/ideeditor.prg
|
||||
* contrib/hbide/idefunctions.prg
|
||||
* contrib/hbide/ideharbourhelp.prg
|
||||
+ Implemented: Harbour function definitions which are part of
|
||||
Harbour documentation files in /doc/en folders viewable in
|
||||
Documentation Viewer available as code completion lists.
|
||||
For this to happen, you must have Harbour's root path
|
||||
provided in Documentation Viewer dialog.
|
||||
So, as an example, if definitions are loaded ok, you
|
||||
must see a list of QWeb*() functions as soon as you type "Web"
|
||||
in an editing instance.
|
||||
|
||||
Please provide your input what else is missing.
|
||||
|
||||
2010-07-08 10:21 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/hbide.prg
|
||||
* contrib/hbide/idedocks.prg
|
||||
|
||||
@@ -430,7 +430,7 @@ METHOD HbIde:create( aParams )
|
||||
hbide_loadThemes( Self )
|
||||
|
||||
/* Harbour Help Object */
|
||||
::oHL := ideHarbourHelp():new():create( Self )
|
||||
// ::oHL := ideHarbourHelp():new():create( Self )
|
||||
|
||||
/* DOCKing windows and ancilliary windows */
|
||||
::oDK := IdeDocks():new():create( Self )
|
||||
@@ -461,6 +461,9 @@ METHOD HbIde:create( aParams )
|
||||
/* Edits Manager */
|
||||
::oEM := IdeEditsManager():new( Self ):create()
|
||||
|
||||
/* Harbour Help Object */
|
||||
::oHL := ideHarbourHelp():new():create( Self )
|
||||
|
||||
/* Load Environments */
|
||||
::oEV := IdeEnvironments():new( Self ):create()
|
||||
|
||||
@@ -535,6 +538,8 @@ METHOD HbIde:create( aParams )
|
||||
::qTabWidget:setCurrentIndex( ::qTabWidget:count() - 1 )
|
||||
::qTabWidget:setCurrentIndex( val( ::oINI:cRecentTabIndex ) )
|
||||
|
||||
::oEM:updateCompleter()
|
||||
|
||||
::showApplicationCursor()
|
||||
qSplash:close()
|
||||
|
||||
|
||||
@@ -570,8 +570,6 @@ METHOD IdeDocks:setViewInitials( cView )
|
||||
|
||||
::setView( cView )
|
||||
|
||||
HB_TRACE( HB_TR_ALWAYS, cView, ::qTabWidget:count() )
|
||||
|
||||
IF ::qTabWidget:count() == 1
|
||||
::oEM:setSourceVisibleByIndex( 0 )
|
||||
ELSE
|
||||
|
||||
@@ -2201,10 +2201,14 @@ METHOD IdeEdit:parseCodeCompletion( cSyntax )
|
||||
LOCAL cText, n
|
||||
|
||||
IF ::oINI:lCompleteArgumented
|
||||
cText := trim( cSyntax )
|
||||
IF ( n := rat( ")", cSyntax ) ) > 0
|
||||
cText := trim( substr( cSyntax, 1, n ) )
|
||||
ELSE
|
||||
cText := trim( cSyntax )
|
||||
ENDIF
|
||||
ELSE
|
||||
IF ( n := at( "(", cSyntax ) ) > 0
|
||||
cText := trim( substr( cSyntax, 1, n - 1 ) )
|
||||
cText := trim( substr( cSyntax, 1, n ) )
|
||||
ELSE
|
||||
cText := trim( cSyntax )
|
||||
ENDIF
|
||||
|
||||
@@ -228,14 +228,46 @@ METHOD IdeEditsManager:create( oIde )
|
||||
::oIde:qProtoList := QStringList():new()
|
||||
::oIde:qCompModel := QStringListModel():new()
|
||||
::oIde:qCompleter := QCompleter():new()
|
||||
|
||||
::connect( ::qCompleter, "activated(QString)", {|p| ::execEvent( "qcompleter_activated", p ) } )
|
||||
::updateCompleter()
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditsManager:updateCompleter()
|
||||
LOCAL aFun := ::oFN:getFunctionPrototypes()
|
||||
LOCAL aHrb := ::oHL:getFunctionPrototypes()
|
||||
LOCAL n, s, a_, k_:={}
|
||||
|
||||
::disconnect( ::qCompleter, "activated(QString)", {|p| ::execEvent( "qcompleter_activated", p ) } )
|
||||
|
||||
FOR EACH a_ IN { aFun, aHrb }
|
||||
FOR EACH s IN a_
|
||||
s := trim( s )
|
||||
IF ::oINI:lCompletionWithArgs
|
||||
IF ascan( k_, s ) == 0
|
||||
aadd( k_, s )
|
||||
ENDIF
|
||||
ELSE
|
||||
IF ( n := at( "(", s ) ) == 0
|
||||
IF ( n := at( " ", s ) ) > 0
|
||||
aadd( k_, substr( s, 1, n - 1 ) )
|
||||
ELSE
|
||||
aadd( k_, trim( s ) )
|
||||
ENDIF
|
||||
ELSE
|
||||
aadd( k_, substr( s, 1, n - 1 ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
asort( k_, , , {|e,f| lower( e ) < lower( f ) } )
|
||||
|
||||
::qProtoList:clear()
|
||||
|
||||
aeval( k_, {|e| ::qProtoList:append( e ) } )
|
||||
|
||||
::qCompModel:setStringList( ::qProtoList )
|
||||
::qCompleter:setModel( ::qCompModel )
|
||||
@@ -246,6 +278,8 @@ METHOD IdeEditsManager:updateCompleter()
|
||||
|
||||
QListView():from( ::qCompleter:popup() ):setAlternatingRowColors( .t. )
|
||||
|
||||
::connect( ::qCompleter, "activated(QString)", {|p| ::execEvent( "qcompleter_activated", p ) } )
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
@@ -125,6 +125,7 @@ CLASS IdeFunctions INHERIT IdeObject
|
||||
METHOD clearProjects()
|
||||
METHOD getMarkedProjects()
|
||||
METHOD enableControls( lEnable )
|
||||
METHOD getFunctionPrototypes()
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -591,7 +592,7 @@ METHOD IdeFunctions:consolidateList()
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeFunctions:populateTable()
|
||||
LOCAL oTbl, qItm, a_, n, s, k_:={}
|
||||
LOCAL oTbl, qItm, a_, n
|
||||
LOCAL qApp := QApplication():new()
|
||||
|
||||
::clear( .t. )
|
||||
@@ -616,34 +617,23 @@ METHOD IdeFunctions:populateTable()
|
||||
::oUI:q_labelEntries:setText( "Entries: " + hb_ntos( n ) )
|
||||
NEXT
|
||||
|
||||
FOR EACH a_ IN ::aList
|
||||
s := a_[ 2 ]
|
||||
IF ::oINI:lCompletionWithArgs
|
||||
aadd( k_, trim( s ) )
|
||||
ELSE
|
||||
IF ( n := at( "(", s ) ) == 0
|
||||
IF ( n := at( " ", s ) ) > 0
|
||||
aadd( k_, substr( s, 1, n - 1 ) )
|
||||
ELSE
|
||||
aadd( k_, trim( s ) )
|
||||
ENDIF
|
||||
ELSE
|
||||
aadd( k_, substr( s, 1, n - 1 ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
asort( k_, , , {|e,f| lower( e ) < lower( f ) } )
|
||||
|
||||
::qProtoList:clear()
|
||||
aeval( k_, {|e| ::qProtoList:append( e ) } )
|
||||
|
||||
::oEM:updateCompleter()
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeFunctions:getFunctionPrototypes()
|
||||
LOCAL aProto := {}, a_
|
||||
|
||||
FOR EACH a_ IN ::aList
|
||||
aadd( aProto, alltrim( a_[ 2 ] ) )
|
||||
NEXT
|
||||
|
||||
RETURN aProto
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
STATIC FUNCTION hbide_abbrFuncType( cFunc )
|
||||
LOCAL cAbbr := ""
|
||||
|
||||
|
||||
@@ -122,6 +122,8 @@ CLASS IdeDocFunction
|
||||
DATA oTVItem
|
||||
DATA cSourceTxt INIT ""
|
||||
|
||||
DATA lOk INIT .f.
|
||||
|
||||
METHOD new() INLINE Self
|
||||
|
||||
ENDCLASS
|
||||
@@ -147,6 +149,10 @@ CLASS IdeHarbourHelp INHERIT IdeObject
|
||||
|
||||
DATA hIndex INIT {=>}
|
||||
|
||||
DATA aProtoTypes INIT {}
|
||||
DATA lLoadedProto INIT .f.
|
||||
DATA aFuncDefs INIT {}
|
||||
|
||||
METHOD new( oIde )
|
||||
METHOD create( oIde )
|
||||
METHOD show()
|
||||
@@ -175,6 +181,8 @@ CLASS IdeHarbourHelp INHERIT IdeObject
|
||||
METHOD parseTextFile( cTextFile, oParent )
|
||||
METHOD jumpToFunction( cFunction )
|
||||
METHOD getDocFunction( acBuffer )
|
||||
METHOD getFunctionPrototypes()
|
||||
METHOD pullDefinitions( acBuffer )
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -193,6 +201,8 @@ METHOD IdeHarbourHelp:create( oIde )
|
||||
DEFAULT oIde TO ::oIde
|
||||
::oIde := oIde
|
||||
|
||||
::cPathInstall := ::cWrkHarbour
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
@@ -212,6 +222,8 @@ METHOD IdeHarbourHelp:show()
|
||||
::populateRootInfo()
|
||||
|
||||
::refreshDocTree()
|
||||
|
||||
::oEM:updateCompleter()
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
@@ -487,6 +499,7 @@ METHOD IdeHarbourHelp:execEvent( nMode, p, p1 )
|
||||
|
||||
CASE "buttonRefresh_clicked"
|
||||
::refreshDocTree()
|
||||
::oEM:updateCompleter()
|
||||
EXIT
|
||||
|
||||
CASE "buttonPrint_clicked"
|
||||
@@ -756,155 +769,24 @@ METHOD IdeHarbourHelp:populateIndex()
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:getDocFunction( acBuffer )
|
||||
LOCAL a_, s, oFunc, nPart, lIsFunc
|
||||
METHOD IdeHarbourHelp:pullDefinitions( acBuffer )
|
||||
LOCAL a_, s, nPart, oFunc
|
||||
LOCAL lIsFunc := .f.
|
||||
LOCAL aFn := {}
|
||||
|
||||
IF hb_isArray( acBuffer )
|
||||
a_:= acBuffer
|
||||
ELSE
|
||||
a_:= hbide_memoTOarray( acBuffer )
|
||||
IF hb_fileExists( acBuffer )
|
||||
a_:= hbide_readSource( acBuffer )
|
||||
ELSE
|
||||
a_:= hbide_memoTOarray( acBuffer )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
oFunc := IdeDocFunction():new()
|
||||
|
||||
lIsFunc := .f.
|
||||
FOR EACH s IN a_
|
||||
|
||||
DO CASE
|
||||
CASE "$DOC$" $ s
|
||||
lIsFunc := .t.
|
||||
CASE "$END$" $ s
|
||||
EXIT
|
||||
CASE "$TEMPLATE$" $ s
|
||||
nPart := DOC_FUN_TEMPLATE
|
||||
CASE "$FUNCNAME$" $ s .OR. "$NAME$" $ s
|
||||
nPart := DOC_FUN_FUNCNAME
|
||||
CASE "$CATEGORY$" $ s
|
||||
nPart := DOC_FUN_CATEGORY
|
||||
CASE "$SUBCATEGORY$" $ s
|
||||
nPart := DOC_FUN_SUBCATEGORY
|
||||
CASE "$ONELINER$" $ s
|
||||
nPart := DOC_FUN_ONELINER
|
||||
CASE "$SYNTAX$" $ s
|
||||
nPart := DOC_FUN_SYNTAX
|
||||
CASE "$ARGUMENTS$" $ s
|
||||
nPart := DOC_FUN_ARGUMENTS
|
||||
CASE "$RETURNS$" $ s
|
||||
nPart := DOC_FUN_RETURNS
|
||||
CASE "$DESCRIPTION$" $ s
|
||||
nPart := DOC_FUN_DESCRIPTION
|
||||
CASE "$EXAMPLES$" $ s
|
||||
nPart := DOC_FUN_EXAMPLES
|
||||
CASE "$TESTS$" $ s
|
||||
nPart := DOC_FUN_TESTS
|
||||
CASE "$FILES$" $ s
|
||||
nPart := DOC_FUN_FILES
|
||||
CASE "$STATUS$" $ s
|
||||
nPart := DOC_FUN_STATUS
|
||||
CASE "$PLATFORMS$" $ s .OR. "$COMPLIANCE$" $ s
|
||||
nPart := DOC_FUN_PLATFORMS
|
||||
CASE "$SEEALSO$" $ s
|
||||
nPart := DOC_FUN_SEEALSO
|
||||
CASE "$VERSION$" $ s
|
||||
nPart := DOC_FUN_VERSION
|
||||
CASE "$INHERITS" $ s
|
||||
nPart := DOC_FUN_INHERITS
|
||||
CASE "$METHODS" $ s
|
||||
nPart := DOC_FUN_METHODS
|
||||
CASE "$EXTERNALLINK" $ s
|
||||
nPart := DOC_FUN_EXTERNALLINK
|
||||
OTHERWISE
|
||||
IF ! lIsFunc
|
||||
LOOP // It is a fake line not within $DOC$ => $END$ block
|
||||
ENDIF
|
||||
s := substr( s, 9 )
|
||||
|
||||
SWITCH nPart
|
||||
CASE DOC_FUN_BEGINS
|
||||
EXIT
|
||||
CASE DOC_FUN_TEMPLATE
|
||||
oFunc:cTemplate := s
|
||||
EXIT
|
||||
CASE DOC_FUN_FUNCNAME
|
||||
oFunc:cName := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_CATEGORY
|
||||
oFunc:cCategory := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_SUBCATEGORY
|
||||
oFunc:cSubCategory := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_ONELINER
|
||||
oFunc:cOneLiner := s
|
||||
EXIT
|
||||
CASE DOC_FUN_SYNTAX
|
||||
aadd( oFunc:aSyntax , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_ARGUMENTS
|
||||
aadd( oFunc:aArguments , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_RETURNS
|
||||
aadd( oFunc:aReturns , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_DESCRIPTION
|
||||
aadd( oFunc:aDescription, s )
|
||||
EXIT
|
||||
CASE DOC_FUN_EXAMPLES
|
||||
aadd( oFunc:aExamples , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_TESTS
|
||||
aadd( oFunc:aTests , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_FILES
|
||||
aadd( oFunc:aFiles , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_STATUS
|
||||
oFunc:cStatus := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_PLATFORMS
|
||||
oFunc:cPlatForms := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_SEEALSO
|
||||
oFunc:cSeaAlso := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_INHERITS
|
||||
oFunc:cInherits := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_METHODS
|
||||
aadd( oFunc:aMethods , s )
|
||||
EXIT
|
||||
CASE DOC_FUN_VERSION
|
||||
oFunc:cVersion := alltrim( s )
|
||||
EXIT
|
||||
CASE DOC_FUN_EXTERNALLINK
|
||||
oFunc:cExternalLink := alltrim( s )
|
||||
EXIT
|
||||
OTHERWISE
|
||||
nPart := DOC_FUN_NONE
|
||||
EXIT
|
||||
ENDSWITCH
|
||||
ENDCASE
|
||||
NEXT
|
||||
|
||||
IF ! lIsFunc
|
||||
oFunc := NIL
|
||||
ENDIF
|
||||
RETURN oFunc
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent )
|
||||
LOCAL a_, s, nPart, oFunc, oTWItem
|
||||
LOCAL lIsFunc := .f.
|
||||
LOCAL cIcon := hbide_image( "dc_function" )
|
||||
LOCAL aFn := {}
|
||||
LOCAL nParsed := ascan( ::aFuncByFile, {|e_| e_[ 1 ] == cTextFile } )
|
||||
|
||||
IF nParsed == 0
|
||||
IF .t.
|
||||
nPart := DOC_FUN_NONE
|
||||
|
||||
a_:= hbide_readSource( cTextFile )
|
||||
|
||||
FOR EACH s IN a_
|
||||
DO CASE
|
||||
|
||||
@@ -915,15 +797,7 @@ METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent )
|
||||
|
||||
CASE "$END$" $ s
|
||||
IF lIsFunc
|
||||
lIsFunc := .f.
|
||||
nPart := DOC_FUN_ENDS
|
||||
oTWItem := QTreeWidgetItem():new()
|
||||
oTWItem:setText( 0, oFunc:cName )
|
||||
oTWItem:setIcon( 0, cIcon )
|
||||
oTWItem:setTooltip( 0, oFunc:cName )
|
||||
oParent:addChild( oTWItem )
|
||||
aadd( ::aNodes, { oTWItem, "Function", oParent, cTextFile + "<::>" + oFunc:cName, oFunc:cName } )
|
||||
aadd( ::aFunctions, { cTextFile, oFunc:cName, oFunc, oTWItem, NIL, lower( oFunc:cName ) } )
|
||||
oFunc:lOk := .t.
|
||||
aadd( aFn, oFunc )
|
||||
ENDIF
|
||||
|
||||
@@ -1040,7 +914,29 @@ METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent )
|
||||
ENDSWITCH
|
||||
ENDCASE
|
||||
NEXT
|
||||
ENDIF
|
||||
|
||||
RETURN aFn
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent )
|
||||
LOCAL aFn, oFunc, oTWItem
|
||||
LOCAL cIcon := hbide_image( "dc_function" )
|
||||
LOCAL nParsed := ascan( ::aFuncByFile, {|e_| e_[ 1 ] == cTextFile } )
|
||||
|
||||
IF nParsed == 0
|
||||
IF !empty( aFn := ::pullDefinitions( cTextFile ) )
|
||||
FOR EACH oFunc IN aFn
|
||||
oTWItem := QTreeWidgetItem():new()
|
||||
oTWItem:setText( 0, oFunc:cName )
|
||||
oTWItem:setIcon( 0, cIcon )
|
||||
oTWItem:setTooltip( 0, oFunc:cName )
|
||||
oParent:addChild( oTWItem )
|
||||
aadd( ::aNodes, { oTWItem, "Function", oParent, cTextFile + "<::>" + oFunc:cName, oFunc:cName } )
|
||||
aadd( ::aFunctions, { cTextFile, oFunc:cName, oFunc, oTWItem, NIL, lower( oFunc:cName ) } )
|
||||
NEXT
|
||||
ENDIF
|
||||
aadd( ::aFuncByFile, { cTextFile, aFn } )
|
||||
ENDIF
|
||||
|
||||
@@ -1048,6 +944,58 @@ METHOD IdeHarbourHelp:parseTextFile( cTextFile, oParent )
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:getDocFunction( acBuffer )
|
||||
LOCAL aFn
|
||||
|
||||
IF !empty( aFn := ::pullDefinitions( acBuffer ) )
|
||||
RETURN aFn[ 1 ]
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:getFunctionPrototypes()
|
||||
LOCAL a_, cFolder, aFN, oFunc, cNFolder
|
||||
LOCAL aPaths := {}
|
||||
LOCAL aDocs := {}
|
||||
LOCAL aProto := {}
|
||||
|
||||
IF !empty( ::cPathInstall )
|
||||
IF ! ::lLoadedProto
|
||||
hbide_fetchSubPaths( @aPaths, ::cPathInstall, .t. )
|
||||
|
||||
FOR EACH cFolder IN aPaths
|
||||
cNFolder := hbide_pathNormalized( cFolder, .t. )
|
||||
IF ( "/doc" $ cNFolder ) .OR. ( "/doc/en" $ cNFolder )
|
||||
aadd( aDocs, cFolder )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
FOR EACH cFolder IN aDocs
|
||||
FOR EACH a_ IN directory( cFolder + "*.txt" )
|
||||
IF a_[ 5 ] != "D"
|
||||
aFn := ::pullDefinitions( cFolder + a_[ 1 ] )
|
||||
FOR EACH oFunc IN aFn
|
||||
IF hb_isObject( oFunc )
|
||||
IF !empty( oFunc:aSyntax )
|
||||
aadd( aProto, oFunc:aSyntax[ 1 ] ) //hbide_arrayToMemoEx( oFunc:aSyntax ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
NEXT
|
||||
ENDIF
|
||||
NEXT
|
||||
NEXT
|
||||
|
||||
::aProtoTypes := aProto
|
||||
::lLoadedProto := .t.
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
RETURN ::aProtoTypes
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeHarbourHelp:updateViewer( aHtm )
|
||||
|
||||
::oUI:q_browserView:setHTML( hbide_arrayToMemo( aHtm ) )
|
||||
|
||||
Reference in New Issue
Block a user