diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 041c979cf6..4619d95fd6 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,10 @@ The license applies to all entries newer than 2009-04-28. */ +2010-07-04 09:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbxbp/xbpmenubar.prg + ! Added "style" management method - unique to Harbour. + 2010-07-04 08:40 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbqt/hbqt.ch * contrib/hbqt/hbqt_hbslots.cpp diff --git a/harbour/contrib/hbxbp/xbpmenubar.prg b/harbour/contrib/hbxbp/xbpmenubar.prg index 968d049f82..ae0d07e5b3 100644 --- a/harbour/contrib/hbxbp/xbpmenubar.prg +++ b/harbour/contrib/hbxbp/xbpmenubar.prg @@ -148,6 +148,8 @@ CLASS xbpMenuBar INHERIT xbpWindow METHOD setStyle() METHOD numItems() INLINE len( ::aMenuItems ) + METHOD setStyleSheet( cCSS, cCSSPops ) + ENDCLASS /*----------------------------------------------------------------------*/ @@ -180,9 +182,8 @@ METHOD xbpMenuBar:create( oParent, aPresParams, lVisible ) ::xbpWindow:create( ::oParent, , , , ::aPresParams, ::visible ) - ::oWidget := QMenuBar():new( ::oParent:pWidget ) - - ::oParent:oWidget:setMenuBar( ::pWidget ) + ::oWidget := QMenuBar():new() + ::oParent:oWidget:setMenuBar( ::oWidget ) if !empty( ::oWidget ) ::oParent:oMenu := Self @@ -541,15 +542,15 @@ METHOD xbpMenuBar:execSlot( cSlot, p ) ELSE ::itemSelected( nIndex ) ENDIF - ENDIF - - ELSEIF cSlot == "hovered()" - IF !empty( p ) + ENDIF + + ELSEIF cSlot == "hovered()" + IF !empty( p ) IF ( nIndex := ascan( ::aMenuItems, {|e_| iif( hb_isNumeric( e_[ 2 ] ), e_[ 2 ] == p, .f. ) } ) ) > 0 - ::itemMarked( nIndex ) + ::itemMarked( nIndex ) ENDIF - ENDIF - + ENDIF + ENDIF RETURN nil @@ -562,7 +563,7 @@ METHOD xbpMenuBar:beginMenu( ... ) ::sl_beginMenu := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_beginMenu ) eval( ::sl_beginMenu, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -573,7 +574,7 @@ METHOD XbpMenuBar:endMenu( ... ) ::sl_endMenu := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_endMenu ) eval( ::sl_endMenu, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -584,31 +585,31 @@ METHOD XbpMenuBar:itemMarked( ... ) ::sl_itemMarked := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_itemMarked ) eval( ::sl_itemMarked, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ - + METHOD XbpMenuBar:itemSelected( ... ) LOCAL a_:= hb_aParams() IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] ) ::sl_itemSelected := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_itemSelected ) eval( ::sl_itemSelected, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ - + METHOD XbpMenuBar:drawItem( ... ) LOCAL a_:= hb_aParams() IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] ) ::sl_drawItem := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_drawItem ) eval( ::sl_drawItem, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ METHOD XbpMenuBar:measureItem( ... ) @@ -617,9 +618,9 @@ METHOD XbpMenuBar:measureItem( ... ) ::sl_measureItem := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_measureItem ) eval( ::sl_measureItem, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ METHOD XbpMenuBar:onMenuKey( ... ) @@ -628,11 +629,32 @@ METHOD XbpMenuBar:onMenuKey( ... ) ::sl_onMenuKey := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_onMenuKey ) eval( ::sl_onMenuKey, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ +METHOD xbpMenuBar:setStyleSheet( cCSS, cCSSPops ) + #if 0 + LOCAL aChild + + FOR EACH aChild IN ::aItems + IF hb_isObject( aChild[ 1 ] == QMF_POPUP ) + aChild[ 2 ]:setStyleSheet( cCSSPops ) + ENDIF + NEXT + #endif + LOCAL oMenu + + FOR EACH oMenu IN ::aChildren + oMenu:setStyleSheet( cCSSPops ) + NEXT + ::oWidget:setStyleSheet( cCSS ) + + RETURN Self + +/*------------------------------------------------------------------------*/ + METHOD xbpMenuBar:setStyle() LOCAL txt_:={} LOCAL s @@ -646,6 +668,7 @@ METHOD xbpMenuBar:setStyle() aadd( txt_, ' spacing: 3px; /* spacing between menu bar items */ ' ) aadd( txt_, ' padding: 1px 4px; ' ) aadd( txt_, ' background: transparent; ' ) + aadd( txt_, ' color: #a8a8a8; ' ) aadd( txt_, ' border-radius: 4px; ' ) aadd( txt_, '} ' ) aadd( txt_, ' ' ) @@ -684,6 +707,7 @@ CLASS xbpMenu INHERIT xbpMenuBar METHOD setTitle( cTitle ) METHOD popUp( oXbp, aPos, nDefaultItem, nControl ) METHOD setStyle() + METHOD setStyleSheet( cCSS ) ENDCLASS @@ -748,6 +772,18 @@ METHOD xbpMenu:popUp( oXbp, aPos, nDefaultItem, nControl ) /*----------------------------------------------------------------------*/ +METHOD xbpMenu:setStyleSheet( cCSS ) + LOCAL oMenu + + FOR EACH oMenu IN ::aChildren + oMenu:setStyleSheet( cCSS ) + NEXT + ::oWidget:setStyleSheet( cCSS ) + + RETURN Self + +/*------------------------------------------------------------------------*/ + METHOD xbpMenu:setStyle() LOCAL s, txt_:={}