2010-06-30 00:27 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbqt/hbqt_hbqplaintextedit.cpp
    ! Fixed: the paint behavior in "thumbnail".
      Selected text was covered behind highlight area.

  * contrib/hbide/idebrowse.prg
  * contrib/hbide/idedocks.prg
  * contrib/hbide/idesaveload.prg
    + Added: more icons to ideDBU toolbar, close and toggle form view.
    + Implemented: to save and restore table informations per panel.
      Now ideDBU is presented with opened tables as was closed previously.
    + Implemented: "Panels" concept where each panel can hold 
      different tables.
      TODO: interface to add panels.

      Please test.
This commit is contained in:
Pritpal Bedi
2010-06-30 07:40:17 +00:00
parent 7982bb7f0f
commit 70f45a3072
5 changed files with 435 additions and 199 deletions

View File

@@ -16,6 +16,23 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-06-30 00:27 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbqt/hbqt_hbqplaintextedit.cpp
! Fixed: the paint behavior in "thumbnail".
Selected text was covered behind highlight area.
* contrib/hbide/idebrowse.prg
* contrib/hbide/idedocks.prg
* contrib/hbide/idesaveload.prg
+ Added: more icons to ideDBU toolbar, close and toggle form view.
+ Implemented: to save and restore table informations per panel.
Now ideDBU is presented with opened tables as was closed previously.
+ Implemented: "Panels" concept where each panel can hold
different tables.
TODO: interface to add panels.
Please test.
2010-06-29 17:44 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg

View File

@@ -79,142 +79,347 @@
CLASS IdeBrowseManager INHERIT IdeObject
DATA oStack
DATA oPanel
DATA oMain
DATA qDbu
DATA qStack
DATA qLayout
DATA qVSplitter
DATA qToolBar
DATA qLayMain
DATA aPanels INIT {}
DATA aToolBtns INIT {}
DATA aItems INIT {}
DATA aButtons INIT {}
DATA oCurBrw
DATA oCurPanel
METHOD new( oIde )
METHOD create( oIde )
METHOD show()
METHOD destroy()
METHOD buildToolbar()
METHOD execEvent( cEvent, p )
METHOD addTable( cFileDBF, cAlias, nRow, nCol )
METHOD addArray( aData, aAttr, nRow, nCol )
METHOD addTable( cFileDBF, cAlias )
METHOD addArray( aData, aAttr )
METHOD getPanelNames()
METHOD getPanelsInfo()
METHOD addPanels()
METHOD addPanel( cPanel )
METHOD showPanel( cPanel )
METHOD isPanel( cPanel )
METHOD loadTables()
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:new( oIde )
::oIde := oIde
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:getPanelNames()
LOCAL aNames := {}
aeval( ::aPanels, {|e| aadd( aNames, e:cPanel ) } )
RETURN aNames
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:getPanelsInfo()
LOCAL oBrw, oPanel
LOCAL aInfo := {}
FOR EACH oPanel IN ::aPanels
FOR EACH oBrw IN oPanel:aItems
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 ) )
ENDIF
NEXT
NEXT
RETURN aInfo
/*----------------------------------------------------------------------*/
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
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:destroy()
#if 0
LOCAL oBrw
METHOD IdeBrowseManager:show()
::qToolbar:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) )
::oQScintillaDock:oWidget:raise()
// Close tables and clear variables
FOR EACH oBrw IN ::aItems
Select( oBrw:cAlias )
DbCloseArea()
NEXT
::aItems := {}
#endif
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:create( oIde )
LOCAL oDock, qBtn
DEFAULT oIde TO ::oIde
::oIde := oIde
oDock := ::oIde:oEM:oQScintillaDock:oWidget
::qDbu := QWidget():new()
::oIde:oEM:oQScintillaDock:oWidget:setWidget( ::qDbu )
::oPanel := QWidget():new()
oDock:setWidget( ::oPanel )
::qLayout := QVBoxLayout():new() ; ::oPanel:setLayout( ::qLayout )
/* Layout applied to dbu widget */
::qLayout := QVBoxLayout():new()
::qLayout:setContentsMargins( 0,0,0,0 )
::qLayout:setSpacing( 2 )
::qToolbar := QToolbar():new()
::qDbu:setLayout( ::qLayout )
/* Toolbar */
::buildToolbar()
::qLayout:addWidget( ::qToolbar )
/* Stacked widget */
::qStack := QStackedWidget():new()
::qLayout:addWidget( ::qStack )
/* Panels on the stacked widget */
::addPanels()
/* Spread tables onto panels */
::loadTables()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:buildToolbar()
LOCAL qBtn, aBtn
::qToolbar := QToolbar():new()
::qToolbar:setIconSize( QSize():new( 16,16 ) )
::qToolbar:setStyleSheet( GetStyleSheet( "QToolBar", ::nAnimantionMode ) )
::oStack := QStackedWidget():new()
::qLayout:addWidget( ::oStack )
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. } )
::oMain := QWidget():new()
::oStack:addWidget( ::oMain )
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. )
ENDIF
::qLayMain := QHBoxLayout():new(); ::oMain:setLayout( ::qLayMain )
::qLayMain:setContentsMargins( 0,0,0,0 )
::qLayMain:setSpacing( 2 )
::connect( qBtn, aBtn[ 3 ], aBtn[ 4 ] )
::qVSplitter := QSplitter():new()
::qVSplitter:setOrientation( Qt_Vertical )
::qLayMain:addWidget( ::qVSplitter )
::qToolBar:addWidget( qBtn )
qBtn := QToolButton():new()
qBtn:setTooltip( "Open a Table" )
qBtn:setAutoRaise( .t. )
qBtn:setIcon( hbide_image( "open" ) )
::connect( qBtn, "clicked()", {|| ::execEvent( "buttonOpen_clicked" ) } )
aadd( ::aToolBtns, qBtn )
aadd( ::aToolBtns, qBtn )
NEXT
::qToolBar:addWidget( qBtn )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addPanels()
LOCAL cPanel, aPanel
::addPanel( "Main" ) /* The default one */
FOR EACH cPanel IN ::oINI:aDbuPanelsInfo
aPanel := hb_aTokens( cPanel )
IF aPanel[ 1 ] != "Main"
::addPanel( aPanel[ 1 ] )
ENDIF
NEXT
::qStack:setCurrentWidget( ::aPanels[ 1 ] ) /* Always start with main */
::oCurPanel := ::aPanels[ 1 ]
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addPanel( cPanel )
LOCAL qPanel
qPanel := IdeBrowsePanel():new( ::oIde, cPanel )
::qStack:addWidget( qPanel:qWidget )
aadd( ::aPanels, qPanel )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:isPanel( cPanel )
RETURN ascan( ::aPanels, {|o| o:qWidget:objectName() == cPanel } ) > 0
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:showPanel( cPanel )
LOCAL n
IF ( n := ascan( ::aPanels, {|o| o:qWidget:objectName() == cPanel } ) ) > 0
::qStack:setCurrentWidget( ::aPanels[ n ] )
::oCurPanel := ::aPanels[ n ]
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:execEvent( cEvent, p )
LOCAL cTable, cPath
LOCAL cTable, cPath, n, oBrw
HB_SYMBOL_UNUSED( p )
SWITCH cEvent
CASE "buttonShowForm_clicked"
IF !empty( ::oCurBrw )
IF ::oCurBrw:qForm:isHidden()
::oCurBrw:qForm:show()
::aToolBtns[ 3 ]:setChecked( .t. )
ELSE
::oCurBrw:qForm:hide()
::aToolBtns[ 3 ]:setChecked( .f. )
ENDIF
ENDIF
EXIT
CASE "buttonClose_clicked"
IF !empty( ::oCurBrw )
IF ( n := ascan( ::aItems, {|oBrw| oBrw == ::oCurBrw } ) ) > 0
hb_adel( ::aItems, n, .t. )
::oCurBrw:destroy()
FOR EACH oBrw IN ::aItems
oBrw:oBrw:configure()
NEXT
ENDIF
ENDIF
EXIT
CASE "buttonOpen_clicked"
IF !empty( cTable := hbide_fetchAFile( ::oIde:oDlg, "Select a Table", { { "Database File", "*.dbf" } }, ::oIde:cWrkFolderLast ) )
hb_fNameSplit( cTable, @cPath )
::oIde:cWrkFolderLast := cPath
::addTable( cTable )
ENDIF
EXIT
ENDSWITCH
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addTable( cFileDBF, cAlias, nRow, nCol )
LOCAL oBrw
METHOD IdeBrowseManager:loadTables()
LOCAL cInfo, aPanel, oCurPanel, cTable
HB_SYMBOL_UNUSED( nRow )
HB_SYMBOL_UNUSED( nCol )
oCurPanel := ::oCurPanel
oBrw := IdeBrowse():new()
oBrw:cTable := cFileDBF
oBrw:cAlias := cAlias
oBrw:create()
FOR EACH cInfo IN ::oINI:aDbuPanelsInfo
aPanel := hb_aTokens( cInfo, "," )
IF ::isPanel( aPanel[ 1 ] )
IF hb_fileExists( cTable := hbide_pathToOSPath( aPanel[ 2 ] ) )
::showPanel( aPanel[ 1 ] )
::addTable( cTable )
ENDIF
ENDIF
NEXT
::qVSplitter:addWidget( oBrw:oWnd:oWidget )
aadd( ::aItems, oBrw )
::qStack:setCurrentWidget( oCurPanel )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addArray( aData, aAttr, nRow, nCol )
METHOD IdeBrowseManager:addTable( cFileDBF, cAlias )
LOCAL oBrw
oBrw := IdeBrowse():new()
oBrw:cTable := cFileDBF
oBrw:cAlias := cAlias
oBrw:oManager := Self
oBrw:create()
::oCurPanel:addBrowser( oBrw )
aadd( ::oCurPanel:aItems, oBrw )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowseManager:addArray( aData, aAttr )
HB_SYMBOL_UNUSED( aData )
HB_SYMBOL_UNUSED( aAttr )
HB_SYMBOL_UNUSED( nRow )
HB_SYMBOL_UNUSED( nCol )
RETURN Self
/*----------------------------------------------------------------------*/
//
// Class IdeBrowsePanel
//
/*----------------------------------------------------------------------*/
CLASS IdeBrowsePanel INHERIT IdeObject
DATA cPanel INIT ""
DATA qWidget
DATA qLayout
DATA qVSplitter
DATA aItems INIT {}
METHOD new( oIde, cPanel )
METHOD addBrowser( oBrw )
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD IdeBrowsePanel:new( oIde, cPanel )
::oIde := oIde
::cPanel := cPanel
::qWidget := QWidget():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 )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowsePanel:addBrowser( oBrw )
::qVSplitter:addWidget( oBrw:oWnd:oWidget )
RETURN Self
@@ -233,6 +438,7 @@ CLASS IdeBrowse INHERIT IdeObject
DATA qFLayout
DATA qSplitter
DATA aForm INIT {}
DATA oManager
DATA nType INIT BRW_TYPE_DBF
DATA cAlias INIT ""
@@ -246,6 +452,7 @@ CLASS IdeBrowse INHERIT IdeObject
DATA nOrder INIT 0
DATA nArea INIT 0
DATA nCursorType INIT XBPBRW_CURSOR_CELL
DATA lOpened INIT .f.
METHOD new( oIde )
METHOD create( oIde )
@@ -311,6 +518,7 @@ METHOD IdeBrowse:create( oIde )
IF empty( ::cAlias )
::cAlias := alias()
ENDIF
::lOpened := .t.
ENDIF
::aStruct := DbStruct()
@@ -348,27 +556,16 @@ METHOD IdeBrowse:create( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:execEvent( cEvent, p, p1 )
HB_SYMBOL_UNUSED( p )
HB_SYMBOL_UNUSED( p1 )
SWITCH cEvent
CASE "browse_navigate"
::populateForm()
EXIT
ENDSWITCH
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:activated()
HB_TRACE( HB_TR_ALWAYS, "ACTIVATED" )
::oQScintillaDock:oWidget:setWindowTitle( ::cTable )
METHOD IdeBrowse:destroy()
IF !empty( ::oWnd )
::qLayout:removeWidget( ::qSplitter )
::oWnd:destroy()
::qForm := NIL
IF ::lOpened
( ::cAlias )->( dbCloseArea() )
ENDIF
::oManager:oCurBrw := NIL
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
@@ -395,8 +592,6 @@ METHOD IdeBrowse:buildBrowser()
::qSplitter:addWidget( oXbpBrowse:oWidget )
//qLayout:addWidget( oXbpBrowse:oWidget )
oXbpBrowse:cursorMode := ::nCursorType
oXbpBrowse:skipBlock := {|n| ::skipBlock( n ) }
@@ -419,6 +614,8 @@ METHOD IdeBrowse:buildBrowser()
::qSplitter:addWidget( ::qForm )
::qForm:hide() /* Form view defaults to hidden */
::qLayout := qLayout
::oWnd := oWnd
::oBrw := oXbpBrowse
@@ -427,6 +624,33 @@ METHOD IdeBrowse:buildBrowser()
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:execEvent( cEvent, p, p1 )
HB_SYMBOL_UNUSED( p )
HB_SYMBOL_UNUSED( p1 )
SWITCH cEvent
CASE "browse_navigate"
::populateForm()
::oManager:oCurBrw := Self
::oManager:aToolBtns[ 3 ]:setChecked( ! ::qForm:isHidden() )
EXIT
ENDSWITCH
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:activated()
HB_TRACE( HB_TR_ALWAYS, "ACTIVATED" )
::oQScintillaDock:oWidget:setWindowTitle( ::cTable )
RETURN Self
/*----------------------------------------------------------------------*/
STATIC FUNCTION hbide_xtosForForm( xVrb )
LOCAL cType := valtype( xVrb )
@@ -461,8 +685,7 @@ METHOD IdeBrowse:buildForm()
IF ::nType == BRW_TYPE_DBF
FOR EACH a_ IN ::aStruct
qLbl := QLabel():new()
qLbl:setText( a_[ 1 ] )
qLbl := QLabel():new(); qLbl:setText( a_[ 1 ] )
qEdit := QLineEdit():new()
::qFLayout:addRow( qLbl, qEdit )
aadd( ::aForm, { qLbl, qEdit } )
@@ -527,14 +750,6 @@ METHOD IdeBrowse:getPP( aStruct )
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:destroy()
IF !empty( ::oWnd )
::oWnd:destroy()
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD IdeBrowse:skipBlock( nHowMany )
LOCAL nRecs, nCurPos
LOCAL nSkipped := 0

View File

@@ -73,27 +73,6 @@
/*----------------------------------------------------------------------*/
#define docEnvironments_visibilityChanged 301
#define dockFindInFiles_visibilityChanged 302
#define dockThemes_visibilityChanged 303
#define dockProperties_visibilityChanged 304
#define dockDocViewer_visibilityChanged 305
#define docFunctions_visibilityChanged 306
#define dockDocWriter_visibilityChanged 307
#define docSkeletons_visibilityChanged 308
#define dockSkltnsTree_visibilityChanged 309
#define dockHelpDock_visibilityChanged 310
#define oFuncDock_visibilityChanged 311
#define dockSourceThumbnail_visibilityChanged 312
#define dockQScintilla_visibilityChanged 313
#define qTimer_timeOut 401
#define qSystemTrayIcon_show 402
#define qSystemTrayIcon_close 403
#define qSystemTrayIcon_activated 404
/*----------------------------------------------------------------------*/
CLASS IdeDocks INHERIT IdeObject
DATA nPass INIT 0
@@ -116,7 +95,7 @@ CLASS IdeDocks INHERIT IdeObject
METHOD new( oIde )
METHOD create( oIde )
METHOD destroy()
METHOD execEvent( nMode, p )
METHOD execEvent( cEvent, p )
METHOD setView( cView )
METHOD buildToolBarPanels()
METHOD buildHelpWidget()
@@ -280,8 +259,8 @@ METHOD IdeDocks:buildDialog()
::setView( "Stats" ) /* Always call with name */
::oDlg:connectEvent( ::oDlg:oWidget, QEvent_WindowStateChange, {|e| ::execEvent( QEvent_WindowStateChange, e ) } )
::oDlg:connectEvent( ::oDlg:oWidget, QEvent_Hide , {|e| ::execEvent( QEvent_Hide, e ) } )
::oDlg:connectEvent( ::oDlg:oWidget, QEvent_WindowStateChange, {|e| ::execEvent( "QEvent_WindowStateChange", e ) } )
::oDlg:connectEvent( ::oDlg:oWidget, QEvent_Hide , {|e| ::execEvent( "QEvent_Hide", e ) } )
#if 1
::buildSystemTray()
@@ -296,15 +275,15 @@ METHOD IdeDocks:buildSystemTray()
::oIde:oSys := QSystemTrayIcon():new( ::oDlg:oWidget )
IF ( ::lSystemTrayAvailable := ::oSys:isSystemTrayAvailable() ) .AND. ::lMinimizeInSystemTray
::oSys:setIcon( hbide_image( "hbide" ) )
::connect( ::oSys, "activated(QSystemTrayIcon::ActivationReason)", {|p| ::execEvent( qSystemTrayIcon_activated, p ) } )
::connect( ::oSys, "activated(QSystemTrayIcon::ActivationReason)", {|p| ::execEvent( "qSystemTrayIcon_activated", p ) } )
::oIde:oSysMenu := QMenu():new( ::oDlg:oWidget )
::qAct1 := ::oSysMenu:addAction_1( hbide_image( "fullscreen" ), "&Show" )
::oSysMenu:addSeparator()
::qAct2 := ::oSysMenu:addAction_1( hbide_image( "exit" ), "&Exit" )
::connect( ::qAct1, "triggered(bool)", {|| ::execEvent( qSystemTrayIcon_show ) } )
::connect( ::qAct2, "triggered(bool)", {|| ::execEvent( qSystemTrayIcon_close ) } )
::connect( ::qAct1, "triggered(bool)", {|| ::execEvent( "qSystemTrayIcon_show" ) } )
::connect( ::qAct2, "triggered(bool)", {|| ::execEvent( "qSystemTrayIcon_close" ) } )
::oSys:setContextMenu( ::oSysMenu )
::oSys:hide()
@@ -316,62 +295,57 @@ METHOD IdeDocks:buildSystemTray()
/*----------------------------------------------------------------------*/
METHOD IdeDocks:execEvent( nMode, p )
METHOD IdeDocks:execEvent( cEvent, p )
LOCAL qEvent
DO CASE
CASE nMode == 2 /* HelpWidget:contextMenuRequested(qPoint) */
CASE cEvent == "qHelpBrw_contextMenuRequested"
hbide_popupBrwContextMenu( ::qHelpBrw, p )
CASE nMode == dockQScintilla_visibilityChanged
IF ! p
::oBM:destroy()
ENDIF
CASE cEvent == "dockQScintilla_visibilityChanged"
IF p ; ::oBM:show() ; ENDIF
CASE nMode == dockSourceThumbnail_visibilityChanged
CASE cEvent == "dockSourceThumbnail_visibilityChanged"
IF p; ::oEM:showThumbnail(); ENDIF
/* Left Panel Docks */
CASE nMode == dockSkltnsTree_visibilityChanged
CASE cEvent == "dockSkltnsTree_visibilityChanged"
IF p; ::oSK:showTree(); ENDIF
/* Right Panel Docks */
CASE nMode == dockHelpDock_visibilityChanged
CASE cEvent == "dockHelpDock_visibilityChanged"
IF p; ::oHelpDock:oWidget:raise(); ENDIF
CASE nMode == dockDocViewer_visibilityChanged
CASE cEvent == "dockDocViewer_visibilityChanged"
IF p; ::oHL:show(); ::oDocViewDock:oWidget:raise(); ENDIF
CASE nMode == dockDocWriter_visibilityChanged
CASE cEvent == "dockDocWriter_visibilityChanged"
IF p; ::oDW:show(); ::oDocWriteDock:oWidget:raise(); ENDIF
CASE nMode == oFuncDock_visibilityChanged
CASE cEvent == "oFuncDock_visibilityChanged"
IF p; ::oFuncDock:oWidget:raise(); ENDIF
CASE nMode == docFunctions_visibilityChanged
CASE cEvent == "docFunctions_visibilityChanged"
IF p; ::oFN:show(); ::oFunctionsDock:oWidget:raise(); ENDIF
CASE nMode == dockProperties_visibilityChanged
CASE cEvent == "dockProperties_visibilityChanged"
IF p; ::oPM:fetchProperties(); ::oPropertiesDock:oWidget:raise(); ENDIF
CASE nMode == docEnvironments_visibilityChanged
CASE cEvent == "docEnvironments_visibilityChanged"
IF p; ::oEV:show(); ::oEnvironDock:oWidget:raise(); ENDIF
CASE nMode == docSkeletons_visibilityChanged
CASE cEvent == "docSkeletons_visibilityChanged"
IF p; ::oSK:show(); ::oSkeltnDock:oWidget:raise(); ENDIF
CASE nMode == dockThemes_visibilityChanged
CASE cEvent == "dockThemes_visibilityChanged"
IF p; ::oTH:show(); ::oThemesDock:oWidget:raise(); ENDIF
CASE nMode == dockFindInFiles_visibilityChanged
CASE cEvent == "dockFindInFiles_visibilityChanged"
IF p; ::oFF:show(); ::oFindDock:oWidget:raise(); ENDIF
CASE nMode == QEvent_WindowStateChange
CASE cEvent == "QEvent_WindowStateChange"
qEvent := QWindowStateChangeEvent():from( p )
::nPrevWindowState := qEvent:oldState()
CASE nMode == QEvent_Hide
CASE cEvent == "QEvent_Hide"
IF ::lSystemTrayAvailable .AND. ::lMinimizeInSystemTray
qEvent := QHideEvent():from( p )
IF ! ::lChanging
@@ -381,7 +355,7 @@ METHOD IdeDocks:execEvent( nMode, p )
::qTimer := QTimer():New()
::qTimer:setSingleShot( .t. )
::qTimer:setInterval( 250 )
::connect( ::qTimer, "timeout()", {|| ::execEvent( qTimer_timeOut ) } )
::connect( ::qTimer, "timeout()", {|| ::execEvent( "qTimer_timeOut" ) } )
ENDIF
::qTimer:start()
qEvent:ignore()
@@ -390,27 +364,23 @@ METHOD IdeDocks:execEvent( nMode, p )
ENDIF
ENDIF
CASE nMode == qTimer_timeOut
CASE cEvent == "qTimer_timeOut"
::oDlg:hide()
::oSys:setToolTip( ::oDlg:oWidget:windowTitle() )
::oSys:show()
CASE nMode == qSystemTrayIcon_close
CASE cEvent == "qSystemTrayIcon_close"
PostAppEvent( xbeP_Close, NIL, NIL, ::oDlg )
CASE nMode == qSystemTrayIcon_show
CASE cEvent == "qSystemTrayIcon_show"
::showDlgBySystemTrayIconCommand()
CASE nMode == qSystemTrayIcon_activated
CASE cEvent == "qSystemTrayIcon_activated"
IF p == QSystemTrayIcon_Trigger
::showDlgBySystemTrayIconCommand()
ELSEIF p == QSystemTrayIcon_DoubleClick
ELSEIF p == QSystemTrayIcon_Context
ELSEIF p == QSystemTrayIcon_MiddleClick
ENDIF
ENDCASE
@@ -666,7 +636,7 @@ METHOD IdeDocks:buildToolBarPanels()
aadd( aBtns, { "curlinehilight" , "Toggle Current Line Hilight", {|| ::oEM:toggleCurrentLineHighlightMode() } } )
#endif
aadd( aBtns, { "togglelinenumber", "Toggle Line Numbers" , {|| ::oEM:toggleLineNumbers() } } )
aadd( aBtns, { "horzruler" , "Toggle Horizontal Ruler" , {|| ::oEM:toggleHorzRuler() } } )
aadd( aBtns, { "horzruler" , "Toggle Horizontal Ruler" , {|| ::oEM:toggleHorzRuler() } } )
aadd( aBtns, { "curlinehilight" , "Toggle Current Line Hilight", {|| ::oEM:toggleCurrentLineHighlightMode() } } )
FOR EACH a_ IN aBtns
IF empty( a_ )
@@ -900,7 +870,7 @@ METHOD IdeDocks:buildSkeletonsTree()
::oIde:oSkltnsTreeDock := ::getADockWidget( nAreas, "dockSkltnsTree", "Skeletons", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_LeftDockWidgetArea, ::oSkltnsTreeDock:oWidget, Qt_Vertical )
::connect( ::oSkltnsTreeDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockSkltnsTree_visibilityChanged, p ) } )
::connect( ::oSkltnsTreeDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockSkltnsTree_visibilityChanged", p ) } )
RETURN Self
@@ -912,7 +882,7 @@ METHOD IdeDocks:buildFuncList()
::oIde:oFuncDock := ::getADockWidget( nAreas, "dockFuncList", "Functions List", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oFuncDock:oWidget, Qt_Vertical )
::connect( ::oFuncDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( oFuncDock_visibilityChanged, p ) } )
::connect( ::oFuncDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "oFuncDock_visibilityChanged", p ) } )
::oIde:oFuncList := XbpListBox():new( ::oFuncDock ):create( , , { 0,0 }, { 100,400 }, , .t. )
::oFuncList:oWidget:setEditTriggers( QAbstractItemView_NoEditTriggers )
@@ -948,9 +918,9 @@ METHOD IdeDocks:buildHelpWidget()
::oHelpDock:oWidget:setWidget( ::oIde:qHelpBrw )
::oHelpDock:connect( ::qHelpBrw, "customContextMenuRequested(QPoint)", {|p| ::execEvent( 2, p ) } )
::oHelpDock:connect( ::qHelpBrw, "customContextMenuRequested(QPoint)", {|p| ::execEvent( "qHelpBrw_contextMenuRequested", p ) } )
::connect( ::oHelpDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockHelpDock_visibilityChanged, p ) } )
::connect( ::oHelpDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockHelpDock_visibilityChanged", p ) } )
RETURN Self
@@ -1063,7 +1033,7 @@ METHOD IdeDocks:buildThemesDock()
::oIde:oThemesDock := ::getADockWidget( nAreas, "dockThemes", "Theme Manager", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oThemesDock:oWidget, Qt_Horizontal )
::connect( ::oThemesDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockThemes_visibilityChanged, p ) } )
::connect( ::oThemesDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockThemes_visibilityChanged", p ) } )
RETURN Self
@@ -1075,7 +1045,7 @@ METHOD IdeDocks:buildPropertiesDock()
::oIde:oPropertiesDock := ::getADockWidget( nAreas, "dockProperties", "Project Properties", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oPropertiesDock:oWidget, Qt_Horizontal )
::connect( ::oPropertiesDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockProperties_visibilityChanged, p ) } )
::connect( ::oPropertiesDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockProperties_visibilityChanged", p ) } )
RETURN Self
@@ -1087,7 +1057,7 @@ METHOD IdeDocks:buildFindInFiles()
::oIde:oFindDock := ::getADockWidget( nAreas, "dockFindInFiles", "Find in Files", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oFindDock:oWidget, Qt_Horizontal )
::connect( ::oFindDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockFindInFiles_visibilityChanged, p ) } )
::connect( ::oFindDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockFindInFiles_visibilityChanged", p ) } )
RETURN Self
@@ -1099,7 +1069,7 @@ METHOD IdeDocks:buildDocViewer()
::oIde:oDocViewDock := ::getADockWidget( nAreas, "dockDocViewer", "Harbour Documentation", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oDocViewDock:oWidget, Qt_Horizontal )
::connect( ::oDocViewDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockDocViewer_visibilityChanged, p ) } )
::connect( ::oDocViewDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockDocViewer_visibilityChanged", p ) } )
RETURN Self
@@ -1111,7 +1081,7 @@ METHOD IdeDocks:buildDocWriter()
::oIde:oDocWriteDock := ::getADockWidget( nAreas, "dockDocWriter", "Documentation Writer", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oDocWriteDock:oWidget, Qt_Horizontal )
::connect( ::oDocWriteDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockDocWriter_visibilityChanged, p ) } )
::connect( ::oDocWriteDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockDocWriter_visibilityChanged", p ) } )
RETURN Self
@@ -1123,7 +1093,7 @@ METHOD IdeDocks:buildFunctionsDock()
::oIde:oFunctionsDock := ::getADockWidget( nAreas, "dockFunctions", "Projects Functions Lookup", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oFunctionsDock:oWidget, Qt_Horizontal )
::connect( ::oFunctionsDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( docFunctions_visibilityChanged, p ) } )
::connect( ::oFunctionsDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "docFunctions_visibilityChanged", p ) } )
RETURN Self
@@ -1135,7 +1105,7 @@ METHOD IdeDocks:buildEnvironDock()
::oIde:oEnvironDock := ::getADockWidget( nAreas, "dockEnvironments", "Compiler Environments", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oEnvironDock:oWidget, Qt_Horizontal )
::connect( ::oEnvironDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( docEnvironments_visibilityChanged, p ) } )
::connect( ::oEnvironDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "docEnvironments_visibilityChanged", p ) } )
RETURN Self
@@ -1147,7 +1117,7 @@ METHOD IdeDocks:buildSkeletonWidget()
::oIde:oSkeltnDock := ::getADockWidget( nAreas, "dockSkeleton", "Code Skeletons", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oSkeltnDock:oWidget, Qt_Horizontal )
::connect( ::oSkeltnDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( docSkeletons_visibilityChanged, p ) } )
::connect( ::oSkeltnDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "docSkeletons_visibilityChanged", p ) } )
RETURN Self
@@ -1159,7 +1129,7 @@ METHOD IdeDocks:buildSourceThumbnail()
::oIde:oSourceThumbnailDock := ::getADockWidget( nAreas, "dockSourceThumbnail", "Source Thumbnail", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oSourceThumbnailDock:oWidget, Qt_Horizontal )
::connect( ::oSourceThumbnailDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockSourceThumbnail_visibilityChanged, p ) } )
::connect( ::oSourceThumbnailDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockSourceThumbnail_visibilityChanged", p ) } )
RETURN Self
@@ -1168,10 +1138,10 @@ METHOD IdeDocks:buildSourceThumbnail()
METHOD IdeDocks:buildQScintilla()
LOCAL nAreas := Qt_LeftDockWidgetArea + Qt_RightDockWidgetArea + Qt_TopDockWidgetArea + Qt_BottomDockWidgetArea
::oIde:oQScintillaDock := ::getADockWidget( nAreas, "dockQScintilla", "Browser Widget", QDockWidget_DockWidgetFloatable )
::oIde:oQScintillaDock := ::getADockWidget( nAreas, "dockQScintilla", "ideDBU", QDockWidget_DockWidgetFloatable )
::oDlg:oWidget:addDockWidget_1( Qt_RightDockWidgetArea, ::oQScintillaDock:oWidget, Qt_Horizontal )
::connect( ::oQScintillaDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( dockQScintilla_visibilityChanged, p ) } )
::connect( ::oQScintillaDock:oWidget, "visibilityChanged(bool)", {|p| ::execEvent( "dockQScintilla_visibilityChanged", p ) } )
RETURN Self
@@ -1275,7 +1245,6 @@ METHOD IdeDocks:animateComponents( nMode )
::oMainToolbar:setStyleSheet( GetStyleSheet( "QToolBar", nMode ) )
::oSBar:oWidget:setStyleSheet( GetStyleSheet( "QStatusBar", nMode ) )
cStyle := GetStyleSheet( "QDockWidget", nMode )
::oDockPT:oWidget :setStyleSheet( cStyle )
@@ -1292,6 +1261,8 @@ METHOD IdeDocks:animateComponents( nMode )
::oThemesDock:oWidget :setStyleSheet( cStyle )
::oFindDock:oWidget :setStyleSheet( cStyle )
::oDockB2:oWidget :setStyleSheet( cStyle )
::oQScintillaDock:oWidget:setStyleSheet( cStyle )
::oSourceThumbnailDock:oWidget:setStyleSheet( cStyle )
#if 1
// should be iteration

View File

@@ -70,7 +70,7 @@
#include "hbqt.ch"
/*----------------------------------------------------------------------*/
#if 0
#define INI_HBIDE 1
#define INI_PROJECTS 2
#define INI_FILES 3
@@ -85,6 +85,7 @@
#define INI_TOOLS 12
#define INI_USERTOOLBARS 13
#define INI_KEYWORDS 14
#endif
#define INI_SECTIONS_COUNT 14
#define INI_HBIDE_VRBLS 30
@@ -139,6 +140,8 @@ CLASS IdeINI INHERIT IdeObject
DATA aTools INIT {}
DATA aUserToolbars INIT {}
DATA aKeywords INIT {}
DATA aDbuPanelNames INIT {}
DATA aDbuPanelsInfo INIT {}
DATA cFontName INIT "Courier New"
DATA nPointSize INIT 10
@@ -182,7 +185,7 @@ METHOD IdeINI:create( oIde )
/*----------------------------------------------------------------------*/
METHOD IdeINI:save( cHbideIni )
LOCAL j, nTab, pTab, n, txt_, oEdit, nTabs, nn, a_
LOCAL j, nTab, pTab, n, txt_, oEdit, nTabs, nn, a_, s
DEFAULT cHbideIni TO ::oIde:cProjIni
@@ -357,6 +360,20 @@ METHOD IdeINI:save( cHbideIni )
NEXT
aadd( txt_, " " )
aadd( txt_, "[DBUPANELS]" )
aadd( txt_, " " )
FOR EACH s IN ::oBM:getPanelNames()
aadd( txt_, "dbupanel_" + hb_ntos( s:__enumIndex() ) + "=" + s )
NEXT
aadd( txt_, " " )
aadd( txt_, "[DBUPANELSINFO]" )
aadd( txt_, " " )
FOR EACH s IN ::oBM:getPanelsInfo()
aadd( txt_, "dbupanelinfo_" + hb_ntos( s:__enumIndex() ) + "=" + s )
NEXT
aadd( txt_, " " )
aadd( txt_, "[General]" )
aadd( txt_, " " )
@@ -381,56 +398,62 @@ METHOD IdeINI:load( cHbideIni )
SWITCH Upper( s )
CASE "[GENERAL]"
nPart := INI_GENERAL
nPart := "INI_GENERAL"
EXIT
CASE "[HBIDE]"
nPart := INI_HBIDE
nPart := "INI_HBIDE"
EXIT
CASE "[PROJECTS]"
nPart := INI_PROJECTS
nPart := "INI_PROJECTS"
EXIT
CASE "[FILES]"
nPart := INI_FILES
nPart := "INI_FILES"
EXIT
CASE "[FIND]"
nPart := INI_FIND
nPart := "INI_FIND"
EXIT
CASE "[REPLACE]"
nPart := INI_REPLACE
nPart := "INI_REPLACE"
EXIT
CASE "[RECENTFILES]"
nPart := INI_RECENTFILES
nPart := "INI_RECENTFILES"
EXIT
CASE "[RECENTPROJECTS]"
nPart := INI_RECENTPROJECTS
nPart := "INI_RECENTPROJECTS"
EXIT
CASE "[FOLDERS]"
nPart := INI_FOLDERS
nPart := "INI_FOLDERS"
EXIT
CASE "[VIEWS]"
nPart := INI_VIEWS
nPart := "INI_VIEWS"
EXIT
CASE "[TAGGEDPROJECTS]"
nPart := INI_TAGGEDPROJECTS
nPart := "INI_TAGGEDPROJECTS"
EXIT
CASE "[TOOLS]"
nPart := INI_TOOLS
nPart := "INI_TOOLS"
EXIT
CASE "[USERTOOLBARS]"
nPart := INI_USERTOOLBARS
nPart := "INI_USERTOOLBARS"
EXIT
CASE "[KEYWORDS]"
nPart := INI_KEYWORDS
nPart := "INI_KEYWORDS"
EXIT
CASE "[DBUPANELS]"
nPart := "INI_DBUPANELS"
EXIT
CASE "[DBUPANELSINFO]"
nPart := "INI_DBUPANELSINFO"
EXIT
OTHERWISE
DO CASE
CASE Left( s, 1 ) $ '#['
* Nothing todo!
CASE nPart == INI_GENERAL
CASE nPart == "INI_GENERAL"
* Qt Setttings, do nothing.
CASE nPart == INI_HBIDE
CASE nPart == "INI_HBIDE"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
SWITCH cKey
@@ -487,12 +510,12 @@ METHOD IdeINI:load( cHbideIni )
ENDSWITCH
ENDIF
CASE nPart == INI_PROJECTS
CASE nPart == "INI_PROJECTS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aProjFiles, cVal )
ENDIF
CASE nPart == INI_FILES
CASE nPart == "INI_FILES"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
a_:= hbide_parseSourceComponents( cVal )
IF !Empty( a_[ 1 ] )
@@ -500,17 +523,17 @@ METHOD IdeINI:load( cHbideIni )
ENDIF
ENDIF
CASE nPart == INI_FIND
CASE nPart == "INI_FIND"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aFind, cVal )
ENDIF
CASE nPart == INI_REPLACE
CASE nPart == "INI_REPLACE"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aReplace, cVal )
ENDIF
CASE nPart == INI_RECENTPROJECTS
CASE nPart == "INI_RECENTPROJECTS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
IF Len( ::aRecentProjects ) < 25
cVal := hbide_pathNormalized( cVal, .f. )
@@ -520,7 +543,7 @@ METHOD IdeINI:load( cHbideIni )
ENDIF
ENDIF
CASE nPart == INI_RECENTFILES
CASE nPart == "INI_RECENTFILES"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
IF Len( ::aRecentFiles ) < 25
cVal := hbide_pathNormalized( cVal, .f. )
@@ -530,36 +553,46 @@ METHOD IdeINI:load( cHbideIni )
ENDIF
ENDIF
CASE nPart == INI_FOLDERS
CASE nPart == "INI_FOLDERS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aFolders, cVal )
ENDIF
CASE nPart == INI_VIEWS
CASE nPart == "INI_VIEWS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aViews, cVal )
ENDIF
CASE nPart == INI_TAGGEDPROJECTS
CASE nPart == "INI_TAGGEDPROJECTS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd(::aTaggedProjects, cVal )
ENDIF
CASE nPart == INI_TOOLS
CASE nPart == "INI_TOOLS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aTools, hbide_parseToolComponents( cVal ) )
ENDIF
CASE nPart == INI_USERTOOLBARS
CASE nPart == "INI_USERTOOLBARS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aUserToolbars, hbide_parseUserToolbarComponents( cVal ) )
ENDIF
CASE nPart == INI_KEYWORDS
CASE nPart == "INI_KEYWORDS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aKeywords, hbide_parseKeywordsComponents( cVal ) )
ENDIF
CASE nPart == "INI_DBUPANELS"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aDbuPanelNames, cVal )
ENDIF
CASE nPart == "INI_DBUPANELSINFO"
IF hbide_parseKeyValPair( s, @cKey, @cVal )
aadd( ::aDbuPanelsInfo, cVal )
ENDIF
ENDCASE
EXIT
ENDSWITCH

View File

@@ -1385,10 +1385,10 @@ void HBQPlainTextEdit::paintEvent( QPaintEvent * event )
bottom = top + height;
++blockNumber;
}
this->hbPaintSelection( event );
this->hbPaintHighlight( event );
this->hbPaintSelection( event );
// this->hbDrawCursor( event );
// this->hbDrawCursor( event );
QPlainTextEdit::paintEvent( event );