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() + +/*----------------------------------------------------------------------*/