doublecmd/src/frames/foptionslayout.lfm
Peter P. Lupo ef80fa3dda Implement terminal-per-tab, history scrolling, and copy/paste functionality
This commit introduces several highly-requested improvements to the integrated terminal:

- Terminal-per-tab synchronization mode: Users can now link a terminal instance to a specific tab, tracking the directory for that tab only.
- Terminal History & Scrolling: Added a 100-line history buffer that allows users to scroll through past terminal output using the scrollbar or mouse wheel.
- Text Selection: Enabled selecting text in the terminal using the left mouse button.
- Copy/Paste Functionality: Implemented copy/paste shortcuts. Copy via Ctrl+Shift+C / Ctrl+Insert. Paste via Ctrl+Shift+V / Shift+Insert, or by using Middle/Right mouse click.
- Fixed 'Follow tail' behavior so the terminal reliably auto-scrolls to the bottom upon receiving new output.
- Fixed overlapping UI elements in the layout configuration dialog.
2026-05-22 16:38:24 -04:00

290 lines
7.7 KiB
Text

inherited frmOptionsLayout: TfrmOptionsLayout
Height = 650
Width = 784
HelpKeyword = '/configuration.html#ConfigLayout'
AutoSize = True
ClientHeight = 650
ClientWidth = 784
DesignLeft = 276
DesignTop = 44
object gbScreenLayout: TGroupBox[0]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 6
Height = 630
Top = 6
Width = 772
Anchors = [akTop, akLeft, akRight]
AutoSize = True
BorderSpacing.Around = 6
Caption = ' Screen layout '
ChildSizing.LeftRightSpacing = 12
ChildSizing.TopBottomSpacing = 6
ClientHeight = 612
ClientWidth = 768
TabOrder = 0
object cbShowMainMenu: TCheckBox
Left = 12
Height = 22
Top = 6
Width = 124
Caption = 'Show &main menu'
TabOrder = 0
end
object cbShowMainToolBar: TCheckBox
AnchorSideTop.Control = cbShowMainMenu
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 30
Width = 99
BorderSpacing.Top = 2
Caption = 'Show tool&bar'
TabOrder = 1
end
object cbShowDiskPanel: TCheckBox
AnchorSideTop.Control = chkShowMiddleToolBar
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 76
Width = 135
BorderSpacing.Top = 2
Caption = 'Show &drive buttons'
OnChange = cbShowDiskPanelChange
TabOrder = 3
end
object cbShowDrivesListButton: TCheckBox
AnchorSideTop.Control = cbFlatDiskPanel
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 148
Width = 156
BorderSpacing.Top = 2
Caption = 'Show drives list bu&tton'
TabOrder = 6
end
object cbShowCurDir: TCheckBox
AnchorSideTop.Control = cbShowTabs
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 268
Width = 154
BorderSpacing.Top = 2
Caption = 'Show current director&y'
TabOrder = 11
end
object cbShowTabHeader: TCheckBox
AnchorSideTop.Control = cbShowCurDir
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 292
Width = 146
BorderSpacing.Top = 2
Caption = 'S&how tabstop header'
TabOrder = 12
end
object cbShowStatusBar: TCheckBox
AnchorSideTop.Control = cbShowTabHeader
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 316
Width = 118
BorderSpacing.Top = 2
Caption = 'Show &status bar'
TabOrder = 13
end
object cbShowCmdLine: TCheckBox
AnchorSideTop.Control = cbShowStatusBar
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 340
Width = 141
BorderSpacing.Top = 2
Caption = 'Show command l&ine'
TabOrder = 14
end
object cbShowKeysPanel: TCheckBox
AnchorSideTop.Control = cbShowCmdLine
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 364
Width = 178
BorderSpacing.Top = 2
Caption = 'Show function &key buttons'
TabOrder = 15
end
object cbFlatDiskPanel: TCheckBox
AnchorSideLeft.Control = cbTwoDiskPanels
AnchorSideTop.Control = cbTwoDiskPanels
AnchorSideTop.Side = asrBottom
Left = 28
Height = 22
Top = 124
Width = 93
BorderSpacing.Top = 2
Caption = '&Flat buttons'
Enabled = False
TabOrder = 5
end
object cbTwoDiskPanels: TCheckBox
AnchorSideLeft.Control = cbShowDiskPanel
AnchorSideTop.Control = cbShowDiskPanel
AnchorSideTop.Side = asrBottom
Left = 28
Height = 22
Top = 100
Width = 372
BorderSpacing.Left = 16
BorderSpacing.Top = 2
Caption = 'Show two drive button bars (fi&xed width, above file windows)'
Enabled = False
TabOrder = 4
end
object cbShowTabs: TCheckBox
AnchorSideTop.Control = cbFreespaceInd
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 244
Width = 121
BorderSpacing.Top = 2
Caption = 'Sho&w folder tabs'
TabOrder = 10
end
object cbFlatInterface: TCheckBox
AnchorSideTop.Control = cbShowKeysPanel
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 388
Width = 100
BorderSpacing.Top = 2
Caption = 'Flat i&nterface'
TabOrder = 16
end
object cbLogWindow: TCheckBox
AnchorSideTop.Control = cbFlatInterface
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 412
Width = 123
BorderSpacing.Top = 2
Caption = 'Show lo&g window'
TabOrder = 17
end
object cbTermWindow: TCheckBox
AnchorSideTop.Control = cbLogWindow
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 436
Width = 152
BorderSpacing.Top = 2
Caption = 'Show te&rminal window'
OnChange = cbTermWindowChange
TabOrder = 18
end
object rgTermMode: TRadioGroup
AnchorSideLeft.Control = cbTermWindow
AnchorSideTop.Control = cbTermWindow
AnchorSideTop.Side = asrBottom
Left = 28
AutoSize = True
BorderSpacing.Left = 16
BorderSpacing.Top = 2
Caption = 'Terminal mode'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
Items.Strings = (
'Single shared terminal'
'Terminal per panel'
'Terminal per tab'
)
TabOrder = 19
end
object cbFreespaceInd: TCheckBox
AnchorSideTop.Control = cbShowShortDriveFreeSpace
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 220
Width = 255
BorderSpacing.Top = 2
Caption = 'Show fr&ee space indicator on drive label'
TabOrder = 9
end
object cbProgInMenuBar: TCheckBox
AnchorSideTop.Control = rgTermMode
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 562
Width = 236
BorderSpacing.Top = 2
Caption = 'Show common progress in menu bar'
TabOrder = 20
end
object cbPanelOfOperations: TCheckBox
AnchorSideTop.Control = cbProgInMenuBar
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 586
Width = 248
BorderSpacing.Top = 2
Caption = 'Show panel of operation in background'
TabOrder = 21
end
object cbShowDriveFreeSpace: TCheckBox
AnchorSideTop.Control = cbShowDrivesListButton
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 172
Width = 152
BorderSpacing.Top = 2
Caption = 'Show free s&pace label'
OnChange = cbShowDriveFreeSpaceChange
TabOrder = 7
end
object cbShowShortDriveFreeSpace: TCheckBox
AnchorSideLeft.Control = cbFlatDiskPanel
AnchorSideTop.Control = cbShowDriveFreeSpace
AnchorSideTop.Side = asrBottom
Left = 28
Height = 22
Top = 196
Width = 185
BorderSpacing.Top = 2
Caption = 'Show short free space &label'
TabOrder = 8
end
object chkShowMiddleToolBar: TCheckBox
AnchorSideLeft.Control = cbShowMainToolBar
AnchorSideTop.Control = cbShowMainToolBar
AnchorSideTop.Side = asrBottom
Left = 12
Height = 22
Top = 52
Width = 141
Caption = 'Show middle toolbar'
TabOrder = 2
end
end
end