2010-06-29 14:56 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
    + Will now defined macro __HBSCRIPT__HBMK for all scripts
      executed in source form.

  * utils/hbrun/hbrun.prg
    + Will now defined macro __HBSCRIPT__HBRUN for all scripts
      executed in source form.

  * contrib/hbqt/hbmk2_plugin_qt.prg
    + Will now act as a stdalone uic to prg converter tool if
      invoked via hbrun (or anything other than hbmk2). This is 
      useful for testing this conversion process easily.
    * Variable rename.

  - contrib/hbqt/utils
    - Deleted hbqtui stdalone tool.

  * contrib/makefile.prg
    + Updated TODOs
This commit is contained in:
Viktor Szakats
2010-06-29 12:57:12 +00:00
parent 602f720842
commit 8be92bac1d
7 changed files with 80 additions and 729 deletions

View File

@@ -16,6 +16,27 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-06-29 14:56 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Will now defined macro __HBSCRIPT__HBMK for all scripts
executed in source form.
* utils/hbrun/hbrun.prg
+ Will now defined macro __HBSCRIPT__HBRUN for all scripts
executed in source form.
* contrib/hbqt/hbmk2_plugin_qt.prg
+ Will now act as a stdalone uic to prg converter tool if
invoked via hbrun (or anything other than hbmk2). This is
useful for testing this conversion process easily.
* Variable rename.
- contrib/hbqt/utils
- Deleted hbqtui stdalone tool.
* contrib/makefile.prg
+ Updated TODOs
2010-06-29 14:00 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbide/ideharbourhelp.prg
* contrib/hbide/idehome.prg

View File

@@ -12,6 +12,8 @@
#define I_( x ) hb_i18n_gettext( x )
#if defined( __HBSCRIPT__HBMK )
FUNCTION hbmk2_plugin_qt( hbmk2 )
LOCAL cRetVal := ""
@@ -35,21 +37,21 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
/* Gather input parameters */
hbmk2[ "vars" ][ "aMOC" ] := {}
hbmk2[ "vars" ][ "aUIC" ] := {}
hbmk2[ "vars" ][ "aQRC" ] := {}
hbmk2[ "vars" ][ "aMOC_Src" ] := {}
hbmk2[ "vars" ][ "aUIC_Src" ] := {}
hbmk2[ "vars" ][ "aQRC_Src" ] := {}
FOR EACH cSrc IN hbmk2[ "params" ]
SWITCH Lower( hbmk2_FNameExtGet( cSrc ) )
CASE ".hpp"
CASE ".h"
AAdd( hbmk2[ "vars" ][ "aMOC" ], cSrc )
AAdd( hbmk2[ "vars" ][ "aMOC_Src" ], cSrc )
EXIT
CASE ".ui"
AAdd( hbmk2[ "vars" ][ "aUIC" ], cSrc )
AAdd( hbmk2[ "vars" ][ "aUIC_Src" ], cSrc )
EXIT
CASE ".qrc"
AAdd( hbmk2[ "vars" ][ "aQRC" ], cSrc )
AAdd( hbmk2[ "vars" ][ "aQRC_Src" ], cSrc )
EXIT
ENDSWITCH
NEXT
@@ -60,19 +62,19 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
hbmk2[ "vars" ][ "aUIC_Dst" ] := {}
hbmk2[ "vars" ][ "aQRC_Dst" ] := {}
FOR EACH cSrc IN hbmk2[ "vars" ][ "aMOC" ]
FOR EACH cSrc IN hbmk2[ "vars" ][ "aMOC_Src" ]
cDst := hbmk2_FNameDirExtSet( "moc_" + hbmk2_FNameNameGet( cSrc ), hbmk2[ "cWorkDir" ], ".cpp" )
AAdd( hbmk2[ "vars" ][ "aMOC_Dst" ], cDst )
hbmk2_AddInput_CPP( hbmk2, cDst )
NEXT
FOR EACH cSrc IN hbmk2[ "vars" ][ "aUIC" ]
FOR EACH cSrc IN hbmk2[ "vars" ][ "aUIC_Src" ]
cDst := hbmk2_FNameDirExtSet( "uic_" + hbmk2_FNameNameGet( cSrc ), hbmk2[ "cWorkDir" ], ".prg" )
AAdd( hbmk2[ "vars" ][ "aUIC_Dst" ], cDst )
hbmk2_AddInput_PRG( hbmk2, cDst )
NEXT
FOR EACH cSrc IN hbmk2[ "vars" ][ "aQRC" ]
FOR EACH cSrc IN hbmk2[ "vars" ][ "aQRC_Src" ]
cDst := hbmk2_FNameDirExtSet( "rcc_" + hbmk2_FNameNameGet( cSrc ), hbmk2[ "cWorkDir" ], ".cpp" )
AAdd( hbmk2[ "vars" ][ "aQRC_Dst" ], cDst )
hbmk2_AddInput_CPP( hbmk2, cDst )
@@ -82,7 +84,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
CASE "pre_prg"
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aUIC" ] )
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aUIC_Src" ] )
/* Detect 'uic' tool location */
@@ -92,7 +94,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
/* Execute 'uic' commands on input files */
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aUIC" ], hbmk2[ "vars" ][ "aUIC_Dst" ]
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aUIC_Src" ], hbmk2[ "vars" ][ "aUIC_Dst" ]
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
@@ -148,7 +150,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
CASE "pre_c"
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aMOC" ] )
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aMOC_Src" ] )
/* Detect 'moc' tool location */
@@ -158,7 +160,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
/* Execute 'moc' commands on input files */
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aMOC" ], hbmk2[ "vars" ][ "aMOC_Dst" ]
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aMOC_Src" ], hbmk2[ "vars" ][ "aMOC_Dst" ]
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
@@ -196,7 +198,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
ENDIF
ENDIF
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aQRC" ] )
IF ! hbmk2[ "lCLEAN" ] .AND. ! Empty( hbmk2[ "vars" ][ "aQRC_Src" ] )
/* Detect 'rcc' tool location */
@@ -206,7 +208,7 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
/* Execute 'rcc' commands on input files */
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aQRC" ], hbmk2[ "vars" ][ "aQRC_Dst" ]
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aQRC_Src" ], hbmk2[ "vars" ][ "aQRC_Dst" ]
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
@@ -304,6 +306,43 @@ STATIC FUNCTION qt_tool_detect( hbmk2, cEnvQT, cEnvHB, cName )
RETURN cBIN
#else
/* Standalone test code for .uic to .prg conversion ) */
PROCEDURE Main( cSrc, cDst )
LOCAL cTmp
LOCAL nError
IF cSrc != NIL .AND. ;
cDst != NIL
FClose( hb_FTempCreateEx( @cTmp ) )
IF ( nError := hb_processRun( "uic " + cSrc + " -o " + cTmp ) ) == 0
IF uic_to_prg( NIL, cTmp, cDst, cSrc )
RETURN
ENDIF
ELSE
OutErr( "Error: Calling 'uic' tool: " + hb_ntos( nError ) + hb_osNewLine() )
ENDIF
ELSE
OutErr( "Missing parameter. Call with: <.ui> <.prg>" + hb_osNewLine() )
ENDIF
ErrorLevel( 1 )
RETURN
STATIC FUNCTION hbmk2_OutStd( hbmk2, ... )
HB_SYMBOL_UNUSED( hbmk2 )
RETURN OutStd( ... )
STATIC FUNCTION hbmk2_OutErr( hbmk2, ... )
HB_SYMBOL_UNUSED( hbmk2 )
RETURN OutErr( ... )
#endif
/* ----------------------------------------------------------------------- */
STATIC FUNCTION uic_to_prg( hbmk2, cFileNameSrc, cFileNameDst, cOriSrc )

View File

@@ -1,7 +0,0 @@
#
# $Id$
#
-w3 -es2
hbqtui.prg

View File

@@ -1,703 +0,0 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* Source file for the Xbp*Classes
*
* Copyright 2010 Pritpal Bedi <bedipritpal@hotmail.com>
* http://harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*
* EkOnkar
* ( The LORD is ONE )
*
* Harbour Utility .ui => .prg
*
* Pritpal Bedi <bedipritpal@hotmail.com>
* 22Jun2010
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include "common.ch"
/*----------------------------------------------------------------------*/
#define STRINGIFY( cStr ) '"' + cStr + '"'
#define PAD_30( cStr ) padr( cStr, max( len( cStr ), 20 ) )
#define STRIP_SQ( cStr ) strtran( strtran( strtran( strtran( s, "[", " " ), "]", " " ), "\n", " " ), chr( 10 ), " " )
/*----------------------------------------------------------------------*/
ANNOUNCE HB_GTSYS
REQUEST HB_GT_CGI_DEFAULT
PROCEDURE Main( ... )
LOCAL s, cL, cExt, cPath, cFile
LOCAL cCmd, cUic, cPrg, cUiFile
LOCAL cPathOut := ""
LOCAL aUI :={}, a_, aUiFiles := {}
LOCAL lToPath := .f.
LOCAL aResult
FOR EACH s IN hb_aParams()
cL := lower( alltrim( s ) )
DO CASE
CASE left( cL, 1 ) == "@"
aadd( aUiFiles, substr( s, 2 ) )
CASE left( cL, 2 ) == "-o"
cPathOut := alltrim( substr( s, 3 ) )
cPathOut := strtran( cPathOut, "\", "/" )
lToPath := right( cPathOut, 1 ) == "/"
OTHERWISE
s := StrTran( s, "\", "/" )
hb_fNameSplit( s, , , @cExt )
IF lower( cExt ) == ".ui"
aadd( aUI, s )
ENDIF
ENDCASE
NEXT
FOR EACH cUiFile IN aUiFiles
a_:= hb_ATokens( StrTran( hb_MemoRead( cUiFile ), Chr( 13 ) ), Chr( 10 ) )
FOR EACH s IN a_
s := alltrim( s )
IF ! Empty( s )
IF left( s, 1 ) $ "#;"
LOOP
ENDIF
s := StrTran( s, "/", hb_osPathSeparator() )
s := StrTran( s, "\", hb_osPathSeparator() )
IF hb_fileExists( s )
aadd( aUI, StrTran( s, "\", "/" ) )
ENDIF
ENDIF
NEXT
NEXT
FOR EACH s IN aUI
hb_fNameSplit( s, @cPath, @cFile, @cExt )
cUic := cPath + cFile + ".uic" /* always to be created along .ui */
cPrg := iif( lToPath, cPathOut + "ui_" + cFile + ".prg", cPathOut )
cCmd := "uic -o " + cUic + " " + s
IF hb_processRun( cCmd ) == 0
IF hb_FileExists( cUic )
aResult := hbq_create( hb_memoread( cUic ), "ui" + upper( left( cFile, 1 ) ) + lower( substr( cFile, 2 ) ) )
IF ISARRAY( aResult )
s := ""
aeval( aResult, {|e| s += e + hb_osNewLine() } )
hb_memowrit( StrTran( cPrg, "/", hb_osPathSeparator() ), s )
ENDIF
FErase( cUic )
ELSE
OutStd( "hbqtui: Warning: Intermediate .uic file not found: " + cUic + hb_osNewLine() )
ENDIF
ELSE
OutStd( "hbqtui: Error: Running 'uic' tool" + hb_osNewLine() )
ENDIF
NEXT
RETURN
/*----------------------------------------------------------------------*/
FUNCTION hbq_create( cFile, cFuncName )
LOCAL s, n, n1, cCls, cNam, lCreateFinished, cMCls, cMNam, cText
LOCAL cCmd, aReg, a_, prg_
LOCAL regEx := hb_regexComp( "\bQ[A-Za-z_]+ \b" )
LOCAL aLines := hb_ATokens( StrTran( cFile, Chr( 13 ) ), Chr( 10 ) )
LOCAL aWidgets := {}
LOCAL aCommands := {}
lCreateFinished := .f.
/* Pullout the widget */
n := ascan( aLines, {|e| "void setupUi" $ e } )
IF n == 0
RETURN NIL
ENDIF
s := alltrim( aLines[ n ] )
n := at( "*", s )
cMCls := alltrim( substr( s, 1, n - 1 ) )
cMNam := alltrim( substr( s, n + 1 ) )
hbq_stripFront( @cMCls, "(" )
hbq_stripRear( @cMNam, ")" )
aadd( aWidgets, { cMCls, cMNam, cMCls+"()", cMCls+"():new()" } )
/* Normalize */
FOR EACH s IN aLines
s := alltrim( s )
IF right( s, 1 ) == ";"
s := substr( s, 1, len( s ) - 1 )
ENDIF
IF left( s, 1 ) $ "/,*,{,}"
s := ""
ENDIF
NEXT
FOR EACH s IN aLines
IF empty( s )
LOOP
ENDIF
/* Replace Qt::* with actual values */
hbq_replaceConstants( @s )
IF ( "setupUi" $ s )
lCreateFinished := .t.
ELSEIF left( s, 1 ) == "Q" .AND. !( lCreateFinished ) .AND. ( n := at( "*", s ) ) > 0
// We eill deal later - just skip
ELSEIF hbq_notAString( s ) .AND. !empty( aReg := hb_Regex( regEx, s ) )
cCls := trim( aReg[ 1 ] )
s := alltrim( strtran( s, cCls, "",, 1 ) )
IF ( n := at( "(", s ) ) > 0
cNam := substr( s, 1, n - 1 )
aadd( aWidgets, { cCls, cNam, cCls+"()", cCls+"():new"+substr( s, n ) } )
ELSE
cNam := s
aadd( aWidgets, { cCls, cNam, cCls+"()", cCls+"():new()" } )
ENDIF
ELSEIF hbq_isObjectNameSet( s )
// Skip - we already know the object name and will set after construction
ELSEIF !empty( cText := hbq_pullSetToolTip( aLines, s:__enumIndex() ) )
n := at( "->", cText )
cNam := alltrim( substr( cText, 1, n - 1 ) )
cCmd := hbq_formatCommand( substr( cText, n + 2 ), .t., aWidgets )
aadd( aCommands, { cNam, cCmd } )
ELSEIF !empty( cText := hbq_pullText( aLines, s:__enumIndex() ) )
n := at( "->", cText )
cNam := alltrim( substr( cText, 1, n - 1 ) )
cCmd := hbq_formatCommand( substr( cText, n + 2 ), .t., aWidgets )
aadd( aCommands, { cNam, cCmd } )
ELSEIF hbq_isValidCmdLine( s ) .AND. !( "->" $ s ) .AND. ( ( n := at( ".", s ) ) > 0 ) /* Assignment to objects on stack */
cNam := substr( s, 1, n - 1 )
cCmd := substr( s, n + 1 )
cCmd := hbq_formatCommand( cCmd, .f., aWidgets )
cCmd := hbq_setObjects( cCmd, aWidgets )
cCmd := hbq_setObjects( cCmd, aWidgets )
aadd( aCommands, { cNam, cCmd } )
ELSEIF !( left( s, 1 ) $ '#/*"' ) .AND. ; /* Assignment with properties from objects */
( ( n := at( ".", s ) ) > 0 ) .AND. ;
( at( "->", s ) > n )
cNam := substr( s, 1, n - 1 )
cCmd := substr( s, n + 1 )
cCmd := hbq_formatCommand( cCmd, .f., aWidgets )
cCmd := hbq_setObjects( cCmd, aWidgets )
cCmd := hbq_setObjects( cCmd, aWidgets )
aadd( aCommands, { cNam, cCmd } )
ELSEIF ( n := at( "->", s ) ) > 0 /* Assignments or calls to objects on heap */
cNam := substr( s, 1, n - 1 )
cCmd := hbq_formatCommand( substr( s, n + 2 ), .f., aWidgets )
cCmd := hbq_setObjects( cCmd, aWidgets )
aadd( aCommands, { cNam, cCmd } )
ELSEIF ( n := at( "= new", s ) ) > 0
IF ( n1 := at( "*", s ) ) > 0 .AND. n1 < n
s := alltrim( substr( s, n1 + 1 ) )
ENDIF
n := at( "= new", s )
cNam := alltrim( substr( s, 1, n - 1 ) )
cCmd := alltrim( substr( s, n + len( "= new" ) ) )
cCmd := hbq_setObjects( cCmd, aWidgets )
n := at( "(", cCmd )
cCls := substr( cCmd, 1, n - 1 )
aadd( aWidgets, { cCls, cNam, cCls+"()", cCls+"():new"+substr(cCmd,n) } )
ENDIF
NEXT
prg_ := {}
hbq_addCopyRight( prg_ )
aadd( prg_, "" )
aadd( prg_, "FUNCTION " + cFuncName + "( qParent )" )
aadd( prg_, " LOCAL oUI" )
aadd( prg_, " LOCAL oWidget" )
aadd( prg_, " LOCAL qObj := {=>}" )
aadd( prg_, "" )
aadd( prg_, " hb_hCaseMatch( qObj, .f. )" )
aadd( prg_, "" )
SWITCH cMCls
CASE "QDialog"
aadd( prg_, " oWidget := QDialog():new( qParent )" )
EXIT
CASE "QWidget"
aadd( prg_, " oWidget := QWidget():new( qParent )" )
EXIT
CASE "QMainWindow"
aadd( prg_, " oWidget := QMainWindow():new( qParent )" )
EXIT
ENDSWITCH
aadd( prg_, " " )
aadd( prg_, " oWidget:setObjectName( " + STRINGIFY( cMNam ) + " )" )
aadd( prg_, " " )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cMNam ) ) + " ] := oWidget" )
aadd( prg_, " " )
FOR EACH a_ IN aWidgets
IF a_:__enumIndex() > 1
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( a_[ 2 ] ) ) + " ] := " + strtran( a_[ 4 ], "o[", "qObj[" ) )
ENDIF
NEXT
aadd( prg_, "" )
FOR EACH a_ IN aCommands
cNam := a_[ 1 ]
cCmd := a_[ 2 ]
cCmd := strtran( cCmd, "true" , ".T." )
cCmd := strtran( cCmd, "false", ".F." )
IF "addWidget" $ cCmd
IF hbq_occurs( cCmd, "," ) >= 4
cCmd := strtran( cCmd, "addWidget", "addWidget_1" )
ENDIF
ELSEIF "addLayout" $ cCmd
IF hbq_occurs( cCmd, "," ) >= 4
cCmd := strtran( cCmd, "addLayout", "addLayout_1" )
ENDIF
ENDIF
IF "setToolTip(" $ cCmd
s := hbq_pullToolTip( cCmd )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:setToolTip( [" + STRIP_SQ( s ) + "] )" )
ELSEIF "setPlainText(" $ cCmd
s := hbq_pullToolTip( cCmd )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:setPlainText( [" + STRIP_SQ( s ) + "] )" )
ELSEIF "setStyleSheet(" $ cCmd
s := hbq_pullToolTip( cCmd )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:setStyleSheet( [" + STRIP_SQ( s ) + "] )" )
ELSEIF "setText(" $ cCmd
s := hbq_pullToolTip( cCmd )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:setText( [" + STRIP_SQ( s ) + "] )" )
ELSEIF "setWhatsThis(" $ cCmd
s := hbq_pullToolTip( cCmd )
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:setWhatsThis( [" + STRIP_SQ( s ) + "] )" )
ELSEIF "header()->" $ cCmd
// TODO: how to handle : __qtreeviewitem->header()->setVisible( .f. )
ELSEIF cCmd == "pPtr"
// Nothing TO DO
ELSE
aadd( prg_, " qObj[ " + PAD_30( STRINGIFY( cNam ) ) + " ]:" + strtran( cCmd, "o[", "qObj[" ) )
ENDIF
NEXT
aadd( prg_, "" )
aadd( prg_, " oUI := HbQtUI():new()" )
aadd( prg_, " oUI:qObj := qObj" )
aadd( prg_, " oUI:oWidget := oWidget" )
aadd( prg_, "" )
aadd( prg_, " RETURN oUI" )
aadd( prg_, "" )
RETURN prg_
/*----------------------------------------------------------------------*/
FUNCTION hbq_formatCommand( cCmd, lText, widgets )
LOCAL regDefine, aDefine, n, n1, cNam, cCmd1
STATIC nn := 100
DEFAULT lText TO .t.
cCmd := strtran( cCmd, "QApplication_translate" , "q__tr" )
cCmd := strtran( cCmd, "QApplication::UnicodeUTF8", '"UTF8"' )
cCmd := strtran( cCmd, "QString()" , '""' )
cCmd := strtran( cCmd, "QSize(" , "QSize():new(" )
cCmd := strtran( cCmd, "QRect(" , "QRect():new(" )
IF ( "::" $ cCmd )
regDefine := hb_RegexComp( "\b[A-Za-z_]+\:\:[A-Za-z_]+\b" )
aDefine := hb_RegEx( regDefine, cCmd )
IF !empty( aDefine )
cCmd := strtran( cCmd, "::", "_" ) /* Qt Defines - how to handle */
ENDIF
ENDIF
IF ! lText .AND. ( at( ".", cCmd ) ) > 0
// sizePolicy setHeightForWidth(ProjectProperties->sizePolicy().hasHeightForWidth());
//
IF ( at( "setHeightForWidth(", cCmd ) ) > 0
cNam := "__qsizePolicy" + hb_ntos( ++nn )
n := at( "(", cCmd )
n1 := at( ".", cCmd )
cCmd1 := hbq_setObjects( substr( cCmd, n + 1, n1 - n - 1 ), widgets )
cCmd1 := strtran( cCmd1, "->", ":" )
aadd( widgets, { "QSizePolicy", cNam, "QSizePolicy()", "QSizePolicy():configure(" + cCmd1 + ")" } )
cCmd := 'setHeightForWidth(o[ "' + cNam + '" ]:' + substr( cCmd, n1 + 1 )
ELSE
cCmd := "pPtr"
ENDIF
ENDIF
RETURN cCmd
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_isObjectNameSet( s )
RETURN ( "objectName" $ s .OR. "ObjectName" $ s )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_isValidCmdLine( s )
RETURN !( left( s, 1 ) $ '#/*"' )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_notAString( s )
RETURN !( left( s, 1 ) == '"' )
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_occurs( s, c )
LOCAL i, n, nLen := len( s )
n := 0
FOR i := 1 TO nLen
IF substr( s, i, 1 ) == c
n++
ENDIF
NEXT
RETURN n
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_pullToolTip( cCmd )
LOCAL n, s := ""
IF ( n := at( ', "', cCmd ) ) > 0
s := alltrim( substr( cCmd, n + 2 ) )
IF ( n := at( '", 0', s ) ) > 0
s := alltrim( substr( s, 1, n ) )
s := strtran( s, '\"', '"' )
//s := strtran( s, '\n', chr( 10 ) )
s := strtran( s, '""', "" )
s := substr( s, 2, len( s ) - 2 )
ENDIF
ENDIF
RETURN s
/*----------------------------------------------------------------------*/
STATIC PROCEDURE hbq_replaceConstants( s )
LOCAL a_, regDefine, cConst, cCmdB, cCmdE, cOR, n
LOCAL g := s
LOCAL b_:= {}
LOCAL nOrs := hbq_occurs( s, "|" )
#if 0
STATIC hConst := ;
{ ;
"QSizePolicy_Fixed" => NIL, ;
"QSizePolicy_Minimum" => NIL, ;
"QSizePolicy_Maximum" => NIL, ;
"QSizePolicy_Preferred" => NIL, ;
"QSizePolicy_Expanding" => NIL, ;
"QSizePolicy_MinimumExpanding" => NIL, ;
"QSizePolicy_Ignored" => NIL, ;
;
"Qt_AlignLeft" => NIL, ;
"Qt_AlignRight" => NIL, ;
"Qt_AlignHCenter" => NIL, ;
"Qt_AlignJustify" => NIL, ;
"Qt_AlignTop" => NIL, ;
"Qt_AlignBottom" => NIL, ;
"Qt_AlignVCenter" => NIL, ;
"Qt_AlignCenter" => NIL, ;
"Qt_AlignAbsolute" => NIL, ;
"Qt_AlignLeading" => NIL, ;
"Qt_AlignTrailing" => NIL, ;
;
"QPlainTextEdit_NoWrap" => NIL, ;
"QPlainTextEdit_WidgetWidth" => NIL, ;
;
"QTabWidget_North" => NIL, ;
"QTabWidget_South" => NIL, ;
"QTabWidget_West" => NIL, ;
"QTabWidget_East" => NIL, ;
"QTabWidget_Rounded" => NIL, ;
"QTabWidget_Triangular" => NIL, ;
"QMainWindow_AnimatedDocks" => NIL, ;
"QMainWindow_AllowNestedDocks" => NIL, ;
"QMainWindow_AllowTabbedDocks" => NIL, ;
"QMainWindow_ForceTabbedDocks" => NIL, ;
"QMainWindow_VerticalTabs" => NIL, ;
;
"QLayout_SetDefaultConstraint" => NIL, ;
"QLayout_SetFixedSize" => NIL, ;
"QLayout_SetMinimumSize" => NIL, ;
"QLayout_SetMaximumSize" => NIL, ;
"QLayout_SetMinAndMaxSize" => NIL, ;
"QLayout_SetNoConstraint" => NIL, ;
;
"QFrame_Plain" => NIL, ;
"QFrame_Raised" => NIL, ;
"QFrame_Sunken" => NIL, ;
"QFrame_NoFrame" => NIL, ;
"QFrame_Box" => NIL, ;
"QFrame_Panel" => NIL, ;
"QFrame_StyledPanel" => NIL, ;
"QFrame_HLine" => NIL, ;
"QFrame_VLine" => NIL, ;
"QFrame_WinPanel" => NIL, ;
"QFrame_Shadow_Mask" => NIL, ;
"QFrame_Shape_Mask" => NIL, ;
;
"QAbstractItemView_NoEditTriggers" => NIL, ;
"QAbstractItemView_CurrentChanged" => NIL, ;
"QAbstractItemView_DoubleClicked" => NIL, ;
"QAbstractItemView_SelectedClicked" => NIL, ;
"QAbstractItemView_EditKeyPressed" => NIL, ;
"QAbstractItemView_AnyKeyPressed" => NIL, ;
"QAbstractItemView_AllEditTriggers" => NIL, ;
"QAbstractItemView_NoSelection" => NIL, ;
"QAbstractItemView_MultiSelection" => NIL, ;
"QAbstractItemView_SingleSelection" => NIL, ;
"QAbstractItemView_ContiguousSelection" => NIL, ;
"QAbstractItemView_ExtendedSelection" => NIL, ;
;
"QTextEdit_NoWrap" => NIL, ;
"QTextEdit_WidgetWidth" => NIL, ;
"QTextEdit_FixedPixelWidth" => NIL, ;
"QTextEdit_FixedColumnWidth" => NIL, ;
;
"Qt_ScrollBarAsNeeded" => NIL, ;
"Qt_ScrollBarAlwaysOff" => NIL, ;
"Qt_ScrollBarAlwaysOn" => NIL, ;
;
"Qt_Horizontal" => NIL, ;
"Qt_Vertical" => NIL, ;
;
"Qt_TabFocus" => NIL, ;
"Qt_ClickFocus" => NIL, ;
"Qt_StrongFocus" => NIL, ;
"Qt_WheelFocus" => NIL, ;
"Qt_NoFocus" => NIL ;
}
#endif
regDefine := hb_RegexComp( "\b[A-Za-z_]+\:\:[A-Za-z_]+\b" )
IF nOrs > 0
FOR n := 1 TO nOrs + 1
a_:= hb_RegEx( regDefine, g )
IF !empty( a_ )
aadd( b_, a_[ 1 ] )
g := substr( g, at( a_[ 1 ], g ) + len( a_[ 1 ] ) )
ENDIF
NEXT
ENDIF
IF !empty( b_ )
cOR := "hb_bitOR(" + b_[ 1 ] + "," + b_[ 2 ] +")"
FOR n := 3 TO len( b_ )
cOR := "hb_bitOR(" + cOR + "," + b_[ n ] + ")"
NEXT
cCmdB := substr( s, 1, at( b_[ 1 ], s ) - 1 )
cConst := b_[ len( b_ ) ]
cCmdE := substr( s, at( cConst, s ) + len( cConst ) )
s := cCmdB + cOR + cCmdE
ENDIF
IF ( "::" $ s )
DO WHILE .t.
a_:= hb_RegEx( regDefine, s )
IF empty( a_ )
EXIT
ENDIF
cConst := strtran( a_[ 1 ], "::", "_" )
#if 0
IF !( cConst $ hConst )
EXIT
ENDIF
#endif
s := strtran( s, a_[ 1 ], cConst )
ENDDO
ENDIF
RETURN
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_setObjects( cCmd, aObj_ )
LOCAL n, cObj
IF ( n := ascan( aObj_, {|e_| ( e_[ 2 ] + "," ) $ cCmd } ) ) > 0
cObj := aObj_[ n, 2 ]
cCmd := strtran( cCmd, ( cObj + "," ), 'o[ "' + cObj + '" ],' )
ENDIF
IF ( n := ascan( aObj_, {|e_| ( e_[ 2 ] + ")" ) $ cCmd } ) ) > 0
cObj := aObj_[ n, 2 ]
cCmd := strtran( cCmd, ( cObj + ")" ), 'o[ "' + cObj + '" ])' )
ENDIF
IF ( n := ascan( aObj_, {|e_| ( e_[ 2 ] + "->" ) $ cCmd } ) ) > 0
cObj := aObj_[ n, 2 ]
cCmd := strtran( cCmd, ( cObj + "->" ), 'o[ "' + cObj + '" ]:' )
ENDIF
RETURN cCmd
/*----------------------------------------------------------------------*/
FUNCTION q__tr( p1, p2, p3, p4 )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p3 )
HB_SYMBOL_UNUSED( p4 )
RETURN p2
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_pullText( org_, nFrom )
LOCAL s := "", nLen := len( org_ )
LOCAL a_:= { "setText(", "setPlainText(", "setStyleSheet(", "setWhatsThis(" }
IF ascan( a_, {|e| e $ org_[ nFrom ] } ) > 0
s := org_[ nFrom ]
nFrom ++
DO WHILE nFrom <= nLen
IF !( left( org_[ nFrom ], 1 ) == '"' )
EXIT
ENDIF
s += org_[ nFrom ]
org_[ nFrom ] := ""
nFrom++
ENDDO
ENDIF
RETURN s
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_pullSetToolTip( org_, nFrom )
LOCAL s := "", nLen := len( org_ )
IF ( "#ifndef QT_NO_TOOLTIP" $ org_[ nFrom ] )
nFrom++
DO WHILE nFrom <= nLen
IF ( "#endif // QT_NO_TOOLTIP" $ org_[ nFrom ] )
EXIT
ENDIF
s += org_[ nFrom ]
org_[ nFrom ] := ""
nFrom++
ENDDO
ENDIF
RETURN s
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_stripFront( s, cTkn )
LOCAL n
LOCAL nLen := len( cTkn )
IF ( n := at( cTkn, s ) ) > 0
s := substr( s, n + nLen )
RETURN .t.
ENDIF
RETURN .f.
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbq_stripRear( s, cTkn )
LOCAL n
IF ( n := rat( cTkn, s ) ) > 0
s := substr( s, 1, n - 1 )
RETURN .t.
ENDIF
RETURN .f.
/*----------------------------------------------------------------------*/
STATIC PROCEDURE hbq_addCopyRight( prg_ )
aadd( prg_, "/* WARNING: Automatically generated source file. DO NOT EDIT! */" )
aadd( prg_, "/* Instead, edit corresponding .ui file, */" )
aadd( prg_, "/* with Qt Generator, and run hbqtui.exe. */" )
aadd( prg_, "/* */" )
aadd( prg_, "/* Pritpal Bedi <bedipritpal@hotmail.com> */" )
aadd( prg_, "" )
aadd( prg_, '#include "hbqt.ch"' )
RETURN
/*----------------------------------------------------------------------*/

View File

@@ -9,9 +9,9 @@
/* TODO:
1. error handling / reporting / feedback
2. copy headers and other stuff (hbide)
2. copy headers (or solve .hbc search path in universal way)
3. add .dll generation for contrib libs
4. first do all the 'clean's
4. avoid long cmdlines to make ms-dos hosts happy
*/
#pragma warninglevel=3

View File

@@ -217,6 +217,7 @@ REQUEST hbmk_KEYW
#define _HBMK_WITH_PREF "HBMK_WITH_"
#define _HBMK_HAS_PREF "HBMK_HAS_"
#define _HBMK_SCRIPT "__HBSCRIPT__HBMK"
#define _HBMK_NEST_MAX 10
#define _HBMK_HEAD_NEST_MAX 10
@@ -6438,7 +6439,7 @@ STATIC PROCEDURE PlugIn_Load( hbmk )
ENDIF
IF ! lOK .AND. !( Lower( cExt ) == ".hrb" ) /* Optimization: Don't try to load it as .prg if the extension is .hrb */
cType := I_( "(source)" )
cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0" )
cFile := hb_compileFromBuf( cFile, "-n2", "-w3", "-es2", "-q0", "-D" + _HBMK_SCRIPT )
IF ! Empty( cFile )
hrb := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, cFile )
ENDIF

View File

@@ -124,7 +124,7 @@ PROCEDURE _APPMAIN( cFile, ... )
CASE ".prg"
CASE ".hbs"
cFile := HB_COMPILEBUF( HB_ARGV( 0 ), "-n2", "-w", "-es2", "-q0", ;
s_aIncDir, cFile )
s_aIncDir, "-D" + "__HBSCRIPT__HBRUN", cFile )
IF cFile == NIL
ERRORLEVEL( 1 )
ENDIF