diff --git a/harbour/ChangeLog b/harbour/ChangeLog index fec973b903..d939d7836a 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,38 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-03-17 23:50 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbxbp/xbptreeview.prg + ! Added :tooltipText instance variable to manage tooltips. + + * contrib/hbide/hbide.prg + * contrib/hbide/idedocks.prg + * contrib/hbide/ideeditor.prg + * contrib/hbide/idefindreplace.prg + * contrib/hbide/ideprojmanager.prg + * contrib/hbide/resources/docwriter.ui + * contrib/hbide/resources/docwriter.uic + + ! Reworked "Projects" and "Editors" tree. + Now the indentation is reduced, visual elements are added, + long paths are shifted inside tooltips, nodes are sorted. + ! "Editors" tree now displays the panel icon on which this source + is hosted. A very handy and useful implementation. + + These tree-views will remain stationary for the rest of hbIDE + development cycle, i.e., there will bo no change whatsoever + on these components. + + ! Many other artifacts corrected while working with the production + projects myself. Probably now you may try, at least, for real-time + use. + + + Setup a dedicated web-presence of hbIDE + http://hbide.vouch.info/ + + Please remain in tough with these pages as contents will keep on + posted with every available spare time. + 2010-03-17 00:37 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * INSTALL ! Typo in prev. diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index 61ad2f040b..91863fe413 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -965,7 +965,7 @@ METHOD HbIde:removeProjectTree( aPrj ) /*----------------------------------------------------------------------*/ METHOD HbIde:updateProjectTree( aPrj ) - LOCAL oProject, n, oSource, oItem, nProjExists, oP, oParent, cPath + LOCAL oProject, n, oSource, oItem, nProjExists, oP, oParent oProject := IdeProject():new( Self, aPrj ) @@ -1009,23 +1009,13 @@ METHOD HbIde:updateProjectTree( aPrj ) oP := oParent:addItem( oProject:title ) aadd( ::aProjData, { oP, "Project Name", oParent, oProject:title, aPrj, oProject } ) ENDIF - oParent := oP - /* Reassign all children nodes */ - FOR EACH cPath IN oProject:hPaths - oItem := oParent:addItem( cPath:__enumKey() ) - aadd( ::aProjData, { oItem, "Path", oParent, cPath:__enumKey(), oProject:title, oProject } ) - NEXT - /* Souces */ FOR EACH oSource IN oProject:hSources - n := ascan( ::aProjData, {|e_| e_[ TRE_TYPE ] == "Path" .AND. ; - e_[ TRE_ORIGINAL ] == oSource:path .AND. ; - e_[ TRE_DATA ] == oProject:title } ) - IF n > 0 - oP := ::aProjData[ n, TRE_OITEM ] - oItem := oP:addItem( oSource:file + oSource:ext ) - aadd( ::aProjData, { oItem, "Source File", oP, oSource:original, oProject:title } ) - ENDIF + oItem := oP:addItem( oSource:file + oSource:ext ) + oItem:tooltipText := oSource:original + oItem:oWidget:setIcon( 0, hbide_image( hbide_imageForFileType( oSource:ext ) ) ) + aadd( ::aProjData, { oItem, "Source File", oP, oSource:original, oProject:title } ) NEXT + oP:oWidget:sortChildren( 0 ) RETURN Self diff --git a/harbour/contrib/hbide/idedocks.prg b/harbour/contrib/hbide/idedocks.prg index 234ccb7242..0ed04a7ed6 100644 --- a/harbour/contrib/hbide/idedocks.prg +++ b/harbour/contrib/hbide/idedocks.prg @@ -125,6 +125,7 @@ CLASS IdeDocks INHERIT IdeObject METHOD addPanelButton( cPanel ) METHOD disblePanelButton( qTBtn ) METHOD getADockWidget( nArea, cObjectName, cWindowTitle, nFlags ) + METHOD getPanelIcon( cView ) ENDCLASS @@ -616,6 +617,17 @@ METHOD IdeDocks:disblePanelButton( qTBtn ) /*----------------------------------------------------------------------*/ +METHOD IdeDocks:getPanelIcon( cView ) + LOCAL n + + IF ( n := ascan( ::aPanels, {|q| q:text() == cView } ) ) > 0 + RETURN hbide_image( "panel_" + hb_ntos( n ) ) + ENDIF + + RETURN "" + +/*----------------------------------------------------------------------*/ + METHOD IdeDocks:addPanelButton( cPanel ) LOCAL qTBtn @@ -625,6 +637,7 @@ METHOD IdeDocks:addPanelButton( cPanel ) qTBtn := QToolButton():new() qTBtn:setMaximumHeight( 20 ) qTBtn:setMaximumWidth( 20 ) + qTBtn:setText( cPanel ) qTBtn:setTooltip( "Panel: " + cPanel ) qTBtn:setIcon( hbide_image( "panel_" + hb_ntos( nIndex ) ) ) aadd( ::aPanels, qTBtn ) @@ -642,7 +655,7 @@ METHOD IdeDocks:addPanelButton( cPanel ) /*----------------------------------------------------------------------*/ METHOD IdeDocks:buildProjectTree() - LOCAL i + LOCAL i, oItem ::oIde:oDockPT := ::getADockWidget( Qt_LeftDockWidgetArea, "dockProjectTree", "Projects Tree" ) ::oDlg:oWidget:addDockWidget_1( Qt_LeftDockWidgetArea, ::oDockPT:oWidget, Qt_Vertical ) @@ -655,6 +668,8 @@ METHOD IdeDocks:buildProjectTree() ::oProjTree:setStyleSheet( GetStyleSheet( "QTreeWidgetHB" ) ) ::oProjTree:oWidget:setMinimumWidth( 100 ) ::oProjTree:oWidget:setSizePolicy_1( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred ) + ::oProjTree:oWidget:setIconSize( QSize():new( 12,12 ) ) + ::oProjTree:oWidget:setIndentation( 12 ) * ::oProjTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } ::oProjTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem } //, ::oIde:manageFocusInEditor() } @@ -663,9 +678,15 @@ METHOD IdeDocks:buildProjectTree() ::oIde:oProjRoot := ::oProjTree:rootItem:addItem( "Projects" ) - aadd( ::aProjData, { ::oProjRoot:addItem( "Executables" ), "Executables", ::oProjRoot, NIL, NIL } ) - aadd( ::aProjData, { ::oProjRoot:addItem( "Libs" ), "Libs" , ::oProjRoot, NIL, NIL } ) - aadd( ::aProjData, { ::oProjRoot:addItem( "Dlls" ), "Dlls" , ::oProjRoot, NIL, NIL } ) + oItem := ::oProjRoot:addItem( "Executables" ) + oItem:oWidget:setIcon( 0, hbide_image( "fl_exe" ) ) + aadd( ::aProjData, { oItem, "Executables", ::oProjRoot, NIL, NIL } ) + oItem := ::oProjRoot:addItem( "Libs" ) + oItem:oWidget:setIcon( 0, hbide_image( "fl_lib" ) ) + aadd( ::aProjData, { oItem, "Libs" , ::oProjRoot, NIL, NIL } ) + oItem := ::oProjRoot:addItem( "Dlls" ) + oItem:oWidget:setIcon( 0, hbide_image( "fl_dll" ) ) + aadd( ::aProjData, { oItem, "Dlls" , ::oProjRoot, NIL, NIL } ) ::oProjRoot:expand( .t. ) // @@ -694,14 +715,16 @@ METHOD IdeDocks:buildEditorTree() ::oEditTree:oWidget:setSizePolicy_1( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred ) ::oEditTree:oWidget:setMinimumWidth( 100 ) + ::oEditTree:oWidget:setIconSize( QSize():new( 12,12 ) ) + ::oEditTree:oWidget:setIndentation( 12 ) + * ::oEditTree:oWidget:setRootIsDecorated( .f. ) - //::oEditTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } + * ::oEditTree:itemMarked := {|oItem| ::manageItemSelected( 0, oItem ), ::oCurProjItem := oItem } ::oEditTree:itemMarked := {|oItem| ::oIde:oCurProjItem := oItem } ::oEditTree:itemSelected := {|oItem| ::oIde:manageItemSelected( oItem ) } ::oEditTree:hbContextMenu := {|mp1, mp2, oXbp| ::oIde:manageProjectContext( mp1, mp2, oXbp ) } - ::oIde:oOpenedSources := ::oEditTree:rootItem:addItem( "Editor" ) - + ::oIde:oOpenedSources := ::oEditTree:rootItem:addItem( "Editors" ) ::oOpenedSources:expand( .t. ) /* Insert Project Tree Into Dock Widget */ @@ -815,6 +838,7 @@ METHOD IdeDocks:outputDoubleClicked( lSelected ) qCursor:setPosition( 0 ) qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine ) ::oIde:qCurEdit:setTextCursor( qCursor ) + ::oIde:qCurEdit:centerCursor() ::oIde:manageFocusInEditor() ENDIF ENDIF diff --git a/harbour/contrib/hbide/ideeditor.prg b/harbour/contrib/hbide/ideeditor.prg index de8bd670ab..a410344f25 100644 --- a/harbour/contrib/hbide/ideeditor.prg +++ b/harbour/contrib/hbide/ideeditor.prg @@ -101,7 +101,7 @@ CLASS IdeEditsManager INHERIT IdeObject METHOD create( oIde ) METHOD destroy() METHOD removeSourceInTree( cSourceFile ) - METHOD addSourceInTree( cSourceFile ) + METHOD addSourceInTree( cSourceFile, cView ) METHOD execEvent( nMode, p ) METHOD buildEditor( cSourceFile, nPos, nHPos, nVPos, cTheme, cView ) METHOD getTabBySource( cSource ) @@ -245,17 +245,20 @@ METHOD IdeEditsManager:removeSourceInTree( cSourceFile ) /*----------------------------------------------------------------------*/ -METHOD IdeEditsManager:addSourceInTree( cSourceFile ) - LOCAL cPath, cPathA, cFile, cExt, n, oParent - LOCAL oGrand := ::oOpenedSources +METHOD IdeEditsManager:addSourceInTree( cSourceFile, cView ) + LOCAL cPath, cFile, cExt, oItem + //LOCAL oGrand := ::oOpenedSources + LOCAL oParent := ::oOpenedSources IF Empty( cSourceFile ) - RETURN nil - End + RETURN Self + ENDIF hb_fNameSplit( cSourceFile, @cPath, @cFile, @cExt ) + #if 0 cPathA := hbide_pathNormalized( cPath ) + IF ( n := ascan( ::aEditorPath, {|e_| e_[ 2 ] == cPathA } ) ) == 0 oParent := oGrand:addItem( cPath ) aadd( ::aProjData, { oParent, "Editor Path", oGrand, cPathA, cSourceFile } ) @@ -266,6 +269,16 @@ METHOD IdeEditsManager:addSourceInTree( cSourceFile ) aadd( ::aProjData, { oParent:addItem( cFile + cExt ), "Opened Source", oParent, ; cSourceFile, hbide_pathNormalized( cSourceFile ) } ) + #endif + + oItem := oParent:addItem( cFile + cExt ) + oItem:tooltipText := cSourceFile + oItem:oWidget:setIcon( 0, ::oDK:getPanelIcon( cView ) ) + aadd( ::aProjData, { oItem, "Opened Source", oParent, ; + cSourceFile, hbide_pathNormalized( cSourceFile ) } ) + + ::oEditTree:oWidget:sortItems( 0 ) + RETURN Self /*----------------------------------------------------------------------*/ @@ -1060,7 +1073,7 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView ) aadd( ::aTabs, { ::oTab, Self } ) /* Populate right at creation */ - ::oEM:addSourceInTree( ::sourceFile ) + ::oEM:addSourceInTree( ::sourceFile, ::cView ) ::qTabWidget:setStyleSheet( GetStyleSheet( "QTabWidget" ) ) ::setTabImage() diff --git a/harbour/contrib/hbide/idefindreplace.prg b/harbour/contrib/hbide/idefindreplace.prg index 65bc5cc5ce..d57e41d4c3 100644 --- a/harbour/contrib/hbide/idefindreplace.prg +++ b/harbour/contrib/hbide/idefindreplace.prg @@ -205,6 +205,7 @@ METHOD IdeSearchReplace:find( cText, lBackward ) IF ! lFound ::qCurEdit:setTextCursor( qCursor ) + ::qCurEdit:centerCursor() ::oUI:q_checkReplace:setChecked( .f. ) ::oUI:q_checkReplace:setEnabled( .f. ) ELSE diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg index f445a2d777..0b9029587f 100644 --- a/harbour/contrib/hbide/ideprojmanager.prg +++ b/harbour/contrib/hbide/ideprojmanager.prg @@ -258,6 +258,11 @@ CLASS IdeProjManager INHERIT IdeObject METHOD pullHbpData( cHbp ) METHOD synchronizeAlienProject( cProjFileName ) + METHOD harbourFlags() + METHOD hbmk2Flags() + METHOD xppCompileFlags() + METHOD xppLinkFlags() + ENDCLASS /*----------------------------------------------------------------------*/ @@ -1134,7 +1139,6 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) LOCAL cHbpPath, oEdit, cHbpFN, cTmp, cExeHbMk2, aHbp, cCmd, cC, cArg LOCAL cCmdParams - //cTargetFN aHbp := {} DEFAULT lLaunch TO .F. @@ -1162,11 +1166,7 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) ::oProject := ::getProjectByTitle( cProject ) -// cTargetFN := hbide_pathFile( ::oProject:destination, iif( empty( ::oProject:outputName ), "_temp", ::oProject:outputName ) ) -// cTargetFN := hbide_pathFile( ::oProject:location , iif( empty( ::oProject:outputName ), "_temp", ::oProject:outputName ) ) - //cHbpFN := hbide_pathFile( ::oProject:wrkDirectory, iif( empty( ::oProject:outputName ), "_temp", ::oProject:outputName ) ) cHbpFN := hbide_pathFile( ::oProject:location, iif( empty( ::oProject:outputName ), "_temp", ::oProject:outputName ) ) - * cHbpPath := cHbpFN + iif( ::lPPO, '.' + hb_md5( hb_ntos( seconds() ) ), "" ) + ".hbp" cHbpPath := cHbpFN + iif( ::lPPO, '_tmp', "" ) + ".hbp" IF !( ::lPPO ) @@ -1177,19 +1177,10 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) ENDIF ENDIF - #if 0 - IF !empty( ::oProject:hbpFlags ) - aeval( ::oProject:hbpFlags, {|e| aadd( aHbp, e ) } ) - ENDIF - #endif - - IF !( ::lPPO ) - * aadd( aHbp, "-o" + cTargetFN ) - * aadd( aHbp, "-workdir=" + ::oProject:wrkDirectory + "/${hb_plat}/${hb_comp}" ) - ENDIF aadd( aHbp, "-q" ) aadd( aHbp, "-trace" ) aadd( aHbp, "-info" ) + aadd( aHbp, "-lang=en" ) IF lRebuild aadd( aHbp, "-rebuild" ) ENDIF @@ -1247,7 +1238,7 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) ::oProcess:finished := {|nEC , nES, oHbp| ::finished( nEC ,nES,oHbp ) } ::oProcess:workingPath := hbide_pathToOSPath( ::oProject:location ) // -hbide_dbg( ::oProcess:workingPath ) + cCmd := hbide_getShellCommand() cC := iif( hbide_getOS() == "nix", "", "/C " ) cArg := iif( empty( ::cBatch ), cC, cC + ::cBatch + " && " ) @@ -1272,7 +1263,7 @@ METHOD IdeProjManager:showOutput( cOutput, mp2, oProcess ) /*----------------------------------------------------------------------*/ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) - LOCAL cTmp, n, n1, cTkn, cExe + LOCAL cTmp, n, n1, cTkn, cExe, cT hbide_justACall( oProcess ) @@ -1291,27 +1282,21 @@ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) IF empty( cExe ) cTkn := "hbmk2: Linking... " IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) - cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) + cT := ".exe" // Chr( 13 ) + n1 := hb_at( cT, cTmp, n + len( cTkn ) ) + cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + len( cT ) ) hbide_dbg( 1, cTkn, cExe ) ENDIF ENDIF IF empty( cExe ) cTkn := "hbmk2: Target up to date: " IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) - cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) + cT := ".exe" // Chr( 13 ) + n1 := hb_at( cT, cTmp, n + len( cTkn ) ) + cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + len( cT ) ) hbide_dbg( 2, cTkn, cExe ) ENDIF ENDIF - IF empty( cExe ) - cTkn := "-out:" - IF ( n := at( cTkn, cTmp ) ) > 0 - n1 := hb_at( ".exe", cTmp, n + len( cTkn ) ) - cExe := substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + 4 ) -hbide_dbg( 3, cTkn, cExe ) - ENDIF - ENDIF IF nExitCode == 0 ::launchProject( ::cProjectInProcess, cExe ) @@ -1393,3 +1378,279 @@ METHOD IdeProjManager:launchProject( cProject, cExe ) /*----------------------------------------------------------------------*/ +METHOD IdeProjManager:harbourFlags() + LOCAL a_:= {} + + aadd( a_, { "/a ", "automatic memvar declaration " } ) + aadd( a_, { "/b ", "debug info " } ) + aadd( a_, { "/build ", "display detailed version info " } ) + aadd( a_, { "/credits ", "display credits " } ) + aadd( a_, { "/d[=] ", "#define " } ) + aadd( a_, { "/es[] ", "set exit severity " } ) + aadd( a_, { "/fn[:[l|u]|-] ", "set filename casing (l=lower u=upper) " } ) + aadd( a_, { "/fd[:[l|u]|-] ", "set directory casing (l=lower u=upper) " } ) + aadd( a_, { "/fp[:] ", "set path separator " } ) + aadd( a_, { "/fs[-] ", "turn filename space trimming on or off (default) " } ) + aadd( a_, { "/g ", "output type generated is (see below) " } ) + aadd( a_, { "/gc[] ", "output type: C source (.c) (default) " } ) + aadd( a_, { " ", ": 0=compact (default) 1=normal 2=verbose " } ) + aadd( a_, { " ", " 3=generate real C code " } ) + aadd( a_, { "/gh ", "output type: Harbour Portable Object (.hrb) " } ) + aadd( a_, { "/gd[.]", "generate dependencies list into (.d) file " } ) + aadd( a_, { "/ge[] ", "error output : 0=Clipper (default) " } ) + aadd( a_, { " ", " 1=IDE friendly " } ) + aadd( a_, { "/i ", "#include file search path " } ) + aadd( a_, { "/i[-|+] ", "disable/enable support for INCLUDE envvar " } ) + aadd( a_, { "/j[] ", "generate i18n gettext file (.pot) " } ) + aadd( a_, { "/k ", "compilation mode (type -k? for more data) " } ) + aadd( a_, { "/l ", "suppress line number information " } ) + aadd( a_, { "/m ", "compile module only " } ) + aadd( a_, { "/n[] ", "no implicit starting procedure " } ) + aadd( a_, { " ", ": 0=no implicit starting procedure " } ) + aadd( a_, { " ", " 1=no starting procedure at all " } ) + aadd( a_, { " ", " 2=add starting procedure if necessary " } ) + aadd( a_, { "/o ", "object file drive and/or path " } ) + aadd( a_, { "/p[] ", "generate pre-processed output (.ppo) file " } ) + aadd( a_, { "/p+ ", "generate pre-processor trace (.ppt) file " } ) + aadd( a_, { "/q ", "quiet " } ) + aadd( a_, { "/q0 ", "quiet and don't display program header " } ) + aadd( a_, { "/q2 ", "disable all output messages " } ) + aadd( a_, { "/r: ", "set maximum number of preprocessor iterations " } ) + aadd( a_, { "/s[m] ", "syntax check only [minimal for dependencies list] " } ) + aadd( a_, { "/u[] ", "use command def set in (or none) " } ) + aadd( a_, { "/u+ ", "add command def set from " } ) + aadd( a_, { "/undef: ", "#undef " } ) + aadd( a_, { "/v ", "variables are assumed M-> " } ) + aadd( a_, { "/w[] ", "set warning level number (0..3, default 1) " } ) + aadd( a_, { "/x[] ", "set symbol init function name prefix (for .c only) " } ) + aadd( a_, { "/z ", "suppress shortcutting (.and. & .or.) " } ) + + RETURN a_ + +/*----------------------------------------------------------------------*/ + +METHOD IdeProjManager:hbmk2Flags() + LOCAL a_:= {} + + aadd( a_, { "-o ", "output file name " } ) + aadd( a_, { "-l ", "link with library. should be without " } ) + aadd( a_, { " ", "path, extension and 'lib' prefix (unless part of libname). " } ) + aadd( a_, { "-L ", "additional path to search for libraries " } ) + aadd( a_, { "-i

|-incpath=

", "additional path to search for headers " } ) + aadd( a_, { "-static|-shared ", "link with static/shared libs " } ) + aadd( a_, { "-mt|-st ", "link with multi/single-thread VM " } ) + aadd( a_, { "-gt ", "link with GT GT driver, can be repeated to link with " } ) + aadd( a_, { " ", "more GTs. First one will be the default at runtime " } ) + aadd( a_, { "-hbexe ", "create executable (default) " } ) + aadd( a_, { "-hblib ", "create static library " } ) + aadd( a_, { "-hbdyn ", "create dynamic library " } ) + aadd( a_, { " ", " " } ) + aadd( a_, { "-gui|-std ", "create GUI/console executable " } ) + aadd( a_, { "-main= ", "override the name of starting function/procedure " } ) + aadd( a_, { "-fullstatic ", "link with all static libs " } ) + aadd( a_, { "-[full|fix]shared ", "create shared Harbour binaries without/with absolute dir " } ) + aadd( a_, { " ", "reference to Harbour library (default: 'fullshared' when " } ) + aadd( a_, { " ", "Harbour is installed on system location, 'fixshared' " } ) + aadd( a_, { " ", "otherwise) (fix/full option in *nix only) " } ) + aadd( a_, { "-nulrdd[-] ", "link with nulrdd " } ) + aadd( a_, { "-[no]debug ", "add/exclude C compiler debug info. For Harbour level " } ) + aadd( a_, { " ", "debug, use Harbour option -b as usual " } ) + aadd( a_, { "-[no]optim ", "toggle C compiler optimizations (default: on) " } ) + aadd( a_, { "-[no]cpp[=def] ", "force C/C++ mode or reset to default " } ) + aadd( a_, { "-[no]map ", "create (or not) a map file " } ) + aadd( a_, { "-[no]implib ", "create (or not) an import library (in -hbdyn mode) " } ) + aadd( a_, { "-[no]strip ", "strip (no strip) binaries " } ) + aadd( a_, { "-[no]trace ", "show commands executed " } ) + aadd( a_, { "-[no]beep ", "enable (or disable) single beep on successful exit, double " } ) + aadd( a_, { " ", "beep on failure " } ) + aadd( a_, { "-[no]ignore ", "ignore errors when running compiler tools (default: off) " } ) + aadd( a_, { "-[no]hbcppmm ", "forces to override standard C++ memory management " } ) + aadd( a_, { " ", "functions with Harbour ones " } ) + aadd( a_, { "-nohblib[-] ", "do not use static core Harbour libraries when linking " } ) + aadd( a_, { "-nolibgrouping[-] ", "disable library grouping on gcc based compilers " } ) + aadd( a_, { "-nomiscsyslib[-] ", "don't add extra list of system libraries to default " } ) + aadd( a_, { " ", "library list " } ) + aadd( a_, { "-traceonly ", "show commands to be executed, but don't execute them " } ) + aadd( a_, { "-[no]warn[=lev] ", "set C compiler warning level " } ) + aadd( a_, { " ", " can be: yes, no, def (default: yes) " } ) + aadd( a_, { "-[no]compr[=lev] ", "compress executable/dynamic lib (needs UPX) " } ) + aadd( a_, { " ", " can be: min, max, def " } ) + aadd( a_, { "-[no]run ", "run/don't run output executable " } ) + aadd( a_, { "-vcshead= ", "generate .ch header file with local repository " } ) + aadd( a_, { " ", "information. SVN, CVS, Git, Mercurial, Bazaar and Fossil " } ) + aadd( a_, { " ", "are currently supported. Generated header will define " } ) + aadd( a_, { " ", "macro _HBMK_VCS_TYPE_ with the name of detected VCS and " } ) + aadd( a_, { " ", "_HBMK_VCS_ID_ with the unique ID of local repository " } ) + aadd( a_, { "-tshead= ", "generate .ch header file with timestamp information. " } ) + aadd( a_, { " ", "Generated header will define macros _HBMK_BUILD_DATE_, " } ) + aadd( a_, { " ", "_HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ with the " } ) + aadd( a_, { " ", "date/time of build " } ) + aadd( a_, { "-icon= ", "set as application icon. should be a " } ) + aadd( a_, { " ", "supported format on the target platform (experimental) " } ) + aadd( a_, { "-instpath= ", "copy target to . if is a directory, it should " } ) + aadd( a_, { " ", "end with path separator. can be specified multiple times " } ) + aadd( a_, { "-nohbc ", "do not process .hbc files in current directory " } ) + aadd( a_, { "-stop ", "stop without doing anything " } ) + aadd( a_, { "-echo= ", "echo text on screen " } ) + aadd( a_, { " ", " " } ) + aadd( a_, { "-bldf[-] ", "inherit all/no (default) flags from Harbour build " } ) + aadd( a_, { "-bldf=[p][c][l] ", "inherit .prg/.c/linker flags (or none) from Harbour build " } ) + aadd( a_, { "-inctrypath=

", "additional path to autodetect .c header locations " } ) + aadd( a_, { "-prgflag= ", "pass flag to Harbour " } ) + aadd( a_, { "-cflag= ", "pass flag to C compiler " } ) + aadd( a_, { "-resflag= ", "pass flag to resource compiler (Windows only) " } ) + aadd( a_, { "-ldflag= ", "pass flag to linker (executable) " } ) + aadd( a_, { "-aflag= ", "pass flag to linker (static library) " } ) + aadd( a_, { "-dflag= ", "pass flag to linker (dynamic library) " } ) + aadd( a_, { "-runflag= ", "pass flag to output executable when -run option is used " } ) + aadd( a_, { "-3rd= ", "options/flags reserved for 3rd party tools, always ignored " } ) + aadd( a_, { " ", "by hbmk2 itself " } ) + aadd( a_, { "-jobs= ", "start n compilation threads (multiprocess platforms only) " } ) + aadd( a_, { "-inc ", "enable incremental build mode " } ) + aadd( a_, { "-[no]head[=] ", "control source header parsing (in incremental build mode) " } ) + aadd( a_, { " ", " can be: native (uses compiler to extract " } ) + aadd( a_, { " ", "dependencies), full (uses simple text parser on the whole " } ) + aadd( a_, { " ", "file), partial (default, uses simple text parser on 1st " } ) + aadd( a_, { " ", "16KB chunk of the file), off " } ) + aadd( a_, { "-rebuild ", "rebuild all (in incremental build mode) " } ) + aadd( a_, { "-clean ", "clean (in incremental build mode) " } ) + aadd( a_, { "-workdir=

", "working directory " } ) + aadd( a_, { " ", "(default: .hbmk/plat/comp in incremental mode, OS temp " } ) + aadd( a_, { " ", "directory otherwise) " } ) + aadd( a_, { " ", " " } ) + aadd( a_, { "-hbl[=] ", "output .hbl filename. %{hb_lng} macro is accepted in " } ) + aadd( a_, { " ", "filename " } ) + aadd( a_, { "-lng= ", "list of languages to be replaced in %{hb_lng} macros in " } ) + aadd( a_, { " ", ".pot/.po filenames and output .hbl/.po filenames. Comma " } ) + aadd( a_, { " ", "separared list: " } ) + aadd( a_, { " ", "-lng=en,hu-HU,de " } ) + aadd( a_, { "-po= ", "create/update .po file from source. Merge it with previous " } ) + aadd( a_, { " ", ".po file of the same name " } ) + aadd( a_, { "-[no]minipo ", "don't (or do) add Harbour version number and source file " } ) + aadd( a_, { " ", "reference to .po (default: add them) " } ) + aadd( a_, { "-rebuildpo ", "recreate .po file, thus removing all obsolete entries in " } ) + aadd( a_, { " ", "it " } ) + aadd( a_, { " ", " " } ) +* aadd( a_, { "Options below are ", "vailable on command line only: " } ) + aadd( a_, { " ", " " } ) + aadd( a_, { "-target=