From 7bdf4de6c3baf86efb9a77d3320fd00b9731bcd7 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 13 Apr 2010 06:56:53 +0000 Subject: [PATCH] 2010-04-12 08:54 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbide/ideprojmanager.prg ! Properly fixed old problem with executable name extraction, leaving the ending delimiter in the extracted string. ! Added -width= hbmk2 option to cmdline to avoid splitting the output to multiple lines (thus breaking executable name extraction). * contrib/hbqt/generator2/hbqtgen2.prg + Added more, very rudamentary code to parse QT headers. --- harbour/ChangeLog | 21 +++-- harbour/contrib/hbide/ideprojmanager.prg | 17 ++-- harbour/contrib/hbqt/generator2/hbqtgen2.prg | 81 +++++++++++++++++++- 3 files changed, 103 insertions(+), 16 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8559acf261..bbcc78c627 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,17 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-04-12 08:54 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbide/ideprojmanager.prg + ! Properly fixed old problem with executable name extraction, + leaving the ending delimiter in the extracted string. + ! Added -width= hbmk2 option to cmdline to avoid splitting + the output to multiple lines (thus breaking executable name + extraction). + + * contrib/hbqt/generator2/hbqtgen2.prg + + Added more, very rudamentary code to parse QT headers. + 2010-04-12 23:25 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/hbqt/hbqt_hbqplaintextedit.cpp ! Little formatting. @@ -50,12 +61,12 @@ ! Changed the way project is launched. hope it will be useful for *nixes. + Implemented user-defined keyboard macros with following functionality: - New : whatever definition is typed-in the relevant fields is validated + New : whatever definition is typed-in the relevant fields is validated with existing ones and if unique is appended at the end of list. The macro is also validated for compilation. - Set : current hilighted macro is redefined from values from fields + Set : current hilighted macro is redefined from values from fields after duplicate validation. The macro is also validated for compilation. - Test : Attempts to compile the macro as a block and reports back if + Test : Attempts to compile the macro as a block and reports back if successful or not. It just compiles but not evaluates. delete : deletes the highlighted macro after confirmation. Load : loads macros from a disk-file and merges them with existing ones. @@ -64,9 +75,9 @@ Save As: Saves the macros in a disk-file with any name but with .scu extension. Any change is visible instantly, - Unless is clicked, current loaded macros are not saved on disk. + Unless is clicked, current loaded macros are not saved on disk. This allows to use temporary created macros for current session. - + More info at http://hbide.vouch.info/ ( Topic: Keyboard Mappings ) 2010-04-12 22:56 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) diff --git a/harbour/contrib/hbide/ideprojmanager.prg b/harbour/contrib/hbide/ideprojmanager.prg index d2a2d5ddea..c680c62f2b 100644 --- a/harbour/contrib/hbide/ideprojmanager.prg +++ b/harbour/contrib/hbide/ideprojmanager.prg @@ -1181,6 +1181,7 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) aadd( aHbp, "-trace" ) aadd( aHbp, "-info" ) aadd( aHbp, "-lang=en" ) + aadd( aHbp, "-width=512" ) IF lRebuild aadd( aHbp, "-rebuild" ) ENDIF @@ -1227,7 +1228,7 @@ METHOD IdeProjManager:buildProject( cProject, lLaunch, lRebuild, lPPO, lViaQt ) ::oIDE:oEV := IdeEnvironments():new():create( ::oIDE, hbide_pathFile( ::aINI[ INI_HBIDE, PathEnv ], "hbide.env" ) ) ::cBatch := ::oEV:prepareBatch( ::cWrkEnvironment ) - cExeHbMk2 := "hbmk2" /* Needs that path is already set before calling hbmk2 */ + cExeHbMk2 := "hbmk2" IF ! Empty( ::oProject:cPathMk2 ) cExeHbMk2 := hbide_DirAddPathSep( ::oProject:cPathMk2 ) + cExeHbMk2 @@ -1276,7 +1277,7 @@ METHOD IdeProjManager:showOutput( cOutput, mp2, oProcess ) /*----------------------------------------------------------------------*/ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) - LOCAL cTmp, n, n1, cTkn, cExe, cT + LOCAL cTmp, n, n1, cTkn, cExe hbide_justACall( oProcess ) @@ -1294,19 +1295,15 @@ METHOD IdeProjManager:finished( nExitCode, nExitStatus, oProcess ) IF empty( cExe ) cTkn := "hbmk2: Linking... " IF ( n := at( cTkn, cTmp ) ) > 0 - cT := Chr( 10 ) - n1 := hb_at( cT, cTmp, n + len( cTkn ) ) - cExe := StrTran( substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + len( cT ) ), Chr( 13 ), "" ) - cExe := StrTran( cExe, Chr( 10 ), "" ) + n1 := hb_at( Chr( 10 ), cTmp, n + len( cTkn ) ) + cExe := StrTran( substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) ), Chr( 13 ) ) ENDIF ENDIF IF empty( cExe ) cTkn := "hbmk2: Target up to date: " IF ( n := at( cTkn, cTmp ) ) > 0 - cT := Chr( 10 ) - n1 := hb_at( cT, cTmp, n + len( cTkn ) ) - cExe := StrTran( substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) + len( cT ) ), Chr( 13 ), "" ) - cExe := StrTran( cExe, Chr( 10 ), "" ) + n1 := hb_at( Chr( 10 ), cTmp, n + len( cTkn ) ) + cExe := StrTran( substr( cTmp, n + len( cTkn ), n1 - n - len( cTkn ) ), Chr( 13 ) ) ENDIF ENDIF diff --git a/harbour/contrib/hbqt/generator2/hbqtgen2.prg b/harbour/contrib/hbqt/generator2/hbqtgen2.prg index 9c9c28968a..96fcf4d293 100644 --- a/harbour/contrib/hbqt/generator2/hbqtgen2.prg +++ b/harbour/contrib/hbqt/generator2/hbqtgen2.prg @@ -9,10 +9,15 @@ #define F_NAME 1 /* File name */ +#define QM_ENUM 1 +#define QM_METHOD 2 +#define QM_SLOT 3 +#define QM_SIGNAL 4 + PROCEDURE Main() LOCAL cName LOCAL cHeaderDir - LOCAL tmp, tmp1 + LOCAL tmp, tmp1, tmp2 LOCAL aStuff FOR EACH tmp IN Directory( "*.txt" ) @@ -22,6 +27,10 @@ PROCEDURE Main() IF ! Empty( tmp1 ) .AND. ! ( Left( tmp1, 1 ) == "#" ) aStuff := {} ProcessHeader( aStuff, cHeaderDir + hb_osPathSeparator() + tmp1 ) + FOR EACH tmp2 IN aStuff + ? tmp2[ 1 ], tmp2[ 2 ] + NEXT + Inkey( 0 ) ENDIF NEXT NEXT @@ -51,6 +60,8 @@ STATIC PROCEDURE ProcessHeader( aStuff, cFileName ) ProcessHeader( aStuff, DirAddPathSep( cDir ) + cHeader ) ENDIF + LoadStuff( aStuff, cFile ) + RETURN STATIC FUNCTION DirAddPathSep( cDir ) @@ -60,3 +71,71 @@ STATIC FUNCTION DirAddPathSep( cDir ) ENDIF RETURN cDir + +STATIC PROCEDURE LoadStuff( aStuff, cFile ) + LOCAL cLine + LOCAL tmp, tmp1, tmp2 + LOCAL nMode := 0 + LOCAL nType + LOCAL cInfo + + LOCAL aLine := hb_ATokens( StrTran( cFile, Chr( 13 ) ), Chr( 10 ) ) + + FOR tmp := 1 TO Len( aLine ) + cLine := AllTrim( aLine[ tmp ] ) + IF ! Empty( cLine ) + DO CASE + CASE cLine == "public:" + nMode := QM_METHOD + LOOP + CASE cLine == "public Q_SLOTS:" + nMode := QM_SLOT + LOOP + CASE cLine == "Q_SIGNALS:" + nMode := QM_SIGNAL + LOOP + CASE cLine == "private:" + nMode := 0 + LOOP + ENDCASE + IF ! Empty( nMode ) + nType := 0 + DO CASE + CASE nMode == QM_METHOD + IF Left( cLine, Len( "enum " ) ) == "enum " + nType := QM_ENUM + ELSE + tmp1 := At( "(", cLine ) + IF tmp1 > 0 .AND. hb_At( ")", cLine, tmp1 + Len( "(" ) ) > 0 + nType := nMode + ENDIF + ENDIF + CASE nMode == QM_SLOT + nType := nMode + CASE nMode == QM_SIGNAL + nType := nMode + ENDCASE + IF ! Empty( nType ) + cInfo := GetLine( aLine, @tmp ) + IF ! Empty( cInfo ) + AAdd( aStuff, { nType, cInfo } ) + ENDIF + ENDIF + ENDIF + ENDIF + NEXT + + RETURN + +STATIC FUNCTION GetLine( aLine, /* @ */ nPos ) + LOCAL cLine := "" + + DO WHILE nPos <= Len( aLine ) + cLine += AllTrim( aLine[ nPos ] ) + IF Right( cLine, 1 ) == ";" + RETURN hb_StrShrink( cLine, 1 ) + ENDIF + ++nPos + ENDDO + + RETURN ""