editor, add the "undo all" action

This commit is contained in:
Basile Burg 2023-08-28 10:39:21 +02:00
parent 011907d934
commit 47e00a6a9b
6 changed files with 90 additions and 32 deletions

View File

@ -1,8 +1,12 @@
# v3.9.26-devel
## Enhancements
- Editor, added the _Undo All_ action.
## Bugx fixed
- Fixed windows release (#116). ldc2 >= 1.31.0 is a minimal requirement now.
- Fixed windows release (#116). From now ldc2 >= 1.31.0 is a minimal requirement.
- The context lines of the diff viewer were not legible whith dark themes.
# v3.9.25

View File

@ -10,32 +10,33 @@ inherited EditorWidget: TEditorWidget
OnShow = FormShow
inherited Content: TPanel
Height = 398
Top = 36
Width = 465
ClientHeight = 398
ClientWidth = 465
object editorStatus: TStatusBar[0]
Left = 0
Height = 19
Top = 377
Height = 20
Top = 376
Width = 465
BorderSpacing.Bottom = 2
Panels = <
Panels = <
item
Width = 110
end
end
item
Width = 80
end
end
item
Width = 120
end
end
item
Alignment = taCenter
Width = 100
end
end
item
Width = 2000
end
end
item
Width = 50
end>
@ -45,20 +46,19 @@ inherited EditorWidget: TEditorWidget
end
end
inherited toolbar: TDexedToolBar
Height = 30
Width = 457
end
inherited contextMenu: TPopupMenu
Left = 24
Top = 16
end
object macRecorder: TSynMacroRecorder[2]
object macRecorder: TSynMacroRecorder[3]
RecordShortCut = 0
PlaybackShortCut = 0
Left = 80
Top = 16
end
object mnuEditor: TPopupMenu[3]
object mnuEditor: TPopupMenu[4]
OnPopup = mnuEditorPopup
Left = 152
Top = 16
@ -81,13 +81,17 @@ inherited EditorWidget: TEditorWidget
Caption = 'Undo'
OnClick = mnuedUndoClick
end
object mnuedUndoAll: TMenuItem
Caption = 'Undo all'
OnClick = mnuedUndoAllClick
end
object mnuedRedo: TMenuItem
Caption = 'Redo'
OnClick = mnuedRedoClick
end
object enuItemRedoAll: TMenuItem
object mnuedRedoAll: TMenuItem
Caption = 'Redo all'
OnClick = enuItemRedoAllClick
OnClick = mnuedRedoAllClick
end
object MenuItem11: TMenuItem
Caption = '-'
@ -280,7 +284,7 @@ inherited EditorWidget: TEditorWidget
OnClick = MenuItem8Click
end
end
object mnuCurFile: TPopupMenu[4]
object mnuCurFile: TPopupMenu[5]
Left = 216
Top = 16
object mnuCurFileShowInMiniExpl: TMenuItem

View File

@ -62,7 +62,8 @@ type
MenuItem14: TMenuItem;
MenuItem15: TMenuItem;
MenuItem16: TMenuItem;
enuItemRedoAll: TMenuItem;
mnuedRedoAll: TMenuItem;
mnuedUndoAll: TMenuItem;
mnuCurFileCopyName: TMenuItem;
mnuCurFileShowInMiniExpl: TMenuItem;
mnuCurFileShellOpen: TMenuItem;
@ -113,7 +114,7 @@ type
editorStatus: TStatusBar;
mnuEditor: TPopupMenu;
mnuCurFile: TPopupMenu;
procedure enuItemRedoAllClick(Sender: TObject);
procedure mnuedRedoAllClick(Sender: TObject);
procedure FormShortCut(var Msg: TLMKey; var Handled: Boolean);
procedure FormShow(Sender: TObject);
procedure mnuCurFileCopyNameClick(Sender: TObject);
@ -134,6 +135,7 @@ type
procedure mnuEdShowSpecClick(Sender: TObject);
procedure mnuedSortLinesClick(Sender: TObject);
procedure mnuEdTabWidth2Click(Sender: TObject);
procedure mnuedUndoAllClick(Sender: TObject);
procedure mnuedUpcaseClick(Sender: TObject);
procedure MenuItem5Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
@ -360,7 +362,9 @@ begin
AssignPng(mnuedCut.Bitmap, 'CUT');
AssignPng(mnuedPaste.Bitmap, 'PASTE');
AssignPng(mnuedUndo.Bitmap, 'ARROW_UNDO');
AssignPng(mnuedUndoAll.Bitmap, 'ARROW_UNDO');
AssignPng(mnuedRedo.Bitmap, 'ARROW_REDO');
AssignPng(mnuedRedoAll.Bitmap, 'ARROW_REDO');
AssignPng(mnuedJum2Decl.Bitmap, 'ARROW_SHOE');
AssignPng(mnuedCopy.Bitmap, 'COPY');
AssignPng(mnuedNext.Bitmap, 'GO_NEXT');
@ -388,7 +392,9 @@ begin
AssignPng(mnuedCut.Bitmap, 'CUT24');
AssignPng(mnuedPaste.Bitmap, 'PASTE24');
AssignPng(mnuedUndo.Bitmap, 'ARROW_UNDO24');
AssignPng(mnuedUndoAll.Bitmap, 'ARROW_UNDO24');
AssignPng(mnuedRedo.Bitmap, 'ARROW_REDO24');
AssignPng(mnuedRedoAll.Bitmap, 'ARROW_REDO24');
//AssignPng(mnuedJum2Decl.Bitmap, 'ARROW_SHOE24');
AssignPng(mnuedCopy.Bitmap, 'COPY24');
AssignPng(mnuedNext.Bitmap, 'GO_NEXT24');
@ -416,7 +422,9 @@ begin
AssignPng(mnuedCut.Bitmap, 'CUT32');
AssignPng(mnuedPaste.Bitmap, 'PASTE32');
AssignPng(mnuedUndo.Bitmap, 'ARROW_UNDO32');
AssignPng(mnuedUndoAll.Bitmap, 'ARROW_UNDO32');
AssignPng(mnuedRedo.Bitmap, 'ARROW_REDO32');
AssignPng(mnuedRedoAll.Bitmap, 'ARROW_REDO32');
//AssignPng(mnuedJum2Decl.Bitmap, 'ARROW_SHOE32');
AssignPng(mnuedCopy.Bitmap, 'COPY32');
AssignPng(mnuedNext.Bitmap, 'GO_NEXT32');
@ -1043,6 +1051,12 @@ begin
end;
end;
procedure TEditorWidget.mnuedUndoAllClick(Sender: TObject);
begin
if fDoc.isAssigned then
fDoc.undoAll();
end;
procedure TEditorWidget.mnuedNextCareaClick(Sender: TObject);
begin
if fDoc.isAssigned then
@ -1092,7 +1106,7 @@ begin
end;
end;
procedure TEditorWidget.enuItemRedoAllClick(Sender: TObject);
procedure TEditorWidget.mnuedRedoAllClick(Sender: TObject);
begin
if fDoc.isAssigned then
fDoc.redoAll();
@ -1259,7 +1273,9 @@ begin
mnuedPaste.Enabled:=fDoc.CanPaste;
mnuedCopy.Enabled:=fDoc.SelAvail;
mnuedUndo.Enabled:=fDoc.CanUndo;
mnuedUndoAll.Enabled:=fDoc.CanUndo;
mnuedRedo.Enabled:=fDoc.CanRedo;
mnuedRedoAll.Enabled:=fDoc.CanRedo;
mnuedJum2Decl.Enabled:=fDoc.isDSource;
mnuEdSetSpaces.Checked:= eoTabsToSpaces in fDoc.Options;

View File

@ -1,17 +1,17 @@
object MainForm: TMainForm
Left = 383
Height = 35
Height = 34
Top = 610
Width = 687
Width = 673
AllowDropFiles = True
Caption = 'Dexed'
DesignTimePPI = 94
Menu = mainMenu
OnClose = FormClose
OnCloseQuery = FormCloseQuery
OnDropFiles = FormDropFiles
OnResize = FormResize
ShowHint = True
LCLVersion = '2.2.4.0'
object mainMenu: TMainMenu
Top = 1
object MenuItem1: TMenuItem
@ -134,6 +134,9 @@ object MainForm: TMainForm
object MenuItem19: TMenuItem
Action = actEdUndo
end
object MenuItem120: TMenuItem
Action = actEdUndoAll
end
object MenuItem20: TMenuItem
Action = actEdRedo
end
@ -420,7 +423,7 @@ object MainForm: TMainForm
end
end
object Actions: TActionList
Left = 33
Left = 32
object actEdCopy: TAction
Category = 'Edit'
Caption = 'Copy'
@ -450,13 +453,6 @@ object MainForm: TMainForm
OnUpdate = updateDocEditBasedAction
ShortCut = 16474
end
object actEdRedo: TAction
Category = 'Edit'
Caption = 'Redo'
OnExecute = actEdRedoExecute
OnUpdate = updateDocEditBasedAction
ShortCut = 24666
end
object actFileSave: TAction
Category = 'File'
Caption = 'Save file'
@ -816,6 +812,19 @@ object MainForm: TMainForm
Caption = 'Check semantics'
OnExecute = actProjCheckSemaExecute
end
object actEdUndoAll: TAction
Category = 'Edit'
Caption = 'Undo all'
OnExecute = actEdUndoAllExecute
OnUpdate = updateDocEditBasedAction
end
object actEdRedo: TAction
Category = 'Edit'
Caption = 'Redo'
OnExecute = actEdRedoExecute
OnUpdate = updateDocEditBasedAction
ShortCut = 24666
end
object actEdRedoAll: TAction
Category = 'Edit'
Caption = 'Redo all'
@ -875,7 +884,7 @@ object MainForm: TMainForm
object ApplicationProperties1: TApplicationProperties
OnActivate = ApplicationProperties1Activate
OnException = ApplicationProperties1Exception
Left = 64
Left = 63
Top = 1
end
end

View File

@ -118,6 +118,7 @@ type
actFileNewClip: TAction;
actEdFormat: TAction;
actEdRedoAll: TAction;
actEdUndoAll: TAction;
actProjCheckSema: TAction;
actProjSetEnv: TAction;
actProjGitPull: TAction;
@ -188,6 +189,7 @@ type
MenuItem117: TMenuItem;
MenuItem118: TMenuItem;
MenuItem119: TMenuItem;
MenuItem120: TMenuItem;
mnuGitBranch: TMenuItem;
mnuItemDubDialog: TMenuItem;
mnuItemHelp: TMenuItem;
@ -299,6 +301,7 @@ type
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
procedure actEdFormatExecute(Sender: TObject);
procedure actEdUndoAllExecute(Sender: TObject);
procedure actFileCloseAllExecute(Sender: TObject);
procedure actFileCloseAllOthersExecute(Sender: TObject);
procedure actFileCompileExecute(Sender: TObject);
@ -1565,6 +1568,7 @@ begin
actFileNewClip.ImageIndex:= i;
i := loadIcon('ARROW_UNDO');
actEdUndo.ImageIndex:= i;
actEdUndoAll.ImageIndex:= i;
i := loadIcon('ARROW_REDO');
actEdRedo.ImageIndex:= i;
actEdRedoAll.ImageIndex:= i;
@ -2916,6 +2920,12 @@ begin
fDoc.redoAll();
end;
procedure TMainForm.actEdUndoAllExecute(Sender: TObject);
begin
if fDoc.isAssigned then
fDoc.undoAll();
end;
procedure TMainForm.actEdMacPlayExecute(Sender: TObject);
begin
if fDoc.isAssigned then

View File

@ -382,6 +382,7 @@ type
procedure setDscannerOptions(dsEnabled: boolean; dsDelay: integer);
procedure centerCursor();
procedure redoAll();
procedure undoAll();
procedure scrollCentered(down: boolean);
//
property IdentifierMatchOptions: TIdentifierMatchOptions read fMatchOpts write setMatchOpts;
@ -484,8 +485,9 @@ const
ecSelLeftWordEdge = ecUserFirst + 32;
ecSelRightWordEdge = ecUserFirst + 33;
ecRedoAll = ecUserFirst + 34;
ecScrollCenteredUp = ecUserFirst + 35;
ecScrollCenteredDown = ecUserFirst + 36;
ecUndoAll = ecUserFirst + 35;
ecScrollCenteredUp = ecUserFirst + 36;
ecScrollCenteredDown = ecUserFirst + 37;
var
D2Syn: TSynD2Syn; // used as model to set the options when no editor exists.
TxtSyn: TSynTxtSyn; // used as model to set the options when no editor exists.
@ -1487,6 +1489,7 @@ begin
AddKey(ecSmartWordLeft, 0, [], 0, []);
AddKey(ecSmartWordRight, 0, [], 0, []);
AddKey(ecRedoAll, 0, [], 0, []);
AddKey(ecUndoAll, 0, [], 0, []);
AddKey(ecScrollCenteredDown, VK_DOWN, [ssCtrl, ssAlt], 0, []);
AddKey(ecScrollCenteredUp, VK_UP, [ssCtrl, ssAlt], 0, []);
end;
@ -1529,6 +1532,7 @@ begin
'ecSelLeftWordEdge': begin Int := ecSelLeftWordEdge; exit(true); end;
'ecSelRightWordEdge': begin Int := ecSelRightWordEdge; exit(true); end;
'ecRedoAll': begin Int := ecRedoAll; exit(true); end;
'ecUndoAll': begin Int := ecUndoAll; exit(true); end;
'ecScrollCenteredUp': begin Int := ecScrollCenteredUp; exit(true); end;
'ecScrollCenteredDown': begin Int := ecScrollCenteredDown; exit(true); end;
else exit(false);
@ -1572,6 +1576,7 @@ begin
ecSelLeftWordEdge: begin Ident := 'ecSelLeftWordEdge'; exit(true); end;
ecSelRightWordEdge: begin Ident := 'ecSelRightWordEdge'; exit(true); end;
ecRedoAll: begin Ident := 'ecRedoAll'; exit(true); end;
ecUndoAll: begin Ident := 'ecUndoAll'; exit(true); end;
ecScrollCenteredUp: begin Ident := 'ecScrollCenteredUp'; exit(true); end;
ecScrollCenteredDown: begin Ident := 'ecScrollCenteredDown'; exit(true); end;
else exit(false);
@ -1708,6 +1713,8 @@ begin
gotoWordEdge(true);
ecRedoAll:
redoAll();
ecUndoAll:
undoAll();
ecScrollCenteredUp:
scrollCentered(false);
ecScrollCenteredDown:
@ -2715,6 +2722,14 @@ begin
EndUpdate();
end;
procedure TDexedMemo.undoAll();
begin
BeginUpdate(false);
while CanUndo do
Undo;
EndUpdate();
end;
procedure TDexedMemo.gotoWordEdge(right: boolean);
var
s: string;