From 5a075b06d12408119404f42ec0d938daab41d155 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Sat, 7 Aug 2010 22:36:46 +0000 Subject: [PATCH] 2010-08-07 15:28 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbxbp/xbp.ch + Added: few more constants with HBP* prefix to be used for upcoming HbpMdiArea() class to manage MDI areas containing sub-windows. * contrib/hbxbp/xbpwindow.prg + Implemented: ERROR HANDLER OnError( ... ) method. Now it is possible to call Qt object methods directly with Xbp* objects. For example, oXbp:oWidget:setLayout( ... ) => oXbp:setLayout( ... ) It is a very useful extension and empowers the developer more freedom. --- harbour/ChangeLog | 16 +++++ harbour/contrib/hbxbp/xbp.ch | 23 +++++-- harbour/contrib/hbxbp/xbpwindow.prg | 97 +++++++++++++++-------------- 3 files changed, 84 insertions(+), 52 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 9745fdc762..8cd1500425 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,22 @@ The license applies to all entries newer than 2009-04-28. */ +2010-08-07 15:28 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbxbp/xbp.ch + + Added: few more constants with HBP* prefix to be used + for upcoming HbpMdiArea() class to manage MDI areas containing + sub-windows. + + * contrib/hbxbp/xbpwindow.prg + + Implemented: ERROR HANDLER OnError( ... ) method. + Now it is possible to call Qt object methods directly + with Xbp* objects. For example, + oXbp:oWidget:setLayout( ... ) + => + oXbp:setLayout( ... ) + It is a very useful extension and empowers the developer + more freedom. + 2010-08-07 19:40 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/make.hbs ! Fixed to not propagate custom flags to container projects. diff --git a/harbour/contrib/hbxbp/xbp.ch b/harbour/contrib/hbxbp/xbp.ch index 19d8521860..ecd00c95c2 100644 --- a/harbour/contrib/hbxbp/xbp.ch +++ b/harbour/contrib/hbxbp/xbp.ch @@ -439,8 +439,14 @@ #define XBP_ORIGIN_TOPLEFT 1 #define XBP_ORIGIN_BOTTOMLEFT 2 +#define XBPCLPBRD_TEXT 1 +#define XBPCLPBRD_BITMAP 2 + +#define APPTYPE_PM 3 + +/*----------------------------------------------------------------------*/ +/* Harbour Parts Constants */ /*----------------------------------------------------------------------*/ -/* Harbour Specific Constants */ #define HBPLAYOUT_TYPE_HORZBOX 1 #define HBPLAYOUT_TYPE_VERTBOX 2 @@ -449,12 +455,21 @@ #define HBPLAYOUT_TYPE_MAX 4 +/*----------------------------------------------------------------------*/ +/* HbpMdiArea() */ +/*----------------------------------------------------------------------*/ -#define XBPCLPBRD_TEXT 1 -#define XBPCLPBRD_BITMAP 2 +#define HBPMDI_MODE_SUBWINDOWS 0 +#define HBPMDI_MODE_TABBED 1 -#define APPTYPE_PM 3 +#define HBPMDI_STYLE_ORGANIZED 0 +#define HBPMDI_STYLE_CASCADED 1 +#define HBPMDI_STYLE_TILED 2 +#define HBPMDI_STYLE_MAXIMIZED 3 +#define HBPMDI_STYLE_TILEDVERT 4 +#define HBPMDI_STYLE_TILEDHORZ 5 /*----------------------------------------------------------------------*/ + #define _XBP_CH #endif diff --git a/harbour/contrib/hbxbp/xbpwindow.prg b/harbour/contrib/hbxbp/xbpwindow.prg index 5bc82a8a54..e30422e481 100644 --- a/harbour/contrib/hbxbp/xbpwindow.prg +++ b/harbour/contrib/hbxbp/xbpwindow.prg @@ -77,7 +77,7 @@ CLASS XbpWindow INHERIT XbpPartHandler CLASSDATA nProperty INIT 0 - + DATA qtProperty INIT "" DATA qtObject DATA isViaQtObject INIT .f. @@ -167,7 +167,7 @@ CLASS XbpWindow INHERIT XbpPartHandler DATA aPP DATA qLayout DATA nLayout - + METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) METHOD setQtProperty( cProperty ) @@ -178,7 +178,6 @@ CLASS XbpWindow INHERIT XbpPartHandler METHOD handleEvent( nEvent, mp1, mp2 ) METHOD captureMouse( lCapture ) METHOD invalidateRect( aRect ) - METHOD setStyleSheet( cNewSheet ) METHOD setFont( oFont ) METHOD setFontCompoundName( xFont ) METHOD setModalState( nState ) @@ -189,6 +188,7 @@ CLASS XbpWindow INHERIT XbpPartHandler METHOD setSize( aSize, lPaint ) METHOD isDerivedFrom( cClassORoObject ) METHOD setPresParam( aPPNew ) + METHOD setStyleSheet( cCSS ) INLINE ::oWidget:setStyleSheet( ::oWidget:styleSheet() + " " + cCSS ) METHOD enter( ... ) SETGET METHOD leave( ... ) SETGET @@ -223,6 +223,8 @@ CLASS XbpWindow INHERIT XbpPartHandler METHOD dragDrop( ... ) SETGET METHOD hbContextMenu( ... ) SETGET + ERROR HANDLER OnError( ... ) + METHOD Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) METHOD isEnabled() INLINE ::is_enabled METHOD isVisible() INLINE !( ::is_hidden ) @@ -256,7 +258,6 @@ CLASS XbpWindow INHERIT XbpPartHandler /* After object is physically created, set unique property to 1 */ * METHOD setQtProperty() -* METHOD setStyleSheet() METHOD setStyle() INLINE NIL METHOD className() INLINE __objGetClsName( Self ) @@ -848,6 +849,15 @@ METHOD XbpWindow:handleEvent( nEvent, mp1, mp2 ) /*----------------------------------------------------------------------*/ +METHOD XbpWindow:onError( ... ) + LOCAL cMsg := __GetMessage() + IF SubStr( cMsg, 1, 1 ) == "_" + cMsg := SubStr( cMsg, 2 ) + ENDIF + RETURN ::oWidget:&cMsg( ... ) + +/*----------------------------------------------------------------------*/ + METHOD XbpWindow:captureMouse( lCapture ) LOCAL lSuccess := .f. @@ -918,15 +928,6 @@ METHOD XbpWindow:lockUpdate() /*----------------------------------------------------------------------*/ -METHOD XbpWindow:setStyleSheet( cNewSheet ) - LOCAL cSheet := ::oWidget:styleSheet() - - ::oWidget:setStyleSheet( cSheet + " " + cNewSheet ) - - RETURN Self - -/*----------------------------------------------------------------------*/ - STATIC FUNCTION Xbp_RgbToName( nRgb ) LOCAL oColor := QColor():new( nRGB ) LOCAL cName := oColor:name @@ -1363,20 +1364,20 @@ METHOD XbpWindow:enter( ... ) ::sl_enter := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_enter ) eval( ::sl_enter, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ - + METHOD XbpWindow:leave( ... ) LOCAL a_:= hb_aParams() IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] ) ::sl_leave := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_leave ) eval( ::sl_leave, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self - + /*----------------------------------------------------------------------*/ METHOD XbpWindow:lbClick( ... ) @@ -1385,7 +1386,7 @@ METHOD XbpWindow:lbClick( ... ) ::sl_lbClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick ) eval( ::sl_lbClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1396,7 +1397,7 @@ METHOD XbpWindow:lbDblClick( ... ) ::sl_lbDblClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbDblClick ) eval( ::sl_lbDblClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1407,7 +1408,7 @@ METHOD XbpWindow:lbDown( ... ) ::sl_lbDown := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbDown ) eval( ::sl_lbDown, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1418,7 +1419,7 @@ METHOD XbpWindow:lbUp( ... ) ::sl_lbUp := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbUp ) eval( ::sl_lbUp, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1429,7 +1430,7 @@ METHOD XbpWindow:mbClick( ... ) ::sl_mbClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_mbClick ) eval( ::sl_mbClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1440,7 +1441,7 @@ METHOD XbpWindow:mbDblClick( ... ) ::sl_mbDblClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_mbDblClick ) eval( ::sl_mbDblClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1451,7 +1452,7 @@ METHOD XbpWindow:mbDown( ... ) ::sl_mbDown := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_mbDown ) eval( ::sl_mbDown, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1462,7 +1463,7 @@ METHOD XbpWindow:mbUp( ... ) ::sl_mbUp := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_mbUp ) eval( ::sl_mbUp, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1473,7 +1474,7 @@ METHOD XbpWindow:motion( ... ) ::sl_motion := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_motion ) eval( ::sl_motion, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1484,7 +1485,7 @@ METHOD XbpWindow:rbClick( ... ) ::sl_rbClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_rbClick ) eval( ::sl_rbClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1495,7 +1496,7 @@ METHOD XbpWindow:rbDblClick( ... ) ::sl_rbDblClick := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_rbDblClick ) eval( ::sl_rbDblClick, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1506,7 +1507,7 @@ METHOD XbpWindow:rbDown( ... ) ::sl_rbDown := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_rbDown ) eval( ::sl_rbDown, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1517,7 +1518,7 @@ METHOD XbpWindow:rbUp( ... ) ::sl_rbUp := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_rbUp ) eval( ::sl_rbUp, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1528,7 +1529,7 @@ METHOD XbpWindow:wheel( ... ) ::sl_wheel := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_wheel ) eval( ::sl_wheel, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1541,7 +1542,7 @@ METHOD XbpWindow:close( ... ) ::sl_close := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_close ) eval( ::sl_close, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1552,7 +1553,7 @@ METHOD XbpWindow:helpRequest( ... ) ::sl_helpRequest := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_helpRequest ) eval( ::sl_helpRequest, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1563,7 +1564,7 @@ METHOD XbpWindow:keyboard( ... ) ::sl_keyboard := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_keyboard ) eval( ::sl_keyboard, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1574,7 +1575,7 @@ METHOD XbpWindow:killDisplayFocus( ... ) ::sl_killDisplayFocus := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_killDisplayFocus ) eval( ::sl_killDisplayFocus, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1585,7 +1586,7 @@ METHOD XbpWindow:killInputFocus( ... ) ::sl_killInputFocus := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_killInputFocus ) eval( ::sl_killInputFocus, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1596,7 +1597,7 @@ METHOD XbpWindow:move( ... ) ::sl_move := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_move ) eval( ::sl_move, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1607,7 +1608,7 @@ METHOD XbpWindow:paint( ... ) ::sl_paint := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_paint ) eval( ::sl_paint, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1618,7 +1619,7 @@ METHOD XbpWindow:quit( ... ) ::sl_quit := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_quit ) eval( ::sl_quit, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1629,7 +1630,7 @@ METHOD XbpWindow:resize( ... ) ::sl_resize := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_resize ) eval( ::sl_resize, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1640,7 +1641,7 @@ METHOD XbpWindow:setDisplayFocus( ... ) ::sl_setDisplayFocus := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_setDisplayFocus ) eval( ::sl_setDisplayFocus, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1651,7 +1652,7 @@ METHOD XbpWindow:setInputFocus( ... ) ::sl_setInputFocus := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_setInputFocus ) eval( ::sl_setInputFocus, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1662,7 +1663,7 @@ METHOD XbpWindow:dragEnter( ... ) ::sl_dragEnter := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_dragEnter ) eval( ::sl_dragEnter, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1673,7 +1674,7 @@ METHOD XbpWindow:dragMotion( ... ) ::sl_dragMotion := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_dragMotion ) eval( ::sl_dragMotion, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1684,7 +1685,7 @@ METHOD XbpWindow:dragLeave( ... ) ::sl_dragLeave := a_[ 1 ] ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_dragLeave ) eval( ::sl_dragLeave, NIL, NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1695,7 +1696,7 @@ METHOD XbpWindow:dragDrop( ... ) ::sl_dragDrop := a_[ 1 ] ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_dragDrop ) eval( ::sl_dragDrop, a_[ 1 ], a_[ 2 ], Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/ @@ -1706,7 +1707,7 @@ METHOD XbpWindow:hbContextMenu( ... ) ::hb_contextMenu := a_[ 1 ] ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::hb_contextMenu ) eval( ::hb_contextMenu, a_[ 1 ], NIL, Self ) - ENDIF + ENDIF RETURN Self /*----------------------------------------------------------------------*/