diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b81961ba1c..b55a5a6f31 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,11 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-12-01 18:09 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) + * contrib/hbide/hbide.prg + * contrib/hbxbp/xbpstatusbar.prg + + Started information. Now XbpStatusBar() honors multiple panels. + 2009-12-02 01:55 UTC+0100 Viktor Szakats (harbour.01 syenar.hu) * src/vm/itemapi.c * src/vm/hvm.c diff --git a/harbour/contrib/hbide/hbide.prg b/harbour/contrib/hbide/hbide.prg index c6dd41463b..1ac6880cc9 100644 --- a/harbour/contrib/hbide/hbide.prg +++ b/harbour/contrib/hbide/hbide.prg @@ -124,8 +124,11 @@ CLASS HbIde DATA qSplitterR DATA qTabWidget DATA qFindDlg + DATA qSBLine + DATA qSBCol ACCESS qCurEdit INLINE iif( ::getCurrentTab() > 0, ::aTabs[ ::getCurrentTab(), 2 ], NIL ) + ACCESS qCurDocument INLINE iif( ::getCurrentTab() > 0, ::aTabs[ ::getCurrentTab(), 6 ], NIL ) /* XBP Objects */ DATA oDlg @@ -197,6 +200,7 @@ CLASS HbIde METHOD activateTab() METHOD getCurrentTab() METHOD getYesNo() + METHOD dispEditInfo() DATA aTags INIT {} DATA aText INIT {} @@ -311,12 +315,12 @@ METHOD HbIde:create( cProjIni ) ::oTBar := buildToolBar( ::oDlg, Self ) ::buildStatusBar() - ::loadSources() - ::setPosAndSizeByIni( ::oProjTree:oWidget, ProjectTreeGeometry ) ::oDlg:Show() + ::loadSources() + /* Enter Xbase++ Event Loop - working */ DO WHILE .t. ::nEvent := AppEvent( @::mp1, @::mp2, @::oXbp ) @@ -652,11 +656,14 @@ METHOD HbIde:editSource( cSourceFile, nPos, nHPos, nVPos ) ::createTags() ::updateFuncList() ::manageFocusInEditor() + ::dispEditInfo() lFirst := .t. Qt_Connect_Signal( QT_PTROF( qEdit ), "textChanged()", ; {|| ::setTabImage( IF( qDocument:isModified(),"modified","unmodified" ), oTab, qEdit, nPos, @lFirst ) } ) + Qt_Connect_Signal( QT_PTROF( qEdit ), "cursorPositionChanged()", {|| ::dispEditInfo() } ) + RETURN Self /*----------------------------------------------------------------------*/ @@ -696,6 +703,7 @@ METHOD HbIde:activateTab( mp1, mp2, oXbp ) ::aSources := { ::aTabs[ ::nCurTab, 5 ] } ::createTags() ::updateFuncList() + ::dispEditInfo() ENDIF RETURN Self @@ -893,16 +901,44 @@ METHOD HbIde:buildProjectTree() /*----------------------------------------------------------------------*/ +METHOD HbIde:dispEditInfo() + LOCAL qCursor, s + + IF !empty( ::qCurEdit ) + ::oSBar:getItem( 2 ):caption := "Ready" + + qCursor := QTextCursor():configure( ::qCurEdit:textCursor() ) + + s := "Line "+ hb_ntos( qCursor:blockNumber()+1 ) + " of " + ; + hb_ntos( ::qCurDocument:blockCount() ) + "" + ::oSBar:getItem( 3 ):caption := s + + ::oSBar:getItem( 4 ):caption := "Col " + hb_ntos( qCursor:columnNumber()+1 ) + + ENDIF + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD HbIde:buildStatusBar() LOCAL oPanel ::oSBar := XbpStatusBar():new() ::oSBar:create( ::oDlg, , { 0,0 }, { ::oDlg:currentSize()[1],30 } ) + ::oSBar:oWidget:showMessage( "" ) oPanel := ::oSBar:getItem( 1 ) - oPanel:caption := "Ready" oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_SPRING + ::oSBar:addItem( "", , , , "Ready" ):oWidget:setMinimumWidth( 80 ) + ::oSBar:addItem( "", , , , "Line" ):oWidget:setMinimumWidth( 110 ) + ::oSBar:addItem( "", , , , "Col" ):oWidget:setMinimumWidth( 40 ) + ::oSBar:addItem( "", , , , "Caps" ):oWidget:setMinimumWidth( 30 ) + ::oSBar:addItem( "", , , , "Misc" ):oWidget:setMinimumWidth( 30 ) + ::oSBar:addItem( "", , , , "State" ):oWidget:setMinimumWidth( 50 ) + ::oSBar:addItem( "", , , , "Misc_2" ):oWidget:setMinimumWidth( 30 ) + ::oSBar:addItem( "", , , , "Misc_3" ):oWidget:setMinimumWidth( 20 ) + RETURN Self /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbxbp/xbpstatusbar.prg b/harbour/contrib/hbxbp/xbpstatusbar.prg index 3c745cf5fc..d063e965c0 100644 --- a/harbour/contrib/hbxbp/xbpstatusbar.prg +++ b/harbour/contrib/hbxbp/xbpstatusbar.prg @@ -162,8 +162,6 @@ METHOD XbpStatusBar:destroy() NEXT ENDIF - ::oParent := NIL - ::xbpWindow:destroy() RETURN NIL @@ -186,15 +184,16 @@ METHOD XbpStatusBar:addItem( cCaption, xImage, cDLL, nStyle, cKey, nMode ) HB_SYMBOL_UNUSED( xImage ) HB_SYMBOL_UNUSED( cDLL ) - oPanel := XbpStatusBarPanel():new( cCaption, nStyle, cKey ) - oPanel:oParent := self - - oPanel:index := ::numItems + 1 - - IF nMode <> -1 - //lSuccess := Wvg_StatusBarCreatePanel( ::hWnd, nMode ) + IF nMode == -1 + oPanel := XbpStatusBarPanel():new( cCaption, nStyle, cKey ):create() + ::oWidget:addPermanentWidget( QT_PTROFXBP( oPanel ), 1 ) + ELSE + oPanel := XbpStatusBarPanel():new( cCaption, nStyle, cKey ):create() + ::oWidget:addWidget( QT_PTROFXBP( oPanel ) ) ENDIF + oPanel:oParent := self + oPanel:index := ::numItems + 1 IF lSuccess aadd( ::aItems, oPanel ) ELSE @@ -287,6 +286,7 @@ METHOD XbpStatusBar:panelDblClick( xParam ) CLASS XbpStatusBarPanel + DATA oWidget DATA alignment INIT XBPALIGN_LEFT DATA autosize INIT XBPSTATUSBAR_AUTOSIZE_NONE DATA bevel INIT XBPSTATUSBAR_BEVEL_INSET @@ -303,6 +303,7 @@ CLASS XbpStatusBarPanel DATA minWidth INIT 0 METHOD new() + METHOD create() METHOD caption() SETGET DATA oParent @@ -324,6 +325,23 @@ METHOD XbpStatusBarPanel:new( cCaption, nStyle, cKey ) /*----------------------------------------------------------------------*/ +METHOD XbpStatusBarPanel:create( cCaption, nStyle, cKey ) + + DEFAULT cCaption TO ::sl_caption + DEFAULT nStyle TO ::style + DEFAULT cKey TO ::key + + ::sl_caption := cCaption + ::style := nStyle + ::key := cKey + + // take care of nStyle - later - label right now + ::oWidget := QLabel():new() + + RETURN Self + +/*----------------------------------------------------------------------*/ + METHOD XbpStatusBarPanel:caption( cCaption ) IF cCaption == NIL @@ -334,7 +352,11 @@ METHOD XbpStatusBarPanel:caption( cCaption ) ::sl_caption := cCaption - ::oParent:oWidget:showMessage( cCaption ) + IF ::oWidget <> NIL + ::oWidget:setText( cCaption ) + ELSE + ::oParent:oWidget:showMessage( cCaption ) + ENDIF ENDIF RETURN Self