mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 04:19:12 +02:00
EditorOptions/Mouse: Added sort to grid
git-svn-id: trunk@20442 -
This commit is contained in:
parent
cbea652f5f
commit
54811dc268
@ -32,7 +32,9 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
|
||||
RowCount = 1
|
||||
ScrollBars = ssAutoVertical
|
||||
TabOrder = 0
|
||||
OnCompareCells = ActionGridCompareCells
|
||||
OnDblClick = UpdateButtonClick
|
||||
OnHeaderClick = ActionGridHeaderClick
|
||||
OnHeaderSized = ActionGridHeaderSized
|
||||
OnMouseDown = ActionGridMouseDown
|
||||
OnMouseMove = ActionGridMouseMove
|
||||
@ -60,7 +62,6 @@ inherited EditorMouseOptionsFrame: TEditorMouseOptionsFrame
|
||||
Top = 0
|
||||
Width = 5
|
||||
MinSize = 1
|
||||
OnCanResize = Splitter1CanResize
|
||||
end
|
||||
end
|
||||
object p3: TPanel[1]
|
||||
|
@ -12,34 +12,34 @@ LazarusResources.Add('TEditorMouseOptionsFrame','FORMDATA',[
|
||||
+'ExtendedSelect'#8#9'FixedCols'#2#0#7'Options'#11#15'goFixedVertLine'#15'goF'
|
||||
+'ixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#11'goColSizin'
|
||||
+'g'#11'goRowSelect'#14'goSmoothScroll'#0#8'RowCount'#2#1#10'ScrollBars'#7#14
|
||||
+'ssAutoVertical'#8'TabOrder'#2#0#10'OnDblClick'#7#17'UpdateButtonClick'#13'O'
|
||||
+'nHeaderSized'#7#21'ActionGridHeaderSized'#11'OnMouseDown'#7#19'ActionGridMo'
|
||||
+'useDown'#11'OnMouseMove'#7#19'ActionGridMouseMove'#9'OnMouseUp'#7#17'Action'
|
||||
+'GridMouseUp'#8'OnResize'#7#16'ActionGridResize'#0#0#9'TTreeView'#11'Context'
|
||||
+'Tree'#4'Left'#2#0#6'Height'#3'z'#1#3'Top'#2#0#5'Width'#3#130#0#5'Align'#7#6
|
||||
+'alLeft'#10'AutoExpand'#9#20'Constraints.MinWidth'#2'2'#17'DefaultItemHeight'
|
||||
+#2#17#8'ReadOnly'#9#8'ShowRoot'#8#8'TabOrder'#2#1#8'OnChange'#7#17'ContextTr'
|
||||
+'eeChange'#7'Options'#11#13'tvoAutoExpand'#17'tvoAutoItemHeight'#16'tvoHideS'
|
||||
+'election'#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14'tvoShowButtons'#12't'
|
||||
+'voShowLines'#11'tvoToolTips'#0#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3#130#0
|
||||
+#6'Height'#3'z'#1#3'Top'#2#0#5'Width'#2#5#7'MinSize'#2#1#11'OnCanResize'#7#18
|
||||
+'Splitter1CanResize'#0#0#0#242#2#1#6'TPanel'#2'p3'#23'AnchorSideRight.Contro'
|
||||
+'l'#7#2'p2'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Cont'
|
||||
+'rol'#7#2'p2'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'
|
||||
+#2'%'#3'Top'#3'z'#1#5'Width'#3'b'#2#5'Align'#7#8'alBottom'#8'AutoSize'#9#10
|
||||
+'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'%'#11'ClientWidth'#3'b'#2#8'TabO'
|
||||
+'rder'#2#1#0#7'TButton'#9'DelButton'#22'AnchorSideLeft.Control'#7#2'p3'#21'A'
|
||||
+'nchorSideTop.Control'#7#2'p3'#4'Left'#2#0#6'Height'#2#25#3'Top'#2#6#5'Width'
|
||||
+#2'O'#8'AutoSize'#9#17'BorderSpacing.Top'#2#6#7'Caption'#6#9'DelButton'#7'On'
|
||||
+'Click'#7#14'DelButtonClick'#8'TabOrder'#2#2#0#0#7'TButton'#12'AddNewButton'
|
||||
+#21'AnchorSideTop.Control'#7#12'UpdateButton'#23'AnchorSideRight.Control'#7#2
|
||||
+'p3'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#246#1#6'Height'#2#25#3
|
||||
+'Top'#2#6#5'Width'#2'l'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#7
|
||||
+'Caption'#6#12'AddNewButton'#7'OnClick'#7#17'AddNewButtonClick'#8'TabOrder'#2
|
||||
+#0#0#0#7'TButton'#12'UpdateButton'#21'AnchorSideTop.Control'#7#2'p3'#23'Anch'
|
||||
+'orSideRight.Control'#7#12'AddNewButton'#4'Left'#3#140#1#6'Height'#2#25#3'To'
|
||||
+'p'#2#6#5'Width'#2'd'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#17'B'
|
||||
+'orderSpacing.Top'#2#6#19'BorderSpacing.Right'#2#6#20'BorderSpacing.Bottom'#2
|
||||
+#6#7'Caption'#6#12'UpdateButton'#7'OnClick'#7#17'UpdateButtonClick'#8'TabOrd'
|
||||
+'er'#2#1#0#0#0#0
|
||||
+'ssAutoVertical'#8'TabOrder'#2#0#14'OnCompareCells'#7#22'ActionGridCompareCe'
|
||||
+'lls'#10'OnDblClick'#7#17'UpdateButtonClick'#13'OnHeaderClick'#7#21'ActionGr'
|
||||
+'idHeaderClick'#13'OnHeaderSized'#7#21'ActionGridHeaderSized'#11'OnMouseDown'
|
||||
+#7#19'ActionGridMouseDown'#11'OnMouseMove'#7#19'ActionGridMouseMove'#9'OnMou'
|
||||
+'seUp'#7#17'ActionGridMouseUp'#8'OnResize'#7#16'ActionGridResize'#0#0#9'TTre'
|
||||
+'eView'#11'ContextTree'#4'Left'#2#0#6'Height'#3'z'#1#3'Top'#2#0#5'Width'#3
|
||||
+#130#0#5'Align'#7#6'alLeft'#10'AutoExpand'#9#20'Constraints.MinWidth'#2'2'#17
|
||||
+'DefaultItemHeight'#2#17#8'ReadOnly'#9#8'ShowRoot'#8#8'TabOrder'#2#1#8'OnCha'
|
||||
+'nge'#7#17'ContextTreeChange'#7'Options'#11#13'tvoAutoExpand'#17'tvoAutoItem'
|
||||
+'Height'#16'tvoHideSelection'#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14't'
|
||||
+'voShowButtons'#12'tvoShowLines'#11'tvoToolTips'#0#0#0#9'TSplitter'#9'Splitt'
|
||||
+'er1'#4'Left'#3#130#0#6'Height'#3'z'#1#3'Top'#2#0#5'Width'#2#5#7'MinSize'#2#1
|
||||
+#0#0#0#242#2#1#6'TPanel'#2'p3'#23'AnchorSideRight.Control'#7#2'p2'#20'Anchor'
|
||||
+'SideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#2'p2'#21'Anch'
|
||||
+'orSideBottom.Side'#7#9'asrBottom'#4'Left'#2#0#6'Height'#2'%'#3'Top'#3'z'#1#5
|
||||
+'Width'#3'b'#2#5'Align'#7#8'alBottom'#8'AutoSize'#9#10'BevelOuter'#7#6'bvNon'
|
||||
+'e'#12'ClientHeight'#2'%'#11'ClientWidth'#3'b'#2#8'TabOrder'#2#1#0#7'TButton'
|
||||
+#9'DelButton'#22'AnchorSideLeft.Control'#7#2'p3'#21'AnchorSideTop.Control'#7
|
||||
+#2'p3'#4'Left'#2#0#6'Height'#2#25#3'Top'#2#6#5'Width'#2'O'#8'AutoSize'#9#17
|
||||
+'BorderSpacing.Top'#2#6#7'Caption'#6#9'DelButton'#7'OnClick'#7#14'DelButtonC'
|
||||
+'lick'#8'TabOrder'#2#2#0#0#7'TButton'#12'AddNewButton'#21'AnchorSideTop.Cont'
|
||||
+'rol'#7#12'UpdateButton'#23'AnchorSideRight.Control'#7#2'p3'#20'AnchorSideRi'
|
||||
+'ght.Side'#7#9'asrBottom'#4'Left'#3#246#1#6'Height'#2#25#3'Top'#2#6#5'Width'
|
||||
+#2'l'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#7'Caption'#6#12'AddN'
|
||||
+'ewButton'#7'OnClick'#7#17'AddNewButtonClick'#8'TabOrder'#2#0#0#0#7'TButton'
|
||||
+#12'UpdateButton'#21'AnchorSideTop.Control'#7#2'p3'#23'AnchorSideRight.Contr'
|
||||
+'ol'#7#12'AddNewButton'#4'Left'#3#140#1#6'Height'#2#25#3'Top'#2#6#5'Width'#2
|
||||
+'d'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#17'BorderSpacing.Top'#2
|
||||
+#6#19'BorderSpacing.Right'#2#6#20'BorderSpacing.Bottom'#2#6#7'Caption'#6#12
|
||||
+'UpdateButton'#7'OnClick'#7#17'UpdateButtonClick'#8'TabOrder'#2#1#0#0#0#0
|
||||
]);
|
||||
|
@ -42,6 +42,9 @@ type
|
||||
ActionGrid: TStringGrid;
|
||||
ContextTree: TTreeView;
|
||||
p3: TPanel;
|
||||
procedure ActionGridCompareCells(Sender: TObject; ACol, ARow, BCol, BRow: Integer;
|
||||
var Result: integer);
|
||||
procedure ActionGridHeaderClick(Sender: TObject; IsColumn: Boolean; Index: Integer);
|
||||
procedure ActionGridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
|
||||
X, Y: Integer);
|
||||
procedure ActionGridMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||
@ -49,7 +52,6 @@ type
|
||||
Y: Integer);
|
||||
procedure ContextTreeChange(Sender: TObject; Node: TTreeNode);
|
||||
procedure AddNewButtonClick(Sender: TObject);
|
||||
procedure Splitter1CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
|
||||
procedure UpdateButtonClick(Sender: TObject);
|
||||
procedure DelButtonClick(Sender: TObject);
|
||||
procedure ActionGridHeaderSized(Sender: TObject; IsColumn: Boolean; Index: Integer);
|
||||
@ -67,10 +69,13 @@ type
|
||||
FGutterActionsLines: TSynEditMouseActions;
|
||||
FCurActions: TSynEditMouseActions;
|
||||
|
||||
FSort1, FSort2, FSort3: Integer;
|
||||
ChangeDlg: TMouseaActionDialog;
|
||||
FColWidths: Array of Integer;
|
||||
FLastWidth: Integer;
|
||||
FIsHeaderSizing: Boolean;
|
||||
procedure SortGrid;
|
||||
procedure SelectRow(AAct: TSynEditMouseAction);
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
@ -109,6 +114,7 @@ begin
|
||||
optlist := TStringlist.Create;
|
||||
for i := 1 to FCurActions.Count do begin
|
||||
act := FCurActions[i-1];
|
||||
ActionGrid.Objects[0, i] := act;
|
||||
ActionGrid.Cells[0, i] := act.DisplayName;
|
||||
ActionGrid.Cells[1, i] := ButtonName[act.Button];
|
||||
ActionGrid.Cells[2, i] := ClickName[act.ClickCount];
|
||||
@ -124,8 +130,64 @@ begin
|
||||
end;
|
||||
optlist.Free;
|
||||
ActionGrid.Row := 1;
|
||||
SortGrid;
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.ActionGridHeaderClick(Sender: TObject; IsColumn: Boolean;
|
||||
Index: Integer);
|
||||
begin
|
||||
If Index <> FSort1 then begin
|
||||
if FSort2 <> index then
|
||||
Fsort3 := FSort2;
|
||||
Fsort2 := FSort1;
|
||||
Fsort1 := Index;
|
||||
end;
|
||||
SortGrid;
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.ActionGridCompareCells(Sender: TObject; ACol, ARow, BCol,
|
||||
BRow: Integer; var Result: integer);
|
||||
function CompareCol(i : Integer) : Integer;
|
||||
begin
|
||||
case i of
|
||||
2: // ClickCount
|
||||
Result := ord(TSynEditMouseAction(ActionGrid.Objects[0, ARow]).ClickCount)
|
||||
- ord(TSynEditMouseAction(ActionGrid.Objects[0, BRow]).ClickCount);
|
||||
3: // ClickDir (down first)
|
||||
Result := ord(TSynEditMouseAction(ActionGrid.Objects[0, BRow]).ClickDir)
|
||||
- ord(TSynEditMouseAction(ActionGrid.Objects[0, ARow]).ClickDir);
|
||||
else
|
||||
Result := AnsiCompareText(ActionGrid.Cells[i, ARow], ActionGrid.Cells[i, BRow]);
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
Result := CompareCol(FSort1);
|
||||
if Result = 0 then
|
||||
Result := CompareCol(FSort2);
|
||||
if Result = 0 then
|
||||
Result := CompareCol(FSort3);
|
||||
if Result = 0 then
|
||||
Result := TSynEditMouseAction(ActionGrid.Objects[0, ARow]).ID
|
||||
- TSynEditMouseAction(ActionGrid.Objects[0, BRow]).ID;
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.SortGrid;
|
||||
begin
|
||||
ActionGrid.SortColRow(True, 0);
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.SelectRow(AAct: TSynEditMouseAction);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
For i := 1 to ActionGrid.RowCount -1 do
|
||||
if ActionGrid.Objects[0, i] = AAct then begin
|
||||
ActionGrid.Row := i;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TEditorMouseOptionsFrame.AddNewButtonClick(Sender: TObject);
|
||||
var
|
||||
MAct: TSynEditMouseAction;
|
||||
@ -148,26 +210,18 @@ begin
|
||||
MessageDlg(dlgMouseOptErrorDup, dlgMouseOptErrorDupText, mtError, [mbOk], 0);
|
||||
end;
|
||||
ContextTreeChange(nil, FCurNode);
|
||||
ActionGrid.Row := FCurActions.Count;
|
||||
SelectRow(MAct);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
|
||||
var Accept: Boolean);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TEditorMouseOptionsFrame.UpdateButtonClick(Sender: TObject);
|
||||
var
|
||||
MAct, MOld: TSynEditMouseAction;
|
||||
r: LongInt;
|
||||
begin
|
||||
if FCurActions = nil then exit;
|
||||
if (ActionGrid.Row-1 >= FCurActions.Count) or (ActionGrid.Row < 1) then exit;
|
||||
r := ActionGrid.Row;
|
||||
|
||||
MAct := FCurActions[r-1];
|
||||
MAct := TSynEditMouseAction(ActionGrid.Objects[0, ActionGrid.Row]);
|
||||
ChangeDlg.ReadFromAction(MAct);
|
||||
if ChangeDlg.ShowModal = mrOK then begin
|
||||
try
|
||||
@ -186,7 +240,7 @@ begin
|
||||
end;
|
||||
MOld.Free;
|
||||
ContextTreeChange(nil, FCurNode);
|
||||
ActionGrid.Row := r;
|
||||
SelectRow(MAct);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -194,7 +248,8 @@ procedure TEditorMouseOptionsFrame.DelButtonClick(Sender: TObject);
|
||||
begin
|
||||
if FCurActions = nil then exit;
|
||||
if (ActionGrid.Row-1 >= FCurActions.Count) or (ActionGrid.Row < 1) then exit;
|
||||
FCurActions.Delete(ActionGrid.row-1);
|
||||
FCurActions.Delete(FCurActions.IndexOf(TSynEditMouseAction
|
||||
(ActionGrid.Objects[0, ActionGrid.row])));
|
||||
ActionGrid.Row := 1;
|
||||
ContextTreeChange(nil, FCurNode);
|
||||
end;
|
||||
@ -317,6 +372,10 @@ begin
|
||||
ActionGrid.ColWidths[8] := ActionGrid.ColWidths[8] * 3;
|
||||
ActionGridHeaderSized(nil, true, 0);
|
||||
|
||||
FSort1 := 1; // Button
|
||||
FSort2 := 2; // CCount
|
||||
FSort3 := 3; // Cdir
|
||||
|
||||
DelButton.Caption := dlgMouseOptBtnDel;
|
||||
UpdateButton.Caption := dlgMouseOptBtnUdp;
|
||||
AddNewButton.Caption := dlgMouseOptBtnAdd;
|
||||
|
Loading…
Reference in New Issue
Block a user