2010-07-04 08:40 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbqt/hbqt.ch
  * contrib/hbqt/hbqt_hbslots.cpp
  * contrib/hbqt/hbqt_hbslots.h
    + Added: more slots covering QMdiArea and QMdiSubWindow classes.

  * contrib/hbxbp/xbpbrowse.prg
    ! Reworked: event handelling methods more spontaneous.

  + contrib/hbide/resources/browser.png
  + contrib/hbide/resources/formview.png
  + contrib/hbide/resources/thumbnail.png
  + contrib/hbide/resources/view_cascaded.png
  + contrib/hbide/resources/view_organized.png
  + contrib/hbide/resources/view_tabbed.png
  + contrib/hbide/resources/view_tiled.png

  * contrib/hbide/hbide.qrc
    + Added: few images as above.

  * contrib/hbide/hbide.prg
  * contrib/hbide/ideactions.prg
  * contrib/hbide/idebrowse.prg
  * contrib/hbide/idedocks.prg
  * contrib/hbide/ideeditor.prg
  * contrib/hbide/idemisc.prg
  * contrib/hbide/ideskeletons.prg
  * contrib/hbide/idestylesheets.prg
  * contrib/hbide/idethemes.prg
  * contrib/hbide/idetools.prg

    + Reworked: application theme management.
      Now it includes the missing components from previous.

    + Reworked: ideDBU interface.
      Now it is hosted in a MDI interface which is more natural
      to table management, including relational views. User can 
      rearrange and resize the browsers to his personal tastes.
      Here is the layout hirarchy of ideDBU:
        
      hbIDE
        ideDBU - docking pane, right-hand, floatable, dockable.
          Toolbar
            Add a table, Form View, Tabbed View, Original View, 
                 Cascaded View, Tiled View, Remove browser, 
                 Panels - create button, switch menu
          Panels - user defined, only one visible at a time
            Panel 1
              Browser 1 - .dbf, an array ( TODO, functionality is there )
              Browser 2 
              Browser n
            Panel 2 
              Browser 1
              Browser 2 
              Browser n
            Panel n 
              Browser 1
              Browser 2 
              Browser n
          Panels retain their last contents and are presented 
          on next run as is. The only exception being panel "Main" 
          is always the first visible.

      NOTE: there is a lot on my drawing board.
            So far I was struggling to make the behavior of 
            XbpBrowser stable per TBrowse specs and interface
            design. Rest will follow soon.
This commit is contained in:
Pritpal Bedi
2010-07-04 16:08:52 +00:00
parent 58eedb8120
commit 562ca599a3
23 changed files with 754 additions and 238 deletions

View File

@@ -16,6 +16,74 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-04 08:40 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbqt/hbqt.ch
* contrib/hbqt/hbqt_hbslots.cpp
* contrib/hbqt/hbqt_hbslots.h
+ Added: more slots covering QMdiArea and QMdiSubWindow classes.
* contrib/hbxbp/xbpbrowse.prg
! Reworked: event handelling methods more spontaneous.
+ contrib/hbide/resources/browser.png
+ contrib/hbide/resources/formview.png
+ contrib/hbide/resources/thumbnail.png
+ contrib/hbide/resources/view_cascaded.png
+ contrib/hbide/resources/view_organized.png
+ contrib/hbide/resources/view_tabbed.png
+ contrib/hbide/resources/view_tiled.png
* contrib/hbide/hbide.qrc
+ Added: few images as above.
* contrib/hbide/hbide.prg
* contrib/hbide/ideactions.prg
* contrib/hbide/idebrowse.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idemisc.prg
* contrib/hbide/ideskeletons.prg
* contrib/hbide/idestylesheets.prg
* contrib/hbide/idethemes.prg
* contrib/hbide/idetools.prg
+ Reworked: application theme management.
Now it includes the missing components from previous.
+ Reworked: ideDBU interface.
Now it is hosted in a MDI interface which is more natural
to table management, including relational views. User can
rearrange and resize the browsers to his personal tastes.
Here is the layout hirarchy of ideDBU:
hbIDE
ideDBU - docking pane, right-hand, floatable, dockable.
Toolbar
Add a table, Form View, Tabbed View, Original View,
Cascaded View, Tiled View, Remove browser,
Panels - create button, switch menu
Panels - user defined, only one visible at a time
Panel 1
Browser 1 - .dbf, an array ( TODO, functionality is there )
Browser 2
Browser n
Panel 2
Browser 1
Browser 2
Browser n
Panel n
Browser 1
Browser 2
Browser n
Panels retain their last contents and are presented
on next run as is. The only exception being panel "Main"
is always the first visible.
NOTE: there is a lot on my drawing board.
So far I was struggling to make the behavior of
XbpBrowser stable per TBrowse specs and interface
design. Rest will follow soon.
2010-07-04 15:53 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* harbour-win-spec
* harbour-wce-spec

View File

@@ -509,7 +509,6 @@ METHOD HbIde:create( aParams )
ENDIF
::oDockB2:hide() /* This widget never contains anything so must be forced to hide */
::oQScintillaDock:hide()
/* Request Main Window to Appear on the Screen */
::oHM:refresh()
@@ -524,6 +523,9 @@ METHOD HbIde:create( aParams )
::qTabWidget:setCurrentIndex( 0 )
NEXT
/* Refresh Stylesheet for all components at once */
::oDK:animateComponents( ::nAnimantionMode )
::oDlg:Show()
IF ::nRunMode == HBIDE_RUN_MODE_PRG
::oDockPT:hide()

View File

@@ -4,6 +4,7 @@
<file>resources/blockcomment.png</file>
<file>resources/blockindentl.png</file>
<file>resources/blockindentr.png</file>
<file>resources/browser.png</file>
<file>resources/build.png</file>
<file>resources/builderror.png</file>
<file>resources/buildlaunch.png</file>
@@ -67,6 +68,7 @@
<file>resources/fl_txt.png</file>
<file>resources/folder.png</file>
<file>resources/font.png</file>
<file>resources/formview.png</file>
<file>resources/fullscreen.png</file>
<file>resources/go-bottom.png</file>
<file>resources/go-down.png</file>
@@ -174,6 +176,7 @@
<file>resources/tabunmodified.png</file>
<file>resources/tests.png</file>
<file>resources/text.png</file>
<file>resources/thumbnail.png</file>
<file>resources/togglelinenumber.png</file>
<file>resources/tolower.png</file>
<file>resources/tools.png</file>
@@ -183,6 +186,10 @@
<file>resources/unload_1.png</file>
<file>resources/up.png</file>
<file>resources/up16.png</file>
<file>resources/view_cascaded.png</file>
<file>resources/view_organized.png</file>
<file>resources/view_tabbed.png</file>
<file>resources/view_tiled.png</file>
<file>resources/vr-16x16.png</file>
<file>resources/vr.png</file>
<file>resources/xmate.png</file>

View File

@@ -382,14 +382,17 @@ METHOD IdeActions:buildToolBar()
METHOD IdeActions:buildMainMenu()
LOCAL oMenuBar, oSubMenu, oSubMenu2, n, f
LOCAL oIde := ::oIde
// LOCAL cTheme := "QMenuPop"
oMenuBar := ::oDlg:MenuBar()
oMenuBar:setStyleSheet( GetStyleSheet( "QMenuBar", ::nAnimantionMode ) )
//oMenuBar:setStyleSheet( GetStyleSheet( "QMenuBar", ::nAnimantionMode ) )
/*----------------------------------------------------------------------------*/
/* File */
/*----------------------------------------------------------------------------*/
oSubMenu := XbpMenu():new( oMenuBar ):create()
//oSubMenu:oWidget:setStyleSheet( GetStyleSheet( cTheme ) )
oSubMenu:title := "~File"
oSubMenu2 := XbpMenu():new( oSubMenu ):create()
@@ -523,36 +526,37 @@ METHOD IdeActions:buildMainMenu()
oSubMenu := XbpMenu():new( oMenuBar ):create()
oSubMenu:title := "~View"
oMenuBar:addItem( { oSubMenu, NIL } )
//oSubMenu:oWidget:setStyleSheet( GetStyleSheet( cTheme ) )
oSubMenu:addItem( { "Toggle Animation", {|| oIde:execAction( "Animate" ) } } )
oSubMenu:addItem( { "Toggle Animation", {|| oIde:execAction( "Animate" ) } } )
oSubMenu:oWidget:addSeparator()
oSubMenu:oWidget:addAction_4( ::oIde:oMainToolbar:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarPanels:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarLines:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarDocks:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oIde:oMainToolbar:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarPanels:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarLines:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::qTBarDocks:toggleViewAction() )
oSubMenu:addItem( { "Toggle Statusbar", {|| oIde:execAction( "ToggleStatusBar" ) } } )
oSubMenu:oWidget:addSeparator()
oSubMenu:oWidget:addAction_4( ::oDockPT:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDockED:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSkltnsTreeDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDockPT:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDockED:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSkltnsTreeDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addSeparator()
oSubMenu:oWidget:addAction_4( ::oHelpDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDocViewDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDocWriteDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFuncDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFunctionsDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oPropertiesDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oEnvironDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSkeltnDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oThemesDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFindDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSourceThumbnailDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oQScintillaDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oHelpDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDocViewDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDocWriteDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFuncDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFunctionsDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oPropertiesDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oEnvironDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSkeltnDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oThemesDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oFindDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oSourceThumbnailDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oQScintillaDock:oWidget:toggleViewAction() )
oSubMenu:oWidget:addSeparator()
oSubMenu:oWidget:addAction_4( ::oDockB2:oWidget:toggleViewAction() )
* oSubMenu:oWidget:addAction_4( ::oDockB1:oWidget:toggleViewAction() )
* oSubMenu:oWidget:addAction_4( ::oDockB:oWidget:toggleViewAction() )
oSubMenu:oWidget:addAction_4( ::oDockB2:oWidget:toggleViewAction() )
* oSubMenu:oWidget:addAction_4( ::oDockB1:oWidget:toggleViewAction() )
* oSubMenu:oWidget:addAction_4( ::oDockB:oWidget:toggleViewAction() )
/*----------------------------------------------------------------------------*/
/* Project */

View File

@@ -75,6 +75,26 @@
#define BRW_TYPE_DBF 1
#define BRW_TYPE_ARRAY 2
/*------------------------------------------------------------------------*/
#define TBL_PANEL 1
#define TBL_NAME 2
#define TBL_ALIAS 3
#define TBL_DRIVER 4
#define TBL_INDEX 5
#define TBL_RECORD 6
#define TBL_CURSOR 7
#define TBL_GEOMETRY 8
#define TBL_NEXT 9
#define TBL_VRBLS 9
#define SUB_ID 1
#define SUB_WINDOW 2
#define SUB_GEOMETRY 3
#define SUB_BROWSER 4
#define SUB_NIL 5
/*----------------------------------------------------------------------*/
CLASS IdeBrowseManager INHERIT IdeObject
@@ -92,21 +112,28 @@ CLASS IdeBrowseManager INHERIT IdeObject
DATA oCurBrw
DATA oCurPanel
DATA qPanelsMenu
DATA qPanelsButton
DATA aPanelsAct INIT {}
METHOD new( oIde )
METHOD create( oIde )
METHOD show()
METHOD destroy()
METHOD buildToolbar()
METHOD execEvent( cEvent, p )
METHOD addTable( cFileDBF, cAlias )
METHOD execEvent( cEvent, p, p1 )
METHOD addTable( cFileDBF, cAlias, aInfo )
METHOD addArray( aData, aAttr )
METHOD getPanelNames()
METHOD getPanelsInfo()
METHOD addPanels()
METHOD addPanel( cPanel )
METHOD showPanel( cPanel )
METHOD setPanel( cPanel )
METHOD isPanel( cPanel )
METHOD loadTables()
METHOD buildPanelsButton()
METHOD addPanelsMenu( cPanel )
METHOD setStyleSheet( nMode )
ENDCLASS
@@ -119,22 +146,51 @@ METHOD IdeBrowseManager:new( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:getPanelNames()
LOCAL aNames := {}
aeval( ::aPanels, {|e| aadd( aNames, e:cPanel ) } )
LOCAL oPanel, aNames := {}, aAttr
FOR EACH oPanel IN ::aPanels
aAttr := {}
aadd( aAttr, oPanel:cPanel )
aadd( aAttr, hb_ntos( oPanel:viewMode() ) )
aadd( aAttr, hb_ntos( oPanel:nViewStyle ) )
aadd( aNames, hbide_array2String( aAttr, "," ) )
NEXT
RETURN aNames
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:getPanelsInfo()
LOCAL oBrw, oPanel
LOCAL aInfo := {}
LOCAL oBrw, oPanel, aSub
LOCAL aInfo := {}, aAttr
FOR EACH oPanel IN ::aPanels
FOR EACH oBrw IN oPanel:aItems
FOR EACH aSub IN oPanel:subWindows()
aAttr := array( TBL_VRBLS )
aAttr[ TBL_PANEL ] := oPanel:cPanel
oBrw := aSub[ 4 ]
IF oBrw:nType == BRW_TYPE_DBF
aadd( aInfo, oPanel:cPanel + "," + oBrw:cTable + "," + oBrw:cAlias + "," + oBrw:cDriver + "," + ;
hb_ntos( oBrw:nOrder ) + "," + hb_ntos( oBrw:recNo() ) + hb_ntos( oBrw:nCursorType ) )
aAttr[ TBL_NAME ] := oBrw:cTable
aAttr[ TBL_ALIAS ] := oBrw:cAlias
aAttr[ TBL_DRIVER ] := oBrw:cDriver
aAttr[ TBL_INDEX ] := hb_ntos( oBrw:indexOrd() )
aAttr[ TBL_RECORD ] := hb_ntos( oBrw:recNo() )
aAttr[ TBL_CURSOR ] := hb_ntos( oBrw:nCursorType )
IF !hb_isObject( aSub[ 3 ] )
aSub[ 3 ] := QRect():from( aSub[ 2 ]:geometry() )
ENDIF
aAttr[ TBL_GEOMETRY ] := hb_ntos( aSub[ 3 ]:x() ) + " " + hb_ntos( aSub[ 3 ]:y() ) + " " + ;
hb_ntos( aSub[ 3 ]:width() ) + " " + hb_ntos( aSub[ 3 ]:height() )
aAttr[ TBL_NEXT ] := ""
ELSEIF oBrw:nType == BRW_TYPE_ARRAY
//
ENDIF
aadd( aInfo, hbide_array2String( aAttr, "," ) )
NEXT
NEXT
@@ -142,19 +198,16 @@ METHOD IdeBrowseManager:getPanelsInfo()
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:setStyleSheet( nMode )
::qToolbar:setStyleSheet( GetStyleSheet( "QToolBar", nMode ) )
::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) )
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowseManager:destroy()
LOCAL oPanel, oBrw
FOR EACH oPanel IN ::aPanels
FOR EACH oBrw IN oPanel:aItems
oBrw:destroy()
oBrw := NIL
NEXT
oPanel:aItems := NIL
oPanel := NIL
NEXT
::aPanels := NIL
RETURN Self
/*----------------------------------------------------------------------*/
@@ -197,6 +250,9 @@ METHOD IdeBrowseManager:create( oIde )
/* Spread tables onto panels */
::loadTables()
/* Switch to the default panel */
::setPanel( "Main" )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -208,45 +264,58 @@ METHOD IdeBrowseManager:buildToolbar()
::qToolbar:setIconSize( QSize():new( 16,16 ) )
::qToolbar:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) )
aadd( ::aButtons, { "Open a table" , "open" , "clicked()", {|| ::execEvent( "buttonOpen_clicked" ) }, .f. } )
aadd( ::aButtons, { "Close current table", "close" , "clicked()", {|| ::execEvent( "buttonClose_clicked" ) }, .f. } )
aadd( ::aButtons, { "Show/hide form view", "fullscreen" , "clicked()", {|| ::execEvent( "buttonShowForm_clicked" ) }, .t. } )
aadd( ::aButtons, { "Open a table" , "dc_plus" , "clicked()", {|| ::execEvent( "buttonOpen_clicked" ) }, .f. } )
aadd( ::aButtons, {} )
aadd( ::aButtons, { "Show/hide form view", "formview" , "clicked()", {|| ::execEvent( "buttonShowForm_clicked" ) }, .t. } )
aadd( ::aButtons, {} )
aadd( ::aButtons, { "Toggle View" , "view_tabbed" , "clicked()", {|| ::execEvent( "buttonViewTabbed_clicked" ) }, .f. } )
aadd( ::aButtons, {} )
aadd( ::aButtons, { "View as arranged" , "view_organized", "clicked()", {|| ::execEvent( "buttonViewOrganized_clicked" ) }, .f. } )
aadd( ::aButtons, { "View as cascaded" , "view_cascaded" , "clicked()", {|| ::execEvent( "buttonViewCascaded_clicked" ) }, .f. } )
aadd( ::aButtons, { "View as tiled" , "view_tiled" , "clicked()", {|| ::execEvent( "buttonViewTiled_clicked" ) }, .f. } )
aadd( ::aButtons, {} )
aadd( ::aButtons, { "Close current table", "dc_delete" , "clicked()", {|| ::execEvent( "buttonClose_clicked" ) }, .f. } )
aadd( ::aButtons, {} )
FOR EACH aBtn IN ::aButtons
qBtn := QToolButton():new()
qBtn:setTooltip( aBtn[ 1 ] )
qBtn:setAutoRaise( .t. )
qBtn:setIcon( hbide_image( aBtn[ 2 ] ) )
IF aBtn[ 5 ]
qBtn:setCheckable( .t. )
IF empty( aBtn )
::qToolbar:addSeparator()
ELSE
qBtn := QToolButton():new()
qBtn:setTooltip( aBtn[ 1 ] )
qBtn:setAutoRaise( .t. )
qBtn:setIcon( hbide_image( aBtn[ 2 ] ) )
IF aBtn[ 5 ]
qBtn:setCheckable( .t. )
ENDIF
::connect( qBtn, aBtn[ 3 ], aBtn[ 4 ] )
::qToolBar:addWidget( qBtn )
aadd( ::aToolBtns, qBtn )
ENDIF
::connect( qBtn, aBtn[ 3 ], aBtn[ 4 ] )
::qToolBar:addWidget( qBtn )
aadd( ::aToolBtns, qBtn )
NEXT
::buildPanelsButton()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addPanels()
LOCAL cPanel, aPanel
LOCAL cPanel, aPnl
::addPanel( "Main" ) /* The default one */
::addPanel( "Main", .t. ) /* The default one */
FOR EACH cPanel IN ::oINI:aDbuPanelsInfo
aPanel := hb_aTokens( cPanel )
IF aPanel[ 1 ] != "Main"
::addPanel( aPanel[ 1 ] )
FOR EACH cPanel IN ::oINI:aDbuPanelNames
aPnl := hb_aTokens( cPanel, "," )
aSize( aPnl, 2 )
IF empty( aPnl[ 2 ] )
aPnl[ 2 ] := "NO"
ENDIF
IF aPnl[ 1 ] != "Main"
::addPanel( aPnl[ 1 ], aPnl[ 2 ] == "YES" )
ENDIF
NEXT
::qStack:setCurrentWidget( ::aPanels[ 1 ] ) /* Always start with main */
::oCurPanel := ::aPanels[ 1 ]
RETURN Self
/*----------------------------------------------------------------------*/
@@ -260,6 +329,19 @@ METHOD IdeBrowseManager:addPanel( cPanel )
aadd( ::aPanels, qPanel )
::addPanelsMenu( cPanel )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addPanelsMenu( cPanel )
LOCAL qAct
( qAct := QAction():from( ::qPanelsMenu:addAction( cPanel ) ) ):setIcon( hbide_image( "panel_7" ) )
::connect( qAct, "triggered(bool)", {|| ::setPanel( cPanel ) } )
aadd( ::aPanelsAct, qAct )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -269,22 +351,38 @@ METHOD IdeBrowseManager:isPanel( cPanel )
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:showPanel( cPanel )
METHOD IdeBrowseManager:setPanel( cPanel )
LOCAL n
IF ( n := ascan( ::aPanels, {|o| o:qWidget:objectName() == cPanel } ) ) > 0
::qStack:setCurrentWidget( ::aPanels[ n ] )
::qStack:setCurrentWidget( ::aPanels[ n ]:qWidget )
::oCurPanel := ::aPanels[ n ]
::oCurPanel:prepare()
#if 0
::oCurPanel:nViewStyle := 0
::oCurPanel:saveGeometry()
::oCurPanel:tileSubWindows()
::oCurPanel:nViewStyle := 1
::oCurPanel:prepare()
::oCurPanel:nViewStyle := 0
::oCurPanel:restGeometry()
::oCurPanel:prepare()
#endif
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:execEvent( cEvent, p )
LOCAL cTable, cPath, n, oBrw
METHOD IdeBrowseManager:execEvent( cEvent, p, p1 )
LOCAL cTable, cPath, cPanel
HB_SYMBOL_UNUSED( p )
HB_SYMBOL_UNUSED( p1 )
SWITCH cEvent
CASE "buttonShowForm_clicked"
@@ -299,15 +397,13 @@ METHOD IdeBrowseManager:execEvent( cEvent, p )
ENDIF
EXIT
CASE "buttonCloseX_clicked"
::oCurPanel:destroyByX( p )
EXIT
CASE "buttonClose_clicked"
IF !empty( ::oCurBrw )
IF ( n := ascan( ::oCurPanel:aItems, {|o| o == ::oCurBrw } ) ) > 0
hb_adel( ::oCurPanel:aItems, n, .t. )
::oCurBrw:destroy()
FOR EACH oBrw IN ::oCurPanel:aItems
oBrw:oBrw:configure()
NEXT
ENDIF
::oCurPanel:destroy( ::oCurBrw )
ENDIF
EXIT
@@ -319,8 +415,60 @@ METHOD IdeBrowseManager:execEvent( cEvent, p )
ENDIF
EXIT
CASE "qPanelsButton_clicked"
cPanel := hbide_fetchAString( ::qToolbar, "New...", "Name the Panel", "New Panel" )
IF cPanel != "New..." .AND. cPanel != "Main"
IF ::isPanel( cPanel )
MsgBox( "Panel: " + cPanel + ", already exists" )
ELSE
::addPanel( cPanel )
::setPanel( cPanel )
ENDIF
ENDIF
EXIT
CASE "mdiSubWindow_aboutToActivate"
// ::oCurPanel:prepare( p )
EXIT
CASE "mdiSubWindow_windowStateChanged"
//HB_TRACE( HB_TR_ALWAYS, "mdiSubWindow_windowStateChanged", p, p1 )
EXIT
CASE "buttonViewOrganized_clicked"
::oCurPanel:nViewStyle := 0
::oCurPanel:restGeometry()
::oCurPanel:prepare()
EXIT
CASE "buttonViewTiled_clicked"
::oCurPanel:saveGeometry()
::oCurPanel:tileSubWindows()
::oCurPanel:nViewStyle := 1
::oCurPanel:prepare()
EXIT
CASE "buttonViewCascaded_clicked"
::oCurPanel:saveGeometry()
::oCurPanel:cascadeSubWindows()
::oCurPanel:nViewStyle := 2
::oCurPanel:prepare()
EXIT
CASE "buttonViewTabbed_clicked"
::oCurPanel:setViewMode( iif( ::oCurPanel:viewMode() == QMdiArea_TabbedView, QMdiArea_SubWindowView, QMdiArea_TabbedView ) )
EXIT
ENDSWITCH
#if 0
activateNextSubWindow()
activatePreviousSubWindow()
closeActiveSubWindow()
closeAllSubWindows()
setActiveSubWindow( QMdiSubWindow )
#endif
RETURN Self
/*----------------------------------------------------------------------*/
@@ -334,20 +482,19 @@ METHOD IdeBrowseManager:loadTables()
aPanel := hb_aTokens( cInfo, "," )
IF ::isPanel( aPanel[ 1 ] )
IF hb_fileExists( cTable := hbide_pathToOSPath( aPanel[ 2 ] ) )
::showPanel( aPanel[ 1 ] )
::addTable( cTable )
::setPanel( aPanel[ 1 ] )
::addTable( cTable, , aPanel )
ENDIF
ENDIF
NEXT
::qStack:setCurrentWidget( oCurPanel )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addTable( cFileDBF, cAlias )
LOCAL oBrw
METHOD IdeBrowseManager:addTable( cFileDBF, cAlias, aInfo )
LOCAL oBrw, qSubWindow
oBrw := IdeBrowse():new()
oBrw:cTable := cFileDBF
@@ -356,9 +503,14 @@ METHOD IdeBrowseManager:addTable( cFileDBF, cAlias )
oBrw:create()
::oCurPanel:addBrowser( oBrw )
qSubWindow := ::oCurPanel:addBrowser( oBrw, aInfo )
aadd( ::oCurPanel:aItems, oBrw )
::connect( qSubWindow, "aboutToActivate()", {|| ::execEvent( "mdiSubWindow_aboutToActivate", qSubWindow ) } )
::connect( qSubWindow, "windowStateChanged(Qt::WindowStates,Qt::WindowStates)", ;
{|p,p1| ::execEvent( "mdiSubWindow_windowStateChanged", p, p1, qSubWindow ) } )
qSubWindow:installEventFilter( ::pEvents )
::connect( qSubWindow, QEvent_Close, {|| ::execEvent( "buttonCloseX_clicked", qSubWindow ) } )
RETURN Self
@@ -371,6 +523,25 @@ METHOD IdeBrowseManager:addArray( aData, aAttr )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:buildPanelsButton()
::qPanelsMenu := QMenu():new()
::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) )
::qPanelsButton := QToolButton():new()
::qPanelsButton:setTooltip( "ideDBU Panels" )
::qPanelsButton:setIcon( hbide_image( "panel_8" ) )
::qPanelsButton:setPopupMode( QToolButton_MenuButtonPopup )
::qPanelsButton:setMenu( ::qPanelsMenu )
::connect( ::qPanelsButton, "clicked()", {|| ::execEvent( "qPanelsButton_clicked" ) } )
::qToolbar:addWidget( ::qPanelsButton )
RETURN Self
/*----------------------------------------------------------------------*/
//
// Class IdeBrowsePanel
@@ -379,16 +550,37 @@ METHOD IdeBrowseManager:addArray( aData, aAttr )
CLASS IdeBrowsePanel INHERIT IdeObject
DATA cPanel INIT ""
DATA qWidget
DATA qLayout
DATA qVSplitter
DATA qMenuWindows
DATA aItems INIT {}
DATA cPanel INIT ""
DATA nViewStyle INIT 0 /* 0=asWindows 1=tabbed */
DATA lLayoutLocked INIT .f.
DATA aSubWindows INIT {}
ACCESS subWindows() INLINE ::aSubWindows
METHOD new( oIde, cPanel )
METHOD addBrowser( oBrw )
METHOD destroy( oBrw )
METHOD destroyByX( qSubWindow )
METHOD addBrowser( oBrw, aInfo )
METHOD prepare()
METHOD saveGeometry()
METHOD restGeometry()
METHOD viewMode() INLINE ::qWidget:viewMode()
METHOD setViewMode( nMode ) INLINE ::qWidget:setViewMode( nMode )
METHOD tileSubWindows() INLINE ::qWidget:tileSubWindows()
METHOD cascadeSubWindows() INLINE ::qWidget:cascadeSubWindows()
METHOD activateNextSubWindow() INLINE ::qWidget:activateNextSubWindow()
METHOD activatePreviousSubWindow() INLINE ::qWidget:activatePreviousSubWindow()
#if 0
closeActiveSubWindow()
closeAllSubWindows()
setActiveSubWindow( QMdiSubWindow )
#endif
ENDCLASS
@@ -399,28 +591,118 @@ METHOD IdeBrowsePanel:new( oIde, cPanel )
::oIde := oIde
::cPanel := cPanel
::qWidget := QWidget():new()
::qWidget := QMdiArea():new()
::qWidget:setObjectName( ::cPanel )
::qLayout := QHBoxLayout():new()
::qLayout:setContentsMargins( 0,0,0,0 )
::qLayout:setSpacing( 2 )
::qVSplitter := QSplitter():new()
::qVSplitter:setOrientation( Qt_Vertical )
::qLayout:addWidget( ::qVSplitter )
::qWidget:setLayout( ::qLayout )
::qWidget:setDocumentMode( .t. )
::qWidget:setOption( QMdiArea_DontMaximizeSubWindowOnActivation, .t. )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowsePanel:addBrowser( oBrw )
METHOD IdeBrowsePanel:destroy( oBrw )
LOCAL n, oSub
::qVSplitter:addWidget( oBrw:oWnd:oWidget )
IF ( n := ascan( ::aSubWindows, {|e_| e_[ 4 ] == oBrw } ) ) > 0
oSub := ::aSubWindows[ n, 2 ]
::qWidget:removeSubWindow( oSub )
oBrw:destroy()
oSub := NIL
hb_adel( ::aSubWindows, n, .t. )
ENDIF
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowsePanel:destroyByX( qSubWindow )
LOCAL n, oSub
IF ( n := ascan( ::aSubWindows, {|e_| e_[ 2 ] == qSubWindow } ) ) > 0
oSub := ::aSubWindows[ n, 2 ]
::qWidget:removeSubWindow( oSub )
::aSubWindows[ n, 4 ]:destroy()
oSub := NIL
hb_adel( ::aSubWindows, n, .t. )
ENDIF
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowsePanel:prepare()
LOCAL aSub
FOR EACH aSub IN ::aSubWindows
aSub[ SUB_BROWSER ]:configure()
NEXT
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowsePanel:addBrowser( oBrw, aInfo )
LOCAL qSubWindow, qRect, cR
STATIC nID := 0
nID++ /* Unique for current run */
qSubWindow := QMdiSubWindow():new( ::oDlg:oWidget )
qSubWindow:setWidget( oBrw:oWnd:oWidget )
qSubWindow:setWindowTitle( oBrw:cTable )
qSubWindow:setObjectName( hb_ntos( nID ) )
IF !empty( aInfo ) .AND. !empty( aInfo[ TBL_GEOMETRY ] )
qRect := hb_aTokens( aInfo[ TBL_GEOMETRY ], " " )
FOR EACH cR IN qRect
cR := val( cR )
NEXT
qRect := QRect():new( qRect[ 1 ], qRect[ 2 ], qRect[ 3 ], qRect[ 4 ] )
qSubWindow:setGeometry( qRect )
ELSE
//qSubWindow:resize( 300, 200 )
ENDIF
::qWidget:addSubWindow( qSubWindow )
oBrw:oWnd:oWidget:show()
qSubWindow:show()
aadd( ::aSubWindows, { nId, qSubWindow, qRect, oBrw, NIL } )
RETURN qSubWindow
/*------------------------------------------------------------------------*/
METHOD IdeBrowsePanel:saveGeometry()
LOCAL aSubWindow
IF ::nViewStyle == 0 /* Only if in self organized mode */
FOR EACH aSubWindow IN ::aSubWindows
aSubWindow[ 3 ] := QRect():from( aSubWindow[ 2 ]:geometry() )
NEXT
ENDIF
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowsePanel:restGeometry()
LOCAL aSubWindow
IF ::nViewStyle == 0
FOR EACH aSubWindow IN ::aSubWindows
IF hb_isObject( aSubWindow[ 3 ] )
aSubWindow[ 2 ]:setGeometry( aSubWindow[ 3 ] )
ENDIF
NEXT
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
@@ -454,8 +736,14 @@ CLASS IdeBrowse INHERIT IdeObject
DATA nCursorType INIT XBPBRW_CURSOR_CELL
DATA lOpened INIT .f.
DATA qVerSpl
DATA qClose
ACCESS indexOrd() INLINE ::nOrder
METHOD new( oIde )
METHOD create( oIde )
METHOD configure()
METHOD destroy()
METHOD execEvent( cEvent, p, p1 )
METHOD buildBrowser()
@@ -471,9 +759,9 @@ CLASS IdeBrowse INHERIT IdeObject
METHOD lastRec()
METHOD next()
METHOD previous()
METHOD activated()
METHOD buildForm()
METHOD populateForm()
METHOD fetchAlias( cTable )
ENDCLASS
@@ -487,8 +775,20 @@ METHOD IdeBrowse:new( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:fetchAlias( cTable )
LOCAL cFile
STATIC n := 0
n++
hb_fNameSplit( cTable, , @cFile )
RETURN upper( "C" + cFile + hb_ntos( n ) )
/*------------------------------------------------------------------------*/
METHOD IdeBrowse:create( oIde )
LOCAL xVrb, cT
LOCAL xVrb, cT, cAlias
LOCAL lMissing := .t.
DEFAULT oIde TO ::oIde
@@ -498,6 +798,12 @@ METHOD IdeBrowse:create( oIde )
::nType := BRW_TYPE_ARRAY
ENDIF
#if 0
IF empty( ::cAlias )
::cAlias := ::fetchAlias( ::cTable )
ENDIF
#endif
IF ::nType == BRW_TYPE_DBF
IF !empty( ::cAlias ) .AND. empty( ::cTable )
IF select( ::cAlias ) > 0
@@ -509,7 +815,8 @@ METHOD IdeBrowse:create( oIde )
IF empty( ::cAlias )
USE ( ::cTable ) SHARED NEW VIA ( ::cDriver )
ELSE
USE ( ::cTable ) SHARED NEW ALIAS ( ::cAlias ) VIA ( ::cDriver )
cAlias := ::cAlias
USE ( ::cTable ) ALIAS ( cAlias ) SHARED NEW VIA ( ::cDriver )
ENDIF
IF NetErr()
MsgBox( ::cTable, "Could not been opened!" )
@@ -570,6 +877,25 @@ METHOD IdeBrowse:destroy()
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:configure()
LOCAL nRowPos := ::oBrw:rowPos()
LOCAL nColPos := ::oBrw:colPos()
::oBrw:configure()
IF nRowPos > ::oBrw:rowCount()
::oBrw:rowPos := ::oBrw:rowCount()
ENDIF
::oBrw:colPos := nColPos
::oBrw:refreshAll()
::oBrw:forceStable()
::oBrw:setCurrentIndex( .f. )
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeBrowse:buildBrowser()
LOCAL qLayout, oWnd, oXbpBrowse
@@ -605,14 +931,12 @@ METHOD IdeBrowse:buildBrowser()
oXbpBrowse:goPosBlock := {|n| ::goto( n ) }
oXbpBrowse:phyPosBlock := {| | ::recNo() }
oXbpBrowse:setInputFocus := {|| ::activated() }
/* Form View */
::qForm := QWidget():new()
::qFLayout := QFormLayout():new()
::qForm:setLayout( ::qFLayout )
::qSplitter:addWidget( ::qForm )
//::qSplitter:addWidget( ::qForm )
::qForm:hide() /* Form view defaults to hidden */
@@ -620,6 +944,17 @@ METHOD IdeBrowse:buildBrowser()
::oWnd := oWnd
::oBrw := oXbpBrowse
::qVerSpl := QSplitter():new( Qt_Vertical )
::qSplitter:addWidget( ::qVerSpl )
::qVerSpl:addWidget( ::qForm )
::qClose := QToolButton():new()
::qClose:setIcon( hbide_image( "closetab" ) )
::qClose:hide()
::qVerSpl:addWidget( ::qClose )
RETURN Self
/*----------------------------------------------------------------------*/
@@ -642,15 +977,6 @@ METHOD IdeBrowse:execEvent( cEvent, p, p1 )
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:activated()
HB_TRACE( HB_TR_ALWAYS, "ACTIVATED" )
::oQScintillaDock:oWidget:setWindowTitle( ::cTable )
RETURN Self
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_xtosForForm( xVrb )
LOCAL cType := valtype( xVrb )
@@ -858,14 +1184,14 @@ METHOD IdeBrowse:goTo( nRec )
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:next()
LOCAL nSaveRecNum := recno()
LOCAL nSaveRecNum := ( ::cAlias )->( recno() )
LOCAL lMoved := .T.
IF ( ::cAlias )->( Eof() )
lMoved := .F.
ELSE
( ::cAlias )->( DBSkip( 1 ) )
IF Eof()
IF ( ::cAlias )->( Eof() )
lMoved := .F.
( ::cAlias )->( DBGoTo( nSaveRecNum ) )
ENDIF
@@ -876,12 +1202,12 @@ METHOD IdeBrowse:next()
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:previous()
LOCAL nSaveRecNum := Recno()
LOCAL nSaveRecNum := ( ::cAlias )->( recno() )
LOCAL lMoved := .T.
( ::cAlias )->( DBSkip( -1 ) )
IF Bof()
IF ( ::cAlias )->( Bof() )
( ::cAlias )->( DBGoTo( nSaveRecNum ) )
lMoved := .F.
ENDIF
@@ -889,3 +1215,4 @@ METHOD IdeBrowse:previous()
RETURN lMoved
/*----------------------------------------------------------------------*/

View File

@@ -696,22 +696,24 @@ METHOD IdeDocks:buildToolBarPanels()
::qTBarDocks:setAllowedAreas( Qt_LeftToolBarArea + Qt_RightToolBarArea + Qt_TopToolBarArea + Qt_BottomToolBarArea )
aBtns := {}
aadd( aBtns, { ::oDockPT , "projtree" } )
aadd( aBtns, { ::oDockED , "editstree" } )
aadd( aBtns, { ::oSkltnsTreeDock, "projtree" } )
aadd( aBtns, { ::oDockPT , "projtree" } )
aadd( aBtns, { ::oDockED , "editstree" } )
aadd( aBtns, { ::oSkltnsTreeDock , "projtree" } )
aadd( aBtns, {} )
aadd( aBtns, { ::oHelpDock , "help" } )
aadd( aBtns, { ::oDocViewDock , "harbourhelp" } )
aadd( aBtns, { ::oDocWriteDock , "docwriter" } )
aadd( aBtns, { ::oFuncDock , "dc_function" } )
aadd( aBtns, { ::oFunctionsDock , "ffn" } )
aadd( aBtns, { ::oPropertiesDock, "properties" } )
aadd( aBtns, { ::oEnvironDock , "envconfig" } )
aadd( aBtns, { ::oSkeltnDock , "codeskeletons" } )
aadd( aBtns, { ::oThemesDock , "syntaxhiliter" } )
aadd( aBtns, { ::oFindDock , "search" } )
aadd( aBtns, { ::oHelpDock , "help" } )
aadd( aBtns, { ::oDocViewDock , "harbourhelp" } )
aadd( aBtns, { ::oDocWriteDock , "docwriter" } )
aadd( aBtns, { ::oFuncDock , "dc_function" } )
aadd( aBtns, { ::oFunctionsDock , "ffn" } )
aadd( aBtns, { ::oPropertiesDock , "properties" } )
aadd( aBtns, { ::oEnvironDock , "envconfig" } )
aadd( aBtns, { ::oSkeltnDock , "codeskeletons" } )
aadd( aBtns, { ::oThemesDock , "syntaxhiliter" } )
aadd( aBtns, { ::oFindDock , "search" } )
aadd( aBtns, { ::oSourceThumbnailDock, "thumbnail" } )
aadd( aBtns, { ::oQScintillaDock , "browser" } )
aadd( aBtns, {} )
aadd( aBtns, { ::oDockB2 , "builderror" } )
aadd( aBtns, { ::oDockB2 , "builderror" } )
FOR EACH a_ IN aBtns
IF empty( a_ )
@@ -1227,7 +1229,7 @@ METHOD IdeDocks:getMarkWidget( nIndex )
/*----------------------------------------------------------------------*/
METHOD IdeDocks:animateComponents( nMode )
LOCAL cStyle
LOCAL cStyle, oView
IF nMode == NIL
::oIde:nAnimantionMode := iif( ::nAnimantionMode == HBIDE_ANIMATION_NONE, HBIDE_ANIMATION_GRADIENT, HBIDE_ANIMATION_NONE )
@@ -1236,38 +1238,53 @@ METHOD IdeDocks:animateComponents( nMode )
::oIde:nAnimantionMode := nMode
::oIde:oINI:cIdeAnimated := hb_ntos( ::nAnimantionMode )
::oDlg:menubar():setStyleSheet( GetStyleSheet( "QMenuBar", nMode ) )
/* Main Window */
::oDlg:setStyleSheet( GetStyleSheet( "QMainWindow", ::nAnimantionMode ) )
::qTBarPanels:setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
::qTBarLines:setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
::qTBarDocks:setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
/* Main Menu Bar with all its submenus */
::oDlg:menubar():setStyleSheet( GetStyleSheet( "QMenuBar", nMode ), GetStyleSheet( "QMenuPop", nMode ) )
::oMainToolbar:setStyleSheet( GetStyleSheet( "QToolBar", nMode ) )
/* Toolbars */
::oMainToolbar:setStyleSheet( GetStyleSheet( "QToolBar" , nMode ) )
::qTBarPanels :setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
::qTBarLines :setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
::qTBarDocks :setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
/* User defined toolbars */
::oTM:setStyleSheet( GetStyleSheet( "QToolBarLR5", nMode ) )
::oEM:setStyleSheet( nMode )
::oBM:setStyleSheet( nMode )
/* Statusbar */
::oSBar:oWidget:setStyleSheet( GetStyleSheet( "QStatusBar", nMode ) )
/* Docking Widgets */
cStyle := GetStyleSheet( "QDockWidget", nMode )
//
::oDockPT:oWidget : setStyleSheet( cStyle )
::oDockED:oWidget : setStyleSheet( cStyle )
::oSkltnsTreeDock:oWidget : setStyleSheet( cStyle )
::oHelpDock:oWidget : setStyleSheet( cStyle )
::oDocViewDock:oWidget : setStyleSheet( cStyle )
::oDocWriteDock:oWidget : setStyleSheet( cStyle )
::oFuncDock:oWidget : setStyleSheet( cStyle )
::oFunctionsDock:oWidget : setStyleSheet( cStyle )
::oPropertiesDock:oWidget : setStyleSheet( cStyle )
::oEnvironDock:oWidget : setStyleSheet( cStyle )
::oSkeltnDock:oWidget : setStyleSheet( cStyle )
::oThemesDock:oWidget : setStyleSheet( cStyle )
::oFindDock:oWidget : setStyleSheet( cStyle )
::oDockB2:oWidget : setStyleSheet( cStyle )
::oQScintillaDock:oWidget : setStyleSheet( cStyle )
::oSourceThumbnailDock:oWidget : setStyleSheet( cStyle )
::oDockPT:oWidget :setStyleSheet( cStyle )
::oDockED:oWidget :setStyleSheet( cStyle )
::oSkltnsTreeDock:oWidget:setStyleSheet( cStyle )
::oHelpDock:oWidget :setStyleSheet( cStyle )
::oDocViewDock:oWidget :setStyleSheet( cStyle )
::oDocWriteDock:oWidget :setStyleSheet( cStyle )
::oFuncDock:oWidget :setStyleSheet( cStyle )
::oFunctionsDock:oWidget :setStyleSheet( cStyle )
::oPropertiesDock:oWidget:setStyleSheet( cStyle )
::oEnvironDock:oWidget :setStyleSheet( cStyle )
::oSkeltnDock:oWidget :setStyleSheet( cStyle )
::oThemesDock:oWidget :setStyleSheet( cStyle )
::oFindDock:oWidget :setStyleSheet( cStyle )
::oDockB2:oWidget :setStyleSheet( cStyle )
::oQScintillaDock:oWidget:setStyleSheet( cStyle )
::oSourceThumbnailDock:oWidget:setStyleSheet( cStyle )
::oProjTree:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) )
#if 1
// should be iteration
::qTabWidget:setStyleSheet( GetStyleSheet( "QTabWidget", nMode ) )
#endif
/* Edior Tab Widget */
FOR EACH oView IN ::aViews
oView:oTabWidget:oWidget:setStyleSheet( GetStyleSheet( "QTabWidget", nMode ) )
NEXT
RETURN Self

View File

@@ -87,6 +87,7 @@
CLASS IdeEditsManager INHERIT IdeObject
DATA qContextMenu
DATA qContextSub
DATA aActions INIT {}
METHOD new( oIde )
@@ -173,6 +174,7 @@ CLASS IdeEditsManager INHERIT IdeObject
METHOD changeThumbnail()
METHOD spaces2tabs()
METHOD qscintilla()
METHOD setStyleSheet( nMode )
ENDCLASS
@@ -186,8 +188,16 @@ METHOD IdeEditsManager:new( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeEditsManager:setStyleSheet( nMode )
::qContextMenu:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) )
::qContextSub:setStyleSheet( GetStyleSheet( "QMenuPop", nMode ) )
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeEditsManager:create( oIde )
LOCAL oSub
DEFAULT oIde TO ::oIde
@@ -213,12 +223,12 @@ METHOD IdeEditsManager:create( oIde )
aadd( ::aActions, { "Apply Theme" , ::qContextMenu:addAction( "Apply Theme" ) } )
aadd( ::aActions, { "Save as Skltn", ::qContextMenu:addAction( "Save as Skeleton..." ) } )
oSub := QMenu():configure( ::qContextMenu:addMenu_1( "Split" ) )
::qContextSub := QMenu():configure( ::qContextMenu:addMenu_1( "Split" ) )
//
aadd( ::aActions, { "Split H" , oSub:addAction( "Split Horizontally" ) } )
aadd( ::aActions, { "Split V" , oSub:addAction( "Split Vertically" ) } )
aadd( ::aActions, { "" , oSub:addSeparator() } )
aadd( ::aActions, { "Close Split" , oSub:addAction( "Close Split Window" ) } )
aadd( ::aActions, { "Split H" , ::qContextSub:addAction( "Split Horizontally" ) } )
aadd( ::aActions, { "Split V" , ::qContextSub:addAction( "Split Vertically" ) } )
aadd( ::aActions, { "" , ::qContextSub:addSeparator() } )
aadd( ::aActions, { "Close Split" , ::qContextSub:addAction( "Close Split Window" ) } )
::oIde:qProtoList := QStringList():new()
::oIde:qCompModel := QStringListModel():new()
@@ -1233,7 +1243,7 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
/* Populate right at creation */
::oEM:addSourceInTree( ::sourceFile, ::cView )
::qTabWidget:setStyleSheet( GetStyleSheet( "QTabWidget", ::nAnimantionMode ) )
//::qTabWidget:setStyleSheet( GetStyleSheet( "QTabWidget", ::nAnimantionMode ) )
IF ::lReadOnly
::oEdit:setReadOnly( .t. )
::qEdit:setTextInteractionFlags( Qt_TextSelectableByMouse + Qt_TextSelectableByKeyboard )

View File

@@ -113,6 +113,7 @@ FUNCTION hbide_execPopup( aPops, aqPos, qParent )
LOCAL i, qPop, qPoint, qAct, cAct, xRet, pAct, a_, qSub, b_
qPop := QMenu():new( iif( hb_isObject( qParent ), qParent, NIL ) )
qPop:setStyleSheet( GetStyleSheet( "QMenuPop", hbide_setIde():nAnimantionMode ) )
FOR i := 1 TO len( aPops )
IF empty( aPops[ i,1 ] )
@@ -122,6 +123,7 @@ FUNCTION hbide_execPopup( aPops, aqPos, qParent )
qPop:addAction_4( aPops[ i, 1 ] )
ELSEIF hb_isArray( aPops[ i, 1 ] ) /* Sub-menu */
qSub := QMenu():new( qPop )
qSub:setStyleSheet( GetStyleSheet( "QMenuPop", hbide_setIde():nAnimantionMode ) )
FOR EACH a_ IN aPops[ i, 1 ]
qSub:addAction( a_[ 1 ] )
NEXT

View File

@@ -499,7 +499,6 @@ METHOD IdeSkeletons:showTree()
::oTree:hasButtons := .T.
::oTree:create( ::oSkltnsTreeDock, , { 0,0 }, { 10,10 }, , .t. )
::oTree:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) )
::oTree:oWidget:setMinimumWidth( 100 )
::oTree:oWidget:setSizePolicy_1( QSizePolicy_MinimumExpanding, QSizePolicy_Preferred )
::oTree:oWidget:setIconSize( QSize():new( 12,12 ) )
@@ -517,6 +516,8 @@ METHOD IdeSkeletons:showTree()
::oSkltnsTreeDock:oWidget:setWidget( ::oTree:oWidget )
ENDIF
::oTree:setStyleSheet( GetStyleSheet( "QTreeWidgetHB", ::nAnimantionMode ) )
RETURN Self
/*----------------------------------------------------------------------*/

View File

@@ -81,6 +81,17 @@ FUNCTION GetStyleSheet( cWidget, nMode )
DO CASE
CASE cWidget == "QMenuPop"
IF nMode == HBIDE_ANIMATION_GRADIENT
aadd( txt_, 'QMenu { ' )
aadd( txt_, hbide_ideThemeColorCSS( "MenuPop", 1 ) )
aadd( txt_, '} ' )
ELSE
aadd( txt_, 'QMenu { ' )
aadd( txt_, hbide_cssColorString( "bg-std" ) )
aadd( txt_, '} ' )
ENDIF
CASE cWidget == "QMenu"
aadd( txt_, ' QMenu { ' )
@@ -486,6 +497,9 @@ STATIC FUNCTION hbide_ideThemeColorCSS( cPart, nTheme )
cPart := lower( cPart )
DO CASE
CASE cPart == "menupop"
cCSS := ' background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, ' + ;
hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); "
CASE cPart == "menubartop"
cCSS := ' background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, ' + ;
hbide_buildGradientString( hbide_loadIdeTheme( nTheme ) ) + "); "

View File

@@ -551,21 +551,21 @@ METHOD IdeThemes:show()
::oThemesDock:oWidget:setWidget( ::oUI )
::oUI:signal( "listThemes" , "currentRowChanged(int)" , {|i| ::execEvent( listThemes_currentRowChanged, i ) } )
::oUI:signal( "listItems" , "currentRowChanged(int)" , {|i| ::execEvent( listItems_currentRowChanged, i ) } )
::oUI:signal( "listItems" , "currentRowChanged(int)" , {|i| ::execEvent( listItems_currentRowChanged, i ) } )
::oUI:signal( "buttonColor" , "clicked()" , {|| ::updateColor() } )
::oUI:signal( "buttonSave" , "clicked()" , {|| ::save( .f. ) } )
::oUI:signal( "buttonSaveAs" , "clicked()" , {|| ::save( .t. ) } )
::oUI:signal( "buttonCopy" , "clicked()" , {|| ::copy( .t. ) } )
::oUI:signal( "buttonApply" , "clicked()" , {|| ::execEvent( applyMenu_triggered_applyToCurrentTab ) } )
::oUI:signal( "buttonApplyAll", "clicked()" , {|| ::execEvent( applyMenu_triggered_applyToAllTabs ) } )
::oUI:signal( "buttonDefault" , "clicked()" , {|| ::execEvent( applyMenu_triggered_setAsDefault ) } )
::oUI:signal( "buttonColor" , "clicked()" , {| | ::updateColor() } )
::oUI:signal( "buttonSave" , "clicked()" , {| | ::save( .f. ) } )
::oUI:signal( "buttonSaveAs" , "clicked()" , {| | ::save( .t. ) } )
::oUI:signal( "buttonCopy" , "clicked()" , {| | ::copy( .t. ) } )
::oUI:signal( "buttonApply" , "clicked()" , {| | ::execEvent( applyMenu_triggered_applyToCurrentTab ) } )
::oUI:signal( "buttonApplyAll", "clicked()" , {| | ::execEvent( applyMenu_triggered_applyToAllTabs ) } )
::oUI:signal( "buttonDefault" , "clicked()" , {| | ::execEvent( applyMenu_triggered_setAsDefault ) } )
::oUI:signal( "checkItalic" , "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_ITALIC, i ) } )
::oUI:signal( "checkBold" , "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_BOLD , i ) } )
::oUI:signal( "checkUnderline", "stateChanged(int)" , {|i| ::updateAttribute( THM_ATR_ULINE , i ) } )
::oUI:signal( "buttonClose" , "clicked()" , {|| ::oThemesDock:hide() } )
::oUI:signal( "buttonClose" , "clicked()" , {| | ::oThemesDock:hide() } )
/* Fill Themes Dialog Values */
::oUI:setWindowTitle( GetKeyValue( ::aControls, "dialogTitle" ) )
@@ -584,7 +584,7 @@ METHOD IdeThemes:show()
::oUI:qObj[ "buttonCopy" ]:setText( GetKeyValue( ::aControls, "buttonCopy" , "Copy" ) )
aeval( ::aThemes, {|e_| ::oUI:q_listThemes:addItem( e_[ 1 ] ) } )
aeval( ::aItems , {|e_| ::oUI:q_listItems:addItem( e_[ 2 ] ) } )
aeval( ::aItems , {|e_| ::oUI:q_listItems:addItem( e_[ 2 ] ) } )
::qEdit := ::oUI:q_plainThemeText
::qEdit:setPlainText( GetSource() )

View File

@@ -111,6 +111,7 @@ CLASS IdeToolsManager INHERIT IdeObject
METHOD populateButtonsTable( nIndex )
METHOD buildUserToolbars()
METHOD populatePlugins( lClear )
METHOD setStyleSheet( cCSS )
ENDCLASS
@@ -124,6 +125,21 @@ METHOD IdeToolsManager:new( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeToolsManager:setStyleSheet( cCSS )
LOCAL oToolbar
FOR EACH oToolbar IN ::aToolbars
IF !empty( oToolbar )
oToolbar:setStyleSheet( cCSS )
ENDIF
NEXT
::qToolsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) )
::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) )
RETURN Self
/*------------------------------------------------------------------------*/
METHOD IdeToolsManager:create( oIde )
LOCAL oAct
@@ -634,6 +650,7 @@ METHOD IdeToolsManager:buildToolsButton()
LOCAL a_, qAct
::qToolsMenu := QMenu():new()
::qToolsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) )
FOR EACH a_ IN ::aTools
qAct := ::qToolsMenu:addAction( a_[ 1 ] )
::connect( qAct, "triggered(bool)", {|| ::execTool( a_[ 1 ] ) } )
@@ -655,6 +672,7 @@ METHOD IdeToolsManager:buildPanelsButton()
LOCAL cView
::qPanelsMenu := QMenu():new()
::qPanelsMenu:setStyleSheet( GetStyleSheet( "QMenuPop", ::nAnimantionMode ) )
::addPanelsMenu( "Main" )
FOR EACH cView IN ::oINI:aViews
::addPanelsMenu( cView )

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

View File

@@ -2228,6 +2228,19 @@
#define QSystemTrayIcon_Trigger 3 // The system tray entry was clicked
#define QSystemTrayIcon_MiddleClick 4 // The system tray entry was clicked with the middle mouse button
/* QMdiArea */
#define QMdiArea_SubWindowView 0
#define QMdiArea_TabbedView 1
#define QMdiArea_CreationOrder 0
#define QMdiArea_StackingOrder 1
#define QMdiArea_ActivationHistoryOrder 2
#define QMdiArea_DontMaximizeSubWindowOnActivation 1
#define QMdiSubWindow_RubberBandResize 0x04
#define QMdiSubWindow_RubberBandMove 0x08
/*----------------------------------------------------------------------*/
#define _HBQT_CH

View File

@@ -234,6 +234,11 @@ static bool connect_signal( QString signal, QObject * object, HBSlots * t_slots
if( signal == ( QString ) "toggled(bool)" ) return object->connect( object, SIGNAL( toggled( bool ) ), t_slots, SLOT( toggled( bool ) ), Qt::AutoConnection );
/* QSystemTrayIcon */
if( signal == ( QString ) "activated(QSystemTrayIcon::ActivationReason)" ) return object->connect( object, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), t_slots, SLOT( activated( QSystemTrayIcon::ActivationReason ) ), Qt::AutoConnection );
/* QMdiArea */
if( signal == ( QString ) "subWindowActivated(QMdiSubWindow)" ) return object->connect( object, SIGNAL( subWindowActivated( QMdiSubWindow * ) ), t_slots, SLOT( subWindowActivated( QMdiSubWindow * ) ), Qt::AutoConnection );
/* QMdiSubWindow */
if( signal == ( QString ) "aboutToActivate()" ) return object->connect( object, SIGNAL( aboutToActivate() ), t_slots, SLOT( aboutToActivate() ), Qt::AutoConnection );
if( signal == ( QString ) "windowStateChanged(Qt::WindowStates,Qt::WindowStates)" ) return object->connect( object, SIGNAL( windowStateChanged( Qt::WindowStates, Qt::WindowStates ) ), t_slots, SLOT( windowStateChanged( Qt::WindowStates, Qt::WindowStates ) ), Qt::AutoConnection );
/* New */
return false;
}
@@ -405,6 +410,11 @@ static bool disconnect_signal( QObject * object, const char * signal )
if( signal == ( QString ) "toggled(bool)" ) return object->disconnect( SIGNAL( toggled( bool ) ) );
/* QSystemTrayIcon */
if( signal == ( QString ) "activated(QSystemTrayIcon::ActivationReason)" ) return object->disconnect( SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ) );
/* QMdiArea */
if( signal == ( QString ) "subWindowActivated(QMdiSubWindow)" ) return object->disconnect( SIGNAL( subWindowActivated( QMdiSubWindow * ) ) );
/* QMdiSubWindow */
if( signal == ( QString ) "aboutToActivate()" ) return object->disconnect( SIGNAL( aboutToActivate() ) );
if( signal == ( QString ) "windowStateChanged(Qt::WindowStates,Qt::WindowStates)" ) return object->disconnect( SIGNAL( windowStateChanged( Qt::WindowStates, Qt::WindowStates ) ) );
/* new */
return false;
@@ -1030,6 +1040,11 @@ void HBSlots::highlighted( const QModelIndex & index )
void HBSlots::toggled( bool checked ) { hbqt_SlotsExecBool( this, qobject_cast<QObject *>( sender() ), "toggled(bool)", checked ); }
/* QSystemTrayIcon */
void HBSlots::activated( QSystemTrayIcon::ActivationReason reason ) { hbqt_SlotsExecInt( this, qobject_cast<QObject *>( sender() ), "activated(QSystemTrayIcon::ActivationReason)", reason ); }
/* QMdiArea */
void HBSlots::subWindowActivated( QMdiSubWindow * window ) { hbqt_SlotsExecPointer( this, qobject_cast<QObject *>( sender() ), "subWindowActivated(QMdiSubWindow)", window ); }
/* QMdiSubWindow */
void HBSlots::aboutToActivate() { hbqt_SlotsExec( this, qobject_cast<QObject *>( sender() ), "aboutToActivate()" ); }
void HBSlots::windowStateChanged( Qt::WindowStates oldState, Qt::WindowStates newState ) { hbqt_SlotsExecIntInt( this, qobject_cast<QObject *>( sender() ), "windowStateChanged(Qt::WindowStates,Qt::WindowStates)", oldState, newState ); }
/* Latest */
/*----------------------------------------------------------------------*/

View File

@@ -67,6 +67,7 @@
#include <QtGui/QDockWidget>
#include <QtGui/QHeaderView>
#include <QtGui/QSystemTrayIcon>
#include <QtGui/QMdiSubWindow>
/*----------------------------------------------------------------------*/
@@ -284,6 +285,11 @@ public slots:
void toggled( bool checked );
/* QSystemTrayIcon */
void activated( QSystemTrayIcon::ActivationReason reason );
/* QMdiArea */
void subWindowActivated( QMdiSubWindow * window );
/* QMdiSubWindow */
void aboutToActivate();
void windowStateChanged( Qt::WindowStates oldState, Qt::WindowStates newState );
/* Latest */
};

View File

@@ -365,7 +365,6 @@ PROTECTED:
DATA lFirst INIT .t.
DATA nRowsInView INIT 1
METHOD setCurrentIndex( lReset )
METHOD setHorzOffset()
METHOD setVertScrollBarRange( lPageStep )
METHOD setHorzScrollBarRange( lPageStep )
@@ -435,7 +434,12 @@ EXPORTED:
DATA nLeftFrozen INIT 0
DATA nRightFrozen INIT 0
DATA gridStyle INIT Qt_SolidLine
METHOD destroy()
DATA nCellHeight INIT 20
METHOD setCellHeight( nCellHeight )
METHOD setCurrentIndex( lReset )
ENDCLASS
@@ -469,7 +473,7 @@ METHOD XbpBrowse:buildLeftFreeze()
::oLeftView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
::oLeftView:setTabKeyNavigation( .t. )
::oLeftView:setShowGrid( .t. )
::oLeftView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
::oLeftView:setGridStyle( ::gridStyle ) /* to be based on column definition */
::oLeftView:setSelectionMode( QAbstractItemView_SingleSelection )
::oLeftView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
//
@@ -519,7 +523,7 @@ METHOD XbpBrowse:buildRightFreeze()
::oRightView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
::oRightView:setTabKeyNavigation( .t. )
::oRightView:setShowGrid( .t. )
::oRightView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
::oRightView:setGridStyle( ::gridStyle ) /* to be based on column definition */
::oRightView:setSelectionMode( QAbstractItemView_SingleSelection )
::oRightView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
//
@@ -572,7 +576,7 @@ METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
/* Some parameters */
::oTableView:setTabKeyNavigation( .t. )
::oTableView:setShowGrid( .t. )
::oTableView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
::oTableView:setGridStyle( ::gridStyle ) /* to be based on column definition */
::oTableView:setSelectionMode( QAbstractItemView_SingleSelection )
::oTableView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
@@ -747,10 +751,11 @@ METHOD XbpBrowse:destroy()
/*----------------------------------------------------------------------*/
METHOD XbpBrowse:execSlot( nEvent, p1, p2, p3 )
LOCAL oWheelEvent, oMouseEvent, i, nCol, nColPos, oPoint
LOCAL oWheelEvent, oMouseEvent, oPoint // i, nCol, nColPos
HB_SYMBOL_UNUSED( p2 )
//HB_TRACE( HB_TR_DEBUG, " XbpBrowse:execSlot:", 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 )
@@ -787,15 +792,15 @@ METHOD XbpBrowse:execSlot( nEvent, p1, p2, p3 )
oWheelEvent := QWheelEvent():configure( p1 )
IF oWheelEvent:orientation() == Qt_Vertical
IF oWheelEvent:delta() > 0
::up()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_Skip, -1, Self )
ELSE
::down()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_Skip, 1, Self )
ENDIF
ELSE
IF oWheelEvent:delta() > 0
::right()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_SkipCols, 1, Self )
ELSE
::left()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_SkipCols, -1, Self )
ENDIF
ENDIF
@@ -809,27 +814,27 @@ METHOD XbpBrowse:execSlot( nEvent, p1, p2, p3 )
CASE QAbstractSlider_SliderNoAction
RETURN NIL
CASE QAbstractSlider_SliderSingleStepAdd
::down()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_Skip, 1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderSingleStepSub
::up()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_Skip, -1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderPageStepAdd
::pageDown()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_NextPage, 1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderPageStepSub
::pageUp()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_PrevPage, 1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderToMinimum
::goTop()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_GoTop, 1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderToMaximum
::goBottom()
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_GoBottom, 1, Self )
::updateVertScrollBar()
EXIT
CASE QAbstractSlider_SliderMove
@@ -843,31 +848,11 @@ METHOD XbpBrowse:execSlot( nEvent, p1, p2, p3 )
::oTableView:setFocus()
CASE nEvent == 103 /* Horizontal Scrollbar: Slider moved */
nCol := ::oHScrollBar:value()+1
nColPos := ::colPos
IF nCol < nColPos
FOR i := 1 TO ( nColPos - nCol )
::left()
NEXT
ELSEIF nCol > nColPos
FOR i := 1 TO ( nCol - nColPos )
::right()
NEXT
ENDIF
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_SkipCols, ( ::oHScrollBar:value() + 1 ) - ::colPos, Self )
::oTableView:setFocus()
CASE nEvent == 104 /* Horizontal Scrollbar: Slider Released */
nCol := ::oHScrollBar:value()+1
nColPos := ::colPos
IF nCol < nColPos
FOR i := 1 TO ( nColPos - nCol )
::left()
NEXT
ELSEIF nCol > nColPos
FOR i := 1 TO ( nCol - nColPos )
::right()
NEXT
ENDIF
SetAppEvent( xbeBRW_Navigate, XBPBRW_Navigate_SkipCols, ( ::oHScrollBar:value() + 1 ) - ::colPos, Self )
::oTableView:setFocus()
CASE nEvent == 111 /* Column Header Pressed */
@@ -968,11 +953,17 @@ METHOD handleEvent( nEvent, mp1, mp2 ) CLASS XbpBrowse
CASE nEvent == xbeBRW_Navigate
DO CASE
CASE mp1 == XBPBRW_Navigate_NextLine
::down()
CASE mp1 == XBPBRW_Navigate_PrevLine
::up()
CASE mp1 == XBPBRW_Navigate_NextPage
::pageDown()
CASE mp1 == XBPBRW_Navigate_PrevPage
::pageUp()
CASE mp1 == XBPBRW_Navigate_GoTop
::goTop()
CASE mp1 == XBPBRW_Navigate_GoBottom
::goBottom()
CASE mp1 == XBPBRW_Navigate_Skip
IF mp2 < 0
FOR i := 1 TO abs( mp2 )
@@ -984,10 +975,15 @@ METHOD handleEvent( nEvent, mp1, mp2 ) CLASS XbpBrowse
NEXT
ENDIF
CASE mp1 == XBPBRW_Navigate_NextCol
::right()
CASE mp1 == XBPBRW_Navigate_PrevCol
::left()
CASE mp1 == XBPBRW_Navigate_FirstCol
::firstCol()
CASE mp1 == XBPBRW_Navigate_LastCol
::lastCol()
CASE mp1 == XBPBRW_Navigate_GoPos
//
CASE mp1 == XBPBRW_Navigate_SkipCols
IF mp2 < 0
FOR i := 1 TO abs( mp2 )
@@ -1000,7 +996,9 @@ METHOD handleEvent( nEvent, mp1, mp2 ) CLASS XbpBrowse
ENDIF
CASE mp1 == XBPBRW_Navigate_GotoItem
//
CASE mp1 == XBPBRW_Navigate_GotoRecord
//
OTHERWISE
lNavgt := .f.
ENDCASE
@@ -1153,7 +1151,7 @@ METHOD fetchColumnInfo( nInfo, nArea, nRow, nCol ) CLASS XbpBrowse
RETURN oCol:dAlignment
CASE HBQT_BRW_DATHEIGHT
RETURN oCol:dHeight
RETURN ::nCellHeight //oCol:dHeight
CASE HBQT_BRW_CELLDECORATION
IF oCol:type == XBPCOL_TYPE_FILEICON
@@ -1173,7 +1171,7 @@ METHOD fetchColumnInfo( nInfo, nArea, nRow, nCol ) CLASS XbpBrowse
IF nArea == 0 /* Header Area */
SWITCH nInfo
CASE HBQT_BRW_COLHEIGHT
RETURN oCol:hHeight
RETURN ::nCellHeight //oCol:hHeight
CASE HBQT_BRW_COLHEADER
RETURN oCol:heading
CASE HBQT_BRW_COLALIGN
@@ -1186,7 +1184,7 @@ METHOD fetchColumnInfo( nInfo, nArea, nRow, nCol ) CLASS XbpBrowse
ELSE /* Footer Area */
SWITCH nInfo
CASE HBQT_BRW_COLHEIGHT
RETURN oCol:fHeight
RETURN ::nCellHeight //oCol:fHeight
CASE HBQT_BRW_COLHEADER
RETURN oCol:footing
CASE HBQT_BRW_COLALIGN
@@ -1374,6 +1372,22 @@ METHOD XbpBrowse:setLeftFrozen( aColFrozens )
/*----------------------------------------------------------------------*/
METHOD setCellHeight( nCellHeight ) CLASS XbpBrowse
LOCAL i
FOR i := 1 TO ::nRowsInView
::oTableView : setRowHeight( i-1, nCellHeight )
IF !empty( ::oLeftView )
::oLeftView : setRowHeight( i-1, nCellHeight )
ENDIF
IF !empty( ::oRightView )
::oRightView : setRowHeight( i-1, nCellHeight )
ENDIF
NEXT
RETURN Self
/*------------------------------------------------------------------------*/
METHOD doConfigure() CLASS XbpBrowse
LOCAL oCol
LOCAL aCol, aVal, aValA
@@ -1548,18 +1562,15 @@ METHOD doConfigure() CLASS XbpBrowse
nMaxCellH := 0
aeval( ::columns, {|o| nMaxCellH := max( nMaxCellH, o:dHeight ) } )
//
nViewH := ::oViewport:height()
nViewH := ::oViewport:height() //- ::oHeaderView:height()
::nRowsInView := Int( nViewH / nMaxCellH )
IF ( nViewH % nMaxCellH ) > ( nMaxCellH / 2 )
::nRowsInView++
ENDIF
/* Probably this is the appropriate time to update row heights */
FOR i := 1 TO ::nRowsInView
::oTableView:setRowHeight( i-1, nMaxCellH )
::oLeftView:setRowHeight( i-1, nMaxCellH )
::oRightView:setRowHeight( i-1, nMaxCellH )
NEXT
::nCellHeight := nMaxCellH
::setCellHeight( nMaxCellH )
/* Implement Column Resizing Mode */
::oHeaderView:setResizeMode( IF( ::lSizeCols, QHeaderView_Interactive, QHeaderView_Fixed ) )
@@ -1621,17 +1632,17 @@ METHOD doConfigure() CLASS XbpBrowse
ENDIF
IF ::nLeftFrozen == 0 .and. hb_isObject( ::oLeftView )
IF ::nLeftFrozen == 0 .AND. hb_isObject( ::oLeftView )
::oLeftView:hide()
::oLeftFooterView:hide()
ELSEIF ::nLeftFrozen > 0 .and. hb_isObject( ::oLeftView )
ELSEIF ::nLeftFrozen > 0 .AND. hb_isObject( ::oLeftView )
::oLeftView:show()
::oLeftFooterView:show()
ENDIF
IF ::nRightFrozen == 0 .and. hb_isObject( ::oRightView )
IF ::nRightFrozen == 0 .AND. hb_isObject( ::oRightView )
::oRightView:hide()
::oRightFooterView:hide()
ELSEIF ::nRightFrozen > 0 .and. hb_isObject( ::oRightView )
ELSEIF ::nRightFrozen > 0 .AND. hb_isObject( ::oRightView )
::oRightView:show()
::oRightFooterView:show()
ENDIF
@@ -1689,9 +1700,10 @@ METHOD doConfigure() CLASS XbpBrowse
::nRowPos := 1
ENDIF
::setHorzScrollBarRange()
::setCellHeight( ::nCellHeight )
/* Inform Qt about number of rows and columns browser implements */
::oDbfModel:hbSetRowColumns( ::rowCount - 1, ::colCount - 1 )
/* Tell Qt to Reload Everything */