SourceEditor: Allow tabs at top, left, right, bottom. Issue #15905 Based on patch by Flávio Etrusco

git-svn-id: trunk@23848 -
This commit is contained in:
martin 2010-03-06 21:40:35 +00:00
parent 963759090b
commit 7d68d5d48b
5 changed files with 64 additions and 10 deletions

View File

@ -37,7 +37,7 @@ uses
// RTL, FCL // RTL, FCL
Classes, SysUtils, Classes, SysUtils,
// LCL // LCL
Controls, Graphics, LCLProc, FileUtil, LResources, Forms, Controls, ExtCtrls, Graphics, LCLProc, FileUtil, LResources, Forms,
// synedit // synedit
SynEdit, SynEditAutoComplete, SynEditHighlighter, SynEditHighlighterFoldBase, SynEditKeyCmds, SynEdit, SynEditAutoComplete, SynEditHighlighter, SynEditHighlighterFoldBase, SynEditKeyCmds,
SynEditStrConst, SynEditMarkupBracket, SynEditMarkupHighAll, SynEditMarkupWordGroup, SynEditStrConst, SynEditMarkupBracket, SynEditMarkupHighAll, SynEditMarkupWordGroup,
@ -852,6 +852,7 @@ type
fFindTextAtCursor: Boolean; fFindTextAtCursor: Boolean;
fShowTabCloseButtons: Boolean; fShowTabCloseButtons: Boolean;
fShowTabNumbers: Boolean; fShowTabNumbers: Boolean;
fTabPosition: TTabPosition;
fSynEditOptions: TSynEditorOptions; fSynEditOptions: TSynEditorOptions;
fSynEditOptions2: TSynEditorOptions2; fSynEditOptions2: TSynEditorOptions2;
fUndoAfterSave: Boolean; fUndoAfterSave: Boolean;
@ -983,6 +984,8 @@ type
property ShowTabCloseButtons: Boolean property ShowTabCloseButtons: Boolean
read fShowTabCloseButtons write fShowTabCloseButtons; read fShowTabCloseButtons write fShowTabCloseButtons;
property ShowTabNumbers: Boolean read fShowTabNumbers write fShowTabNumbers; property ShowTabNumbers: Boolean read fShowTabNumbers write fShowTabNumbers;
property TabPosition: TTabPosition
read fTabPosition write fTabPosition default tpTop;
property UndoAfterSave: Boolean read fUndoAfterSave property UndoAfterSave: Boolean read fUndoAfterSave
write fUndoAfterSave default True; write fUndoAfterSave default True;
property FindTextAtCursor: Boolean property FindTextAtCursor: Boolean
@ -2374,6 +2377,7 @@ begin
// General options // General options
fShowTabCloseButtons := True; fShowTabCloseButtons := True;
fTabPosition := tpTop;
FCopyWordAtCursorOnCopyNone := True; FCopyWordAtCursorOnCopyNone := True;
FShowGutterHints := True; FShowGutterHints := True;
fBlockIndent := 2; fBlockIndent := 2;
@ -2632,6 +2636,8 @@ begin
'EditorOptions/General/Editor/ShowTabCloseButtons', True); 'EditorOptions/General/Editor/ShowTabCloseButtons', True);
fShowTabNumbers := fShowTabNumbers :=
XMLConfig.GetValue('EditorOptions/General/Editor/ShowTabNumbers', False); XMLConfig.GetValue('EditorOptions/General/Editor/ShowTabNumbers', False);
fTabPosition := tpTop;
XMLConfig.ReadObject('EditorOptions/General/Editor/', self, self, 'TabPosition');
FCopyWordAtCursorOnCopyNone := FCopyWordAtCursorOnCopyNone :=
XMLConfig.GetValue( XMLConfig.GetValue(
'EditorOptions/General/Editor/CopyWordAtCursorOnCopyNone', True); 'EditorOptions/General/Editor/CopyWordAtCursorOnCopyNone', True);
@ -2874,6 +2880,7 @@ begin
, fShowTabCloseButtons, True); , fShowTabCloseButtons, True);
XMLConfig.SetDeleteValue('EditorOptions/General/Editor/ShowTabNumbers' XMLConfig.SetDeleteValue('EditorOptions/General/Editor/ShowTabNumbers'
, fShowTabNumbers, False); , fShowTabNumbers, False);
XMLConfig.WriteObject('EditorOptions/General/Editor/', self, nil, 'TabPosition');
XMLConfig.SetDeleteValue( XMLConfig.SetDeleteValue(
'EditorOptions/General/Editor/CopyWordAtCursorOnCopyNone', 'EditorOptions/General/Editor/CopyWordAtCursorOnCopyNone',
FCopyWordAtCursorOnCopyNone, True); FCopyWordAtCursorOnCopyNone, True);

View File

@ -1,8 +1,9 @@
inherited EditorGeneralMiscOptionsFrame: TEditorGeneralMiscOptionsFrame inherited EditorGeneralMiscOptionsFrame: TEditorGeneralMiscOptionsFrame
Height = 186 Height = 232
Width = 459 Width = 460
ClientHeight = 186 ClientHeight = 232
ClientWidth = 459 ClientWidth = 460
TabOrder = 0
Visible = False Visible = False
DesignLeft = 138 DesignLeft = 138
DesignTop = 138 DesignTop = 138
@ -12,9 +13,9 @@ inherited EditorGeneralMiscOptionsFrame: TEditorGeneralMiscOptionsFrame
AnchorSideTop.Control = EditorTrimSpaceTypeCheckBox AnchorSideTop.Control = EditorTrimSpaceTypeCheckBox
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 156 Left = 156
Height = 14 Height = 16
Top = 161 Top = 161
Width = 127 Width = 142
BorderSpacing.Left = 6 BorderSpacing.Left = 6
Caption = 'EditorTrimSpaceTypeLabel' Caption = 'EditorTrimSpaceTypeLabel'
ParentColor = False ParentColor = False
@ -29,7 +30,7 @@ inherited EditorGeneralMiscOptionsFrame: TEditorGeneralMiscOptionsFrame
Left = 0 Left = 0
Height = 152 Height = 152
Top = 0 Top = 0
Width = 459 Width = 460
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoFill = True AutoFill = True
AutoSize = True AutoSize = True
@ -52,12 +53,38 @@ inherited EditorGeneralMiscOptionsFrame: TEditorGeneralMiscOptionsFrame
AnchorSideTop.Control = EditorOptionsGroupBox AnchorSideTop.Control = EditorOptionsGroupBox
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 0 Left = 0
Height = 21 Height = 23
Top = 158 Top = 158
Width = 150 Width = 150
BorderSpacing.Top = 6 BorderSpacing.Top = 6
ItemHeight = 13 ItemHeight = 15
Style = csDropDownList Style = csDropDownList
TabOrder = 1 TabOrder = 1
end end
object EditorTabPositionCheckBox: TComboBox[3]
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = EditorTrimSpaceTypeCheckBox
AnchorSideTop.Side = asrBottom
Left = 0
Height = 23
Top = 187
Width = 150
BorderSpacing.Top = 6
ItemHeight = 15
Style = csDropDownList
TabOrder = 2
end
object EditorTabPositionLabel: TLabel[4]
AnchorSideLeft.Control = EditorTrimSpaceTypeCheckBox
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = EditorTabPositionCheckBox
AnchorSideTop.Side = asrCenter
Left = 156
Height = 16
Top = 190
Width = 142
BorderSpacing.Left = 6
Caption = 'EditorTrimSpaceTypeLabel'
ParentColor = False
end
end end

View File

@ -35,7 +35,9 @@ type
TEditorGeneralMiscOptionsFrame = class(TAbstractIDEOptionsEditor) TEditorGeneralMiscOptionsFrame = class(TAbstractIDEOptionsEditor)
EditorTrimSpaceTypeCheckBox: TComboBox; EditorTrimSpaceTypeCheckBox: TComboBox;
EditorOptionsGroupBox: TCheckGroup; EditorOptionsGroupBox: TCheckGroup;
EditorTabPositionCheckBox: TComboBox;
EditorTrimSpaceTypeLabel: TLabel; EditorTrimSpaceTypeLabel: TLabel;
EditorTabPositionLabel: TLabel;
procedure EditorOptionsGroupBoxItemClick(Sender: TObject; Index: integer); procedure EditorOptionsGroupBoxItemClick(Sender: TObject; Index: integer);
private private
FDialog: TAbstractOptionsEditorDialog; FDialog: TAbstractOptionsEditorDialog;
@ -86,9 +88,16 @@ begin
EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypeCaretMove); EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypeCaretMove);
EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypePosOnly); EditorTrimSpaceTypeCheckBox.Items.Add(dlgTrimSpaceTypePosOnly);
EditorTrimSpaceTypeLabel.Caption := dlgTrimSpaceTypeCaption; EditorTrimSpaceTypeLabel.Caption := dlgTrimSpaceTypeCaption;
EditorTabPositionCheckBox.Items.Add(dlgNotebookTabPosTop);
EditorTabPositionCheckBox.Items.Add(dlgNotebookTabPosBottom);
EditorTabPositionCheckBox.Items.Add(dlgNotebookTabPosLeft);
EditorTabPositionCheckBox.Items.Add(dlgNotebookTabPosRight);
EditorTabPositionLabel.Caption := dlgNotebookTabPos;
end; end;
procedure TEditorGeneralMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions); procedure TEditorGeneralMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
const
TabPosToIndex : Array [TTabPosition] of Integer = (0, 1, 2, 3);
begin begin
with AOptions as TEditorOptions do with AOptions as TEditorOptions do
begin begin
@ -104,6 +113,7 @@ begin
Checked[6] := ShowTabNumbers; Checked[6] := ShowTabNumbers;
end; end;
EditorTrimSpaceTypeCheckBox.ItemIndex := ord(TrimSpaceType); EditorTrimSpaceTypeCheckBox.ItemIndex := ord(TrimSpaceType);
EditorTabPositionCheckBox.ItemIndex := TabPosToIndex[TabPosition];
end; end;
end; end;
@ -117,6 +127,8 @@ procedure TEditorGeneralMiscOptionsFrame.WriteSettings(AOptions: TAbstractIDEOpt
TEditorOptions(AOptions).SynEditOptions := TEditorOptions(AOptions).SynEditOptions - [AnOption]; TEditorOptions(AOptions).SynEditOptions := TEditorOptions(AOptions).SynEditOptions - [AnOption];
end; end;
const
TabIndexToPos : Array [0..3] of TTabPosition = (tpTop, tpBottom, tpLeft, tpRight);
begin begin
with AOptions as TEditorOptions do with AOptions as TEditorOptions do
begin begin
@ -132,6 +144,7 @@ begin
SynEditOptions2 := SynEditOptions2 - [eoFoldedCopyPaste]; SynEditOptions2 := SynEditOptions2 - [eoFoldedCopyPaste];
ShowTabNumbers := EditorOptionsGroupBox.Checked[6]; ShowTabNumbers := EditorOptionsGroupBox.Checked[6];
TrimSpaceType := TSynEditStringTrimmingType(EditorTrimSpaceTypeCheckBox.ItemIndex); TrimSpaceType := TSynEditStringTrimmingType(EditorTrimSpaceTypeCheckBox.ItemIndex);
TabPosition := TabIndexToPos[EditorTabPositionCheckBox.ItemIndex];
end; end;
end; end;

View File

@ -1200,6 +1200,11 @@ resourcestring
lisShowSpecialCharacters = 'Show special characters'; lisShowSpecialCharacters = 'Show special characters';
dlgCloseButtonsNotebook = 'Show close buttons in notebook'; dlgCloseButtonsNotebook = 'Show close buttons in notebook';
dlgTabNumbersNotebook = 'Show tab numbers in notebook'; dlgTabNumbersNotebook = 'Show tab numbers in notebook';
dlgNotebookTabPos = 'Positoon for source-notebook tabs';
dlgNotebookTabPosTop = 'Top';
dlgNotebookTabPosBottom = 'Bottom';
dlgNotebookTabPosLeft = 'Left';
dlgNotebookTabPosRight = 'Right';
dlgShowScrollHint = 'Show scroll hint'; dlgShowScrollHint = 'Show scroll hint';
dlgShowGutterHints = 'Show gutter hints'; dlgShowGutterHints = 'Show gutter hints';
dlgSmartTabs = 'Smart tabs'; dlgSmartTabs = 'Smart tabs';

View File

@ -4535,6 +4535,7 @@ Begin
Options:=Options+[nboShowCloseButtons] Options:=Options+[nboShowCloseButtons]
else else
Options:=Options-[nboShowCloseButtons]; Options:=Options-[nboShowCloseButtons];
TabPosition := EditorOpts.TabPosition;
OnPageChanged := @NotebookPageChanged; OnPageChanged := @NotebookPageChanged;
OnCloseTabClicked:=@CloseTabClicked; OnCloseTabClicked:=@CloseTabClicked;
OnMouseDown:=@NotebookMouseDown; OnMouseDown:=@NotebookMouseDown;
@ -7168,6 +7169,7 @@ Begin
NoteBook.Options:=NoteBook.Options+[nboShowCloseButtons] NoteBook.Options:=NoteBook.Options+[nboShowCloseButtons]
else else
NoteBook.Options:=NoteBook.Options-[nboShowCloseButtons]; NoteBook.Options:=NoteBook.Options-[nboShowCloseButtons];
Notebook.TabPosition := EditorOpts.TabPosition;
end; end;
SourceCompletionTimer.Interval:=EditorOpts.AutoDelayInMSec; SourceCompletionTimer.Interval:=EditorOpts.AutoDelayInMSec;