diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 288bef7102..647aaa20b5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,17 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-01-06 00:21 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbide/hbide.prg + * contrib/hbide/idedocks.prg + * contrib/hbide/idemisc.prg + * contrib/hbide/ideprojmanager.prg + ! Many artifacts corrected. + ! Build process is now very satisfying if selected an + option with right-click on project node in Project Tree window. + ! Diabled gradients in any window. Is it ok to fine tune + the windows with plain colors ? + 2010-01-06 08:33 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * INSTALL + Added HB_TR_OUTPUT to DEBUG section. diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index a6662fbe31..c114120d25 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -675,7 +675,9 @@ METHOD HbIde:saveSource( nTab, lCancel, lAs ) /*----------------------------------------------------------------------*/ -METHOD HbIde:editSource( cSourceFile, nPos, nHPos, nVPos, cTheme ) +METHOD HbIde:editSource( cSourceFile, nPos, nHPos, nVPos, cTheme, lAlert ) + + DEFAULT lAlert TO .T. IF !Empty( cSourceFile ) IF !( hbide_isValidText( cSourceFile ) ) @@ -686,9 +688,11 @@ METHOD HbIde:editSource( cSourceFile, nPos, nHPos, nVPos, cTheme ) RETURN Self ENDIF IF ::oED:isOpen( cSourceFile ) - IF hbide_getYesNo( cSourceFile + " is already open.", ; - "Want to re-load it again ?", "File Open Info!" ) - ::oED:reLoad( cSourceFile ) + IF lAlert + IF hbide_getYesNo( cSourceFile + " is already open.", ; + "Want to re-load it again ?", "File Open Info!" ) + ::oED:reLoad( cSourceFile ) + ENDIF ENDIF ::oED:setSourceVisible( cSourceFile ) RETURN Self @@ -1100,20 +1104,9 @@ METHOD HbIde:manageItemSelected( oXbpTreeItem ) CASE ::aProjData[ n, TRE_TYPE ] == "Source File" cSource := ::aProjData[ n, TRE_ORIGINAL ] ::editSource( cSource ) - #if 0 - cSource := ::aProjData[ n, TRE_ORIGINAL ] - IF ( n := ascan( ::aTabs, {|e_| hbide_pathNormalized( e_[ TAB_SOURCEFILE ] ) == hbide_pathNormalized( cSource ) } ) ) == 0 - ::editSource( cSource ) - ELSE - ::qTabWidget:setCurrentIndex( ::qTabWidget:indexOf( ::aTabs[ n, TAB_OTAB ]:oWidget ) ) - ENDIF - #endif CASE ::aProjData[ n, TRE_TYPE ] == "Opened Source" - cSource := ::aProjData[ n, TRE_DATA ] - IF ( n := ascan( ::aTabs, {|e_| hbide_pathNormalized( e_[ TAB_SOURCEFILE ] ) == hbide_pathNormalized( cSource ) } ) ) > 0 - ::qTabWidget:setCurrentIndex( ::qTabWidget:indexOf( ::aTabs[ n, TAB_OTAB ]:oWidget ) ) - ENDIF + ::oED:setSourceVisible( ::aProjData[ n, TRE_DATA ] ) CASE ::aProjData[ n, TRE_TYPE ] == "Path" diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg index 0a38d8c8c3..e7194946fb 100644 --- a/harbour/contrib/hbide/idedocks.prg +++ b/harbour/contrib/hbide/idedocks.prg @@ -147,7 +147,7 @@ METHOD IdeDocks:buildDialog() ::oDlg:setStyleSheet( GetStyleSheet( "QMainWindow" ) ) - ::oDlg:close := {|| MsgBox( "HbIDE is about to be closed!" ), .T. } + ::oDlg:close := {|| hbide_getYesNo( "hbIDE is about to be closed!", "Are you sure?" ) } ::oDlg:oWidget:setDockOptions( QMainWindow_AllowTabbedDocks + QMainWindow_ForceTabbedDocks ) ::oDlg:oWidget:setTabPosition( Qt_BottomDockWidgetArea, QTabWidget_South ) @@ -194,7 +194,8 @@ METHOD IdeDocks:buildProjectTree() ::oProjTree:hasLines := .T. ::oProjTree:hasButtons := .T. ::oProjTree:create( ::oDa, , { 0,0 }, { 10,10 }, , .t. ) - ::oProjTree:setStyleSheet( GetStyleSheet( "QTreeWidget" ) ) + + * ::oProjTree:setStyleSheet( GetStyleSheet( "QTreeWidget" ) ) //::oProjTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } ::oProjTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem, ::oIde:manageFocusInEditor() } @@ -243,7 +244,8 @@ METHOD IdeDocks:buildEditorTree() ::oEditTree:hasLines := .T. ::oEditTree:hasButtons := .T. ::oEditTree:create( ::oDa, , { 0,0 }, { 10,10 }, , .t. ) - ::oEditTree:setStyleSheet( GetStyleSheet( "QTreeWidget" ) ) + + * ::oEditTree:setStyleSheet( GetStyleSheet( "QTreeWidget" ) ) //::oEditTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } ::oEditTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem, ::oIde:manageFocusInEditor() } @@ -281,7 +283,7 @@ METHOD IdeDocks:buildFuncList() ::oDockR:oWidget:setFocusPolicy( Qt_NoFocus ) ::oIde:oFuncList := XbpListBox():new( ::oDockR ):create( , , { 0,0 }, { 100,400 }, , .t. ) - ::oFuncList:setStyleSheet( GetStyleSheet( "QListView" ) ) + * ::oFuncList:setStyleSheet( GetStyleSheet( "QListView" ) ) //::oFuncList:ItemMarked := {|mp1, mp2, oXbp| ::gotoFunction( mp1, mp2, oXbp ) } ::oFuncList:ItemSelected := {|mp1, mp2, oXbp| ::oIde:gotoFunction( mp1, mp2, oXbp ) } @@ -385,7 +387,7 @@ METHOD IdeDocks:outputDoubleClicked( lSelected ) cText := QTextBlock():configure( qCursor:block() ):text() IF hbide_parseFNfromStatusMsg( cText, @cSource, @nLine, .T. ) - ::oIde:editSource( cSource ) + ::oIde:editSource( cSource, 0, 0, 0, NIL, .f. ) qCursor := QTextCursor():configure( ::oIde:qCurEdit:textCursor() ) nLine := iif( nLine < 1, 0, nLine - 1 ) diff --git a/harbour/contrib/hbide/idemisc.prg b/harbour/contrib/hbide/idemisc.prg index e6e7fb7f81..17de8ee587 100644 --- a/harbour/contrib/hbide/idemisc.prg +++ b/harbour/contrib/hbide/idemisc.prg @@ -99,7 +99,6 @@ PROCEDURE hbide_justACall() FUNCTION hbide_execPopup( aPops, aPos, qParent ) LOCAL i, qPop, qPoint, qAct, cAct, xRet, pAct, a_ - //, nAct qPop := QMenu():new( IIF( hb_isObject( qParent ), qParent, NIL ) ) @@ -114,12 +113,12 @@ FUNCTION hbide_execPopup( aPops, aPos, qParent ) ENDIF ENDIF NEXT -hbide_dbg( 1001 ) + qPoint := QPoint():new( aPos[ 1 ], aPos[ 2 ] ) pAct := qPop:exec_1( qPoint ) -hbide_dbg( 1002 ) + qAct := QAction():configure( pAct ) -hbide_dbg( 1003 ) + IF !empty( qAct:pPtr ) .and. !empty( cAct := qAct:text() ) FOR EACH a_ IN aPops IF hb_isObject( a_[ 1 ] ) @@ -135,7 +134,7 @@ hbide_dbg( 1003 ) ENDIF NEXT ENDIF -hbide_dbg( 1004 ) + qPop:pPtr := 0 RETURN xRet @@ -699,11 +698,11 @@ FUNCTION hbide_convertBuildStatusMsgToHtml( cText, oWidget ) FOR EACH cLine IN aLines IF !Empty( cLine ) - nPos := aScan( aRegList, {| reg | !Empty( hb_RegEx( reg[ 2 ], cLine ) ) } ) - - IF ( nPos > 0 ) + IF ( nPos := aScan( aRegList, {| reg | !Empty( hb_RegEx( reg[ 2 ], cLine ) ) } ) ) > 0 cLine := '' + cLine + '' - End + ELSE + cLine := "" + cLine + "" + ENDIF ENDIF oWidget:append( cLine ) diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg index 46f75a583f..bcc0a8cc92 100644 --- a/harbour/contrib/hbide/ideprojmanager.prg +++ b/harbour/contrib/hbide/ideprojmanager.prg @@ -78,8 +78,6 @@ CLASS IdeProjManager INHERIT IdeObject DATA qProcess DATA nStarted INIT 0 - DATA cFileOut - DATA cFileErr METHOD new() METHOD create() @@ -721,18 +719,30 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) qStringList:append( cHbpPath ) ::qProcess := QProcess():new() + ::qProcess:setReadChannel( 1 ) - //::cFileOut := hbide_pathToOSPath( cTargetFN + '.' + hb_md5( alltrim( str( seconds() ) ) ) + ".out" ) - ::cFileOut := "xxx" - //::cFileErr := hbide_pathToOSPath( cTargetFN + '.' + hb_md5( alltrim( str( seconds() ) ) ) + ".err" ) - ::cFileErr := "yyy" + #define CHN_BGN 1 + #define CHN_OUT 2 + #define CHN_ERR 3 + #define CHN_FIN 4 + #define CHN_STT 5 + #define CHN_ERE 6 + #define CHN_CLO 7 + #define CHN_BYT 8 + #define CHN_RCF 9 + #define CHN_REA 10 - ::qProcess:setStandardOutputFile( ::cFileOut ) - ::qProcess:setStandardErrorFile( ::cFileErr ) + //Qt_Slots_Connect( ::pSlots, ::qProcess, "readyRead()" , {|o,i| ::readProcessInfo( CHN_REA, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "readChannelFinished()" , {|o,i| ::readProcessInfo( CHN_RCF, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "aboutToClose()" , {|o,i| ::readProcessInfo( CHN_CLO, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "bytesWritten(int)" , {|o,i| ::readProcessInfo( CHN_BYT, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "stateChanged(int)" , {|o,i| ::readProcessInfo( CHN_STT, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "error(int)" , {|o,i| ::readProcessInfo( CHN_ERE, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "started()" , {|o,i| ::readProcessInfo( CHN_BGN, o, i ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "readyReadStandardOutput()", {|o,i| ::readProcessInfo( CHN_OUT, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "readyReadStandardError()" , {|o,i| ::readProcessInfo( CHN_ERR, i, o ) } ) + Qt_Slots_Connect( ::pSlots, ::qProcess, "finished(int,int)" , {|o,i,ii| ::readProcessInfo( CHN_FIN, i, ii, o ) } ) - Qt_Slots_Connect( ::pSlots, ::qProcess, "readyReadStandardOutput()", {|o,i| ::readProcessInfo( 2, i, o ) } ) - Qt_Slots_Connect( ::pSlots, ::qProcess, "readyReadStandardError()" , {|o,i| ::readProcessInfo( 3, i, o ) } ) - Qt_Slots_Connect( ::pSlots, ::qProcess, "finished(int,int)" , {|o,i,ii| ::readProcessInfo( 4, i, ii, o ) } ) ::oOutputResult:oWidget:clear() ::oOutputResult:oWidget:append( cTmp ) @@ -774,41 +784,30 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) /*----------------------------------------------------------------------*/ METHOD IdeProjManager:readProcessInfo( nMode, i, ii ) - LOCAL cLine, cTmp + LOCAL cLine, cTmp, nSize + + nSize := 16384 DO CASE - CASE nMode == 1 + CASE nMode == CHN_BGN - - CASE nMode == 2 + CASE nMode == CHN_OUT ::qProcess:setReadChannel( 0 ) - cLine := space( 4096 ) - ::qProcess:readLine( @cLine, 4096 ) + cLine := space( nSize ) + ::qProcess:read( @cLine, nSize ) IF !empty( cLine ) - ::oOutputResult:oWidget:append( cLine ) + hbide_convertBuildStatusMsgToHtml( trim( cLine ), ::oOutputResult:oWidget ) ENDIF - CASE nMode == 3 + CASE nMode == CHN_ERR ::qProcess:setReadChannel( 1 ) - cLine := space( 4096 ) - ::qProcess:readLine( @cLine, 4096 ) - + cLine := space( nSize ) + ::qProcess:read( @cLine, nSize ) IF !empty( cLine ) - IF ( "Warning" $ cLine ) - cLine := '' + cLine + '' - ELSEIF ( "Error" $ cLine ) - cLine := '' + cLine + '' - ENDIF - - ::oOutputResult:oWidget:append( cLine ) + hbide_convertBuildStatusMsgToHtml( trim( cLine ), ::oOutputResult:oWidget ) ENDIF - CASE nMode == 4 - cTmp := memoread( ::cFileOut ) - hbide_convertBuildStatusMsgToHtml( cTmp, ::oOutputResult:oWidget ) - cTmp := memoread( ::cFileErr ) - hbide_convertBuildStatusMsgToHtml( cTmp, ::oOutputResult:oWidget ) - + CASE nMode == CHN_FIN cTmp := hbide_outputLine() + CRLF cTmp += "Exit Code [ " + hb_ntos( i ) + " ] Exit Status [ " + hb_ntos( ii ) + " ] " +; "Finished at [ " + time() + " ] Done in [ " + hb_ntos( seconds() - ::nStarted ) +" Secs ]" + CRLF @@ -824,8 +823,6 @@ METHOD IdeProjManager:readProcessInfo( nMode, i, ii ) ::qProcess:pPtr := 0 ::qProcess := NIL - ferase( ::cFileOut ) - ferase( ::cFileErr ) ENDCASE RETURN nil