2012-08-07 18:10 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

+ 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.
This commit is contained in:
Pritpal Bedi
2012-08-08 01:23:25 +00:00
parent 2aa2f838e1
commit 76f774464d
6 changed files with 691 additions and 96 deletions

View File

@@ -16,6 +16,35 @@
The license applies to all entries newer than 2009-04-28.
*/
2012-08-07 18:10 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
+ 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.
2012-08-06 17:09 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/sources.prg
% Remoded: redundant code parts and organized with more options.

View File

@@ -137,6 +137,7 @@ CLASS IdeEdit INHERIT IdeObject
DATA lReadOnly INIT .F.
DATA isHighLighted INIT .f.
DATA cLastWord, cCurWord
DATA hLogicals
METHOD new( oIde, oEditor, nMode )
METHOD create( oIde, oEditor, nMode )
@@ -270,6 +271,10 @@ METHOD IdeEdit:new( oIde, oEditor, nMode )
::pointSize := ::oINI:nPointSize
::currentPointSize := ::oINI:nPointSize
::hLogicals := {=>}
hb_hCaseMatch( ::hLogicals, .F. )
::hLogicals := { "t" => NIL, "f" => NIL, "or" => NIL, "and" => NIL, "not" => NIL }
RETURN Self
/*----------------------------------------------------------------------*/
@@ -2226,20 +2231,130 @@ METHOD IdeEdit:insertText( cText )
METHOD IdeEdit:reformatLine( nPos, nAdded, nDeleted )
LOCAL cProto, nRows, nCols
//LOCAL cWord, nColumn
//LOCAL qCursor := ::qEdit:textCursor()
//LOCAL cLine := ::getLine()
HB_SYMBOL_UNUSED( nPos )
HB_SYMBOL_UNUSED( nAdded )
HB_SYMBOL_UNUSED( nDeleted )
#if 1
LOCAL cPWord, cPPWord, nPostn, nLine, nLPrev, nLPrevPrev, nCPrev, nCPrevPrev, nOff, cCased, cCWord
LOCAL qCursor := ::qEdit:textCursor()
//nColumn := qCursor:columnNumber() + 1
//cWord := ::getWord()
nPostn := qCursor:position()
nLine := qCursor:blockNumber()
//HB_TRACE( HB_TR_ALWAYS, nPos, nAdded, nDeleted, nColumn, len( cWord ), cWord )
IF qCursor:columnNumber() > 0
qCursor:movePosition( QTextCursor_Left, QTextCursor_KeepAnchor, 1 )
cCWord := qCursor:selectedText()
qCursor:clearSelection()
qCursor:setPosition( nPostn )
ELSE
cCWord := ""
ENDIF
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 1 )
nLPrev := qCursor:blockNumber()
IF nLPrev == nLine
nCPrev := qCursor:columnNumber()
qCursor:select( QTextCursor_WordUnderCursor )
cPWord := qCursor:selectedText()
//
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 )
nLPrevPrev := qCursor:blockNumber()
IF nLPrevPrev == nLine
nCPrevPrev := qCursor:columnNumber()
qCursor:select( QTextCursor_WordUnderCursor )
cPPWord := qCursor:selectedText()
ELSE
nCPrevPrev := -1
cPPWord := ""
ENDIF
// HB_TRACE( HB_TR_ALWAYS, "PP", cPPWord, "P", cPWord, len( cPPWord ), len( cPWord ), cCWord, len( cCWord ) )
qCursor:clearSelection()
qCursor:setPosition( nPostn )
IF cPWord == "." .AND. cPPWord $ ::hLogicals
IF ::oEditor:lIsPRG .AND. ! ::oINI:lSupressHbKWordsToUpper
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 )
qCursor:select( QTextCursor_WordUnderCursor )
qCursor:removeSelectedText()
qCursor:insertText( upper( cPPWord ) )
qCursor:endEditBlock()
ENDIF
ELSEIF cPWord == "(" .AND. hbide_isHarbourFunction( cPPWord, @cCased )
IF ::oEditor:lIsPRG
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 )
qCursor:select( QTextCursor_WordUnderCursor )
qCursor:removeSelectedText()
qCursor:insertText( cCased )
qCursor:endEditBlock()
ENDIF
ELSEIF cCWord == " " .AND. cPPWord != "#" .AND. hbide_isHarbourKeyword( cPWord )
IF ::oEditor:lIsPRG .AND. ! ::oINI:lSupressHbKWordsToUpper
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 1 )
qCursor:select( QTextCursor_WordUnderCursor )
qCursor:removeSelectedText()
qCursor:insertText( upper( cPWord ) )
qCursor:endEditBlock()
ENDIF
#if 0
ELSEIF nLPrevPrev == nLine .AND. hbide_isHarbourKeyword( cPPWord )
IF ::oEditor:lIsPRG .AND. ! ::oINI:lSupressHbKWordsToUpper
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_PreviousWord, QTextCursor_MoveAnchor, 2 )
qCursor:select( QTextCursor_WordUnderCursor )
qCursor:removeSelectedText()
qCursor:insertText( upper( cPPWord ) )
qCursor:endEditBlock()
ENDIF
#endif
ENDIF
IF ::oEditor:lIsPRG .AND. empty( cPPWord ) .AND. cCWord == " " /* Operational on PRG sources only */
IF hbide_isStartingKeyword( cPWord, ::oIde )
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_StartOfBlock )
qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nCPrev )
qCursor:removeSelectedText()
qCursor:endEditBlock()
ELSEIF hbide_isMinimumIndentableKeyword( cPWord, ::oIde ) .AND. ::oINI:lAutoIndent
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_StartOfBlock )
qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nCPrev )
qCursor:removeSelectedText()
qCursor:insertText( space( ::nTabSpaces ) )
qCursor:endEditBlock()
ELSEIF hbide_isIndentableKeyword( cPWord, ::oIde ) .AND. ::oINI:lAutoIndent
IF nCPrev < ::nTabSpaces
nOff := ::nTabSpaces - nCPrev
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_StartOfBlock )
qCursor:insertText( space( nOff ) )
qCursor:endEditBlock()
ELSEIF ( nOff := nCPrev % ::nTabSpaces ) > 0
qCursor:beginEditBlock()
qCursor:movePosition( QTextCursor_StartOfBlock )
qCursor:movePosition( QTextCursor_NextCharacter, QTextCursor_KeepAnchor, nOff )
qCursor:removeSelectedText()
qCursor:endEditBlock()
ENDIF
ENDIF
ENDIF
ENDIF
HB_SYMBOL_UNUSED( nCPrevPrev )
#else
::handlePreviousWord( ::lUpdatePrevWord )
#endif
::handleCurrentIndent()
IF ::nProtoLine != -1
@@ -2253,6 +2368,10 @@ METHOD IdeEdit:reformatLine( nPos, nAdded, nDeleted )
ENDIF
ENDIF
HB_SYMBOL_UNUSED( nPos )
HB_SYMBOL_UNUSED( nAdded )
HB_SYMBOL_UNUSED( nDeleted )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -2272,7 +2391,7 @@ METHOD IdeEdit:handlePreviousWord( lUpdatePrevWord )
cText := qTextBlock:text()
nCol := qCursor:columnNumber()
IF ( substr( cText, nCol - 1, 1 ) == " " )
RETURN nil
RETURN NIL
ENDIF
nSpace := iif( substr( cText, nCol, 1 ) == " ", 1, 0 )
cWord := hbide_getPreviousWord( cText, nCol + 1 )
@@ -2597,6 +2716,96 @@ FUNCTION hbide_getFrontSpacesAndWord( cText, cWord )
/*----------------------------------------------------------------------*/
FUNCTION hbide_formatProto_1( cProto, cText, nProtoCol, nCurCol, nRows, nCols )
LOCAL s, nArgs, cArgs, aArgs, cArg, n, n1, i, nnn, cPro, cFunc
IF nCurCol > nProtoCol
n := at( "(", cProto ) ; n1 := at( ")", cProto )
IF n > 0 .AND. n1 > 0 .AND. "," $ cProto
cProto := substr( cProto, 1, n1 )
s := substr( cText, nProtoCol, nCurCol - nProtoCol )
nArgs := 1
FOR i := 1 TO Len( s )
IF substr( s, i, 1 ) == ","
nArgs++
ENDIF
NEXT
nRows := 1; nCols := 0
IF nArgs > 0
n := at( "(", cProto ) ; n1 := at( ")", cProto )
cFunc := substr( cProto, 1, n - 1 )
cArgs := substr( cProto, n + 1, n1 - n - 1 )
aArgs := hb_aTokens( cArgs, "," )
cArgs := ""
nCols := Len( cFunc ) + 1
FOR EACH cArg IN aArgs
cArg := alltrim( cArg )
nRows++
nCols := max( nCols, Len( cArg ) + 3 )
cArg := StrTran( cArg, "<", "&lt;" )
cArg := StrTran( cArg, ">", "&gt;" )
nnn := cArg:__enumIndex()
IF nnn == nArgs
cArg := "<font color=red><b>" + cArg + "</b></font>"
ENDIF
IF nnn == Len( aArgs )
cArgs += "<br>" + " " + cArg
ELSE
cArgs += "<br>" + " " + cArg + "<font color=red><b>" + "," + "</b></font>"
ENDIF
NEXT
nCols += iif( nCols <= Len( cFunc ), 0, 1 )
//cPro := "<p style='white-space:pre'>" + "<font color=darkgreen><b>" + cFunc + "</b></font>" + ;
cPro := "<p style='white-space:pre'>" + "<b>" + cFunc + "</b>" + ;
"<font color=red><b>" + "(" + "</b></font>" + ;
cArgs + ;
"<font color=red><b>" + ")" + "</font>" + "</b></p>"
ENDIF
ENDIF
ENDIF
RETURN cPro
/*------------------------------------------------------------------------*/
FUNCTION hbide_formatProto( cProto )
LOCAL n, n1, cArgs
cProto := StrTran( cProto, "<", "&lt;" )
cProto := StrTran( cProto, ">", "&gt;" )
n := at( "(", cProto )
n1 := at( ")", cProto )
IF n > 0 .AND. n1 > 0
cArgs := substr( cProto, n + 1, n1 - n - 1 )
cArgs := strtran( cArgs, ",", "<font color=red><b>" + "," + "</b></font>" )
cProto := "<p style='white-space:pre'>" + "<b>" + substr( cProto, 1, n - 1 ) + "</b>" + ;
"<font color=red><b>" + "(" + "</b></font>" + ;
cArgs + ;
"<font color=red><b>" + ")" + "</font>" + "</b></p>"
ENDIF
RETURN cProto
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_normalizeRect( aCord, nT, nL, nB, nR )
nT := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 3 ], aCord[ 1 ] )
nB := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 1 ], aCord[ 3 ] )
nL := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 4 ], aCord[ 2 ] )
nR := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 2 ], aCord[ 4 ] )
RETURN NIL
/*----------------------------------------------------------------------*/
FUNCTION hbide_isStartingKeyword( cWord, oIde )
LOCAL s_b_
@@ -2726,11 +2935,7 @@ FUNCTION hbide_harbourKeywords()
'handler' => NIL,;
'loop' => NIL,;
'in' => NIL,;
'nil' => NIL,;
'or' => NIL,;
'not' => NIL,;
'and' => NIL }
'nil' => NIL }
RETURN s_b_
/*----------------------------------------------------------------------*/
@@ -2743,93 +2948,29 @@ FUNCTION hbide_isHarbourKeyword( cWord, oIde )
/*----------------------------------------------------------------------*/
FUNCTION hbide_formatProto_1( cProto, cText, nProtoCol, nCurCol, nRows, nCols )
LOCAL s, nArgs, cArgs, aArgs, cArg, n, n1, i, nnn, cPro, cFunc
FUNCTION hbide_isHarbourFunction( cWord, cCased )
LOCAL s, a_
IF nCurCol > nProtoCol
n := at( "(", cProto ) ; n1 := at( ")", cProto )
IF n > 0 .AND. n1 > 0 .AND. "," $ cProto
cProto := substr( cProto, 1, n1 )
STATIC s_b_
s := substr( cText, nProtoCol, nCurCol - nProtoCol )
nArgs := 1
FOR i := 1 TO Len( s )
IF substr( s, i, 1 ) == ","
nArgs++
ENDIF
NEXT
nRows := 1; nCols := 0
IF nArgs > 0
n := at( "(", cProto ) ; n1 := at( ")", cProto )
cFunc := substr( cProto, 1, n - 1 )
cArgs := substr( cProto, n + 1, n1 - n - 1 )
aArgs := hb_aTokens( cArgs, "," )
cArgs := ""
nCols := Len( cFunc ) + 1
FOR EACH cArg IN aArgs
cArg := alltrim( cArg )
nRows++
nCols := max( nCols, Len( cArg ) + 3 )
cArg := StrTran( cArg, "<", "&lt;" )
cArg := StrTran( cArg, ">", "&gt;" )
nnn := cArg:__enumIndex()
IF nnn == nArgs
cArg := "<font color=red><b>" + cArg + "</b></font>"
ENDIF
IF nnn == Len( aArgs )
cArgs += "<br>" + " " + cArg
ELSE
cArgs += "<br>" + " " + cArg + "<font color=red><b>" + "," + "</b></font>"
ENDIF
NEXT
nCols += iif( nCols <= Len( cFunc ), 0, 1 )
//cPro := "<p style='white-space:pre'>" + "<font color=darkgreen><b>" + cFunc + "</b></font>" + ;
cPro := "<p style='white-space:pre'>" + "<b>" + cFunc + "</b>" + ;
"<font color=red><b>" + "(" + "</b></font>" + ;
cArgs + ;
"<font color=red><b>" + ")" + "</font>" + "</b></p>"
IF empty( s_b_ )
s_b_:= {=>}
hb_hCaseMatch( s_b_, .f. )
a_:= hb_aTokens( strtran( hbide_getFileContentsFromResource( "hbfunc.txt" ), chr( 13 ) + chr( 10 ), chr( 10 ) ), chr( 10 ) )
FOR EACH s IN a_
IF ! empty( s )
s := alltrim( s )
s_b_[ s ] := s
ENDIF
ENDIF
NEXT
ENDIF
RETURN cPro
/*------------------------------------------------------------------------*/
FUNCTION hbide_formatProto( cProto )
LOCAL n, n1, cArgs
cProto := StrTran( cProto, "<", "&lt;" )
cProto := StrTran( cProto, ">", "&gt;" )
n := at( "(", cProto )
n1 := at( ")", cProto )
IF n > 0 .AND. n1 > 0
cArgs := substr( cProto, n + 1, n1 - n - 1 )
cArgs := strtran( cArgs, ",", "<font color=red><b>" + "," + "</b></font>" )
cProto := "<p style='white-space:pre'>" + "<b>" + substr( cProto, 1, n - 1 ) + "</b>" + ;
"<font color=red><b>" + "(" + "</b></font>" + ;
cArgs + ;
"<font color=red><b>" + ")" + "</font>" + "</b></p>"
IF cWord $ s_b_
cCased := s_b_[ cWord ]
RETURN .T.
ENDIF
RETURN cProto
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_normalizeRect( aCord, nT, nL, nB, nR )
nT := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 3 ], aCord[ 1 ] )
nB := iif( aCord[ 1 ] > aCord[ 3 ], aCord[ 1 ], aCord[ 3 ] )
nL := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 4 ], aCord[ 2 ] )
nR := iif( aCord[ 2 ] > aCord[ 4 ], aCord[ 2 ], aCord[ 4 ] )
RETURN NIL
RETURN .f.
/*----------------------------------------------------------------------*/

View File

@@ -1275,6 +1275,8 @@ CLASS IdeEditor INHERIT IdeObject
DATA nSplOrient INIT -1
DATA qSplitter
DATA lIsPRG INIT .t.
METHOD new( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView )
METHOD create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks )
METHOD split( nOrient, oEditP )
@@ -1367,6 +1369,8 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
::cType := upper( strtran( ::cExt, ".", "" ) )
::cType := iif( ::cType $ "PRG,C,CPP,H,CH,PPO,HBS", ::cType, "U" )
::lIsPRG := ::cType $ "PRG,HB"
::buildTabPage( ::sourceFile )
::qLayout := QBoxLayout( Qt_Vertical )

View File

@@ -0,0 +1,415 @@
AAdd
Abs
AChoice
AClone
ACopy
ADel
ADir
AEval
AFields
AFill
AIns
Alert
Alias
AllTrim
AltD
Array
Asc
AScan
ASize
ASort
At
ATail
Bin2W
Bin2I
Bin2L
Bin2U
I2Bin
W2Bin
L2Bin
U2Bin
Bof
Break
Browse
CDoW
Chr
CMonth
Col
ColorSelect
CToD
CurDir
Date
Day
DBAppend
DBClearFilter
DBClearIndex
DBClearRelation
DBCloseAll
DBCloseArea
DBCommit
DBCommitAll
DBCreate
DBCreateIndex
DBDelete
DBEdit
DBEval
Dbf
DBFilter
DBGoBottom
DBGoTo
DBGoTop
DBRecall
DBReindex
DBRelation
DBRSelect
DBSeek
DBSelectArea
DBSetDriver
DBSetFilter
DBSetIndex
DBSetOrder
DBSetRelation
DBSkip
DBStruct
DBUnlock
DBUnlockAll
DBUseArea
Deleted
Descend
DevOut
DevOutPict
DevPos
Directory
DiskSpace
DispBegin
DispBox
DispCount
DispEnd
DispOut
DOSError
DoW
DToC
DToS
Empty
Eof
ErrorBlock
ErrorLevel
Eval
Exp
FClose
FCount
FCreate
FErase
FError
Field
FieldBlock
FieldGet
FieldName
FieldPos
FieldPut
FieldWBlock
File
FKLabel
FKMax
FLock
FOpen
Found
FRead
FReadStr
FRename
FSeek
FWrite
GetEnv
HardCR
Header
I2Bin
IIf
IndexExt
IndexKey
IndexOrd
Inkey
Int
IsAlpha
IsColor
IsColour
IsDigit
IsLower
IsPrinter
IsUpper
L2Bin
LastKey
LastRec
Left
Len
Log
Lower
LTrim
LUpdate
Max
MaxCol
MaxRow
MemoEdit
MemoLine
MemoRead
Memory
MemoTran
MemoWrit
MemvarBlock
Min
MLCount
MLCToPos
MLPos
Mod
Month
MPosToLC
NetErr
NetName
NextKey
NoSnow
OS
OutErr
OutStd
Pad
PadC
PadL
PadR
PCol
PCount
ProcLine
ProcName
ProcFile
PRow
QOut
QQOut
RAt
ReadExit
ReadInsert
ReadKey
ReadModal
ReadVar
RecCount
RecNo
RecSize
Replicate
RestScreen
Right
RLock
Round
Row
RTrim
SaveScreen
Scroll
Seconds
Select
Set
SetBlink
SetCancel
SetColor
SetCursor
SetKey
SetMode
SetPos
SetPrc
SoundEx
Space
Sqrt
Str
StrTran
Stuff
SubStr
Time
Tone
Transform
Trim
Type
Updated
Upper
Used
Val
ValType
Version
Word
Year
DbSkipper
ElapTime
Secs
hb_diskSpace
ReName
hb_fEoF
DirRemove
DirChange
MakeDir
IsDisk
hb_gcAll
hb_hash
hb_hHasKey
hb_hPos
hb_hGet
hb_hGetDef
hb_hSet
hb_hDel
hb_hKeyAt
hb_hValueAt
hb_hPairAt
hb_hDelAt
hb_hKeys
hb_hValues
hb_hFill
hb_hClone
hb_hCopy
hb_hMerge
hb_hEval
hb_hScan
hb_hSort
hb_hCaseMatch
hb_hBinary
hb_hAutoAdd
hb_hAllocate
hb_hDefault
hb_hSetAutoAdd
hb_hsetCaseMatch
hb_hSetBinary
hb_inetInit
hb_inetCleanUp
hb_inetCreate
hb_inetClose
hb_inetFD
hb_inetStatus
hb_inetErrorCode
hb_inetErrorDesc
hb_inetClearError
hb_inetCount
hb_inetAddress
hb_inetPort
hb_inetTimeOut
hb_inetClearTimeOut
hb_inetTimeLimit
hb_inetClearTimeLimit
hb_inetPeriodCallback
hb_inetClearPeriodCallback
hb_inetGetSndBufSize
hb_inetGetRcvBufSize
hb_inetSetSndBufSize
hb_inetSetRcvBufSize
hb_inetRecv
hb_inetRecvAll
hb_inetRecvLine
hb_inetRecvEndBlock
hb_inetDataReady
hb_inetSend
hb_inetSendAll
hb_inetGetHosts
hb_inetGetAlias
hb_inetServer
hb_inetAccept
hb_inetConnect
hb_inetConnectTIP
hb_inetDGram
hb_inetDGramBind
hb_inetDGramSend
hb_inetDGramRecv
hb_inetCrLf
hb_inetIsSocket
hb_pValue
hb_idleAdd
hb_idleDel
hb_idleState
__keyBoard
hb_keyPut
MRow
MCol
hb_langErrMsg
hb_langMessage
hb_langName
hb_langSelect
hb_cdpSelect
hb_Translate
hb_setMacro
hb_mathErMode
hb_mathErBlock
__atPrompt
__menuTo
OS
Version
hb_getEnv
__run
IsAffirm
IsNegative
__objHasData
__objHasMethod
__objGetMsgList
__objGetMethodList
__objGetValueList
__objSetValueList
__objAddMethod
__objAddInline
__objAddData
__objModMethod
__objModInline
__objDelMethod
__objDelInline
__objDelData
__objDerivedFrom
OrdBagExt
OrdBagName
OrdCondSet
OrdCreate
OrdDestroy
OrdFor
OrdKey
__setCentury
__setFunction
hb_setKeyGet
hb_setKeySave
hb_setKeyCheck
SetTypeAhead
StrZero
hb_valToStr
hb_ansiToOem
hb_oemToAnsi
__xSaveScreen
__xRestScreen
__noNoAlert
hb_eol
hb_colorIndex
__input
__textSave
__textRestore
__wait
OutErr
__mvPublic
__mvPrivate
__mvxRelease
__mvRelease
__mvScope
__mvClear
__mvDbgInfo
__mvExist
__mvGet
__mvPut
MemVarBlock
FieldWBlock
hb_isByRef

View File

@@ -321,5 +321,6 @@
<file>resources/split_h.png</file>
<file>resources/split_v.png</file>
<file>docs/faq.htm</file>
<file>hbfunc.txt</file>
</qresource>
</RCC>

View File

@@ -2323,3 +2323,8 @@ FUNCTION hbide_restEnvironment_byResource( oIde, cFile )
/*----------------------------------------------------------------------*/
FUNCTION hbide_getFileContentsFromResource( cFile )
RETURN QResource( ":/" + cFile ):data()
/*----------------------------------------------------------------------*/