2010-04-25 01:32 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)

* contrib/hbxbp/xbp3state.prg
  * contrib/hbxbp/xbpappevent.prg
  * contrib/hbxbp/xbpbitmap.prg
  * contrib/hbxbp/xbpbrowse.prg
  * contrib/hbxbp/xbpcheckbox.prg
  * contrib/hbxbp/xbpcombobox.prg
  * contrib/hbxbp/xbpdataref.prg
  * contrib/hbxbp/xbpdialog.prg
  * contrib/hbxbp/xbpfiledialog.prg
  * contrib/hbxbp/xbpfontdialog.prg
  * contrib/hbxbp/xbphtmlviewer.prg
  * contrib/hbxbp/xbplistbox.prg
  * contrib/hbxbp/xbpmenubar.prg
  * contrib/hbxbp/xbpmle.prg
  * contrib/hbxbp/xbppushbutton.prg
  * contrib/hbxbp/xbpradiobutton.prg
  * contrib/hbxbp/xbprtf.prg
  * contrib/hbxbp/xbpscrollbar.prg
  * contrib/hbxbp/xbpsle.prg
  * contrib/hbxbp/xbpspinbutton.prg
  * contrib/hbxbp/xbpstatusbar.prg
  * contrib/hbxbp/xbptabpage.prg
  * contrib/hbxbp/xbptoolbar.prg
  * contrib/hbxbp/xbptreeview.prg
  * contrib/hbxbp/xbpwindow.prg
    ! Reworked callbacl Slots/Methods which are now INHERITable in 
      the sub-classes derived from Xbp Part.
    ! Slots ae now recognized through the slot identifier string.
    ! Deleted redundant parts and made code more cleaner and uniform in
      method calling conventions.

      This is first round of reforms, more will follow.
This commit is contained in:
Pritpal Bedi
2010-04-25 08:45:41 +00:00
parent c6bef5ae3e
commit dd873288b1
26 changed files with 1061 additions and 865 deletions

View File

@@ -17,6 +17,40 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-04-25 01:32 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbxbp/xbp3state.prg
* contrib/hbxbp/xbpappevent.prg
* contrib/hbxbp/xbpbitmap.prg
* contrib/hbxbp/xbpbrowse.prg
* contrib/hbxbp/xbpcheckbox.prg
* contrib/hbxbp/xbpcombobox.prg
* contrib/hbxbp/xbpdataref.prg
* contrib/hbxbp/xbpdialog.prg
* contrib/hbxbp/xbpfiledialog.prg
* contrib/hbxbp/xbpfontdialog.prg
* contrib/hbxbp/xbphtmlviewer.prg
* contrib/hbxbp/xbplistbox.prg
* contrib/hbxbp/xbpmenubar.prg
* contrib/hbxbp/xbpmle.prg
* contrib/hbxbp/xbppushbutton.prg
* contrib/hbxbp/xbpradiobutton.prg
* contrib/hbxbp/xbprtf.prg
* contrib/hbxbp/xbpscrollbar.prg
* contrib/hbxbp/xbpsle.prg
* contrib/hbxbp/xbpspinbutton.prg
* contrib/hbxbp/xbpstatusbar.prg
* contrib/hbxbp/xbptabpage.prg
* contrib/hbxbp/xbptoolbar.prg
* contrib/hbxbp/xbptreeview.prg
* contrib/hbxbp/xbpwindow.prg
! Reworked callbacl Slots/Methods which are now INHERITable in
the sub-classes derived from Xbp Part.
! Slots ae now recognized through the slot identifier string.
! Deleted redundant parts and made code more cleaner and uniform in
method calling conventions.
This is first round of reforms, more will follow.
2010-04-24 13:35 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/achoice.prg
! REVERTED: Fixed typo in ACHOICE() K_UP handling, which caused a

View File

@@ -86,13 +86,10 @@ CLASS Xbp3State INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD setCaption( xCaption )
ACCESS selected INLINE ::sl_lbClick
ASSIGN selected( bBlock ) INLINE ::sl_lbClick := bBlock
METHOD exeBlock( iState )
METHOD selected( ... ) SETGET
METHOD execSlot( cSlot, p )
ENDCLASS
@@ -112,7 +109,7 @@ METHOD Xbp3State:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oWidget := QCheckBox():New( ::oParent:oWidget )
::Connect( ::pWidget, "stateChanged(int)", {|i| ::exeBlock( i ) } )
::Connect( ::pWidget, "stateChanged(int)", {|i| ::execSlot( "stateChanged(int)", i ) } )
::oWidget:setTriState( .t. )
@@ -152,14 +149,15 @@ METHOD Xbp3State:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, l
/*----------------------------------------------------------------------*/
METHOD Xbp3State:exeBlock( iState )
::sl_editBuffer := IF( iState == 2, 1, IF( iState == 1, 2, iState ) )
IF hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, ::sl_editBuffer, NIL, self )
ENDIF
METHOD Xbp3State:execSlot( cSlot, p )
SWITCH cSlot
CASE "stateChanged(int)"
::sl_editBuffer := iif( p == 2, 1, iif( p == 1, 2, p ) )
::selected( ::sl_editBuffer )
EXIT
ENDSWITCH
RETURN nil
/*----------------------------------------------------------------------*/
@@ -200,3 +198,15 @@ METHOD Xbp3State:setCaption( xCaption )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD Xbp3State:selected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -445,23 +445,23 @@ FUNCTION XbpQKeyEventToAppEvent( pEvent )
c := hbqt_QTranslateKey( kbm, Qt_Key_QuoteDbl, Qt_Key_QuoteDbl, xbeK_ALT_QUOTE, Qt_Key_QuoteDbl )
EXIT
CASE Qt_Key_Space
c := ' ' ; EXIT
c := ' ' ; EXIT
CASE Qt_Key_Exclam
c := '!' ; EXIT
c := '!' ; EXIT
CASE Qt_Key_NumberSign
c := '#' ; EXIT
c := '#' ; EXIT
CASE Qt_Key_Dollar
c := '$' ; EXIT
c := '$' ; EXIT
CASE Qt_Key_Percent
c := '%' ; EXIT
c := '%' ; EXIT
CASE Qt_Key_Ampersand
c := '&' ; EXIT
c := '&' ; EXIT
CASE Qt_Key_Apostrophe
c := Qt_Key_Apostrophe ; EXIT
c := Qt_Key_Apostrophe ; EXIT
CASE Qt_Key_ParenLeft
c := '(' ; EXIT
c := '(' ; EXIT
CASE Qt_Key_ParenRight
c := ')' ; EXIT
c := ')' ; EXIT
CASE Qt_Key_Comma
c := hbqt_QTranslateKey( kbm, ',', ',', xbeK_ALT_COMMA, ',' )
EXIT
@@ -469,18 +469,18 @@ FUNCTION XbpQKeyEventToAppEvent( pEvent )
c := hbqt_QTranslateKey( kbm, '.', '.', xbeK_ALT_PERIOD, '.' )
EXIT
CASE Qt_Key_Colon
c := '' ; EXIT
c := '' ; EXIT
CASE Qt_Key_Semicolon
c := ';' ; EXIT
c := ';' ; EXIT
CASE Qt_Key_Less
c := '<' ; EXIT
c := '<' ; EXIT
CASE Qt_Key_Greater
c := '>' ; EXIT
c := '>' ; EXIT
CASE Qt_Key_Question
c := hbqt_QTranslateKey( kbm, '?', '?', '?', xbeK_CTRL_QUESTION )
EXIT
CASE Qt_Key_At
c := '@' ; EXIT
c := '@' ; EXIT
CASE Qt_Key_Meta /* On Mac OS X, this corresponds to the Control keys. On Windows keyboards, this key is mapped to the Windows key. */
c := xbeK_ ; EXIT

View File

@@ -76,17 +76,18 @@
CLASS XbpBitmap
ACCESS bits INLINE ::oWidget:depth()
DATA bufferOffset INIT 0
ACCESS planes INLINE 0
DATA transparentColor INIT GRA_CLR_INVALID
ACCESS xSize INLINE ::oWidget:width()
ACCESS ySize INLINE ::oWidget:height()
DATA oWidget
DATA oPS
DATA cImageFileName
ACCESS bits INLINE ::oWidget:depth()
ACCESS planes INLINE 0
ACCESS xSize INLINE ::oWidget:width()
ACCESS ySize INLINE ::oWidget:height()
METHOD new() INLINE Self
METHOD create( oPS )
METHOD configure() VIRTUAL

View File

@@ -59,7 +59,7 @@
* EkOnkar
* ( The LORD is ONE )
*
* Xbase++ Compatible XbpRtf Class
* Xbase++ Compatible XbpBrowse Class
*
* Pritpal Bedi <pritpal@vouchcac.com>
* 10Jul2009
@@ -76,6 +76,13 @@
#include "gra.ch"
#include "appevent.ch"
#include "button.ch"
#include "color.ch"
#include "error.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "tbrowse.ch"
/*----------------------------------------------------------------------*/
#define HBQT_BRW_CELLVALUE 1001
@@ -93,43 +100,25 @@
#define HBQT_BRW_DATALIGN 1013
#define HBQT_BRW_CELLDECORATION 1014
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
//
// XbpBrowse
//
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#define HB_CLS_NOTOBJECT
#include "hbclass.ch"
#include "button.ch"
#include "color.ch"
#include "common.ch"
#include "error.ch"
#include "inkey.ch"
#include "setcurs.ch"
#include "tbrowse.ch"
#define _TBCI_COLOBJECT 1 // column object
#define _TBCI_COLWIDTH 2 // width of the column
#define _TBCI_COLPOS 3 // column position on screen
#define _TBCI_CELLWIDTH 4 // width of the cell
#define _TBCI_CELLPOS 5 // cell position in column
#define _TBCI_COLSEP 6 // column separator
#define _TBCI_SEPWIDTH 7 // width of the separator
#define _TBCI_HEADING 8 // column heading
#define _TBCI_FOOTING 9 // column footing
#define _TBCI_HEADSEP 10 // heading separator
#define _TBCI_FOOTSEP 11 // footing separator
#define _TBCI_DEFCOLOR 12 // default color
#define _TBCI_FROZENSPACE 13 // space after frozen columns
#define _TBCI_LASTSPACE 14 // space after last visible column
#define _TBCI_SIZE 14 // size of array with TBrowse column data
#define _TBCI_COLOBJECT 1 // column object
#define _TBCI_COLWIDTH 2 // width of the column
#define _TBCI_COLPOS 3 // column position on screen
#define _TBCI_CELLWIDTH 4 // width of the cell
#define _TBCI_CELLPOS 5 // cell position in column
#define _TBCI_COLSEP 6 // column separator
#define _TBCI_SEPWIDTH 7 // width of the separator
#define _TBCI_HEADING 8 // column heading
#define _TBCI_FOOTING 9 // column footing
#define _TBCI_HEADSEP 10 // heading separator
#define _TBCI_FOOTSEP 11 // footing separator
#define _TBCI_DEFCOLOR 12 // default color
#define _TBCI_FROZENSPACE 13 // space after frozen columns
#define _TBCI_LASTSPACE 14 // space after last visible column
#define _TBCI_SIZE 14 // size of array with TBrowse column data
#define _TBC_SETKEY_KEY 1
#define _TBC_SETKEY_BLOCK 2
@@ -307,7 +296,7 @@ EXPORTED:
METHOD new( nTop, nLeft, nBottom, nRight ) // constructor, NOTE: This method is a Harbour extension [vszakats]
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) // constructor, NOTE: This method is a Harbour extension [vszakats]
METHOD exeBlock( nEvent, p1, p2, p3 ) // executes view events
METHOD execSlot( nEvent, p1, p2, p3 ) // executes view events
METHOD supplyInfo( nMode, nInfo, p2, p3 ) // supplies cell parameters to Qt engine
METHOD configure( nMode ) // mark that the internal settings of the TBrowse object should be reconfigured
METHOD handleEvent( nEvent, mp1, mp2 )
@@ -512,9 +501,9 @@ METHOD XbpBrowse:buildLeftFreeze()
//
//::oLeftFooterView:hide()
::connect( ::oLeftView , "mousePressEvent()" , {|p| ::exeBlock( 31, p ) } )
::connect( ::oLeftHeaderView, "sectionPressed(int)", {|i| ::exeBlock( 31, i ) } )
::connect( ::oLeftFooterView, "sectionPressed(int)", {|i| ::exeBlock( 31, i ) } )
::connect( ::oLeftView , "mousePressEvent()" , {|p| ::execSlot( 31, p ) } )
::connect( ::oLeftHeaderView, "sectionPressed(int)", {|i| ::execSlot( 31, i ) } )
::connect( ::oLeftFooterView, "sectionPressed(int)", {|i| ::execSlot( 31, i ) } )
RETURN Self
@@ -558,9 +547,9 @@ METHOD XbpBrowse:buildRightFreeze()
::oRightFooterModel := HBDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 162, p1, p2, p3, p4 ) } )
::oRightFooterView:setModel( ::oRightFooterModel )
::connect( ::oRightView , "mousePressEvent()" , {|p| ::exeBlock( 31, p ) } )
::connect( ::oRightHeaderView, "sectionPressed(int)", {|i| ::exeBlock( 31, i ) } )
::connect( ::oRightFooterView, "sectionPressed(int)", {|i| ::exeBlock( 31, i ) } )
::connect( ::oRightView , "mousePressEvent()" , {|p| ::execSlot( 31, p ) } )
::connect( ::oRightHeaderView, "sectionPressed(int)", {|i| ::execSlot( 31, i ) } )
::connect( ::oRightFooterView, "sectionPressed(int)", {|i| ::execSlot( 31, i ) } )
RETURN Self
@@ -587,27 +576,27 @@ METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oTableView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
/* Connect Keyboard Events */
::connect( ::oTableView, "keyPressEvent()" , {|p | ::exeBlock( 1, p ) } )
::connect( ::oTableView, "mousePressEvent()" , {|p | ::exeBlock( 2, p ) } )
::connect( ::oTableView, "mouseDoubleClickEvent()" , {|p | ::exeBlock( 3, p ) } )
::connect( ::oTableView, "wheelEvent()" , {|p | ::exeBlock( 4, p ) } )
::connect( ::oTableView, "scrollContentsBy(int,int)" , {|p,p1| ::exeBlock(11, p, p1 ) } )
::connect( ::oTableView, "keyPressEvent()" , {|p | ::execSlot( 1, p ) } )
::connect( ::oTableView, "mousePressEvent()" , {|p | ::execSlot( 2, p ) } )
::connect( ::oTableView, "mouseDoubleClickEvent()" , {|p | ::execSlot( 3, p ) } )
::connect( ::oTableView, "wheelEvent()" , {|p | ::execSlot( 4, p ) } )
::connect( ::oTableView, "scrollContentsBy(int,int)" , {|p,p1| ::execSlot(11, p, p1 ) } )
/* Finetune Horizontal Scrollbar */
::oTableView:setHorizontalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
//
::oHScrollBar := QScrollBar():new()
::oHScrollBar:setOrientation( Qt_Horizontal )
::connect( ::oHScrollBar, "actionTriggered(int)" , {|i| ::exeBlock( 103, i ) } )
::connect( ::oHScrollBar, "sliderReleased()" , {|i| ::exeBlock( 104, i ) } )
::connect( ::oHScrollBar, "actionTriggered(int)" , {|i| ::execSlot( 103, i ) } )
::connect( ::oHScrollBar, "sliderReleased()" , {|i| ::execSlot( 104, i ) } )
/* Replace Vertical Scrollbar with our own */
::oTableView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
//
::oVScrollBar := QScrollBar():new()
::oVScrollBar:setOrientation( Qt_Vertical )
::connect( ::oVScrollBar, "actionTriggered(int)" , {|i| ::exeBlock( 101, i ) } )
::connect( ::oVScrollBar, "sliderReleased()" , {|i| ::exeBlock( 102, i ) } )
::connect( ::oVScrollBar, "actionTriggered(int)" , {|i| ::execSlot( 101, i ) } )
::connect( ::oVScrollBar, "sliderReleased()" , {|i| ::execSlot( 102, i ) } )
/* Veritical Header because of Performance boost */
::oVHeaderView := QHeaderView()
@@ -619,8 +608,8 @@ METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oHeaderView:configure( ::oTableView:horizontalHeader() )
::oHeaderView:setHighlightSections( .F. )
//
::connect( ::oHeaderView, "sectionPressed(int)" , {|i | ::exeBlock( 111, i ) } )
::connect( ::oHeaderView, "sectionResized(int,int,int)", {|i,i1,i2| ::exeBlock( 121, i, i1, i2 ) } )
::connect( ::oHeaderView, "sectionPressed(int)" , {|i | ::execSlot( 111, i ) } )
::connect( ::oHeaderView, "sectionResized(int,int,int)", {|i,i1,i2| ::execSlot( 121, i, i1, i2 ) } )
/* .DBF Manipulation Model */
::oDbfModel := HBDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 141, p1, p2, p3, p4 ) } )
@@ -748,11 +737,11 @@ METHOD XbpBrowse:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpBrowse:exeBlock( nEvent, p1, p2, p3 )
METHOD XbpBrowse:execSlot( nEvent, p1, p2, p3 )
LOCAL oWheelEvent, oMouseEvent, i, nRow, nRowPos, nCol, nColPos, oPoint
HB_SYMBOL_UNUSED( p2 )
//HB_TRACE( HB_TR_DEBUG, " XbpBrowse:exeblock:", nEvent, 0, memory( 1001 ) )
//HB_TRACE( HB_TR_DEBUG, " XbpBrowse:execSlot:", nEvent, 0, memory( 1001 ) )
DO CASE
CASE nEvent == 1 /* Keypress Event */
SetAppEvent( xbeP_Keyboard, XbpQKeyEventToAppEvent( p1 ), NIL, self )

View File

@@ -86,12 +86,10 @@ CLASS XbpCheckBox INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( iState )
METHOD execSlot( cSlot, p )
METHOD setCaption( xCaption )
ACCESS selected INLINE ::sl_lbClick
ASSIGN selected( bBlock ) INLINE ::sl_lbClick := bBlock
METHOD selected( ... ) SETGET
ENDCLASS
@@ -110,7 +108,7 @@ METHOD XbpCheckBox:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oWidget := QCheckBox():New( ::oParent:oWidget )
::Connect( ::pWidget, "stateChanged(int)", {|i| ::exeBlock( i ) } )
::Connect( ::pWidget, "stateChanged(int)", {|i| ::execSlot( "stateChanged(int)", i ) } )
::setPosAndSize()
IF ::visible
@@ -142,12 +140,14 @@ METHOD XbpCheckBox:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams,
/*----------------------------------------------------------------------*/
METHOD XbpCheckBox:exeBlock( iState )
METHOD XbpCheckBox:execSlot( cSlot, p )
::sl_editBuffer := iState <> 0
IF hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, iState <> 0, NIL, self )
ENDIF
SWITCH cSlot
CASE "stateChanged(int)"
::sl_editBuffer := p <> 0
::selected( ::sl_editBuffer )
EXIT
ENDSWITCH
RETURN nil
@@ -189,3 +189,14 @@ METHOD XbpCheckBox:setCaption( xCaption )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpCheckBox:selected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -73,7 +73,6 @@
/*----------------------------------------------------------------------*/
//CLASS XbpComboBox INHERIT XbpSLE, XbpListBox
CLASS XbpComboBox INHERIT XbpWindow
DATA type INIT XBPCOMBO_DROPDOWN
@@ -85,7 +84,7 @@ CLASS XbpComboBox INHERIT XbpWindow
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 ) VIRTUAL
METHOD exeBlock( nMsg, p1 )
METHOD execSlot( cSlot, p )
METHOD listBoxFocus( lFocus ) VIRTUAL // -> lOldFocus
METHOD sleSize() VIRTUAL // -> aOldSize
@@ -107,21 +106,17 @@ CLASS XbpComboBox INHERIT XbpWindow
DATA oSLE
ACCESS XbpSLE INLINE ::oSLE
DATA oLB
ACCESS XbpSLE INLINE ::oSLE
ACCESS XbpListBox INLINE ::oLB
DATA sl_itemMarked
ACCESS itemMarked INLINE ::sl_itemMarked
ASSIGN itemMarked( bBlock ) INLINE ::sl_itemMarked := bBlock
DATA sl_itemSelected
ACCESS itemSelected INLINE ::sl_itemSelected
ASSIGN itemSelected( bBlock ) INLINE ::sl_itemSelected := bBlock
DATA sl_xbePDrawItem
ACCESS drawItem INLINE ::sl_xbePDrawItem
ASSIGN drawItem( bBlock ) INLINE ::sl_xbePDrawItem := bBlock
DATA sl_drawItem
METHOD itemMarked( ... ) SETGET
METHOD itemSelected( ... ) SETGET
METHOD drawItem( ... ) SETGET
ENDCLASS
@@ -140,20 +135,17 @@ METHOD XbpComboBox:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oSLE := XbpSLE():new():create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oLB := XbpListBox():new():create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oWidget := QComboBox():New( ::pParent )
::oWidget:setLineEdit( ::XbpSLE:oWidget:pPtr )
::oWidget:setEditable( ::XbpSLE:editable )
::oWidget:setFrame( ::XbpSLE:border )
::connect( ::pWidget, "highlighted(int)" , {|i| ::exeBlock( 1, i ) } )
* ::connect( ::pWidget, "currentIndexChanged(int)", {|i| ::exeBlock( 2, i ) } )
::connect( ::pWidget, "activated(int)" , {|i| ::exeBlock( 2, i ) } )
::connect( ::pWidget, "highlighted(int)" , {|i| ::execSlot( "highlighted(int)" , i ) } )
::connect( ::pWidget, "activated(int)" , {|i| ::execSlot( "activated(int)" , i ) } )
* ::connect( ::pWidget, "currentIndexChanged(int)", {|i| ::execSlot( "currentIndexChanged(int)", i ) } )
::setPosAndSize()
IF ::visible
@@ -181,15 +173,15 @@ METHOD XbpComboBox:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams,
IF ::visible
::show()
ENDIF
::oWidget:setLineEdit( ::XbpSLE:oWidget:pPtr )
::oWidget:setLineEdit( ::XbpSLE:oWidget )
::oWidget:setEditable( ::XbpSLE:editable )
::oWidget:setFrame( ::XbpSLE:border )
ENDIF
::connect( ::pWidget, "highlighted(int)" , {|i| ::exeBlock( 1, i ) } )
::connect( ::pWidget, "activated(int)" , {|i| ::exeBlock( 2, i ) } )
* ::connect( ::pWidget, "currentIndexChanged(int)", {|i| ::exeBlock( 2, i ) } )
::connect( ::oWidget, "highlighted(int)" , {|i| ::execSlot( "highlighted(int)" , i ) } )
::connect( ::oWidget, "activated(int)" , {|i| ::execSlot( "activated(int)" , i ) } )
* ::connect( ::oWidget, "currentIndexChanged(int)", {|i| ::execSlot( "currentIndexChanged(int)", i ) } )
::AddAsChild( SELF )
RETURN Self
@@ -204,21 +196,51 @@ METHOD XbpComboBox:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpComboBox:exeBlock( nMsg, p1 )
METHOD XbpComboBox:execSlot( cSlot, p )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nMsg == 1
IF hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, NIL, NIL, self )
ENDIF
CASE nMsg == 2
IF hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, NIL, NIL, self )
ENDIF
CASE cSlot == "highlighted(int)"
::itemMarked()
CASE cSlot == "activated(int)"
::itemSelected()
CASE cSlot == "currentIndexChanged(int)"
ENDCASE
RETURN .t.
/*----------------------------------------------------------------------*/
METHOD XbpComboBox:itemMarked( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemMarked := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpComboBox:itemSelected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemSelected := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpComboBox:drawItem( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbePDrawItem := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_xbePDrawItem )
eval( ::sl_xbePDrawItem, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -81,19 +81,14 @@ CLASS XbpDataRef
DATA sl_undo INIT NIL
DATA undoBuffer INIT NIL
DATA sl_validate INIT NIL
METHOD new()
DATA sl_editBuffer
DATA sl_buffer
ACCESS editBuffer INLINE ::sl_editBuffer
ASSIGN editBuffer( xData ) INLINE ::sl_editBuffer := xData
METHOD new()
METHOD getData()
METHOD setData( xValue, mp2 )
METHOD undo()
METHOD editBuffer( xData ) SETGET
METHOD validate( xParam ) SETGET
ENDCLASS
@@ -211,7 +206,7 @@ METHOD XbpDataRef:undo()
METHOD XbpDataRef:validate( xParam )
IF PCount() == 0 .and. hb_isBlock( ::sl_validate )
IF PCount() == 0 .AND. hb_isBlock( ::sl_validate )
RETURN eval( ::sl_validate, self )
ELSEIF hb_isBlock( xParam )
::sl_validate := xParam
@@ -220,3 +215,14 @@ METHOD XbpDataRef:validate( xParam )
RETURN .t.
/*----------------------------------------------------------------------*/
METHOD XbpDataRef:editBuffer( xData )
IF !( xData == NIL )
::sl_editBuffer := xData
ENDIF
RETURN ::sl_editBuffer
/*----------------------------------------------------------------------*/

View File

@@ -93,13 +93,12 @@ CLASS XbpDialog FROM XbpWindow
DATA origin INIT XBPDLG_ORIGIN_OWNER
DATA sysMenu INIT .T.
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD handleEvent( nEvent, mp1, mp2 ) VIRTUAL
METHOD exeBlock( nEvent, pEvent )
METHOD execEvent( nEvent, pEvent )
METHOD close() INLINE NIL
METHOD destroy()
@@ -114,7 +113,6 @@ CLASS XbpDialog FROM XbpWindow
METHOD calcClientRect() INLINE { 0, 0, ::oWidget:width(), ::oWidget:height() }
METHOD calcFrameRect() INLINE { ::oWidget:x(), ::oWidget:y(), ;
::oWidget:x()+::oWidget:width(), ::oWidget:y()+::oWidget:height() }
DATA aMaxSize
METHOD maxSize( aSize ) SETGET
DATA aMinSize
@@ -211,8 +209,6 @@ METHOD XbpDialog:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::show()
ENDIF
//SetAppWindow( Self ) /* This should never be done here, it is programmers responsibility */
/* Install Event Loop per Dialog Basis */
::oEventLoop := QEventLoop():new( ::pWidget )
hbxbp_SetEventLoop( ::oEventLoop )
@@ -222,9 +218,9 @@ METHOD XbpDialog:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::connectWindowEvents()
//
::connectEvent( ::pWidget, QEvent_Close , {|e| ::exeBlock( QEvent_Close , e ) } )
::connectEvent( ::pWidget, QEvent_WindowActivate , {|e| ::exeBlock( QEvent_WindowActivate , e ) } )
::connectEvent( ::pWidget, QEvent_WindowDeactivate, {|e| ::exeBlock( QEvent_WindowDeactivate, e ) } )
::connectEvent( ::pWidget, QEvent_Close , {|e| ::execEvent( QEvent_Close , e ) } )
::connectEvent( ::pWidget, QEvent_WindowActivate , {|e| ::execEvent( QEvent_WindowActivate , e ) } )
::connectEvent( ::pWidget, QEvent_WindowDeactivate, {|e| ::execEvent( QEvent_WindowDeactivate, e ) } )
RETURN Self
@@ -243,8 +239,6 @@ METHOD XbpDialog:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, l
METHOD XbpDialog:destroy()
LOCAL qtObj
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, "<<<<<<<<<< XbpDialog:destroy B >>>>>>>>>>" )
@@ -266,14 +260,12 @@ METHOD XbpDialog:destroy()
HB_TRACE( HB_TR_ALWAYS, "<<<<<<<<<< XbpDialog:destroy E >>>>>>>>>>" )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpDialog:exeBlock( nEvent, pEvent )
METHOD XbpDialog:execEvent( nEvent, pEvent )
HB_SYMBOL_UNUSED( pEvent )

View File

@@ -87,7 +87,7 @@ CLASS XbpFileDialog INHERIT XbpWindow
METHOD new( oParent, oOwner, aPos )
METHOD create( oParent, oOwner, aPos )
METHOD exeBlock( nEvent, p1 )
METHOD execSlot( cSlot, p )
METHOD destroy()
METHOD open( cDefaultFile, lCenter, lAllowMultiple, lCreateNewFiles )
METHOD saveAs( cDefaultFile, lFileList, lCenter )
@@ -112,30 +112,30 @@ METHOD XbpFileDialog:create( oParent, oOwner, aPos )
::oWidget := QFileDialog():new( ::pParent )
//::oWidget:setStyle( AppDesktop():style() )
::setStyle()
//::setStyle()
//::setColorBG( GraMakeRGBColor( { 255,255,255 } ) )
//::setColorFG( GraMakeRGBColor( { 0,0,0 } ) )
::connect( ::pWidget, "accepted()" , {|p| ::exeBlock( 1, p ) } )
::connect( ::pWidget, "finished(int)" , {|p| ::exeBlock( 2, p ) } )
::connect( ::pWidget, "rejected()" , {|p| ::exeBlock( 3, p ) } )
::connect( ::pWidget, "currentChanged(QString)" , {|p| ::exeBlock( 4, p ) } )
::connect( ::pWidget, "directoryEntered(QString)" , {|p| ::exeBlock( 5, p ) } )
::connect( ::pWidget, "fileSelected(QString)" , {|p| ::exeBlock( 6, p ) } )
::connect( ::pWidget, "filesSelected(QStringList)", {|p| ::exeBlock( 7, p ) } )
::connect( ::pWidget, "filterSelected(QString)" , {|p| ::exeBlock( 8, p ) } )
::connect( ::oWidget, "accepted()" , {|p| ::execSlot( "accepted()" , p ) } )
::connect( ::oWidget, "finished(int)" , {|p| ::execSlot( "finished(int)" , p ) } )
::connect( ::oWidget, "rejected()" , {|p| ::execSlot( "rejected()" , p ) } )
::connect( ::oWidget, "currentChanged(QString)" , {|p| ::execSlot( "currentChanged(QString)" , p ) } )
::connect( ::oWidget, "directoryEntered(QString)" , {|p| ::execSlot( "directoryEntered(QString)" , p ) } )
::connect( ::oWidget, "fileSelected(QString)" , {|p| ::execSlot( "fileSelected(QString)" , p ) } )
::connect( ::oWidget, "filesSelected(QStringList)", {|p| ::execSlot( "filesSelected(QStringList)", p ) } )
::connect( ::oWidget, "filterSelected(QString)" , {|p| ::execSlot( "filterSelected(QString)" , p ) } )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFileDialog:exeBlock( nEvent, p1 )
METHOD XbpFileDialog:execSlot( cSlot, p )
LOCAL nRet := XBP_ALLOW
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nEvent == 3
CASE cSlot == "rejected()"
IF hb_isBlock( ::sl_quit )
nRet := eval( ::sl_quit, 0, 0, Self )
ENDIF

View File

@@ -119,32 +119,25 @@ CLASS XbpFontDialog INHERIT XbpWindow
METHOD new( oParent, oOwner, oScreenPS, oPrinterPS, aPos )
METHOD create( oParent, oOwner, oScreenPS, oPrinterPS, aPos )
METHOD exeBlock( nEvent, p1 )
METHOD execSlot( cSlot, p )
METHOD display( nMode )
METHOD destroy()
METHOD XbpFontObject()
DATA sl_activateApply
ACCESS activateApply INLINE ::sl_activateApply
ASSIGN activateApply( bBlock ) INLINE ::sl_activateApply := bBlock
DATA sl_activateCancel
ACCESS activateCancel INLINE ::sl_activateCancel
ASSIGN activateCancel( bBlock ) INLINE ::sl_activateCancel := bBlock
DATA sl_activateOk
ACCESS activateOk INLINE ::sl_activateOk
ASSIGN activateOk( bBlock ) INLINE ::sl_activateOk := bBlock
DATA sl_activateReset
ACCESS activateReset INLINE ::sl_activateReset
ASSIGN activateReset( bBlock ) INLINE ::sl_activateReset := bBlock
METHOD activateApply( ... ) SETGET
METHOD activateCancel( ... ) SETGET
METHOD activateOk( ... ) SETGET
METHOD activateReset( ... ) SETGET
DATA oScreenPS
DATA oPrinterPS
DATA aPos INIT { 0, 0 }
DATA ok INIT .f.
DATA oFont
ENDCLASS
@@ -200,28 +193,26 @@ METHOD XbpFontDialog:create( oParent, oOwner, oScreenPS, oPrinterPS, aPos )
::oWidget:setWindowTitle( ::title )
ENDIF
::connect( ::pwidget, "accepted()" , {|p| ::exeBlock( 1, p ) } )
::connect( ::pwidget, "finished(int)" , {|p| ::exeBlock( 2, p ) } )
::connect( ::pwidget, "rejected()" , {|p| ::exeBlock( 3, p ) } )
::connect( ::pwidget, "currentFontChanged(QFont)", {|p| ::exeBlock( 4, p ) } )
::connect( ::pwidget, "fontSelected(QFont)" , {|p| ::exeBlock( 5, p ) } )
::connect( ::pwidget, "accepted()" , {|p| ::execSlot( "accepted()" , p ) } )
::connect( ::pwidget, "finished(int)" , {|p| ::execSlot( "finished(int)" , p ) } )
::connect( ::pwidget, "rejected()" , {|p| ::execSlot( "rejected()" , p ) } )
::connect( ::pwidget, "currentFontChanged(QFont)", {|p| ::execSlot( "currentFontChanged(QFont)", p ) } )
::connect( ::pwidget, "fontSelected(QFont)" , {|p| ::execSlot( "fontSelected(QFont)" , p ) } )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:exeBlock( nEvent, p1 )
METHOD XbpFontDialog:execSlot( cSlot, p )
LOCAL nRet := XBP_ALLOW
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nEvent == 1
IF hb_isBlock( ::sl_activateOk )
eval( ::sl_activateOk, ::XbpFontObject(), NIL, Self )
ENDIF
CASE cSlot == "accepted()"
::activateOk( ::XbpFontObject() )
CASE nEvent == 3
CASE cSlot == "rejected()"
IF hb_isBlock( ::sl_quit )
nRet := eval( ::sl_quit, 0, 0, Self )
ENDIF
@@ -231,10 +222,9 @@ METHOD XbpFontDialog:exeBlock( nEvent, p1 )
::oWidget:accept()
ENDIF
CASE nEvent == 4 /* SIMULATE sl_activateApply for timebeing */
IF hb_isBlock( ::sl_activateApply )
eval( ::sl_activateApply, ::XbpFontObject(), NIL, self )
ENDIF
CASE cSlot == "currentFontChanged(QFont)" /* SIMULATE sl_activateApply for timebeing */
::activateApply( ::XbpFontObject() )
ENDCASE
RETURN nRet
@@ -280,6 +270,50 @@ METHOD XbpFontDialog:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:activateApply( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_activateApply := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_activateApply )
eval( ::sl_activateApply, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:activateCancel( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_activateCancel := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_activateCancel )
eval( ::sl_activateCancel, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:activateOk( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_activateOk := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_activateOk )
eval( ::sl_activateOk, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:activateReset( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_activateReset := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_activateReset )
eval( ::sl_activateReset, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpFontDialog:XbpFontObject()
LOCAL oXbp

View File

@@ -98,7 +98,7 @@ CLASS XbpHTMLViewer INHERIT XbpWindow
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD exeBlock( nEvent, p1 )
METHOD execSlot( cSlot, p )
METHOD setHTML( cHTML ) INLINE ::oWidget:setHTML( cHTML )
@@ -157,15 +157,15 @@ METHOD XbpHTMLViewer:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible
#if 0 /* Discontinued till QWebKit is integrated separately - Pritpal */
::oWidget := QWebView():new( ::pParent )
::Connect( ::oWidget, "iconChanged()" , {|p| ::exeBlock( 1, p ) } )
::Connect( ::oWidget, "linkClicked(QUrl)" , {|p| ::exeBlock( 2, p ) } )
::Connect( ::oWidget, "loadFinished(bool)" , {|p| ::exeBlock( 3, p ) } )
::Connect( ::oWidget, "loadProgress(int)" , {|p| ::exeBlock( 4, p ) } )
::Connect( ::oWidget, "loadStarted()" , {|p| ::exeBlock( 5, p ) } )
::Connect( ::oWidget, "titleChanged(QString)" , {|p| ::exeBlock( 6, p ) } )
::Connect( ::oWidget, "urlChanged(QUrl)" , {|p| ::exeBlock( 7, p ) } )
::Connect( ::oWidget, "selectionChanged()" , {|p| ::exeBlock( 8, p ) } )
::Connect( ::oWidget, "statusBarMessage(QString)", {|p| ::exeBlock( 9, p ) } )
::Connect( ::oWidget, "iconChanged()" , {|p| ::execSlot( "iconChanged()" , p ) } )
::Connect( ::oWidget, "linkClicked(QUrl)" , {|p| ::execSlot( "linkClicked(QUrl)" , p ) } )
::Connect( ::oWidget, "loadFinished(bool)" , {|p| ::execSlot( "loadFinished(bool)" , p ) } )
::Connect( ::oWidget, "loadProgress(int)" , {|p| ::execSlot( "loadProgress(int)" , p ) } )
::Connect( ::oWidget, "loadStarted()" , {|p| ::execSlot( "loadStarted()" , p ) } )
::Connect( ::oWidget, "titleChanged(QString)" , {|p| ::execSlot( "titleChanged(QString)" , p ) } )
::Connect( ::oWidget, "urlChanged(QUrl)" , {|p| ::execSlot( "urlChanged(QUrl)" , p ) } )
::Connect( ::oWidget, "selectionChanged()" , {|p| ::execSlot( "selectionChanged()" , p ) } )
::Connect( ::oWidget, "statusBarMessage(QString)", {|p| ::execSlot( "statusBarMessage(QString)", p ) } )
#if 0
::mapEvent( evNavigateComplete, {| cURL | ::xNavigateComplete( cURL ) } )
#endif
@@ -203,39 +203,39 @@ METHOD XbpHTMLViewer:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpHTMLViewer:exeBlock( nEvent, p1 )
METHOD XbpHTMLViewer:execSlot( cSlot, p )
DO CASE
CASE nEvent == 1
CASE cSlot == "iconChanged()"
IF hb_isBlock( ::sl_beforeNavigate )
eval( ::sl_beforeNavigate, /*cURL*/, NIL, Self )
ENDIF
CASE nEvent == 2
CASE nEvent == 3
CASE cSlot == "linkClicked(QUrl)"
CASE cSlot == "loadFinished(bool)"
IF hb_isBlock( ::sl_documentComplete )
eval( ::sl_documentComplete, /*cURI*/, p1, Self )
eval( ::sl_documentComplete, /*cURI*/, p, Self )
ENDIF
CASE nEvent == 4
CASE cSlot == "loadProgress(int)"
IF hb_isBlock( ::sl_progressChange )
eval( ::sl_progressChange, p1, 100, Self )
eval( ::sl_progressChange, p, 100, Self )
ENDIF
CASE nEvent == 5
CASE nEvent == 6
CASE cSlot == "loadStarted()"
CASE cSlot == "titleChanged(QString)"
IF hb_isBlock( ::sl_titleChange )
eval( ::sl_titleChange, p1, NIL, Self )
eval( ::sl_titleChange, p, NIL, Self )
ENDIF
CASE nEvent == 7
CASE nEvent == 8
CASE cSlot == "urlChanged(QUrl)"
CASE cSlot == "selectionChanged()"
::cSelectedText := ::oWidget:selectedText()
HB_TRACE( HB_TR_DEBUG, ::cSelectedText )
CASE nEvent == 9
CASE cSlot == "statusBarMessage(QString)"
IF hb_isBlock( ::sl_statusTextChange )
eval( ::sl_statusTextChange, p1, NIL, Self )
eval( ::sl_statusTextChange, p, NIL, Self )
ENDIF
ENDCASE
RETURN nil
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpHTMLViewer:navigate( cURL )

View File

@@ -91,7 +91,7 @@ CLASS XbpListBox INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( nMode, pModel )
METHOD execSlot( cSlot, p )
METHOD setStyle()
@@ -120,32 +120,22 @@ CLASS XbpListBox INHERIT XbpWindow, XbpDataRef
DATA sl_hScroll
ACCESS hScroll INLINE ::sl_hScroll
ASSIGN hScroll( bBlock ) INLINE ::sl_hScroll := bBlock
DATA sl_vScroll
ACCESS vScroll INLINE ::sl_vScroll
ASSIGN vScroll( bBlock ) INLINE ::sl_vScroll := bBlock
DATA sl_itemMarked
ACCESS itemMarked INLINE ::sl_itemMarked
ASSIGN itemMarked( bBlock ) INLINE ::sl_itemMarked := bBlock
DATA sl_itemSelected
ACCESS itemSelected INLINE ::sl_itemSelected
ASSIGN itemSelected( bBlock ) INLINE ::sl_itemSelected := bBlock
DATA sl_drawItem
ACCESS drawItem INLINE ::sl_drawItem
ASSIGN drawItem( bBlock ) INLINE ::sl_drawItem := bBlock
DATA sl_measureItem
ACCESS measureItem INLINE ::sl_measureItem
ASSIGN measureItem( bBlock ) INLINE ::sl_measureItem := bBlock
DATA nCurSelected INIT 0
METHOD getCurItem() INLINE ::getItem( ::nCurSelected )
METHOD getCurItem() INLINE ::getItem( ::nCurSelected )
METHOD itemMarked( ... ) SETGET
METHOD itemSelected( ... ) SETGET
METHOD drawItem( ... ) SETGET
METHOD measureItem( ... ) SETGET
METHOD hScroll( ... ) SETGET
METHOD vScroll( ... ) SETGET
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -183,9 +173,9 @@ METHOD XbpListBox:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::connectEvent( ::pWidget, QEvent_ContextMenu, {|e| ::grabEvent( QEvent_ContextMenu, e ) } )
/* Signal-slots */
::Connect( ::pWidget, "clicked(QModelIndex)" , {|i| ::exeBlock( 1, i ) } )
::Connect( ::pWidget, "doubleClicked(QModelIndex)", {|i| ::exeBlock( 2, i ) } )
::Connect( ::pWidget, "entered(QModelIndex)" , {|i| ::exeBlock( 3, i ) } )
::Connect( ::pWidget, "clicked(QModelIndex)" , {|p| ::execSlot( "clicked(QModelIndex)" , p ) } )
::Connect( ::pWidget, "doubleClicked(QModelIndex)", {|p| ::execSlot( "doubleClicked(QModelIndex)", p ) } )
::Connect( ::pWidget, "entered(QModelIndex)" , {|p| ::execSlot( "entered(QModelIndex)" , p ) } )
::oStrList := QStringList():new( ::pWidget )
::oStrModel := QStringListModel():new( ::pWidget )
@@ -208,31 +198,26 @@ METHOD XbpListBox:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams,
IF hb_isPointer( pQtObject )
::oWidget := QListView()
::oWidget:pPtr := pQtObject
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:exeBlock( nMode, pModel )
METHOD XbpListBox:execSlot( cSlot, p )
LOCAL oModel
IF hb_isPointer( pModel )
oModel := QModelIndex():configure( pModel )
IF hb_isPointer( p )
oModel := QModelIndex():configure( p )
::nCurSelected := oModel:row()+1
::sl_editBuffer := oModel:row()+1
ENDIF
IF nMode == 1
IF hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, NIL, NIL, self )
ENDIF
ELSEIF nMode == 2
IF hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, NIL, NIL, self )
ENDIF
ELSEIF nMode == 3 // mouse cursor is on
// set the tooltip
IF cSlot == "clicked(QModelIndex)"
::itemMarked()
ELSEIF cSlot == "doubleClicked(QModelIndex)"
::itemSelected()
ELSEIF cSlot == "entered(QModelIndex)"
::oWidget:setToolTip( ::oStrList:at( ::nCurSelected - 1 ) )
ENDIF
@@ -271,6 +256,72 @@ METHOD XbpListBox:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpListBox:itemMarked( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemMarked := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:itemSelected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemSelected := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:drawItem( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbePDrawItem := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_xbePDrawItem )
eval( ::sl_xbePDrawItem, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:measureItem( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_measureItem := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_measureItem )
eval( ::sl_measureItem, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:hScroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_hScroll := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_hScroll )
eval( ::sl_hScroll, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:vScroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_vScroll := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_vScroll )
eval( ::sl_vScroll, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpListBox:setStyle()
LOCAL s, txt_:={}

View File

@@ -97,6 +97,7 @@
CLASS xbpMenuBar INHERIT xbpWindow
CLASSVAR nMenuItemID INIT 0
DATA hMenu
DATA sl_beginMenu
@@ -109,14 +110,10 @@ CLASS xbpMenuBar INHERIT xbpWindow
DATA aMenuItems INIT {}
DATA aOrgItems INIT {}
CLASSVAR nMenuItemID INIT 0
DATA nPass INIT 0
DATA caption INIT ""
DATA nItemID INIT 0
DATA aIds INIT {}
DATA className INIT "XbpMenuBar"
METHOD new( oParent, aPresParams, lVisible )
@@ -124,7 +121,7 @@ CLASS xbpMenuBar INHERIT xbpWindow
METHOD hbCreateFromQtPtr( oParent, aPresParams, lVisible, pQtObject )
METHOD configure( oParent, aPresParams, lVisible )
METHOD destroy()
METHOD exeBlock( nMenuItemID )
METHOD execSlot( cSlot, p )
METHOD delAllItems()
METHOD delItem( aItem )
@@ -132,7 +129,6 @@ CLASS xbpMenuBar INHERIT xbpWindow
METHOD addItem( aItem )
METHOD insItem( nItemIndex, aItem )
METHOD setItem( nItemIndex, aItem )
METHOD exeHovered( nMenuItemID )
METHOD checkItem( nItemIndex, lCheck )
METHOD enableItem( nItemIndex )
METHOD disableItem( nItemIndex )
@@ -141,13 +137,13 @@ CLASS xbpMenuBar INHERIT xbpWindow
METHOD isItemEnabled( nItemIndex )
METHOD selectItem( nItemIndex )
METHOD beginMenu( xParam ) SETGET
METHOD endMenu( xParam ) SETGET
METHOD itemMarked( xParam ) SETGET
METHOD itemSelected( xParam ) SETGET
METHOD drawItem( xParam ) SETGET
METHOD measureItem( xParam ) SETGET
METHOD onMenuKey( xParam ) SETGET
METHOD beginMenu( ... ) SETGET
METHOD endMenu( ... ) SETGET
METHOD itemMarked( ... ) SETGET
METHOD itemSelected( ... ) SETGET
METHOD drawItem( ... ) SETGET
METHOD measureItem( ... ) SETGET
METHOD onMenuKey( ... ) SETGET
METHOD setStyle()
METHOD numItems() INLINE len( ::aMenuItems )
@@ -307,8 +303,8 @@ METHOD xbpMenuBar:placeItem( xCaption, bAction, nStyle, nAttrb, nMode, nPos )
oAction:setShortcut( oKey )
ENDIF
::Connect( oAction, "triggered(bool)", {|| ::exeBlock( nMenuItemID ) } )
::Connect( oAction, "hovered()" , {|| ::exeHovered( nMenuItemID ) } )
::Connect( oAction, "triggered(bool)", {|| ::execSlot( "triggered(bool)", nMenuItemID ) } )
::Connect( oAction, "hovered()" , {|| ::execSlot( "hovered()" , nMenuItemID ) } )
DO CASE
CASE nAttrb == XBPMENUBAR_MIA_CHECKED
@@ -341,8 +337,8 @@ METHOD xbpMenuBar:placeItem( xCaption, bAction, nStyle, nAttrb, nMode, nPos )
oAction := xCaption
::Connect( oAction, "triggered(bool)", {|| ::exeBlock( nMenuItemID ) } )
::Connect( oAction, "hovered()" , {|| ::exeHovered( nMenuItemID ) } )
::Connect( oAction, "triggered(bool)", {|| ::execSlot( "triggered(bool)", nMenuItemID ) } )
::Connect( oAction, "hovered()" , {|| ::execSlot( "hovered()" , nMenuItemID ) } )
DO CASE
CASE nAttrb == XBPMENUBAR_MIA_CHECKED
@@ -454,39 +450,6 @@ METHOD xbpMenuBar:setItem( nItemIndex, aItem )
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:exeBlock( nMenuItemID )
LOCAL nIndex := ascan( ::aMenuItems, {|e_| e_[ 2 ] == nMenuItemID } )
IF nIndex > 0
IF hb_isBlock( ::aMenuItems[ nIndex,4 ] )
eval( ::aMenuItems[ nIndex,4 ] )
ELSE
IF hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, nIndex, NIL, Self )
ENDIF
ENDIF
ENDIF
RETURN nil
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:exeHovered( nMenuItemID )
LOCAL nIndex
IF !empty( nMenuItemID )
nIndex := ascan( ::aMenuItems, {|e_| iif( hb_isNumeric( e_[ 2 ] ), e_[ 2 ] == nMenuItemID, .f. ) } )
IF nIndex > 0
IF hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, nIndex, NIL, Self )
ENDIF
ENDIF
ENDIF
RETURN nil
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:checkItem( nItemIndex, lCheck )
LOCAL lChecked
@@ -568,79 +531,104 @@ METHOD xbpMenuBar:selectItem( nItemIndex )
/* Callback Methods */
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:beginMenu( xParam )
METHOD xbpMenuBar:execSlot( cSlot, p )
LOCAL nIndex
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_beginMenu := xParam
RETURN NIL
endif
IF cSlot == "triggered(bool)"
if ( nIndex := ascan( ::aMenuItems, {|e_| e_[ 2 ] == p } ) ) > 0
IF hb_isBlock( ::aMenuItems[ nIndex,4 ] )
eval( ::aMenuItems[ nIndex,4 ] )
ELSE
::itemSelected( nIndex )
ENDIF
ENDIF
ELSEIF cSlot == "hovered()"
IF !empty( p )
IF ( nIndex := ascan( ::aMenuItems, {|e_| iif( hb_isNumeric( e_[ 2 ] ), e_[ 2 ] == p, .f. ) } ) ) > 0
::itemMarked( nIndex )
ENDIF
ENDIF
ENDIF
RETURN nil
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:beginMenu( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_beginMenu := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_beginMenu )
eval( ::sl_beginMenu, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:endMenu( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_endMenu := xParam
RETURN NIL
endif
METHOD XbpMenuBar:endMenu( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_endMenu := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_endMenu )
eval( ::sl_endMenu, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:itemMarked( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_itemMarked := xParam
RETURN NIL
endif
METHOD XbpMenuBar:itemMarked( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemMarked := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, a_[ 1 ], NIL, Self )
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
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
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:itemSelected( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_itemSelected := xParam
RETURN NIL
endif
METHOD XbpMenuBar:measureItem( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_measureItem := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_measureItem )
eval( ::sl_measureItem, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:drawItem( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_drawItem := xParam
RETURN NIL
endif
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:measureItem( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_measureItem := xParam
RETURN NIL
endif
RETURN Self
/*----------------------------------------------------------------------*/
METHOD xbpMenuBar:onMenuKey( xParam )
if hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_onMenuKey := xParam
RETURN NIL
endif
METHOD XbpMenuBar:onMenuKey( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_onMenuKey := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_onMenuKey )
eval( ::sl_onMenuKey, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -90,7 +90,7 @@ CLASS XbpMLE INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock()
METHOD execSlot( cSlot, p )
METHOD setStyle()
METHOD clear() VIRTUAL
@@ -109,23 +109,16 @@ CLASS XbpMLE INHERIT XbpWindow, XbpDataRef
METHOD pos() VIRTUAL
DATA sl_undo INIT .T.
ACCESS undo INLINE IF( ::sl_undo, NIL, NIL )
ASSIGN undo() INLINE ::sl_undo := .t.
METHOD setEditable( lYes ) INLINE ::xDummy := ::oWidget:readOnly(), ;
::oWidget:setReadOnly( !lYes ), ::xDummy
METHOD setWrap( lWrap ) INLINE ::xDummy := ::oWidget:lineWrapMode(),;
::oWidget:setLineWrapMode( IF( lWrap,1,0 ) ),;
::xDummy == 1
DATA sl_hScroll
ACCESS hScroll INLINE ::sl_hScroll
ASSIGN hScroll( bBlock ) INLINE ::sl_hScroll := bBlock
DATA sl_vScroll
ACCESS vScroll INLINE ::sl_vScroll
ASSIGN vScroll( bBlock ) INLINE ::sl_vScroll := bBlock
METHOD undo( ... ) SETGET
METHOD hScroll( ... ) SETGET
METHOD vScroll( ... ) SETGET
METHOD setEditable( lYes )
METHOD setWrap( lWrap )
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -206,12 +199,62 @@ METHOD XbpMLE:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVis
/*----------------------------------------------------------------------*/
METHOD XbpMLE:exeBlock()
METHOD XbpMLE:execSlot( cSlot, p )
HB_SYMBOL_UNUSED( cSlot )
HB_SYMBOL_UNUSED( p )
RETURN .t.
/*----------------------------------------------------------------------*/
METHOD XbpMLE:hScroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_hScroll := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_hScroll )
eval( ::sl_hScroll, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpMLE:vScroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_vScroll := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_vScroll )
eval( ::sl_vScroll, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpMLE:undo( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_undo := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_undo )
eval( ::sl_undo, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpMLE:setWrap( lWrap )
::xDummy := ::oWidget:lineWrapMode()
::oWidget:setLineWrapMode( iif( lWrap, 1, 0 ) )
RETURN ::xDummy == 1
/*----------------------------------------------------------------------*/
METHOD XbpMLE:setEditable( lYes )
::xDummy := ::oWidget:readOnly()
::oWidget:setReadOnly( !lYes )
RETURN ! ::xDummy
/*----------------------------------------------------------------------*/
METHOD XbpMLE:handleEvent( nEvent, mp1, mp2 )
HB_SYMBOL_UNUSED( nEvent )
@@ -235,9 +278,6 @@ METHOD XbpMLE:setStyle()
aadd( txt_, ' ' )
aadd( txt_, ' QTextEdit { ' )
//aadd( txt_, ' background-color: white; ' )
//aadd( txt_, ' background-image: url(new.png); ' )
//aadd( txt_, ' background-attachment: scroll; ' )
aadd( txt_, ' background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, ' )
aadd( txt_, ' stop:0 white, stop:1 darkgray); ' )
aadd( txt_, ' } ' )

View File

@@ -85,6 +85,8 @@ CLASS XbpPushButton INHERIT XbpWindow
DATA drawMode INIT XBP_DRAW_NORMAL
DATA default INIT .F.
DATA cancel INIT .F.
DATA sl_draw
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
@@ -92,15 +94,14 @@ CLASS XbpPushButton INHERIT XbpWindow
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( nMode, p )
METHOD execSlot( cSlot, p )
METHOD setStyle() VIRTUAL
METHOD setFocus()
METHOD setCaption( xCaption, cDll )
METHOD activate( xParam ) SETGET
METHOD draw( xParam ) SETGET
METHOD activate( ... ) SETGET
METHOD draw( ... ) SETGET
ENDCLASS
@@ -132,8 +133,8 @@ METHOD XbpPushButton:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible
::oWidget:setDefault( .t. )
ENDIF
::Connect( ::pWidget, "clicked()", {|| ::exeBlock( 1 ) } )
::Connect( ::pWidget, "pressed()", {|| ::exeBlock( 1 ) } )
::Connect( ::pWidget, "clicked()", {|| ::execSlot( "clicked()" ) } )
::Connect( ::pWidget, "pressed()", {|| ::execSlot( "pressed()" ) } )
::oParent:AddChild( SELF )
RETURN Self
@@ -163,21 +164,19 @@ METHOD XbpPushButton:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParam
ENDIF
::Connect( ::pWidget, "clicked()", {|| ::exeBlock() } )
::Connect( ::pWidget, "clicked()", {|| ::execSlot( "clicked()" ) } )
::addAsChild()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpPushButton:exeBlock( nMode, p )
METHOD XbpPushButton:execSlot( cSlot, p )
DO CASE
CASE nMode == 1
IF hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, NIL, NIL, self )
ENDIF
CASE nMode == 201 /* QEvent_KeyPressed */
CASE cSlot == "clicked()" .OR. cSlot == "pressed()"
::activate()
CASE cSlot == "keyPressed()"
IF XbpQKeyEventToAppEvent( p ) == xbeK_ENTER
::oWidget:click()
ENDIF
@@ -242,22 +241,24 @@ METHOD XbpPushButton:setCaption( xCaption, cDll )
/*----------------------------------------------------------------------*/
METHOD XbpPushButton:activate( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_lbClick := xParam
ENDIF
METHOD XbpPushButton:activate( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpPushButton:draw( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_paint := xParam
ENDIF
METHOD XbpPushButton:draw( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_draw := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_draw )
eval( ::sl_draw, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -86,12 +86,11 @@ CLASS XbpRadioButton INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock()
METHOD execSlot( cSlot, p )
METHOD setCaption( xCaption )
ACCESS selected INLINE ::sl_lbClick
ASSIGN selected( bBlock ) INLINE ::sl_lbClick := bBlock
METHOD selected( ... ) SETGET
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -110,7 +109,7 @@ METHOD XbpRadioButton:create( oParent, oOwner, aPos, aSize, aPresParams, lVisibl
::oWidget := QRadioButton():New( ::oParent:oWidget )
::connect( ::pWidget, "clicked()", {|| ::exeBlock() } )
::connect( ::pWidget, "clicked()", {|| ::execSlot( "clicked()" ) } )
::setPosAndSize()
IF ::visible
@@ -134,20 +133,21 @@ METHOD XbpRadioButton:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresPara
IF hb_isPointer( pQtObject )
::oWidget := QRadioButton()
::oWidget:pPtr := pQtObject
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpRadioButton:exeBlock()
METHOD XbpRadioButton:execSlot( cSlot, p )
::sl_editBuffer := .t.
IF hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, ::sl_editBuffer, NIL, self )
ENDIF
HB_SYMBOL_UNUSED( p )
IF cSlot == "clicked()"
::sl_editBuffer := .t.
::selected( ::sl_editBuffer )
ENDIF
RETURN nil
/*----------------------------------------------------------------------*/
@@ -188,3 +188,14 @@ METHOD XbpRadioButton:setCaption( xCaption )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpRadioButton:selected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -82,7 +82,7 @@ CLASS XbpRtf INHERIT XbpWindow
METHOD configure()
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 ) VIRTUAL
METHOD exeBlock( nEvent, p1 )
METHOD execSlot( cSlot, p )
METHOD setStyle() VIRTUAL
DATA appearance INIT XBP_APPEARANCE_3D
@@ -171,13 +171,13 @@ METHOD XbpRtf:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oWidget := QTextEdit():new( ::pParent )
* ::connect( ::pWidget, "copyAvailable(bool)" , {|p| ::exeBlock( 1, p ) } )
::connect( ::pWidget, "currentCharFormatChanged(QTextCharFormat)", {|p| ::exeBlock( 2, p ) } )
::connect( ::pWidget, "cursorPositionChanged()" , {|p| ::exeBlock( 3, p ) } )
::connect( ::pWidget, "redoAvailable(bool)" , {|p| ::exeBlock( 4, p ) } )
::connect( ::pWidget, "undoAvailable(bool)" , {|p| ::exeBlock( 5, p ) } )
::connect( ::pWidget, "textChanged()" , {|p| ::exeBlock( 6, p ) } )
::connect( ::pWidget, "selectionChanged()" , {|p| ::exeBlock( 7, p ) } )
* ::connect( ::oWidget, "copyAvailable(bool)" , {|p| ::execSlot( "copyAvailable(bool)" , p ) } )
::connect( ::oWidget, "currentCharFormatChanged(QTextCharFormat)", {|p| ::execSlot( "currentCharFormatChanged(QTextCharFormat)", p ) } )
::connect( ::oWidget, "cursorPositionChanged()" , {|p| ::execSlot( "cursorPositionChanged()", p ) } )
::connect( ::oWidget, "redoAvailable(bool)" , {|p| ::execSlot( "redoAvailable(bool)" , p ) } )
::connect( ::oWidget, "undoAvailable(bool)" , {|p| ::execSlot( "undoAvailable(bool)" , p ) } )
::connect( ::oWidget, "textChanged()" , {|p| ::execSlot( "textChanged()" , p ) } )
::connect( ::oWidget, "selectionChanged()" , {|p| ::execSlot( "selectionChanged()" , p ) } )
::setPosAndSize()
IF ::visible
@@ -189,7 +189,6 @@ METHOD XbpRtf:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::oTextCursor:pPtr := ::oWidget:textCursor()
::oTextCharFormat:pPtr := ::oTextCursor:charFormat()
RETURN Self
/*----------------------------------------------------------------------*/
@@ -208,23 +207,23 @@ METHOD XbpRtf:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVis
/*----------------------------------------------------------------------*/
METHOD XbpRtf:exeBlock( nEvent, p1 )
METHOD XbpRtf:execSlot( cSlot, p )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nEvent == 1
CASE nEvent == 2
CASE cSlot == "copyAvailable(bool)"
CASE cSlot == "currentCharFormatChanged(QTextCharFormat)"
CASE nEvent == 3
CASE cSlot == "cursorPositionChanged()"
::oTextCursor:configure( ::oWidget:textCursor() )
::oCurCursor := ::oTextCursor
CASE nEvent == 4
CASE nEvent == 5
CASE nEvent == 6 /* Xbase++ Implements */
::changed := .t. // .f. only at save
CASE cSlot == "redoAvailable(bool)"
CASE cSlot == "undoAvailable(bool)"
CASE cSlot == "textChanged()" /* Xbase++ Implements */
::changed := .t. /* .f. only at save */
::change()
CASE nEvent == 7 /* Xbase++ Implements */
CASE cSlot == "selectionChanged()" /* Xbase++ Implements */
::oTextCursor:configure( ::oWidget:textCursor() )
::oCurCursor := ::oTextCursor
::selChange()

View File

@@ -89,10 +89,10 @@ CLASS XbpScrollBar INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD scroll( xParam ) SETGET
METHOD scroll( ... ) SETGET
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( nAction )
METHOD execSlot( cSlot, p )
METHOD setRange( aRange )
METHOD setScrollBoxSize( nUnits )
@@ -117,7 +117,7 @@ METHOD XbpScrollBar:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible
::oWidget:setOrientation( IF( ::type == XBPSCROLL_VERTICAL, 2, 1 ) )
::oWidget:setTracking( ::autoTrack )
::connect( ::pWidget, "actionTriggered(int)", {|i| ::exeBlock( i ) } )
::connect( ::pWidget, "actionTriggered(int)", {|i| ::execSlot( "actionTriggered(int)", i ) } )
::setPosAndSize()
::setRange( ::range )
@@ -145,14 +145,16 @@ METHOD XbpScrollBar:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams
/*----------------------------------------------------------------------*/
METHOD XbpScrollBar:exeBlock( nAction )
METHOD XbpScrollBar:execSlot( cSlot, p )
LOCAL nCommand
HB_SYMBOL_UNUSED( cSlot )
IF !hb_isBlock( ::sl_xbeSB_Scroll )
RETURN NIL
ENDIF
SWITCH nAction
SWITCH p
CASE QAbstractSlider_SliderNoAction
RETURN NIL
CASE QAbstractSlider_SliderSingleStepAdd
@@ -179,8 +181,7 @@ METHOD XbpScrollBar:exeBlock( nAction )
ENDSWITCH
::sl_editBuffer := ::oWidget:value()
eval( ::sl_xbeSB_Scroll, { ::sl_editBuffer, nCommand }, NIL, self )
::scroll( { ::sl_editBuffer, nCommand } )
RETURN NIL
@@ -204,12 +205,13 @@ METHOD XbpScrollBar:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpScrollBar:scroll( xParam )
IF hb_isBlock( xParam )
::sl_xbeSB_Scroll := xParam
ENDIF
METHOD XbpScrollBar:scroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbeSB_Scroll := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_xbeSB_Scroll )
eval( ::sl_xbeSB_Scroll, a_[ 1 ], NIL, Self )
ENDIF
RETURN self
/*----------------------------------------------------------------------*/

View File

@@ -92,7 +92,7 @@ CLASS XbpSLE INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( nMsg, p1, p2 )
METHOD execSlot( cSlot, p, p2 )
METHOD clear() INLINE ::oWidget:clear()
METHOD copyMarked() INLINE ::oWidget:copy()
@@ -107,18 +107,13 @@ CLASS XbpSLE INHERIT XbpWindow, XbpDataRef
METHOD setInsertMode( lInsertMode ) VIRTUAL
DATA sl_hScroll
ACCESS hScroll INLINE ::sl_hScroll
ASSIGN hScroll( bBlock ) INLINE ::sl_hScroll := bBlock
DATA sl_typeOut
ACCESS typeOut INLINE ::sl_typeOut
ASSIGN typeOut( bBlock ) INLINE ::sl_typeOut := bBlock
/* Harbour Extension */
DATA sl_hScroll
DATA sl_returnPressed
ACCESS returnPressed INLINE ::sl_returnPressed
ASSIGN returnPressed( bBlock ) INLINE ::sl_returnPressed := bBlock
METHOD typeOut( ... ) SETGET
METHOD hScroll( ... ) SETGET
METHOD returnPressed( ... ) SETGET
ENDCLASS
@@ -132,6 +127,19 @@ METHOD XbpSLE:new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
/*----------------------------------------------------------------------*/
METHOD XbpSLE:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject )
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
IF hb_isPointer( pQtObject )
::oWidget := QLineEdit()
::oWidget:pPtr := pQtObject
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSLE:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
LOCAL es_:= { Qt_AlignLeft, Qt_AlignRight, Qt_AlignHCenter }
@@ -155,16 +163,16 @@ METHOD XbpSLE:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
#if 0
::oWidget:installEventFilter( ::pEvents )
::connectEvent( ::pWidget, QEvent_FocusIn , {|e| ::exeBlock( 7, e ) } )
::connectEvent( ::pWidget, QEvent_FocusOut, {|e| ::exeBlock( 8, e ) } )
::connectEvent( ::pWidget, QEvent_FocusIn , {|e| ::execSlot( "QEvent_FocusIn" , e ) } )
::connectEvent( ::pWidget, QEvent_FocusOut, {|e| ::execSlot( "QEvent_FocusOut", e ) } )
#endif
::connect( ::pWidget, "cursorPositionChanged(int,int)" , {|i,ii| ::exeBlock( 1, i, ii ) } )
* ::connect( ::pWidget, "editingFinished()" , {| | ::exeBlock( 2 ) } )
::connect( ::pWidget, "returnPressed()" , {| | ::exeBlock( 3 ) } )
* ::connect( ::pWidget, "selectionChanged()" , {| | ::exeBlock( 4 ) } )
::connect( ::pWidget, "textChanged(QString)" , {|s | ::exeBlock( 5, s ) } )
::connect( ::pWidget, "textEdited(QString)" , {|s | ::exeBlock( 6, s ) } )
::connect( ::oWidget, "cursorPositionChanged(int,int)" , {|i,ii| ::execSlot( "cursorPositionChanged(int,int)", i, ii ) } )
* ::connect( ::oWidget, "editingFinished()" , {| | ::execSlot( "editingFinished()" ) } )
::connect( ::oWidget, "returnPressed()" , {| | ::execSlot( "returnPressed()" ) } )
* ::connect( ::oWidget, "selectionChanged()" , {| | ::execSlot( "selectionChanged()" ) } )
::connect( ::oWidget, "textChanged(QString)" , {|s | ::execSlot( "textChanged(QString)", s ) } )
::connect( ::oWidget, "textEdited(QString)" , {|s | ::execSlot( "textEdited(QString)" , s ) } )
::setPosAndSize()
IF ::visible
@@ -180,71 +188,40 @@ METHOD XbpSLE:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
/*----------------------------------------------------------------------*/
METHOD XbpSLE:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject )
METHOD XbpSLE:execSlot( cSlot, p, p2 )
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
IF hb_isPointer( pQtObject )
::oWidget := QLineEdit()
::oWidget:pPtr := pQtObject
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSLE:exeBlock( nMsg, p1, p2 )
LOCAL lRet := .F.
//HB_TRACE( HB_TR_DEBUG, 'XbpSLE: '+hb_ntos( nMsg ) )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nMsg == 1 // "cursorPositionChanged(int,int)"
IF hb_isBlock( ::sl_hScroll )
eval( ::sl_hScroll, NIL, NIL, self )
ENDIF
CASE cSlot == "cursorPositionChanged(int,int)"
::hScroll()
IF p2 == ::bufferLength
IF hb_isBlock( ::sl_typeOut )
eval( ::sl_typeOut, NIL, NIL, Self )
ENDIF
::typeOut()
ENDIF
CASE nMsg == 2 // "editingFinished()"
CASE cSlot == "editingFinished()"
CASE nMsg == 3 // "returnPressed()"
CASE cSlot == "returnPressed()"
::sl_editBuffer := ::oWidget:text()
#if 0
PostAppEvent( xbeP_Keyboard, xbeK_TAB, , Self )
#else
IF hb_isBlock( ::sl_returnPressed )
eval( ::sl_returnPressed, NIL, NIL, Self )
ENDIF
#endif
::returnPressed()
CASE nMsg == 4 // "selectionChanged()"
CASE cSlot == "selectionChanged()"
CASE nMsg == 5 // "textEdited(QString)"
CASE cSlot == "textChanged(QString)"
::changed := .t.
CASE nMsg == 6 // "textEdited(QString)"
CASE cSlot == "textEdited(QString)"
::changed := .t.
CASE nMsg == 7 // QEvent_FocusIn
IF hb_isBlock( ::sl_setInputFocus )
eval( ::sl_setInputFocus, NIL, NIL, Self )
RETURN .T.
ENDIF
CASE cSlot == "QEvent_FocusIn"
::setInputFocus()
CASE nMsg == 8 // QEvent_FocusOut
IF hb_isBlock( ::sl_killInputFocus )
eval( ::sl_killInputFocus, NIL, NIL, Self )
ENDIF
CASE cSlot == "QEvent_FocusOut"
::killInputFocus()
ENDCASE
RETURN lRet
RETURN Self
/*----------------------------------------------------------------------*/
@@ -265,3 +242,36 @@ METHOD XbpSLE:destroy()
RETURN NIL
/*----------------------------------------------------------------------*/
METHOD XbpSLE:returnPressed( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_returnPressed := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_returnPressed )
eval( ::sl_returnPressed, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSLE:hScroll( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_hScroll := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_hScroll )
eval( ::sl_hScroll, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSLE:typeOut( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_typeOut := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_typeOut )
eval( ::sl_typeOut, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -78,7 +78,6 @@ CLASS XbpSpinButton INHERIT XbpWindow, XbpDataRef
DATA fastSpin INIT .f.
DATA master
DATA padWithZero INIT .f.
DATA align INIT XBPSLE_LEFT
DATA autoKeyboard INIT .T.
DATA autoSize INIT .F.
@@ -87,16 +86,17 @@ CLASS XbpSpinButton INHERIT XbpWindow, XbpDataRef
DATA bufferLength INIT 32
DATA editable INIT .T.
DATA unReadable INIT .F.
DATA changed INIT .F.
DATA nOldValue INIT 0
METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) VIRTUAL
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( nMsg, p1, p2 )
METHOD execSlot( cSlot, p )
METHOD clear() INLINE ::oWidget:clear()
METHOD copyMarked() INLINE ::oWidget:copy()
@@ -114,16 +114,12 @@ CLASS XbpSpinButton INHERIT XbpWindow, XbpDataRef
METHOD setNumLimits( nMin, nMax ) INLINE ::oWidget:setRange( nMin, nMax )
DATA sl_xbeSpinDown
ACCESS down INLINE ::sl_hScroll
ASSIGN down( bBlock ) INLINE ::sl_hScroll := bBlock
DATA sl_xbeSpinUp
ACCESS up INLINE ::sl_xbeSpinUp
ASSIGN up( bBlock ) INLINE ::sl_xbeSpinUp := bBlock
DATA sl_xbeSpinEndSpin
ACCESS endSpin INLINE ::sl_xbeSpinEndSpin
ASSIGN endSpin( bBlock ) INLINE ::sl_xbeSpinEndSpin := bBlock
METHOD down( ... ) SETGET
METHOD up( ... ) SETGET
METHOD endSpin( ... ) SETGET
ENDCLASS
@@ -144,26 +140,21 @@ METHOD XbpSpinButton:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible
::oWidget := QSpinBox():new( ::pParent )
::oWidget:setKeyboardTracking( .t. )
IF ::fastSpin
::oWidget:setAccelerated( .t. )
ENDIF
::oWidget:setReadOnly( ! ::editable )
::oWidget:setFrame( ::border )
::oWidget:setAlignment( es_[ ::align ] )
#if 0 ////////////////////////////////////
#if 0
::oWidget:installEventFilter( ::pEvents )
HB_TRACE( HB_TR_DEBUG, "XbpSpinButton:create 2" )
::connectEvent( ::pWidget, QEvent_FocusIn , {|e| ::exeBlock( 7, e ) } )
::connectEvent( ::pWidget, QEvent_FocusOut, {|e| ::exeBlock( 8, e ) } )
::connectEvent( ::pWidget, QEvent_KeyPress, {|e| ::exeBlock( 9, e ) } )
::connectEvent( ::oWidget, QEvent_FocusIn , {|| ::execSlot( "QEvent_FocusIn" ) } )
::connectEvent( ::oWidget, QEvent_FocusOut, {|| ::execSlot( "QEvent_FocusOut" ) } )
::connectEvent( ::oWidget, QEvent_KeyPress, {|| ::execSlot( "QEvent_KeyPress" ) } )
#endif
::connect( ::pWidget, "valueChanged(int)" , {|| ::sl_editBuffer := ::oWidget:value() } )
::connect( ::oWidget, "valueChanged(int)" , {|i| ::execSlot( "valueChanged(int)", i ) } )
::setPosAndSize()
IF ::visible
@@ -171,11 +162,7 @@ HB_TRACE( HB_TR_DEBUG, "XbpSpinButton:create 2" )
ENDIF
::setData()
#if 0
IF hb_isBlock( ::datalink )
eval( ::datalink )
ENDIF
#endif
::oParent:addChild( Self )
RETURN Self
@@ -188,35 +175,34 @@ METHOD XbpSpinButton:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParam
IF hb_isPointer( pQtObject )
::oWidget := QSpinBox()
::oWidget:pPtr := pQtObject
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSpinButton:exeBlock( nMsg, p1, p2 )
METHOD XbpSpinButton:execSlot( cSlot, p )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p2 )
::sl_editBuffer := ::oWidget:value()
HB_SYMBOL_UNUSED( p )
DO CASE
CASE nMsg == 9 // valueChanged
IF hb_isBlock( ::sl_keyboard )
eval( ::sl_keyboard, NIL, NIL, self )
ENDIF
CASE cSlot == "valueChanged(int)"
::sl_editBuffer := ::oWidget:value()
IF p < ::nOldValue
::down()
ELSEIF p > ::nOldValue
::up()
ENDIF
::nOldValue := ::sl_editBuffer
CASE cSlot == "QEvent_KeyPress"
::keyboard()
CASE nMsg == 7 // QEvent_FocusIn
IF hb_isBlock( ::sl_setInputFocus )
eval( ::sl_setInputFocus, NIL, NIL, Self )
ENDIF
CASE cSlot == "QEvent_FocusIn"
::setInputFocus()
CASE nMsg == 8 // QEvent_FocusOut
IF hb_isBlock( ::sl_killInputFocus )
eval( ::sl_killInputFocus, NIL, NIL, Self )
ENDIF
CASE cSlot == "QEvent_FocusOut"
::killInputFocus()
ENDCASE
@@ -241,3 +227,37 @@ METHOD XbpSpinButton:destroy()
RETURN NIL
/*----------------------------------------------------------------------*/
METHOD XbpSpinButton:down( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbeSpinDown := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_xbeSpinDown )
eval( ::sl_xbeSpinDown, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSpinButton:up( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbeSpinUp := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_xbeSpinUp )
eval( ::sl_xbeSpinUp, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpSpinButton:endSpin( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_xbeSpinEndSpin := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_xbeSpinEndSpin )
eval( ::sl_xbeSpinEndSpin, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -86,14 +86,15 @@ CLASS XbpStatusBar INHERIT XbpWindow
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock()
METHOD execSlot( cSlot, p )
METHOD addItem( cCaption, xImage, cDLL, nStyle, cKey, nMode )
METHOD delItem( nItemORcKey )
METHOD getItem( nItemORcKey )
METHOD clear()
METHOD panelClick( xParam ) SETGET
METHOD panelDblClick( xParam ) SETGET
METHOD panelClick( ... ) SETGET
METHOD panelDblClick( ... ) SETGET
METHOD numItems() INLINE Len( ::aItems )
@@ -152,9 +153,12 @@ METHOD XbpStatusBar:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams
/*----------------------------------------------------------------------*/
METHOD XbpStatusBar:exeBlock()
METHOD XbpStatusBar:execSlot( cSlot, p )
RETURN nil
HB_SYMBOL_UNUSED( cSlot )
HB_SYMBOL_UNUSED( p )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -273,22 +277,24 @@ METHOD XbpStatusBar:clear()
/*----------------------------------------------------------------------*/
METHOD XbpStatusBar:panelClick( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_lbClick := xParam
ENDIF
METHOD XbpStatusBar:panelClick( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpStatusBar:panelDblClick( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_lbDblClick := xParam
ENDIF
METHOD XbpStatusBar:panelDblClick( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbDblClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbDblClick )
eval( ::sl_lbDblClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -90,16 +90,16 @@ CLASS XbpTabPage INHERIT XbpWindow
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD exeBlock( iIndex )
METHOD execSlot( cSlot, p )
METHOD Minimize()
METHOD Maximize()
DATA sl_tabActivate
METHOD tabActivate( xParam ) SETGET
METHOD tabActivate( ... ) SETGET
/* Harbour extension */
DATA sl_closeRequested
METHOD closeRequested( xParam ) SETGET
METHOD closeRequested( ... ) SETGET
ENDCLASS
@@ -185,8 +185,11 @@ METHOD XbpTabPage:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpTabPage:exeBlock( iIndex )
METHOD XbpTabPage:execSlot( cSlot, p )
LOCAL iIndex := p
HB_SYMBOL_UNUSED( cSlot )
IF iIndex >= 0 .and. len( ::oParent:aTabs ) > 0
IF hb_isBlock( ::oParent:aTabs[ iIndex+1 ]:sl_tabActivate )
eval( ::oParent:aTabs[ iIndex+1 ]:sl_tabActivate, NIL, NIL, ::oParent:aTabs[ iIndex+1 ] )
@@ -206,22 +209,24 @@ METHOD XbpTabPage:handleEvent( nEvent, mp1, mp2 )
/*----------------------------------------------------------------------*/
METHOD XbpTabPage:tabActivate( xParam )
IF hb_isBlock( xParam )
::sl_tabActivate := xParam
ENDIF
METHOD XbpTabPage:tabActivate( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_tabActivate := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_tabActivate )
eval( ::sl_tabActivate, NIL, NIL, Self )
ENDIF
RETURN self
/*----------------------------------------------------------------------*/
METHOD XbpTabPage:closeRequested( xParam )
IF hb_isBlock( xParam )
::sl_closeRequested := xParam
ENDIF
METHOD XbpTabPage:closeRequested( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_closeRequested := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_closeRequested )
eval( ::sl_closeRequested, NIL, NIL, Self )
ENDIF
RETURN self
/*----------------------------------------------------------------------*/
@@ -255,7 +260,7 @@ CLASS XbpTabWidget INHERIT XbpWindow
METHOD hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject ) VIRTUAL
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD exeBlock( nMode, iIndex )
METHOD execSlot( cSlot, p )
ENDCLASS
@@ -275,8 +280,8 @@ METHOD XbpTabWidget:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible
::oWidget := QTabWidget():new( ::pParent )
::Connect( ::pWidget, "currentChanged(int)" , {|i| ::exeBlock( 1, i ) } )
::Connect( ::pWidget, "tabCloseRequested(int)" , {|i| ::exeBlock( 2, i ) } )
::Connect( ::pWidget, "currentChanged(int)" , {|i| ::execSlot( "currentChanged(int)" , i ) } )
::Connect( ::pWidget, "tabCloseRequested(int)" , {|i| ::execSlot( "tabCloseRequested(int)", i ) } )
::setPosAndSize()
IF ::visible
@@ -304,8 +309,9 @@ METHOD XbpTabWidget:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpTabWidget:exeBlock( nMode, iIndex )
METHOD XbpTabWidget:execSlot( cSlot, p )
LOCAL qTab, nIndex, oTab
LOCAL iIndex := p
IF !empty( ::aChildren ) .and. iIndex >= 0 .and. iIndex < len( ::aChildren )
qTab := ::oWidget:widget( iIndex )
@@ -314,17 +320,11 @@ METHOD XbpTabWidget:exeBlock( nMode, iIndex )
oTab := ::aChildren[ nIndex ]
DO CASE
CASE nMode == 1
//HB_TRACE( HB_TR_DEBUG, "Tab Index Changed", nIndex )
IF hb_isBlock( oTab:sl_tabActivate )
eval( oTab:sl_tabActivate, NIL, NIL, oTab )
ENDIF
CASE cSlot == "currentChanged(int)"
oTab:tabActivate()
CASE nMode == 2
//HB_TRACE( HB_TR_DEBUG, "Tab Close Requested", nIndex )
IF hb_isBlock( oTab:sl_closeRequested )
eval( oTab:sl_closeRequested, NIL, NIL, oTab )
ENDIF
CASE cSlot == "tabCloseRequested(int)"
oTab:closeRequested()
ENDCASE
ENDIF

View File

@@ -106,7 +106,7 @@ CLASS XbpToolBar INHERIT XbpWindow
METHOD hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams, lVisible, pQtObject )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD exeBlock( oBtn )
METHOD execSlot( cSlot, p )
METHOD addItem( cCaption, xImage, xDisabledImage, xHotImage, cDLL, nStyle, cKey, nMapRGB )
METHOD delItem()
@@ -119,10 +119,10 @@ CLASS XbpToolBar INHERIT XbpWindow
METHOD setPosAndSize()
METHOD setSize()
METHOD buttonClick( xParam ) SETGET
METHOD change( xParam ) SETGET
METHOD buttonMenuClick( xParam ) SETGET
METHOD buttonDropDown( xParam ) SETGET
METHOD buttonClick( ... ) SETGET
METHOD change( ... ) SETGET
METHOD buttonMenuClick( ... ) SETGET
METHOD buttonDropDown( ... ) SETGET
METHOD sendToolbarMessage()
METHOD setStyle()
@@ -278,7 +278,7 @@ METHOD XbpToolbar:addItem( cCaption, xImage, xDisabledImage, xHotImage, cDLL, nS
ENDIF
/* Attach codeblock to be triggered */
::Connect( oBtn:oAction, "triggered(bool)", {|| ::exeBlock( oBtn ) } )
::Connect( oBtn:oAction, "triggered(bool)", {|| ::execSlot( "triggered(bool)", oBtn ) } )
/* Attach Action with Toolbar */
::oWidget:addAction( oBtn:oAction )
@@ -291,12 +291,12 @@ METHOD XbpToolbar:addItem( cCaption, xImage, xDisabledImage, xHotImage, cDLL, nS
/*----------------------------------------------------------------------*/
METHOD XbpToolbar:exeBlock( oBtn )
IF hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, oBtn, NIL, self )
ENDIF
METHOD XbpToolbar:execSlot( cSlot, p )
IF cSlot == "triggered(bool)"
::buttonClick( p )
ENDIF
RETURN NIL
/*----------------------------------------------------------------------*/
@@ -357,42 +357,46 @@ METHOD XbpToolbar:setSize()
/*----------------------------------------------------------------------*/
METHOD XbpToolbar:buttonClick( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_lbClick := xParam
ENDIF
METHOD XbpToolbar:buttonClick( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_lbClick := a_[ 1 ]
ELSEIF len( a_ ) >= 1 .AND. hb_isBlock( ::sl_lbClick )
eval( ::sl_lbClick, a_[ 1 ], NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpToolbar:change( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_change := xParam
ENDIF
METHOD XbpToolbar:change( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_change := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_change )
eval( ::sl_change, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpToolbar:buttonMenuClick( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_buttonMenuClick := xParam
ENDIF
METHOD XbpToolbar:buttonMenuClick( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_buttonMenuClick := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_buttonMenuClick )
eval( ::sl_buttonMenuClick, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpToolbar:buttonDropDown( xParam )
IF hb_isBlock( xParam ) .or. hb_isNil( xParam )
::sl_buttonDropDown := xParam
ENDIF
METHOD XbpToolbar:buttonDropDown( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_buttonDropDown := a_[ 1 ]
ELSEIF len( a_ ) >= 0 .AND. hb_isBlock( ::sl_buttonDropDown )
eval( ::sl_buttonDropDown, NIL, NIL, Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -78,7 +78,6 @@ CLASS XbpTreeView INHERIT XbpWindow, XbpDataRef
DATA alwaysShowSelection INIT .F.
DATA hasButtons INIT .F.
DATA hasLines INIT .F.
DATA aItems INIT {}
DATA oRootItem
@@ -90,40 +89,32 @@ CLASS XbpTreeView INHERIT XbpWindow, XbpDataRef
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD ExeBlock( nMsg, p1, p2 )
METHOD execSlot( cSlot, p )
METHOD setStyle()
METHOD itemFromPos( aPos )
DATA sl_itemCollapsed
ACCESS itemCollapsed INLINE ::sl_itemCollapsed
ASSIGN itemCollapsed( bBlock ) INLINE ::sl_itemCollapsed := bBlock
DATA sl_itemExpanded
ACCESS itemExpanded INLINE ::sl_itemExpanded
ASSIGN itemExpanded( bBlock ) INLINE ::sl_itemExpanded := bBlock
DATA sl_itemMarked
ACCESS itemMarked INLINE ::sl_itemMarked
ASSIGN itemMarked( bBlock ) INLINE ::sl_itemMarked := bBlock
DATA sl_itemSelected
DATA oItemSelected
DATA sl_itemSelected
ACCESS itemSelected INLINE ::sl_itemSelected
ASSIGN itemSelected( bBlock ) INLINE ::sl_itemSelected := bBlock
METHOD itemCollapsed( ... ) SETGET
METHOD itemExpanded( ... ) SETGET
METHOD itemMarked( ... ) SETGET
METHOD itemSelected( ... ) SETGET
DATA hParentSelected
DATA hItemSelected
DATA textParentSelected INIT ""
DATA textItemSelected INIT ""
DATA textParentSelected INIT ""
DATA textItemSelected INIT ""
#if 0
METHOD setColorFG( nRGB ) INLINE WVG_TreeView_SetTextColor( ::hWnd, nRGB )
METHOD setColorBG( nRGB ) INLINE WVG_TreeView_SetBkColor( ::hWnd, nRGB )
METHOD setColorLines( nRGB ) INLINE WVG_TreeView_SetLineColor( ::hWnd, nRGB )
METHOD showExpanded( lExpanded, nLevels ) INLINE Wvg_TreeView_ShowExpanded( ::hWnd, ;
IF( hb_isNil( lExpanded ), .f., lExpanded ), nLevels )
#endif
@@ -171,17 +162,17 @@ METHOD XbpTreeView:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
oW:pPtr := ::oWidget:invisibleRootItem()
::oRootItem:oWidget := oW
* ::connect( ::pWidget, "currentItemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 1, p1, p2 ) } )
* ::connect( ::pWidget, "itemActivated(QTWItem)" , {|p1,p2| ::exeBlock( 2, p1, p2 ) } )
* ::connect( ::pWidget, "itemChanged(QTWItem)" , {|p1,p2| ::exeBlock( 3, p1, p2 ) } )
::connect( ::pWidget, "itemClicked(QTWItem)" , {|p1,p2| ::exeBlock( 4, p1, p2 ) } )
::connect( ::pWidget, "itemCollapsed(QTWItem)" , {|p1,p2| ::exeBlock( 5, p1, p2 ) } )
::connect( ::pWidget, "itemDoubleClicked(QTWItem)" , {|p1,p2| ::exeBlock( 6, p1, p2 ) } )
::connect( ::pWidget, "itemEntered(QTWItem)" , {|p1,p2| ::exeBlock( 7, p1, p2 ) } )
::connect( ::pWidget, "itemExpanded(QTWItem)" , {|p1,p2| ::exeBlock( 8, p1, p2 ) } )
* ::connect( ::pWidget, "itemPressed(QTWItem)" , {|p1,p2| ::exeBlock( 9, p1, p2 ) } )
* ::connect( ::pWidget, "itemSelectionChanged()" , {|p1,p2| ::exeBlock( 10, p1, p2 ) } )
::connect( ::pWidget, "customContextMenuRequested(QPoint)", {|p1 | ::exeBlock( 21, p1 ) } )
* ::connect( ::pWidget, "currentItemChanged(QTWItem)" , {|p1| ::execSlot( "currentItemChanged(QTWItem)", p1 ) } )
* ::connect( ::pWidget, "itemActivated(QTWItem)" , {|p1| ::execSlot( "itemActivated(QTWItem)" , p1 ) } )
* ::connect( ::pWidget, "itemChanged(QTWItem)" , {|p1| ::execSlot( "itemChanged(QTWItem)" , p1 ) } )
::connect( ::pWidget, "itemClicked(QTWItem)" , {|p1| ::execSlot( "itemClicked(QTWItem)" , p1 ) } )
::connect( ::pWidget, "itemCollapsed(QTWItem)" , {|p1| ::execSlot( "itemCollapsed(QTWItem)" , p1 ) } )
::connect( ::pWidget, "itemDoubleClicked(QTWItem)" , {|p1| ::execSlot( "itemDoubleClicked(QTWItem)" , p1 ) } )
::connect( ::pWidget, "itemEntered(QTWItem)" , {|p1| ::execSlot( "itemEntered(QTWItem)" , p1 ) } )
::connect( ::pWidget, "itemExpanded(QTWItem)" , {|p1| ::execSlot( "itemExpanded(QTWItem)" , p1 ) } )
* ::connect( ::pWidget, "itemPressed(QTWItem)" , {|p1| ::execSlot( "itemPressed(QTWItem)" , p1 ) } )
* ::connect( ::pWidget, "itemSelectionChanged()" , {|p1| ::execSlot( "itemSelectionChanged()" , p1 ) } )
::connect( ::pWidget, "customContextMenuRequested(QPoint)", {|p1| ::execSlot( "customContextMenuRequested(QPoint)", p1 ) } )
::setPosAndSize()
IF ::visible
@@ -206,49 +197,34 @@ METHOD XbpTreeView:hbCreateFromQtPtr( oParent, oOwner, aPos, aSize, aPresParams,
/*----------------------------------------------------------------------*/
METHOD XbpTreeView:ExeBlock( nMsg, p1, p2 )
METHOD XbpTreeView:execSlot( cSlot, p )
LOCAL oItem, n, qPt
HB_SYMBOL_UNUSED( nMsg )
HB_SYMBOL_UNUSED( p1 )
HB_SYMBOL_UNUSED( p2 )
IF hb_isPointer( p1 )
IF ( n := ascan( ::aItems, {|o| hbqt_IsEqualGcQtPointer( o:oWidget:pPtr, p1 ) } ) ) > 0
IF hb_isPointer( p )
IF ( n := ascan( ::aItems, {|o| hbqt_IsEqualGcQtPointer( o:oWidget:pPtr, p ) } ) ) > 0
oItem := ::aItems[ n ]
ENDIF
ENDIF
DO CASE
CASE nMsg == 1 // "currentItemChanged(QTWItem)"
CASE nMsg == 2 // "itemActivated(QTWItem)"
CASE nMsg == 3 // "itemChanged(QTWItem)"
CASE nMsg == 4 // "itemClicked(QTWItem)"
IF hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, oItem, {0,0,0,0}, self )
ENDIF
CASE nMsg == 5 // "itemCollapsed(QTWItem)"
IF hb_isBlock( ::sl_itemCollapsed )
eval( ::sl_itemCollapsed, oItem, {0,0,0,0}, self )
ENDIF
CASE nMsg == 6 // "itemDoubleClicked(QTWItem)"
IF hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, oItem, {0,0,0,0}, self )
ENDIF
CASE nMsg == 7 // "itemEntered(QTWItem)"
CASE cSlot == "itemClicked(QTWItem)"
::itemMarked( oItem, {0,0,0,0} )
CASE cSlot == "itemCollapsed(QTWItem)"
::itemCollapsed( oItem, {0,0,0,0} )
CASE cSlot == "itemDoubleClicked(QTWItem)"
::itemSelected( oItem, {0,0,0,0} )
CASE cSlot == "itemExpanded(QTWItem)"
::itemExpanded( oItem, {0,0,0,0} )
CASE cSlot == "itemEntered(QTWItem)"
::oWidget:setToolTip( iif( empty( oItem:tooltipText ), oItem:caption, oItem:tooltipText ) )
CASE nMsg == 8 // "itemExpanded(QTWItem)"
IF hb_isBlock( ::sl_itemExpanded )
eval( ::sl_itemExpanded, oItem, {0,0,0,0}, self )
ENDIF
CASE nMsg == 9 // "itemPressed(QTWItem)"
CASE nMsg == 10 // "itemSelectionChanged()"
CASE nMsg == 21 // "contextmenu"
qPt := QPoint():from( ::oWidget:mapToGlobal( p1 ) )
CASE cSlot == "customContextMenuRequested(QPoint)"
qPt := QPoint():from( ::oWidget:mapToGlobal( p ) )
::hbContextMenu( { qPt:x(), qPt:y() } )
CASE cSlot == "itemPressed(QTWItem)"
CASE cSlot == "itemSelectionChanged()"
CASE cSlot == "currentItemChanged(QTWItem)"
CASE cSlot == "itemActivated(QTWItem)"
CASE cSlot == "itemChanged(QTWItem)"
ENDCASE
RETURN .f.
@@ -306,45 +282,49 @@ METHOD XbpTreeView:itemFromPos( aPos )
RETURN Self
/*----------------------------------------------------------------------*/
#if 0
METHOD XbpTreeView:itemCollapsed( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_paint := xParam
ENDIF
METHOD XbpTreeView:itemCollapsed( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemCollapsed := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_itemCollapsed )
eval( ::sl_itemCollapsed, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpTreeView:itemExpanded( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_itemExpanded := xParam
ENDIF
METHOD XbpTreeView:itemExpanded( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemExpanded := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_itemExpanded )
eval( ::sl_itemExpanded, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpTreeView:itemMarked( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_itemMarked := xParam
ENDIF
METHOD XbpTreeView:itemMarked( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemMarked := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_itemMarked )
eval( ::sl_itemMarked, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
#endif
/*----------------------------------------------------------------------*/
#if 0
METHOD XbpTreeView:itemSelected( xParam )
IF hb_isBlock( xParam ) .or. ( xParam == NIL )
::sl_itemSelected := xParam
ENDIF
METHOD XbpTreeView:itemSelected( ... )
LOCAL a_:= hb_aParams()
IF len( a_ ) == 1 .AND. hb_isBlock( a_[ 1 ] )
::sl_itemSelected := a_[ 1 ]
ELSEIF len( a_ ) >= 2 .AND. hb_isBlock( ::sl_itemSelected )
eval( ::sl_itemSelected, a_[ 1 ], a_[ 2 ], Self )
ENDIF
RETURN Self
#endif
/*----------------------------------------------------------------------*/
/* Class XbpTreeViewItem */
/*----------------------------------------------------------------------*/

View File

@@ -76,121 +76,26 @@
CLASS XbpWindow INHERIT XbpPartHandler
METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD setQtProperty( cProperty )
METHOD connect( pWidget, cSignal, bBlock )
METHOD connectEvent( pWidget, nEvent, bBlock )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD grabEvent( nEvent, pEvent )
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD captureMouse( lCapture )
METHOD invalidateRect( aRect )
METHOD setStyleSheet( cNewSheet )
METHOD setFont( oFont )
METHOD setFontCompoundName( xFont )
METHOD setModalState( nState )
METHOD setPointer( cDllName, xResID, nType )
METHOD setTrackPointer( lTrack )
METHOD setPos( aPos, lPaint )
METHOD setPosAndSize( aPos, aSize, lPaint )
METHOD setSize( aSize, lPaint )
METHOD isDerivedFrom( cClassORoObject )
METHOD setPresParam( aPPNew )
METHOD enter( xParam ) SETGET
METHOD leave( xParam ) SETGET
METHOD lbClick( xParam ) SETGET
METHOD lbDblClick( xParam ) SETGET
METHOD lbDown( xParam ) SETGET
METHOD lbUp( xParam ) SETGET
METHOD mbClick( xParam ) SETGET
METHOD mbDblClick( xParam ) SETGET
METHOD mbDown( xParam ) SETGET
METHOD mbUp( xParam ) SETGET
METHOD motion( xParam ) SETGET
METHOD rbClick( xParam ) SETGET
METHOD rbDblClick( xParam ) SETGET
METHOD rbDown( xParam ) SETGET
METHOD rbUp( xParam ) SETGET
METHOD wheel( xParam ) SETGET
METHOD close( xParam ) SETGET
METHOD helpRequest( xParam ) SETGET
METHOD keyboard( xParam ) SETGET
METHOD killDisplayFocus( xParam ) SETGET
METHOD killInputFocus( xParam ) SETGET
METHOD move( xParam ) SETGET
METHOD paint( xParam ) SETGET
METHOD quit( xParam, xParam1 ) SETGET
METHOD resize( xParam, xParam1 ) SETGET
METHOD setDisplayFocus( xParam ) SETGET
METHOD setInputFocus( xParam ) SETGET
METHOD dragEnter( xParam, xParam1 ) SETGET
METHOD dragMotion( xParam ) SETGET
METHOD dragLeave( xParam ) SETGET
METHOD dragDrop( xParam, xParam1 ) SETGET
METHOD hbContextMenu( xParam ) SETGET
METHOD Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD isEnabled() INLINE ::is_enabled
METHOD isVisible() INLINE !( ::is_hidden )
METHOD hbCreateFromQtPtr() VIRTUAL
METHOD destroy()
METHOD disable()
METHOD enable()
METHOD hide()
METHOD lockPS()
METHOD lockUpdate()
METHOD show()
METHOD toBack()
METHOD toFront()
METHOD unlockPS()
METHOD winDevice()
METHOD setColorBG( nRGB )
METHOD setColorFG( nRGB )
METHOD currentPos()
METHOD currentSize()
METHOD getHWND()
METHOD getModalState()
METHOD hasInputFocus()
METHOD setFocus()
METHOD sendMessage()
METHOD connectWindowEvents()
METHOD disConnect()
METHOD clearSlots()
CLASSDATA nProperty INIT 0
DATA qtProperty INIT ""
DATA qtObject
DATA isViaQtObject INIT .f.
/* Called in the initializer - Unique in the application */
METHOD getProperty() INLINE "PROP" + hb_ntos( ++::nProperty )
/* After object is physically created, set unique property to 1 */
* METHOD setQtProperty()
DATA cargo INIT ""
DATA styleSheet INIT ""
* METHOD setStyleSheet()
/* CONFIGURATION */
DATA animate INIT .F.
DATA clipChildren INIT .F.
DATA clipParent INIT .F.
DATA clipSiblings INIT .T.
DATA group INIT 0 /* XBP_NO_GROUP */
DATA sizeRedraw INIT .F.
DATA tabStop INIT .F.
DATA visible INIT .T.
DATA animate INIT .F.
DATA clipChildren INIT .F.
DATA clipParent INIT .F.
DATA clipSiblings INIT .T.
DATA group INIT 0 /* XBP_NO_GROUP */
DATA sizeRedraw INIT .F.
DATA tabStop INIT .F.
DATA visible INIT .T.
/* RUNTIME DATA */
DATA dropZone INIT .F.
DATA dropZone INIT .F.
DATA helpLink
DATA tooltipText INIT ""
DATA tooltipText INIT ""
/* CALLBACK SLOTS */
DATA sl_enter
@@ -249,29 +154,120 @@ CLASS XbpWindow INHERIT XbpPartHandler
DATA nOldProc INIT 0
DATA nWndProc
DATA oMenu
DATA oWidget
ACCESS pWidget INLINE IF( empty( ::oWidget ), NIL, ::oWidget:pPtr )
ACCESS pParent INLINE IF( empty( ::oParent ), NIL, ::oParent:oWidget:pPtr )
DATA cargo INIT ""
DATA styleSheet INIT ""
DATA oTabWidget
DATA aTabs INIT {}
DATA aTabs INIT {}
DATA oPalette
DATA xDummy
DATA aConnections INIT {}
DATA aEConnections INIT {}
DATA lTrack INIT .f.
DATA aConnections INIT {}
DATA aEConnections INIT {}
DATA lTrack INIT .f.
DATA aPP
METHOD setStyle() INLINE NIL
ACCESS pSlots INLINE hbxbp_getSlotsPtr()
ACCESS pEvents INLINE hbxbp_GetEventsPtr()
DATA qLayout
DATA nLayout
METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD setQtProperty( cProperty )
METHOD connect( pWidget, cSignal, bBlock )
METHOD connectEvent( pWidget, nEvent, bBlock )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD grabEvent( nEvent, pEvent )
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD captureMouse( lCapture )
METHOD invalidateRect( aRect )
METHOD setStyleSheet( cNewSheet )
METHOD setFont( oFont )
METHOD setFontCompoundName( xFont )
METHOD setModalState( nState )
METHOD setPointer( cDllName, xResID, nType )
METHOD setTrackPointer( lTrack )
METHOD setPos( aPos, lPaint )
METHOD setPosAndSize( aPos, aSize, lPaint )
METHOD setSize( aSize, lPaint )
METHOD isDerivedFrom( cClassORoObject )
METHOD setPresParam( aPPNew )
METHOD enter( xParam ) SETGET
METHOD leave( xParam ) SETGET
METHOD lbClick( xParam ) SETGET
METHOD lbDblClick( xParam ) SETGET
METHOD lbDown( xParam ) SETGET
METHOD lbUp( xParam ) SETGET
METHOD mbClick( xParam ) SETGET
METHOD mbDblClick( xParam ) SETGET
METHOD mbDown( xParam ) SETGET
METHOD mbUp( xParam ) SETGET
METHOD motion( xParam ) SETGET
METHOD rbClick( xParam ) SETGET
METHOD rbDblClick( xParam ) SETGET
METHOD rbDown( xParam ) SETGET
METHOD rbUp( xParam ) SETGET
METHOD wheel( xParam ) SETGET
METHOD close( xParam ) SETGET
METHOD helpRequest( xParam ) SETGET
METHOD keyboard( xParam ) SETGET
METHOD killDisplayFocus( xParam ) SETGET
METHOD killInputFocus( xParam ) SETGET
METHOD move( xParam ) SETGET
METHOD paint( xParam ) SETGET
METHOD quit( xParam, xParam1 ) SETGET
METHOD resize( xParam, xParam1 ) SETGET
METHOD setDisplayFocus( xParam ) SETGET
METHOD setInputFocus( xParam ) SETGET
METHOD dragEnter( xParam, xParam1 ) SETGET
METHOD dragMotion( xParam ) SETGET
METHOD dragLeave( xParam ) SETGET
METHOD dragDrop( xParam, xParam1 ) SETGET
METHOD hbContextMenu( xParam ) SETGET
METHOD Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD isEnabled() INLINE ::is_enabled
METHOD isVisible() INLINE !( ::is_hidden )
METHOD hbCreateFromQtPtr() VIRTUAL
METHOD destroy()
METHOD disable()
METHOD enable()
METHOD hide()
METHOD lockPS()
METHOD lockUpdate()
METHOD show()
METHOD toBack()
METHOD toFront()
METHOD unlockPS()
METHOD winDevice()
METHOD setColorBG( nRGB )
METHOD setColorFG( nRGB )
METHOD currentPos()
METHOD currentSize()
METHOD getHWND()
METHOD getModalState()
METHOD hasInputFocus()
METHOD setFocus()
METHOD sendMessage()
METHOD connectWindowEvents()
METHOD disConnect()
METHOD clearSlots()
/* Called in the initializer - Unique in the application */
METHOD getProperty() INLINE "PROP" + hb_ntos( ++::nProperty )
/* After object is physically created, set unique property to 1 */
* METHOD setQtProperty()
* METHOD setStyleSheet()
METHOD setStyle() INLINE NIL
METHOD className() INLINE __objGetClsName( Self )
/* Harbour Extension */
DATA qLayout
DATA nLayout
METHOD hbLayout( nTypeLayout ) SETGET
ACCESS pWidget INLINE iif( empty( ::oWidget ), NIL, ::oWidget:pPtr )
ACCESS pParent INLINE iif( empty( ::oParent ), NIL, ::oParent:oWidget:pPtr )
ACCESS pSlots INLINE hbxbp_getSlotsPtr()
ACCESS pEvents INLINE hbxbp_GetEventsPtr()
ENDCLASS
/*----------------------------------------------------------------------*/
@@ -403,13 +399,10 @@ METHOD XbpWindow:disconnect()
LOCAL e_
IF len( ::aConnections ) > 0
//HB_TRACE( HB_TR_ALWAYS, " " )
FOR EACH e_ IN ::aConnections
::xDummy := Qt_Slots_DisConnect( ::pSlots, e_[ 1 ], e_[ 2 ] )
//HB_TRACE( HB_TR_ALWAYS, ::xDummy, " Qt_Slots_DisConnect() ", e_[ 2 ] )
NEXT
::aConnections := {}
//HB_TRACE( HB_TR_ALWAYS, " " )
ENDIF
RETURN Self
@@ -421,7 +414,6 @@ METHOD XbpWindow:connectEvent( pWidget, nEvent, bBlock )
IF ( lSuccess := Qt_Events_Connect( ::pEvents, pWidget, nEvent, bBlock ) )
aadd( ::aEConnections, { pWidget, nEvent } )
// HB_TRACE( HB_TR_ALWAYS, "XbpWindow:connectEvent", nEvent, "Succeeded" )
ELSE
HB_TRACE( HB_TR_ALWAYS, "XbpWindow:connectEvent", nEvent, "Failed" )
ENDIF
@@ -439,10 +431,6 @@ METHOD XbpWindow:connectWindowEvents()
::connectEvent( ::pWidget, QEvent_Enter , {|e| ::grabEvent( QEvent_Enter , e ) } )
::connectEvent( ::pWidget, QEvent_Leave , {|e| ::grabEvent( QEvent_Leave , e ) } )
::connectEvent( ::pWidget, QEvent_Wheel , {|e| ::grabEvent( QEvent_Wheel , e ) } )
//
::connectEvent( ::pWidget, QEvent_Move , {|e| ::grabEvent( QEvent_Move , e ) } )
* ::connectEvent( ::pWidget, QEvent_Paint , {|e| ::grabEvent( QEvent_Paint , e ) } )
* ::connectEvent( ::pWidget, QEvent_Resize , {|e| ::grabEvent( QEvent_Resize , e ) } )
//
::connectEvent( ::pWidget, QEvent_FocusIn , {|e| ::grabEvent( QEvent_FocusIn , e ) } )
::connectEvent( ::pWidget, QEvent_FocusOut , {|e| ::grabEvent( QEvent_FocusOut , e ) } )
@@ -452,10 +440,14 @@ METHOD XbpWindow:connectWindowEvents()
::connectEvent( ::pWidget, QEvent_Drop , {|e| ::grabEvent( QEvent_Drop , e ) } )
::connectEvent( ::pWidget, QEvent_WhatsThis , {|e| ::grabEvent( QEvent_WhatsThis , e ) } )
::connectEvent( ::pWidget, QEvent_KeyPress , {|e| ::grabEvent( QEvent_KeyPress , e ) } )
//
::connectEvent( ::pWidget, QEvent_ContextMenu , {|e| ::grabEvent( QEvent_ContextMenu , e ) } )
//
::connectEvent( ::pWidget, QEvent_Move , {|e| ::grabEvent( QEvent_Move , e ) } )
* ::connectEvent( ::pWidget, QEvent_Paint , {|e| ::grabEvent( QEvent_Paint , e ) } )
* ::connectEvent( ::pWidget, QEvent_Resize , {|e| ::grabEvent( QEvent_Resize , e ) } )
RETURN Self
RETURN Self
/*----------------------------------------------------------------------*/
@@ -476,10 +468,7 @@ METHOD XbpWindow:destroy()
LOCAL e_
#if 0
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, hb_threadId(),"Destroy[ B ] "+pad(cCls,12)+ IF(empty(::cargo),'',str(::cargo) ), memory( 1001 ) )
LOCAL cCls := __ObjGetClsName( self ), cMsg
cMsg := iif( cCls == "XBPWINDOW", ::oWidget:objectName(), IF( empty(::cargo),'',str(::cargo) ) )
HB_TRACE( HB_TR_ALWAYS, hb_threadId(),"Destroy[ B ] "+pad(cCls,12)+ cMsg, memory( 1001 ) )
@@ -517,9 +506,6 @@ HB_TRACE( HB_TR_ALWAYS, hb_threadId(),"Destroy[ B ] "+pad(cCls,12)+ cMsg, memor
::oWidget := NIL
#if 0
HB_TRACE( HB_TR_ALWAYS, hb_threadId(),"Destroy[ E ] "+pad(__ObjGetClsName( self ),12)+ IF(empty(::cargo),'',str(::cargo) ), memory( 1001 ) )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, ". " )
HB_TRACE( HB_TR_ALWAYS, hb_threadId(),"Destroy[ E ] "+pad(__ObjGetClsName( self ),12)+ IF(empty(::cargo),'',str(::cargo) ), memory( 1001 ) )
#endif
@@ -962,7 +948,6 @@ METHOD XbpWindow:setColorBG( nRGB )
::setStyleSheet( "background-color: "+ cName +";" )
ELSE
::setStyleSheet( "background-color: "+ cName +";" )
// ::setStyleSheet( cQTName +'['+ ::qtProperty +'="YES"] '+ "{ background-color: "+ cName +" ; }" )
ENDIF
ELSE
oldRGB := Xbp_SetPresParam( ::aPresParams, XBP_PP_BGCLR )