EditorOptions/Mouse: Added Config for Line-Number-Gutter => End users can add option to select line

git-svn-id: trunk@20410 -
This commit is contained in:
martin 2009-06-04 21:49:15 +00:00
parent 3332a54674
commit c9f080f627
8 changed files with 62 additions and 18 deletions

View File

@ -1706,7 +1706,7 @@ begin
if assigned(Owner) and not (csLoading in Owner.ComponentState) then begin
SetDefaultKeystrokes;
end;
FMouseActions := TSynEditMouseActions.Create(Self);
FMouseActions := TSynEditMouseTextActions.Create(Self);
FMouseSelActions := TSynEditMouseSelActions.Create(Self);
FMouseActions.ResetDefaults;
FMouseSelActions.ResetDefaults;

View File

@ -167,6 +167,13 @@ type
write SetItem; default;
end;
{ TSynEditMouseTextActions }
TSynEditMouseTextActions = class(TSynEditMouseActions)
public
procedure ResetDefaults; override;
end;
{ TSynEditSelMouseActions }
TSynEditMouseSelActions = class(TSynEditMouseActions)
@ -463,19 +470,6 @@ end;
procedure TSynEditMouseActions.ResetDefaults;
begin
Clear;
AddCommand(emcStartSelections, True, mbLeft, ccSingle, cdDown, [], [ssShift, ssAlt]);
AddCommand(emcContinueSelections, True, mbLeft, ccSingle, cdDown, [ssShift], [ssShift, ssAlt]);
AddCommand(emcStartColumnSelections, True, mbLeft, ccSingle, cdDown, [ssAlt], [ssShift, ssAlt]);
AddCommand(emcContinueColumnSelections, True, mbLeft, ccSingle, cdDown, [ssShift, ssAlt], [ssShift, ssAlt]);
AddCommand(emcContextMenu, False, mbRight, ccSingle, cdUp, [], []);
AddCommand(emcSelectWord, True, mbLeft, ccDouble, cdDown, [], []);
AddCommand(emcSelectLine, True, mbLeft, ccTriple, cdDown, [], []);
AddCommand(emcSelectPara, True, mbLeft, ccQuad, cdDown, [], []);
AddCommand(emcPasteSelection, True, mbMiddle, ccSingle, cdDown, [], []);
AddCommand(emcMouseLink, False, mbLeft, ccSingle, cdUp, [SYNEDIT_LINK_MODIFIER], [ssShift, ssAlt, ssCtrl]);
end;
procedure TSynEditMouseActions.IncAssertLock;
@ -506,5 +500,25 @@ begin
AddCommand(emcStartDragMove, False, mbLeft, ccSingle, cdDown, [], []);
end;
{ TSynEditMouseTextActions }
procedure TSynEditMouseTextActions.ResetDefaults;
begin
Clear;
AddCommand(emcStartSelections, True, mbLeft, ccSingle, cdDown, [], [ssShift, ssAlt]);
AddCommand(emcContinueSelections, True, mbLeft, ccSingle, cdDown, [ssShift], [ssShift, ssAlt]);
AddCommand(emcStartColumnSelections, True, mbLeft, ccSingle, cdDown, [ssAlt], [ssShift, ssAlt]);
AddCommand(emcContinueColumnSelections, True, mbLeft, ccSingle, cdDown, [ssShift, ssAlt], [ssShift, ssAlt]);
AddCommand(emcContextMenu, False, mbRight, ccSingle, cdUp, [], []);
AddCommand(emcSelectWord, True, mbLeft, ccDouble, cdDown, [], []);
AddCommand(emcSelectLine, True, mbLeft, ccTriple, cdDown, [], []);
AddCommand(emcSelectPara, True, mbLeft, ccQuad, cdDown, [], []);
AddCommand(emcPasteSelection, True, mbMiddle, ccSingle, cdDown, [], []);
AddCommand(emcMouseLink, False, mbLeft, ccSingle, cdUp, [SYNEDIT_LINK_MODIFIER], [ssShift, ssAlt, ssCtrl]);
end;
end.

View File

@ -420,7 +420,7 @@ end;
procedure TSynEditMouseActionsGutter.ResetDefaults;
begin
Clear;
AddCommand(emcOnMainGutterClick, False, mbLeft, ccSingle, cdDown, [], []);
AddCommand(emcOnMainGutterClick, False, mbLeft, ccAny, cdDown, [], []);
AddCommand(emcContextMenu, False, mbRight, ccSingle, cdUp, [], []);
end;

View File

@ -341,6 +341,8 @@ function TSynGutterPartBase.MaybeHandleMouseAction(var AnInfo: TSynEditMouseActi
HandleActionProc: TSynEditMouseActionHandler): Boolean;
begin
Result := False;
if assigned(FMouseActions) then
Result := HandleActionProc(MouseActions.FindCommand(AnInfo), AnInfo);
end;
function TSynGutterPartBase.DoHandleMouseAction(AnAction: TSynEditMouseAction;

View File

@ -6,10 +6,14 @@ interface
uses
Classes, SysUtils, Graphics, LCLType, LCLIntf, SynGutterBase,
SynEditMiscProcs, SynTextDrawer, SynEditFoldedView;
SynEditMiscProcs, SynTextDrawer, SynEditFoldedView, SynEditMouseCmds;
type
TSynEditMouseActionsLineNum = class(TSynEditMouseActions)
public // empty by default
end;
{ TSynGutterLineNumber }
TSynGutterLineNumber = class(TSynGutterPartBase)
@ -59,6 +63,8 @@ begin
inherited Create(AOwner);
FFoldView := Gutter.FoldView;
FTextDrawer := Gutter.TextDrawer;
FMouseActions := TSynEditMouseActionsLineNum.Create(self);
FMouseActions.ResetDefaults;
FDigitCount := 2;
FAutoSizeDigitCount := FDigitCount;
@ -70,6 +76,7 @@ end;
destructor TSynGutterLineNumber.Destroy;
begin
FreeAndNil(FMouseActions);
inherited Destroy;
end;

View File

@ -649,6 +649,7 @@ type
FMouseGutterActionsFold: TSynEditMouseActions;
FMouseGutterActionsFoldCol: TSynEditMouseActions;
FMouseGutterActionsFoldExp: TSynEditMouseActions;
FMouseGutterActionsLines: TSynEditMouseActions;
// Color options
fHighlighterList: TEditOptLangList;
@ -795,6 +796,7 @@ type
property MouseGutterActionsFold: TSynEditMouseActions read FMouseGutterActionsFold;
property MouseGutterActionsFoldExp: TSynEditMouseActions read FMouseGutterActionsFoldExp;
property MouseGutterActionsFoldCol: TSynEditMouseActions read FMouseGutterActionsFoldCol;
property MouseGutterActionsLines: TSynEditMouseActions read FMouseGutterActionsLines;
// Color options
property HighlighterList: TEditOptLangList
@ -1943,7 +1945,7 @@ begin
fKeyMap := TKeyCommandRelationList.Create;
// Mouse Mappings
fMouseMap := TSynEditMouseActions.Create(nil);
fMouseMap := TSynEditMouseTextActions.Create(nil);
fMouseMap.ResetDefaults;
fMouseSelMap := TSynEditMouseSelActions.Create(nil);
fMouseSelMap.ResetDefaults;
@ -1955,7 +1957,8 @@ begin
FMouseGutterActionsFoldCol.ResetDefaults;
FMouseGutterActionsFoldExp := TSynEditMouseActionsGutterFoldExpanded.Create(nil);
FMouseGutterActionsFoldExp.ResetDefaults;
FMouseGutterActionsLines := TSynEditMouseActionsLineNum.Create(nil);
FMouseGutterActionsLines.ResetDefaults;
// Color options
fHighlighterList := TEditOptLangList.Create;
@ -1997,6 +2000,7 @@ begin
FMouseGutterActionsFold.Free;
FMouseGutterActionsFoldCol.Free;
FMouseGutterActionsFoldExp.Free;
FMouseGutterActionsLines.Free;
fKeyMap.Free;
XMLConfig.Free;
inherited Destroy;
@ -2244,6 +2248,7 @@ begin
LoadMouseAct('EditorOptions/Mouse/GutterFold/', MouseGutterActionsFold);
LoadMouseAct('EditorOptions/Mouse/GutterFoldExp/', MouseGutterActionsFoldExp);
LoadMouseAct('EditorOptions/Mouse/GutterFoldCol/', MouseGutterActionsFoldCol);
LoadMouseAct('EditorOptions/Mouse/GutterLineNum/', MouseGutterActionsLines);
// update depricated values
if not XMLConfig.GetValue('EditorOptions/General/Editor/DragDropEditing', True) then
@ -2459,6 +2464,7 @@ begin
SaveMouseAct('EditorOptions/Mouse/GutterFold/', MouseGutterActionsFold);
SaveMouseAct('EditorOptions/Mouse/GutterFoldExp/', MouseGutterActionsFoldExp);
SaveMouseAct('EditorOptions/Mouse/GutterFoldCol/', MouseGutterActionsFoldCol);
SaveMouseAct('EditorOptions/Mouse/GutterLineNum/', MouseGutterActionsLines);
InvalidateFileStateCache;
XMLConfig.Flush;
@ -3264,6 +3270,9 @@ begin
ASynEdit.Gutter.CodeFoldPart.MouseActionsCollapsed.Assign(MouseGutterActionsFoldCol);
ASynEdit.Gutter.CodeFoldPart.MouseActionsExpanded.Assign(MouseGutterActionsFoldExp);
end;
if ASynEdit.Gutter.LineNumberPart <> nil then begin
ASynEdit.Gutter.LineNumberPart.MouseActions.Assign(MouseGutterActionsLines);
end;
end;
procedure TEditorOptions.SetSynEditSettings(ASynEdit: TSynEdit);

View File

@ -58,11 +58,15 @@ type
FMainNode, FSelNode: TTreeNode;
FGutterNode: TTreeNode;
FGutterFoldNode, FGutterFoldExpNode, FGutterFoldColNode: TTreeNode;
FGutterLinesNode: TTreeNode;
FCurNode: TTreeNode;
FMainActions, FSelActions: TSynEditMouseActions;
FGutterActions: TSynEditMouseActions;
FGutterActionsFold, FGutterActionsFoldExp, FGutterActionsFoldCol: TSynEditMouseActions;
FGutterActionsLines: TSynEditMouseActions;
FCurActions: TSynEditMouseActions;
ChangeDlg: TMouseaActionDialog;
FColWidths: Array of Integer;
FLastWidth: Integer;
@ -254,6 +258,7 @@ begin
FGutterActionsFold := TSynEditMouseActions.Create(nil);
FGutterActionsFoldExp := TSynEditMouseActions.Create(nil);
FGutterActionsFoldCol := TSynEditMouseActions.Create(nil);
FGutterActionsLines := TSynEditMouseActions.Create(nil);
ChangeDlg := TMouseaActionDialog.Create(self);
end;
@ -265,6 +270,7 @@ begin
FGutterActionsFold.Free;
FGutterActionsFoldExp.Free;
FGutterActionsFoldCol.Free;
FGutterActionsLines.Free;
ChangeDlg.Free;
inherited Destroy;
end;
@ -292,6 +298,9 @@ begin
FGutterFoldColNode.Data := FGutterActionsFoldCol;
FGutterFoldExpNode := ContextTree.Items.AddChild(FGutterFoldNode, dlgMouseOptNodeGutterFoldExp);
FGutterFoldExpNode.Data := FGutterActionsFoldExp;
// LineNum
FGutterLinesNode := ContextTree.Items.AddChild(FGutterNode, dlgMouseOptNodeGutterLines);
FGutterLinesNode.Data := FGutterActionsLines;
ActionGrid.Constraints.MinWidth := ActionGrid.ColCount * MinGridColSize;
Splitter1.MinSize := ActionGrid.ColCount * MinGridColSize;
@ -324,6 +333,7 @@ begin
FGutterActionsFold.Assign(MouseGutterActionsFold);
FGutterActionsFoldExp.Assign(MouseGutterActionsFoldExp);
FGutterActionsFoldCol.Assign(MouseGutterActionsFoldCol);
FGutterActionsLines.Assign(MouseGutterActionsLines);
end;
ContextTree.Selected := FMainNode;
end;
@ -339,6 +349,7 @@ begin
MouseGutterActionsFold.Assign(FGutterActionsFold);
MouseGutterActionsFoldExp.Assign(FGutterActionsFoldExp);
MouseGutterActionsFoldCol.Assign(FGutterActionsFoldCol);
MouseGutterActionsLines.Assign(FGutterActionsLines);
end;
end;

View File

@ -1170,6 +1170,7 @@ resourcestring
dlgMouseOptNodeGutterFold = 'Fold Tree';
dlgMouseOptNodeGutterFoldCol = 'Fold Collapsed [+]';
dlgMouseOptNodeGutterFoldExp = 'Fold Expanded [-]';
dlgMouseOptNodeGutterLines = 'Line Numbers';
dlgMouseOptHeadDesc = 'Action';
dlgMouseOptHeadBtn = 'Button';
dlgMouseOptHeadCount = 'Click';