diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 761351ac26..2c07dafc59 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,15 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-11-18 15:26 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbxbp/xbpgeneric.prg + ! Change the way HBXBP_DEBUG() shows up the values. In my scheme of things + the whole HBQT's debug system is revolving around this way. + + * contrib/hbide/hbide.prg + + More basic visual components to host different project elements. + Keep on playing with it. I am gathering all pitfalls. + 2009-11-18 22:41 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added dependency tree to flat dependency list converter. diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index 7b61870bff..f742a4ca19 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -120,12 +120,7 @@ PROCEDURE JustACall() CLASS HbIde - DATA oDlg DATA mp1, mp2, oXbp, nEvent - DATA oDa - DATA oSBar - DATA oMenu - DATA oTBar DATA aTabs INIT {} DATA cProjFile @@ -133,8 +128,19 @@ CLASS HbIde DATA nCurTab INIT 0 DATA nPrevTab INIT 0 + /* HBQT Objects */ DATA qLayout + DATA qSplitter + + /* XBP Objects */ + DATA oDlg + DATA oDa + DATA oSBar + DATA oMenu + DATA oTBar DATA oFont + DATA oProjTree + DATA oProjRoot METHOD new( cProjectOrSource ) METHOD create( cProjectOrSource ) @@ -192,15 +198,34 @@ METHOD HbIde:create( cProjectOrSource ) ::oDa := ::oDlg:drawingArea - ::oDa:oTabWidget := XbpTabWidget():new( ::oDa, , ::oDa:aPos, ::oDa:aSize, , .t. ):create() + ::oDa:oTabWidget := XbpTabWidget():new():create( ::oDa, , ::oDa:aPos, ::oDa:aSize, , .t. ) ::oDa:oTabWidget:oWidget:setTabsClosable( .t. ) - ::qLayout := QBoxLayout():new() - ::qLayout:setDirection( 0 ) + ::qSplitter := QSplitter():new( QT_PTROF( ::oDa:oWidget ) ) + + ::oProjTree := XbpTreeView():new() + ::oProjTree:hasLines := .T. + ::oProjTree:hasButtons := .T. + ::oProjTree:create( ::oDa, , { 0,0 }, { 10,10 }, , .t. ) + ::oProjRoot := ::oProjTree:rootItem:addItem( "Untitled" ) + IF !empty( ::cProjFile ) + ::oProjRoot:addItem( ::cProjFile ) + ENDIF + ::oProjTree:setColorBG( GraMakeRGBColor( { 223,240,255 } ) ) + ::oProjTree:oWidget:setMaximumWidth( 200 ) + + ::qLayout := QGridLayout():new() ::qLayout:setContentsMargins( 0,0,0,0 ) - - ::qLayout:addWidget( QT_PTROFXBP( ::oDa:oTabWidget ) ) - + ::qLayout:setHorizontalSpacing( 0 ) + ::qLayout:setVerticalSpacing( 0 ) + #if 0 + ::qLayout:addWidget_1( QT_PTROFXBP( ::oProjTree ), 0, 0, 1, 1 ) + ::qLayout:addWidget_1( QT_PTROFXBP( ::oDa:oTabWidget ), 0, 1, 1, 1 ) + #else + ::qLayout:addWidget_1( QT_PTROF( ::qSplitter ), 0, 0, 1, 1 ) + ::qSplitter:addWidget( QT_PTROFXBP( ::oProjTree ) ) + ::qSplitter:addWidget( QT_PTROFXBP( ::oDa:oTabWidget ) ) + #endif ::oDa:oWidget:setLayout( QT_PTROF( ::qLayout ) ) #if 0 @@ -209,8 +234,9 @@ METHOD HbIde:create( cProjectOrSource ) /* Place on the center of desktop */ ::oDlg:setPos( { ( aSize[ 1 ] - ::oDlg:currentSize()[ 1 ] ) / 2, ; ( aSize[ 2 ] - ::oDlg:currentSize()[ 2 ] ) / 2 } ) - #endif + #else ::oDlg:setPos( { 100, 60 } ) + #endif /* Editor's Font */ ::oFont := XbpFont():new() @@ -226,7 +252,8 @@ METHOD HbIde:create( cProjectOrSource ) /* Install Toolbar */ ::buildToolBar() - ::editSource() + /* This is only for demonstration. Final version will follow another mechanism */ + ::editSource( ::cProjFile ) ::oDlg:Show() @@ -237,6 +264,8 @@ METHOD HbIde:create( cProjectOrSource ) EXIT ENDIF + HBXBP_DEBUG( ::nEvent, ::mp1, ::mp2 ) + IF ( ::nEvent == xbeP_Close ) .OR. ( ::nEvent == xbeP_Keyboard .and. ::mp1 == xbeK_ESC ) IF ::nEvent == xbeP_Close ::closeAllSources() @@ -259,19 +288,6 @@ METHOD HbIde:create( cProjectOrSource ) /*----------------------------------------------------------------------*/ -METHOD HbIde:buildDialog() - - ::oDlg := XbpDialog():new( , , {10,10}, {900,500}, , .f. ) - - ::oDlg:icon := s_resPath + "vr.png" //"hbide.ico" - ::oDlg:title := "Harbour-Qt IDE" - - ::oDlg:create() - - RETURN Self - -/*----------------------------------------------------------------------*/ - METHOD HbIde:buildTabPage( oWnd, cSource ) LOCAL aPos := { 5,5 } LOCAL aSize := { 890, 420 } @@ -422,23 +438,6 @@ METHOD HbIde:selectSource( cMode ) /*----------------------------------------------------------------------*/ -METHOD HbIde:buildMenu() - LOCAL oMenuBar, oSubMenu - - oMenuBar := SetAppWindow():MenuBar() - - oSubMenu := XbpMenu():new( oMenuBar ):create() - oSubMenu:title := "~File" - oSubMenu:addItem( { "Open", {|| ::manageMenu( 1 ) } } ) - oSubMenu:addItem( { "Save", {|| ::manageMenu( 2 ) } } ) - oSubMenu:addItem( { NIL, NIL, XBPMENUBAR_MIS_SEPARATOR, NIL } ) - oSubMenu:addItem( { "Exit", {|| ::manageMenu( 3 ) } } ) - oMenuBar:addItem( { oSubMenu, NIL } ) - - Return Self - -/*----------------------------------------------------------------------*/ - METHOD HbIde:manageMenu( nMode ) DO CASE @@ -450,6 +449,28 @@ METHOD HbIde:manageMenu( nMode ) /*----------------------------------------------------------------------*/ +METHOD HbIde:manageToolbar( oButton ) + LOCAL cFile + + DO CASE + CASE oButton:key == "3" + IF !empty( cFile := ::selectSource( "open" ) ) + ::oProjRoot:addItem( cFile ) + ::editSource( cFile ) + ENDIF + + CASE oButton:key == "4" + ::saveSource( ::nCurTab ) + + CASE oButton:key == "5" + ::closeSource( ::nCurTab, .t. ) + + ENDCASE + + RETURN nil + +/*----------------------------------------------------------------------*/ + METHOD HbIde:buildToolBar() ::oTBar := XbpToolBar():new( ::oDA ) @@ -459,6 +480,8 @@ METHOD HbIde:buildToolBar() ::oTBar:imageWidth := 20 ::oTBar:imageHeight := 20 + ::oTBar:oWidget:setMaximumHeight( 30 ) + ::oTBar:addItem( "Exit" , s_resPath + "exit.png" , , , , , "1" ) ::oTBar:addItem( , , , , , XBPTOOLBAR_BUTTON_SEPARATOR ) ::oTBar:addItem( "Properties" , s_resPath + "properties.png" , , , , , "2" ) @@ -505,24 +528,20 @@ METHOD HbIde:buildToolBar() /*----------------------------------------------------------------------*/ -METHOD HbIde:manageToolbar( oButton ) - LOCAL cFile +METHOD HbIde:buildMenu() + LOCAL oMenuBar, oSubMenu - DO CASE - CASE oButton:key == "3" - IF !empty( cFile := ::selectSource( "open" ) ) - ::editSource( cFile ) - ENDIF + oMenuBar := SetAppWindow():MenuBar() - CASE oButton:key == "4" - ::saveSource( ::nCurTab ) + oSubMenu := XbpMenu():new( oMenuBar ):create() + oSubMenu:title := "~File" + oSubMenu:addItem( { "Open", {|| ::manageMenu( 1 ) } } ) + oSubMenu:addItem( { "Save", {|| ::manageMenu( 2 ) } } ) + oSubMenu:addItem( { NIL, NIL, XBPMENUBAR_MIS_SEPARATOR, NIL } ) + oSubMenu:addItem( { "Exit", {|| ::manageMenu( 3 ) } } ) + oMenuBar:addItem( { oSubMenu, NIL } ) - CASE oButton:key == "5" - ::closeSource( ::nCurTab, .t. ) - - ENDCASE - - RETURN nil + Return Self /*----------------------------------------------------------------------*/ @@ -540,4 +559,16 @@ METHOD HbIde:buildStatusBar() /*----------------------------------------------------------------------*/ - \ No newline at end of file +METHOD HbIde:buildDialog() + + ::oDlg := XbpDialog():new( , , {10,10}, {900,500}, , .f. ) + + ::oDlg:icon := s_resPath + "vr.png" //"hbide.ico" + ::oDlg:title := "Harbour-Qt IDE" + + ::oDlg:create() + + RETURN Self + +/*----------------------------------------------------------------------*/ + diff --git a/harbour/contrib/hbxbp/xbpgeneric.prg b/harbour/contrib/hbxbp/xbpgeneric.prg index 4cdafb295e..854410ac71 100644 --- a/harbour/contrib/hbxbp/xbpgeneric.prg +++ b/harbour/contrib/hbxbp/xbpgeneric.prg @@ -372,7 +372,8 @@ FUNCTION ConvertAFact( cMode, nFrom, xValue ) PROCEDURE _HBXBP_DEBUG( ... ) LOCAL cString := "" - AEval( hb_AParams(), {| x | cString += ValType( x ) + ":" + iif( ISARRAY( x ), "[" + hb_ntos( Len( x ) ) + "]", hb_ValToStr( x ) ) + " " } ) + //AEval( hb_AParams(), {| x | cString += ValType( x ) + ":" + iif( ISARRAY( x ), "[" + hb_ntos( Len( x ) ) + "]", hb_ValToStr( x ) ) + " " } ) + AEval( hb_AParams(), {| x | cString += iif( ISARRAY( x ), "[" + hb_ntos( Len( x ) ) + "]", hb_ValToStr( x ) ) + " " } ) #if defined( __PLATFORM__WINDOWS ) .AND. defined( __HB_WINDEBUG__ ) wapi_OutputDebugString( cString )