2010-06-29 17:44 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/ideedit.prg
* contrib/hbide/ideeditor.prg
* contrib/hbide/idetools.prg
% Minor fix in "buttonBrowse_clicked" event which was causing
RTE when there was no other Tool defined.
! Fix to Ctrl+G which stopped working after keyboard macros
synchronization few days back.
! Thumbnail window is closed if a source is closed. To
activate it for another source you need to activate it again.
However, switching over to another source, it stays as is.
+ Reimplemented: split behavior of current editing instance.
Before it was done in fixed halved window plus split
was available verically and horintally any level deep.
This was neither appropriate nor desired behavior.
Now split is presented in resizable window either horizontally
or vertically. The behavior can be changed if all splitted
windows are closed first and then again split is initiated.
Above anomalies reported by Viktor, thanks.
Please test and report back any fix is not upto mark.
This commit is contained in:
@@ -16,6 +16,33 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2010-06-29 17:44 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbide/ideedit.prg
|
||||
* contrib/hbide/ideeditor.prg
|
||||
* contrib/hbide/idetools.prg
|
||||
% Minor fix in "buttonBrowse_clicked" event which was causing
|
||||
RTE when there was no other Tool defined.
|
||||
|
||||
! Fix to Ctrl+G which stopped working after keyboard macros
|
||||
synchronization few days back.
|
||||
|
||||
! Thumbnail window is closed if a source is closed. To
|
||||
activate it for another source you need to activate it again.
|
||||
However, switching over to another source, it stays as is.
|
||||
|
||||
+ Reimplemented: split behavior of current editing instance.
|
||||
|
||||
Before it was done in fixed halved window plus split
|
||||
was available verically and horintally any level deep.
|
||||
This was neither appropriate nor desired behavior.
|
||||
|
||||
Now split is presented in resizable window either horizontally
|
||||
or vertically. The behavior can be changed if all splitted
|
||||
windows are closed first and then again split is initiated.
|
||||
|
||||
Above anomalies reported by Viktor, thanks.
|
||||
Please test and report back any fix is not upto mark.
|
||||
|
||||
2010-06-29 21:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* contrib/hbide/ideprojmanager.prg
|
||||
+ Changed to not save hbide options with empty or
|
||||
|
||||
@@ -95,7 +95,6 @@ CLASS IdeEdit INHERIT IdeObject
|
||||
DATA oEditor
|
||||
|
||||
DATA qEdit
|
||||
DATA qHLayout
|
||||
DATA nOrient INIT 0
|
||||
|
||||
DATA nMode INIT 0
|
||||
@@ -264,7 +263,6 @@ METHOD IdeEdit:create( oIde, oEditor, nMode )
|
||||
::oIde := oIde
|
||||
::oEditor := oEditor
|
||||
::nMode := nMode
|
||||
//::oIde := ::oEditor:oIde
|
||||
|
||||
::qEdit := HBQPlainTextEdit():new()
|
||||
//
|
||||
@@ -288,12 +286,6 @@ METHOD IdeEdit:create( oIde, oEditor, nMode )
|
||||
::qEdit:hbBookMarks( nBlock )
|
||||
NEXT
|
||||
|
||||
::qHLayout := QHBoxLayout():new()
|
||||
::qHLayout:setContentsMargins( 0,0,0,0 )
|
||||
::qHLayout:setSpacing( 0 )
|
||||
|
||||
::qHLayout:addWidget( ::qEdit )
|
||||
|
||||
::connectEditSignals( Self )
|
||||
|
||||
Qt_Events_Connect( ::pEvents, ::qEdit, QEvent_KeyPress , {|p| ::execKeyEvent( 101, QEvent_KeyPress, p ) } )
|
||||
@@ -359,6 +351,9 @@ METHOD IdeEdit:setFont()
|
||||
|
||||
METHOD IdeEdit:destroy()
|
||||
|
||||
::oUpDn:oUI:setParent( ::oDlg:oWidget )
|
||||
::oSourceThumbnailDock:oWidget:hide()
|
||||
|
||||
::disconnect( ::qTimer, "timeout()" )
|
||||
IF ::qTimer:isActive()
|
||||
::qTimer:stop()
|
||||
@@ -373,11 +368,7 @@ METHOD IdeEdit:destroy()
|
||||
|
||||
::disconnectEditSignals( Self )
|
||||
|
||||
::oEditor:qLayout:removeItem( ::qHLayout )
|
||||
//
|
||||
::qHLayout:removeWidget( ::qEdit )
|
||||
::qEdit := NIL
|
||||
::qHLayout := NIL
|
||||
::qFont := NIL
|
||||
|
||||
RETURN Self
|
||||
@@ -448,10 +439,10 @@ METHOD IdeEdit:execEvent( nMode, oEdit, p, p1 )
|
||||
::oEditor:split( 2, oEdit )
|
||||
CASE qAct:text() == "Close Split Window"
|
||||
IF ( n := ascan( ::oEditor:aEdits, {|o| o == oEdit } ) ) > 0 /* 1 == Main Edit */
|
||||
::oUpDn:oUI:setParent( ::oEditor:oEdit:qEdit )
|
||||
oo := ::oEditor:aEdits[ n ]
|
||||
hb_adel( ::oEditor:aEdits, n, .t. )
|
||||
oo:destroy()
|
||||
::oEditor:relay()
|
||||
::oEditor:qCqEdit := ::oEditor:qEdit
|
||||
::oEditor:qCoEdit := ::oEditor:oEdit
|
||||
::oIde:manageFocusInEditor()
|
||||
@@ -1864,8 +1855,27 @@ METHOD IdeEdit:getWord( lSelect )
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEdit:goto( nLine )
|
||||
LOCAL nRows, qGo
|
||||
LOCAL qCursor := QTextCursor():configure( ::qEdit:textCursor() )
|
||||
|
||||
IF empty( nLine )
|
||||
nRows := ::qEdit:blockCount()
|
||||
nLine := qCursor:blockNumber()
|
||||
|
||||
qGo := QInputDialog():new( ::oDlg:oWidget )
|
||||
qGo:setInputMode( 1 )
|
||||
qGo:setIntMinimum( 1 )
|
||||
qGo:setIntMaximum( nRows )
|
||||
qGo:setIntValue( nLine + 1 )
|
||||
qGo:setLabelText( "Goto Line Number [1-" + hb_ntos( nRows ) + "]" )
|
||||
qGo:setWindowTitle( "Harbour" )
|
||||
|
||||
::oIde:setPosByIniEx( qGo, ::oINI:cGotoDialogGeometry )
|
||||
qGo:exec()
|
||||
::oIde:oINI:cGotoDialogGeometry := hbide_posAndSize( qGo )
|
||||
nLine := qGo:intValue()
|
||||
ENDIF
|
||||
|
||||
qCursor:movePosition( QTextCursor_Start )
|
||||
qCursor:movePosition( QTextCursor_Down, QTextCursor_MoveAnchor, nLine - 1 )
|
||||
::qEdit:setTextCursor( qCursor )
|
||||
|
||||
@@ -882,7 +882,7 @@ METHOD IdeEditsManager:zoom( nKey )
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
////
|
||||
|
||||
METHOD IdeEditsManager:printPreview()
|
||||
LOCAL oEdit
|
||||
IF !empty( oEdit := ::getEditObjectCurrent() )
|
||||
@@ -928,35 +928,12 @@ METHOD IdeEditsManager:gotoMark( nIndex )
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditsManager:goto( nLine )
|
||||
LOCAL qGo, qCursor, nRows, oEdit
|
||||
|
||||
LOCAL oEdit
|
||||
IF ! empty( oEdit := ::oEM:getEditObjectCurrent() )
|
||||
qCursor := QTextCursor():configure( oEdit:qEdit:textCursor() )
|
||||
nRows := oEdit:qEdit:blockCount()
|
||||
|
||||
IF hb_isNumeric( nLine ) .AND. nLine >= 0 .AND. nLine <= nRows
|
||||
//
|
||||
ELSE
|
||||
nLine := qCursor:blockNumber()
|
||||
|
||||
qGo := QInputDialog():new( ::oDlg:oWidget )
|
||||
qGo:setInputMode( 1 )
|
||||
qGo:setIntMinimum( 1 )
|
||||
qGo:setIntMaximum( nRows )
|
||||
qGo:setIntValue( nLine + 1 )
|
||||
qGo:setLabelText( "Goto Line Number [1-" + hb_ntos( nRows ) + "]" )
|
||||
qGo:setWindowTitle( "Harbour" )
|
||||
|
||||
::oIde:setPosByIniEx( qGo, ::oINI:cGotoDialogGeometry )
|
||||
qGo:exec()
|
||||
::oIde:oINI:cGotoDialogGeometry := hbide_posAndSize( qGo )
|
||||
nLine := qGo:intValue()
|
||||
ENDIF
|
||||
|
||||
oEdit:goto( nLine )
|
||||
ENDIF
|
||||
RETURN Self
|
||||
|
||||
RETURN nLine
|
||||
/*----------------------------------------------------------------------*/
|
||||
// Navigation
|
||||
/*----------------------------------------------------------------------*/
|
||||
@@ -1097,6 +1074,8 @@ CLASS IdeEditor INHERIT IdeObject
|
||||
DATA qThumbnail
|
||||
DATA qTNFont
|
||||
DATA qTNHiliter
|
||||
DATA qHSpltr
|
||||
DATA qVSpltr
|
||||
|
||||
DATA aEdits INIT {} /* Hold IdeEdit Objects */
|
||||
DATA oEdit
|
||||
@@ -1123,6 +1102,8 @@ CLASS IdeEditor INHERIT IdeObject
|
||||
DATA lReadOnly INIT .F.
|
||||
|
||||
DATA cEol INIT ""
|
||||
DATA nSplOrient INIT -1
|
||||
DATA qSplitter
|
||||
|
||||
METHOD new( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView )
|
||||
METHOD create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, aBookMarks )
|
||||
@@ -1215,13 +1196,17 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
|
||||
|
||||
::buildTabPage( ::sourceFile )
|
||||
|
||||
::qLayout := QGridLayout():new()
|
||||
::qLayout := QBoxLayout():new()
|
||||
::qLayout:setContentsMargins( 0,0,0,0 )
|
||||
::qLayout:setHorizontalSpacing( 5 )
|
||||
::qLayout:setVerticalSpacing( 5 )
|
||||
//
|
||||
::oTab:oWidget:setLayout( ::qLayout )
|
||||
|
||||
::qHSpltr := QSplitter():new()
|
||||
::qHSpltr:setOrientation( Qt_Horizontal )
|
||||
|
||||
::qVSpltr := QSplitter():new()
|
||||
::qVSpltr:setOrientation( Qt_Vertical )
|
||||
|
||||
::oEdit := IdeEdit():new( ::oIde, Self, 0 )
|
||||
::oEdit:aBookMarks := aBookMarks
|
||||
::oEdit:create()
|
||||
@@ -1229,6 +1214,8 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
|
||||
::qCqEdit := ::oEdit:qEdit
|
||||
::qCoEdit := ::oEdit
|
||||
|
||||
::qLayout:addWidget( ::oEdit:qEdit )
|
||||
|
||||
::connect( ::oEdit:qEdit, "updateRequest(QRect,int)", {|| ::scrollThumbnail() } )
|
||||
|
||||
::qDocument := QTextDocument():configure( ::qEdit:document() )
|
||||
@@ -1240,8 +1227,6 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
|
||||
ENDIF
|
||||
::qCursor := QTextCursor():configure( ::qEdit:textCursor() )
|
||||
|
||||
::qLayout:addLayout( ::oEdit:qHLayout, 0, 0 )
|
||||
|
||||
/* Populate Tabs Array */
|
||||
aadd( ::aTabs, { ::oTab, Self } )
|
||||
|
||||
@@ -1259,6 +1244,59 @@ METHOD IdeEditor:create( oIde, cSourceFile, nPos, nHPos, nVPos, cTheme, cView, a
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:relay( oEdit )
|
||||
LOCAL oEdt
|
||||
|
||||
IF len( ::aEdits ) == 0
|
||||
IF ::nSplOrient > -1
|
||||
::nSplOrient := -1
|
||||
::qLayout:removeWidget( ::qSplitter )
|
||||
::qLayout:addWidget( ::oEdit:qEdit )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF hb_isObject( oEdit )
|
||||
aadd( ::aEdits, oEdit )
|
||||
ENDIF
|
||||
|
||||
IF ::nSplOrient == -1
|
||||
::nSplOrient := oEdit:nOrient
|
||||
|
||||
IF oEdit:nOrient == 1
|
||||
::qSplitter := QSplitter():new( Qt_Horizontal )
|
||||
ELSE
|
||||
::qSplitter := QSplitter():new( Qt_Vertical )
|
||||
ENDIF
|
||||
|
||||
::qLayout:removeWidget( ::oEdit:qEdit )
|
||||
::qLayout:addWidget( ::qSplitter )
|
||||
|
||||
::qSplitter:addWidget( ::oEdit:qEdit )
|
||||
ENDIF
|
||||
|
||||
FOR EACH oEdt IN ::aEdits
|
||||
::qSplitter:addWidget( oEdt:qEdit )
|
||||
NEXT
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:split( nOrient, oEditP )
|
||||
LOCAL oEdit
|
||||
|
||||
HB_SYMBOL_UNUSED( oEditP )
|
||||
|
||||
oEdit := IdeEdit():new( ::oIde, Self, 1 ):create()
|
||||
oEdit:qEdit:setDocument( ::qDocument )
|
||||
oEdit:nOrient := nOrient
|
||||
|
||||
::relay( oEdit )
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:destroy()
|
||||
LOCAL n, oEdit
|
||||
|
||||
@@ -1431,60 +1469,6 @@ HB_TRACE( HB_TR_ALWAYS, "IdeEditor:execEvent( nMode, p )" )
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:relay( oEdit )
|
||||
LOCAL nCols, oEdt, nR, nC
|
||||
|
||||
::qLayout:removeItem( ::oEdit:qHLayout )
|
||||
FOR EACH oEdt IN ::aEdits
|
||||
::qLayout:removeItem( oEdt:qHLayout )
|
||||
//
|
||||
oEdt:qHLayout:removeWidget( oEdt:qEdit )
|
||||
oEdt:qHLayout := QHBoxLayout():new()
|
||||
oEdt:qHLayout:setContentsMargins( 0,0,0,0 )
|
||||
oEdt:qHLayout:setSpacing( 0 )
|
||||
|
||||
oEdt:qHLayout:addWidget( oEdt:qEdit )
|
||||
NEXT
|
||||
|
||||
IF hb_isObject( oEdit )
|
||||
aadd( ::aEdits, oEdit )
|
||||
ENDIF
|
||||
::qLayout:addLayout( ::oEdit:qHLayout, 0, 0 )
|
||||
|
||||
nR := 0 ; nC := 0
|
||||
FOR EACH oEdt IN ::aEdits
|
||||
IF oEdt:nOrient == 1 // Horiz
|
||||
nC++
|
||||
::qLayout:addLayout_1( oEdt:qHLayout, 0, nC, 1, 1, Qt_Vertical )
|
||||
ENDIF
|
||||
NEXT
|
||||
nCols := ::qLayout:columnCount()
|
||||
FOR EACH oEdt IN ::aEdits
|
||||
IF oEdt:nOrient == 2 // Verti
|
||||
nR++
|
||||
::qLayout:addLayout_1( oEdt:qHLayout, nR, 0, 1, nCols, Qt_Horizontal )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:split( nOrient, oEditP )
|
||||
LOCAL oEdit
|
||||
|
||||
HB_SYMBOL_UNUSED( oEditP )
|
||||
|
||||
oEdit := IdeEdit():new( ::oIde, Self, 1 ):create()
|
||||
oEdit:qEdit:setDocument( ::qDocument )
|
||||
oEdit:nOrient := nOrient
|
||||
|
||||
::relay( oEdit )
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD IdeEditor:activateTab( mp1, mp2, oXbp )
|
||||
LOCAL oEdit
|
||||
|
||||
|
||||
@@ -364,7 +364,7 @@ METHOD IdeToolsManager:execEvent( cMode, p )
|
||||
CASE "buttonBrowse_clicked"
|
||||
IF !empty( cFile := hbide_fetchAFile( ::oDlg, "Select a Tool" ) )
|
||||
hb_fNameSplit( cFile, , @cFileName )
|
||||
::ini2controls()
|
||||
//::ini2controls()
|
||||
::oUI:q_editName : setText( cFileName )
|
||||
::oUI:q_editCmdLine : setText( cFile )
|
||||
ENDIF
|
||||
|
||||
Reference in New Issue
Block a user