2010-06-03 18:22 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)

* contrib/hbqt/hbqt_hbqplaintextedit.cpp
    ! Minor.

  * contrib/hbide/resources/buildsource.png
    + Icon for "Build Source" action.

  * contrib/hbide/hbide.prg
  * contrib/hbide/ideactions.prg
  * contrib/hbide/idedocks.prg
  * contrib/hbide/ideedit.prg
  * contrib/hbide/idefindreplace.prg
  * contrib/hbide/idemisc.prg
  * contrib/hbide/ideprojmanager.prg
    + Implemeted: to compile a source, source is not saved 
        if in modified state. Action was already defined but inactive.

    + Implemented: to build a source, current defined environment is 
        used and build process stays in the folder where source resides.
        Also source is not saved. hbIDE attempts to executable it also.
        Action defines a new icon on the top-toolbar and also an entry 
        into the "Build" menu.
    
    % Few more fixes in selections and find processes.

      NOTE: new setup is also uploaded on my site.
This commit is contained in:
Pritpal Bedi
2010-06-04 01:31:38 +00:00
parent a9aecafefc
commit c3e2d40df5
10 changed files with 165 additions and 19 deletions

View File

@@ -17,6 +17,33 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-06-03 18:22 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Minor.
* contrib/hbide/resources/buildsource.png
+ Icon for "Build Source" action.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideedit.prg
* contrib/hbide/idefindreplace.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
+ Implemeted: to compile a source, source is not saved
if in modified state. Action was already defined but inactive.
+ Implemented: to build a source, current defined environment is
used and build process stays in the folder where source resides.
Also source is not saved. hbIDE attempts to executable it also.
Action defines a new icon on the top-toolbar and also an entry
into the "Build" menu.
% Few more fixes in selections and find processes.
NOTE: new setup is also uploaded on my site.
2010-06-04 01:23 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
! Fixed typo in recent header detection changes causing -inc

View File

@@ -666,6 +666,7 @@ METHOD HbIde:execAction( cKey )
CASE "NewProject"
CASE "LoadProject"
CASE "LaunchProject"
CASE "BuildSource"
CASE "Build"
CASE "BuildLaunch"
CASE "Rebuild"
@@ -922,6 +923,9 @@ METHOD HbIde:execProjectAction( cKey )
CASE "LaunchProject"
::oPM:launchProject()
EXIT
CASE "BuildSource"
::oPM:buildSource( .t. )
EXIT
CASE "Build"
::oPM:buildProject( '', .F., .F. )
EXIT
@@ -935,7 +939,7 @@ METHOD HbIde:execProjectAction( cKey )
::oPM:buildProject( '', .T., .T. )
EXIT
CASE "Compile"
//
::oPM:buildSource( .f. )
EXIT
CASE "CompilePPO"
::oPM:buildProject( '', .F., .F., .T., .T. )

View File

@@ -183,6 +183,7 @@ METHOD IdeActions:loadActions()
aadd( aAct, { "TB_Print" , "~Print" , "print" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Compile" , "Co~mpile" , "compile" , "" , "No", "Yes" } )
aadd( aAct, { "TB_CompilePPO" , "Com~pile to PPO" , "ppo" , "" , "No", "Yes" } )
aadd( aAct, { "TB_BuildSource" , "Build Source" , "buildsource" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Build" , "Build Project" , "build" , "" , "No", "Yes" } )
aadd( aAct, { "TB_BuildLaunch" , "Build and Launch" , "buildlaunch" , "" , "No", "Yes" } )
aadd( aAct, { "TB_Rebuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } )
@@ -220,6 +221,7 @@ METHOD IdeActions:loadActions()
aadd( aAct, { "Compile" , "Co~mpile" , "compile" , "" , "No", "Yes" } )
aadd( aAct, { "CompilePPO" , "Com~pile to PPO" , "ppo" , "" , "No", "Yes" } )
aadd( aAct, { "Build" , "Build Project" , "build" , "" , "No", "Yes" } )
aadd( aAct, { "BuildSource" , "Build Source" , "buildsource" , "" , "No", "Yes" } )
aadd( aAct, { "BuildLaunch" , "Build and Launch" , "buildlaunch" , "" , "No", "Yes" } )
aadd( aAct, { "Rebuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } )
aadd( aAct, { "RebuildLaunch" , "Rebuild and Launch" , "rebuildlaunch" , "" , "No", "Yes" } )
@@ -266,7 +268,7 @@ METHOD IdeActions:loadActions()
aadd( aAct, { "BuildLaunch" , "Build and Launch Project" , "buildlaunch" , "F9" , "No", "Yes" } )
aadd( aAct, { "ReBuild" , "Rebuild Project" , "rebuild" , "" , "No", "Yes" } )
aadd( aAct, { "ReBuildLaunch" , "Rebuild and Launch Project" , "rebuildlaunch" , "" , "No", "Yes" } )
aadd( aAct, { "CompileCurrent" , "Compile Current Source" , "compile" , "" , "No", "Yes" } )
aadd( aAct, { "Compile" , "Compile Current Source" , "compile" , "" , "No", "Yes" } )
aadd( aAct, { "CompilePPO" , "Compile Current Source to PPO", "ppo" , "" , "No", "Yes" } )
aadd( aAct, { "LaunchProject" , "Launch Project" , "" , "^F10" , "No", "Yes" } )
aadd( aAct, { "ConfigureTools" , "Configure Tools...*" , "" , "" , "No", "Yes" } )
@@ -344,6 +346,7 @@ METHOD IdeActions:buildToolBar()
oTBar:addItem( , , , , , nSep )
oTBar:addItem( ::getAction( "TB_Compile" ), , , , , , "Compile" )
oTBar:addItem( ::getAction( "TB_CompilePPO" ), , , , , , "CompilePPO" )
oTBar:addItem( ::getAction( "TB_BuildSource" ), , , , , , "BuildSource" )
oTBar:addItem( ::getAction( "TB_Build" ), , , , , , "Build" )
oTBar:addItem( ::getAction( "TB_BuildLaunch" ), , , , , , "BuildLaunch" )
oTBar:addItem( ::getAction( "TB_Rebuild" ), , , , , , "Rebuild" )
@@ -576,14 +579,15 @@ METHOD IdeActions:buildMainMenu()
/*----------------------------------------------------------------------------*/
oSubMenu := XbpMenu():new( oMenuBar ):create()
oSubMenu:title := "~Build"
oSubMenu:addItem( { ::getAction( "Compile" ), {|| oIde:execAction( "Compile" ) } } )
oSubMenu:addItem( { ::getAction( "CompilePPO" ), {|| oIde:execAction( "CompilePPO" ) } } )
oSubMenu:addItem( { ::getAction( "BuildSource" ), {|| oIde:execAction( "BuildSource" ) } } )
hbide_menuAddSep( oSubMenu )
oSubMenu:addItem( { ::getAction( "Build" ), {|| oIde:execAction( "Build" ) } } )
oSubMenu:addItem( { ::getAction( "BuildLaunch" ), {|| oIde:execAction( "BuildLaunch" ) } } )
oSubMenu:addItem( { ::getAction( "Rebuild" ), {|| oIde:execAction( "Rebuild" ) } } )
oSubMenu:addItem( { ::getAction( "RebuildLaunch" ), {|| oIde:execAction( "RebuildLaunch" ) } } )
hbide_menuAddSep( oSubMenu )
oSubMenu:addItem( { ::getAction( "SaveCompileCurrent" ), {|| oIde:execAction( "SaveCompileCurrent" ) } } )
oSubMenu:addItem( { ::getAction( "CompilePPO" ), {|| oIde:execAction( "CompilePPO" ) } } )
hbide_menuAddSep( oSubMenu )
oSubMenu:addItem( { ::getAction( "LaunchProject" ), {|| oIde:execAction( "LaunchProject" ) } } )
oMenuBar:addItem( { oSubMenu, NIL } )

View File

@@ -216,7 +216,7 @@ METHOD IdeDocks:buildDialog()
::oDlg:oWidget:setTabPosition( Qt_BottomDockWidgetArea, QTabWidget_South )
::oDlg:oWidget:setCorner( Qt_BottomLeftCorner, Qt_LeftDockWidgetArea )
::oDlg:oWidget:setCorner( Qt_BottomRightCorner, Qt_RightDockWidgetArea )
::oDlg:oWidget:resize( 868,470 )
::oDlg:oWidget:resize( 900,470 )
::oIde:oDa := ::oDlg:drawingArea

View File

@@ -230,6 +230,7 @@ CLASS IdeEdit INHERIT IdeObject
METHOD spaces2tabs()
METHOD removeTrailingSpaces()
METHOD formatBraces()
METHOD findEx( cText, nFlags )
ENDCLASS
@@ -1160,12 +1161,16 @@ METHOD IdeEdit:blockConvert( cMode )
DO CASE
CASE nMode == selectionMode_stream
IF i == nT
cLine := substr( cLine, 1, nL ) + hbide_convertALine( substr( cLine, nL + 1 ), cMode )
ELSEIF i == nB
cLine := hbide_convertALine( substr( cLine, 1, nR ), cMode ) + substr( cLine, nR + 1 )
IF nT == nB
cLine := substr( cLine, 1, nL ) + hbide_convertALine( substr( cLine, nL + 1, nW ), cMode ) + substr( cLine, nL + 1 + nW )
ELSE
cLine := hbide_convertALine( cLine, cMode )
IF i == nT
cLine := substr( cLine, 1, nL ) + hbide_convertALine( substr( cLine, nL + 1 ), cMode )
ELSEIF i == nB
cLine := hbide_convertALine( substr( cLine, 1, nR ), cMode ) + substr( cLine, nR + 1 )
ELSE
cLine := hbide_convertALine( cLine, cMode )
ENDIF
ENDIF
CASE nMode == selectionMode_column
@@ -1463,6 +1468,23 @@ METHOD IdeEdit:find( cText, nPosFrom )
RETURN lFound
/*----------------------------------------------------------------------*/
/* nFlags will decide the position, case sensitivity and direction
*/
METHOD IdeEdit:findEx( cText, nFlags )
LOCAL qCursor, lFound, cT
IF ( lFound := ::qEdit:find( cText, nFlags ) )
::qEdit:centerCursor()
qCursor := ::getCursor()
cT := qCursor:selectedText()
::qEdit:hbSetSelectionInfo( { qCursor:blockNumber(), qCursor:columnNumber() - len( cT ), ;
qCursor:blockNumber(), qCursor:columnNumber(), 1 } )
::qEdit:setTextCursor( qCursor )
ENDIF
RETURN lFound
/*----------------------------------------------------------------------*/
METHOD IdeEdit:refresh()

View File

@@ -483,7 +483,7 @@ METHOD IdeFindReplace:find( lWarn )
nFlags += iif( ::oUI:q_checkMatchCase:isChecked(), QTextDocument_FindCaseSensitively, 0 )
nFlags += iif( ::oUI:q_radioUp:isChecked(), QTextDocument_FindBackward, 0 )
IF !( lFound := ::oEM:getEditCurrent():find( cText, nFlags ) ) .AND. lWarn
IF !( lFound := ::oEM:getEditObjectCurrent():findEx( cText, nFlags ) ) .AND. lWarn
hbide_showWarning( "Cannot find : " + cText )
ENDIF
ENDIF

View File

@@ -988,7 +988,7 @@ FUNCTION hbide_help( nOption )
AAdd( txt_, "<b>Harbour Developers Mailing List</b>" )
AAdd( txt_, "" )
AAdd( txt_, "Please visit the home page:" )
AAdd( txt_, "<a href='http://lists.harbour-project.org/pipermail/harbour/'>http://lists.harbour-project.org/pipermail/harbour/</a>" )
AAdd( txt_, "<a href='http://groups.google.com/group/harbour-devel/'>http://groups.google.com/group/harbour-devel/</a>" )
EXIT
CASE 3
@@ -996,7 +996,7 @@ FUNCTION hbide_help( nOption )
AAdd( txt_, "<b>Harbour Users Mailing List</b>" )
AAdd( txt_, "" )
AAdd( txt_, "Please visit the home page:" )
AAdd( txt_, "<a href='http://lists.harbour-project.org/pipermail/harbour/'>http://lists.harbour-project.org/pipermail/harbour/</a>" )
AAdd( txt_, "<a href='http://groups.google.com/group/harbour-users/'>http://groups.google.com/group/harbour-users/</a>" )
EXIT
CASE 4

View File

@@ -207,6 +207,7 @@ METHOD IdeProject:new( oIDE, aProps )
CLASS IdeProjManager INHERIT IdeObject
DATA cargo
DATA cSaveTo
DATA aPrjProps INIT {}
@@ -257,6 +258,7 @@ CLASS IdeProjManager INHERIT IdeObject
METHOD removeProject( cProjectTitle )
METHOD closeProject( cProjectTitle )
METHOD promptForPath( cObjPathName, cTitle, cObjFileName, cObjPath2, cObjPath3 )
METHOD buildSource( lExecutable )
METHOD buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt )
METHOD launchProject( cProject, cExe )
METHOD showOutput( cOutput, mp2, oProcess )
@@ -1209,6 +1211,88 @@ METHOD IdeProjManager:promptForPath( cObjPathName, cTitle, cObjFileName, cObjPat
/*----------------------------------------------------------------------*/
METHOD IdeProjManager:buildSource( lExecutable )
LOCAL oEdit, cTmp, cExeHbMk2, cCmd, cC, cCmdParams, cBuf
LOCAL cbRed := "<font color=blue>", ceRed := "</font>"
LOCAL lRebuild := .T.
LOCAL aHbp := {}
::lPPO := .t.
::lLaunch := lExecutable
::cProjectInProcess := NIL
IF !empty( oEdit := ::oEM:getEditorCurrent() )
IF ! hbide_isSourcePRG( oEdit:sourceFile )
MsgBox( 'Operation not supported for this file type: "' + oEdit:sourceFile + '"' )
RETURN Self
ENDIF
ELSE
MsgBox( "No active editing source available !" )
RETURN Self
ENDIF
::cargo := oEdit
aadd( aHbp, "-q" )
aadd( aHbp, "-trace" )
aadd( aHbp, "-info" )
aadd( aHbp, "-lang=en" )
aadd( aHbp, "-width=512" )
aadd( aHbp, "-rebuild" )
IF lExecutable
aadd( aHbp, "-hbexe" )
ELSE
aadd( aHbp, "-s" )
ENDIF
aadd( aHbp, hbide_pathToOSPath( oEdit:sourceFile ) )
::oDockB2:show()
::oOutputResult:oWidget:clear()
::oOutputResult:oWidget:append( hbide_outputLine() )
cTmp := "Project [ " + oEdit:sourceFile + " ] " + ;
"Launch [ " + iif( ::lLaunch , 'Yes', 'No' ) + " ] " + ;
"Rebuild [ " + iif( lRebuild, 'Yes', 'No' ) + " ] " + ;
"Started [ " + time() + " ]"
::oOutputResult:oWidget:append( cTmp )
::oOutputResult:oWidget:append( hbide_outputLine() )
::oIDE:oEV := IdeEnvironments():new():create( ::oIDE )
::cBatch := ::oEV:prepareBatch( ::cWrkEnvironment )
aeval( ::oEV:getHbmk2Commands( ::cWrkEnvironment ), {|e| aadd( aHbp, e ) } )
cExeHbMk2 := "hbmk2"
cCmdParams := hbide_array2cmdParams( aHbp )
::oProcess := HbpProcess():new()
//
::oProcess:output := {|cOut, mp2, oHbp| ::showOutput( cOut,mp2,oHbp ) }
::oProcess:finished := {|nEC , nES, oHbp| ::finished( nEC ,nES,oHbp ) }
::oProcess:workingPath := hbide_pathToOSPath( oEdit:cPath )
//
cCmd := hbide_getShellCommand()
cC := iif( hbide_getOS() == "nix", "", "/C " )
IF hb_fileExists( ::cBatch )
cBuf := memoread( ::cBatch )
cBuf += hb_osNewLine() + cExeHbMk2 + " " + cCmdParams + hb_osNewLine()
hb_memowrit( ::cBatch, cBuf )
ENDIF
//
::outputText( cbRed + "Batch File " + iif( hb_fileExists( ::cBatch ), " Exists", " : doesn't Exist" ) + " => " + ceRed + trim( ::cBatch ) )
::outputText( cbRed + "Batch File Contents => " + ceRed )
::outputText( memoread( ::cBatch ) )
::outputText( cbRed + "Command => " + ceRed + cCmd )
::outputText( cbRed + "Arguments => " + ceRed + cC + ::cBatch )
::outputText( hbide_outputLine() )
//
::oProcess:addArg( cC + ::cBatch )
::oProcess:start( cCmd )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt )
LOCAL cHbpPath, oEdit, cHbpFN, cTmp, cExeHbMk2, aHbp, cCmd, cC, oSource, cCmdParams, cBuf
LOCAL cbRed := "<font color=blue>", ceRed := "</font>"
@@ -1390,14 +1474,18 @@ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess )
ENDIF
ENDIF
cExe := hbide_PathProc( cExe, hbide_pathToOSPath( ::oProject:location ) )
IF empty( ::cProjectInProcess )
cExe := hbide_PathProc( cExe, hbide_pathToOSPath( ::cargo:cPath ) )
ELSE
cExe := hbide_PathProc( cExe, hbide_pathToOSPath( ::oProject:location ) )
ENDIF
::outputText( " " )
IF empty( cExe )
::outputText( "<font color=red>" + "Executable could not been detected from linker output!" + "</font>" )
ELSE
cExe := alltrim( cExe )
::outputText( "<font color=blue>" + "Detected exeutable => " + cExe + "</font>" )
::outputText( "<font color=blue>" + "Detected executable => " + cExe + "</font>" )
ENDIF
::outputText( " " )

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

View File

@@ -381,11 +381,13 @@ void HBQPlainTextEdit::hbGetViewportInfo()
void HBQPlainTextEdit::hbSetSelectionInfo( PHB_ITEM selectionInfo )
{
rowBegins = hb_arrayGetNI( selectionInfo, 1 );
rowEnds = hb_arrayGetNI( selectionInfo, 2 );
columnBegins = hb_arrayGetNI( selectionInfo, 3 );
columnBegins = hb_arrayGetNI( selectionInfo, 2 );
rowEnds = hb_arrayGetNI( selectionInfo, 3 );
columnEnds = hb_arrayGetNI( selectionInfo, 4 );
selectionMode = hb_arrayGetNI( selectionInfo, 5 );
emit selectionChanged();
update();
}
@@ -1209,7 +1211,6 @@ bool HBQPlainTextEdit::hbKeyPressSelection( QKeyEvent * event )
}
}
}
selectionState = 0;
return false;
#if 0