From 76f774464d57e67a087aad76ce666ce8cd275385 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Wed, 8 Aug 2012 01:23:25 +0000 Subject: [PATCH] 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. --- harbour/ChangeLog | 29 ++ harbour/contrib/hbide/edit.prg | 333 ++++++++++++++++------- harbour/contrib/hbide/editor.prg | 4 + harbour/contrib/hbide/hbfunc.txt | 415 +++++++++++++++++++++++++++++ harbour/contrib/hbide/hbide.qrc | 1 + harbour/contrib/hbide/saveload.prg | 5 + 6 files changed, 691 insertions(+), 96 deletions(-) create mode 100644 harbour/contrib/hbide/hbfunc.txt diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 09fe7e493e..de3cd9567b 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -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. diff --git a/harbour/contrib/hbide/edit.prg b/harbour/contrib/hbide/edit.prg index b8e1994f96..2183bdd185 100644 --- a/harbour/contrib/hbide/edit.prg +++ b/harbour/contrib/hbide/edit.prg @@ -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, "<", "<" ) + cArg := StrTran( cArg, ">", ">" ) + + nnn := cArg:__enumIndex() + IF nnn == nArgs + cArg := "" + cArg + "" + ENDIF + IF nnn == Len( aArgs ) + cArgs += "
" + " " + cArg + ELSE + cArgs += "
" + " " + cArg + "" + "," + "" + ENDIF + NEXT + nCols += iif( nCols <= Len( cFunc ), 0, 1 ) + + //cPro := "

" + "" + cFunc + "" + ; + cPro := "

" + "" + cFunc + "" + ; + "" + "(" + "" + ; + cArgs + ; + "" + ")" + "" + "

" + ENDIF + ENDIF + ENDIF + + RETURN cPro + +/*------------------------------------------------------------------------*/ + +FUNCTION hbide_formatProto( cProto ) + LOCAL n, n1, cArgs + + cProto := StrTran( cProto, "<", "<" ) + cProto := StrTran( cProto, ">", ">" ) + + n := at( "(", cProto ) + n1 := at( ")", cProto ) + + IF n > 0 .AND. n1 > 0 + cArgs := substr( cProto, n + 1, n1 - n - 1 ) + cArgs := strtran( cArgs, ",", "" + "," + "" ) + cProto := "

" + "" + substr( cProto, 1, n - 1 ) + "" + ; + "" + "(" + "" + ; + cArgs + ; + "" + ")" + "" + "

" + 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, "<", "<" ) - cArg := StrTran( cArg, ">", ">" ) - - nnn := cArg:__enumIndex() - IF nnn == nArgs - cArg := "" + cArg + "" - ENDIF - IF nnn == Len( aArgs ) - cArgs += "
" + " " + cArg - ELSE - cArgs += "
" + " " + cArg + "" + "," + "" - ENDIF - NEXT - nCols += iif( nCols <= Len( cFunc ), 0, 1 ) - - //cPro := "

" + "" + cFunc + "" + ; - cPro := "

" + "" + cFunc + "" + ; - "" + "(" + "" + ; - cArgs + ; - "" + ")" + "" + "

" + 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, "<", "<" ) - cProto := StrTran( cProto, ">", ">" ) - - n := at( "(", cProto ) - n1 := at( ")", cProto ) - - IF n > 0 .AND. n1 > 0 - cArgs := substr( cProto, n + 1, n1 - n - 1 ) - cArgs := strtran( cArgs, ",", "" + "," + "" ) - cProto := "

" + "" + substr( cProto, 1, n - 1 ) + "" + ; - "" + "(" + "" + ; - cArgs + ; - "" + ")" + "" + "

" + 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. /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbide/editor.prg b/harbour/contrib/hbide/editor.prg index cd4828faaa..33c469a165 100644 --- a/harbour/contrib/hbide/editor.prg +++ b/harbour/contrib/hbide/editor.prg @@ -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 ) diff --git a/harbour/contrib/hbide/hbfunc.txt b/harbour/contrib/hbide/hbfunc.txt new file mode 100644 index 0000000000..d7004a40b6 --- /dev/null +++ b/harbour/contrib/hbide/hbfunc.txt @@ -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 + diff --git a/harbour/contrib/hbide/hbide.qrc b/harbour/contrib/hbide/hbide.qrc index cbf13dc242..90cdc59eee 100644 --- a/harbour/contrib/hbide/hbide.qrc +++ b/harbour/contrib/hbide/hbide.qrc @@ -321,5 +321,6 @@ resources/split_h.png resources/split_v.png docs/faq.htm + hbfunc.txt diff --git a/harbour/contrib/hbide/saveload.prg b/harbour/contrib/hbide/saveload.prg index 4a8f5257e6..6bce13eae5 100644 --- a/harbour/contrib/hbide/saveload.prg +++ b/harbour/contrib/hbide/saveload.prg @@ -2323,3 +2323,8 @@ FUNCTION hbide_restEnvironment_byResource( oIde, cFile ) /*----------------------------------------------------------------------*/ +FUNCTION hbide_getFileContentsFromResource( cFile ) + + RETURN QResource( ":/" + cFile ):data() + +/*----------------------------------------------------------------------*/