easyeditoractions.pas.svn-base
来自「支持自定义语法高亮显示的编辑器控件」· SVN-BASE 代码 · 共 1,309 行 · 第 1/3 页
SVN-BASE
1,309 行
unit EasyEditorActions;
interface
uses
StdActns, EasyEditor, Classes, ActnList, StdCtrls;
type
TExecuteTargetEvent =procedure (Sender: TObject; Target : TCustomEasyEdit) of object;
TEasyEditBaseAction = class(TEditAction)
private
fLastTarget : TObject;
fOnExecuteTarget : TExecuteTargetEvent;
fCustomEasyEdit : TCustomEasyEdit;
protected
procedure GetLocalActionVariables (Target : TObject); virtual;
function GetCustomEasyEdit(Target: TObject): TCustomEasyEdit; virtual;
property OnExecuteTarget : TExecuteTargetEvent
read fOnExecuteTarget write fOnExecuteTarget;
public
procedure UpdateTarget(Target: TObject); override;
function HandlesTarget(Target: TObject): Boolean; override;
procedure ExecuteTarget(Target: TObject); override;
property CustomEasyEdit : TCustomEasyEdit read fCustomEasyEdit;
published
end;
TEasyEditAction = class(TEasyEditBaseAction)
protected
public
published
property OnExecuteTarget;
end;
// Edit Actions
TEasyEditBaseEditAction = class(TEasyEditBaseAction)
private
fCustomEdit : TCustomEdit;
protected
procedure GetLocalActionVariables (Target : TObject); override;
function GetCustomEdit(Target: TObject): TCustomEdit; virtual;
public
function HandlesTarget(Target: TObject): Boolean; override;
procedure UpdateTarget(Target: TObject); override;
property CustomEdit : TCustomEdit read fCustomEdit;
published
end;
TEasyEditCutAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditCopyAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditPasteAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditClearAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSelectAllAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditUndoAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditRedoAction = class(TEasyEditBaseEditAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditAutoCorrectionAction = class(TEasyEditBaseEditAction)
private
procedure DoAutoCorrection ;
public
constructor create (AOwner : TComponent); override;
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
published
end;
// Block Actions
TEasyEditBaseBlockAction = class(TEasyEditBaseAction)
private
protected
public
procedure UpdateTarget(Target: TObject); override;
end;
TEasyEditIndentAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditUnindentAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditLowercaseAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditUppercaseAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditCollapsableAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditUncollapsableAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSortDownAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSortUpAction = class(TEasyEditBaseBlockAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditCommentAction = class(TEasyEditBaseBlockAction)
private
fLineCommentStart: string;
public
constructor create (AOwner : TComponent); override;
procedure ExecuteTarget(Target: TObject); override;
published
property LineCommentStart: string read fLineCommentStart write
fLineCommentStart;
end;
TEasyEditUnCommentAction = class(TEasyEditBaseBlockAction)
private
fLineCommentStart: string;
public
constructor create (AOwner : TComponent); override;
procedure ExecuteTarget(Target: TObject); override;
published
property LineCommentStart: string read fLineCommentStart write
fLineCommentStart;
end;
// Search Actions
TEasyEditBaseSearchAction = class(TEasyEditBaseAction)
private
protected
public
end;
TEasyEditSearchAndReplaceAction = class(TEasyEditBaseSearchAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSearchAction = class(TEasyEditBaseSearchAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSearchAgainAction = class(TEasyEditBaseSearchAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSearchAndReplaceAgainAction = class(TEasyEditBaseSearchAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditIncSearchAction = class(TEasyEditBaseSearchAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSearchBaseIdentifier = class(TEasyEditBaseSearchAction)
private
fSearchNext : Boolean;
protected
property SearchNext : Boolean read fSearchNext write fSearchNext;
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditSearchPrevIdentifier = class(TEasyEditSearchBaseIdentifier)
public
constructor create (AOwner : TComponent); override;
end;
TEasyEditSearchNextIdentifier = class(TEasyEditSearchBaseIdentifier)
public
constructor create (AOwner : TComponent); override;
end;
TEasyEditSearchBaseBracketAction = class(TEasyEditBaseSearchAction)
private
fBrackets : string;
fFindOpen : Boolean;
protected
property FindOpen : Boolean read fFindOpen write fFindOpen;
public
procedure ExecuteTarget(Target: TObject); override;
procedure UpdateTarget(Target: TObject); override;
published
property Brackets : string read fBrackets write fBrackets;
end;
TEasyEditSearchOpenBracketAction = class(TEasyEditSearchBaseBracketAction)
public
constructor create (AOwner : TComponent); override;
end;
TEasyEditSearchCloseBracketAction = class(TEasyEditSearchBaseBracketAction)
public
constructor create (AOwner : TComponent); override;
end;
// Dialog Actions
TEasyEditBaseDialogAction = class(TEasyEditBaseAction)
private
protected
public
end;
TEasyEditGotoLineAction = class(TEasyEditBaseDialogAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditPrintAction = class(TEasyEditBaseDialogAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditPrintPreviewAction = class(TEasyEditBaseDialogAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditCustomizeAction = class(TEasyEditBaseDialogAction)
public
procedure ExecuteTarget(Target: TObject); override;
end;
// Option Actions
TEasyEditBaseOptionAction = class(TEasyEditBaseAction)
private
protected
public
end;
TEasyEditShowFormattingMarksAction = class(TEasyEditBaseOptionAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditShowLineNumbersAction = class(TEasyEditBaseOptionAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditShowRulersAction = class(TEasyEditBaseOptionAction)
private
fHandledRulers : TEasyEditorRulerOptions;
public
constructor create (AOwner : TComponent); override;
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
published
property HandledRulers : TEasyEditorRulerOptions read fHandledRulers write fHandledRulers;
end;
TEasyEditWordWrapAction = class(TEasyEditBaseOptionAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
TEasyEditHiglightBracketsAction = class(TEasyEditBaseOptionAction)
public
procedure UpdateTarget(Target: TObject); override;
procedure ExecuteTarget(Target: TObject); override;
end;
implementation
uses Clipbrd, Windows, EasyKeyMap, EasyEditSource, EasyCustomDlg, Controls,
EasySearchDlg, EasyReplDlg, EasyGoToDlg, EasyPrintDlg, EasyPreviewDlg,
EasyClasses, EasyEditorSettings, EasyParser, EasySettings, EasyConsts, Dialogs;
type THackCustomEasyEdit = class (TCustomEasyEdit)
public
function GetSelBounds(ALine : Integer; var ALeft, ARight : integer) : boolean;
function IncrementalSearch(Const s: TEasyString; DeleteLast: Boolean): Boolean;
end;
function tHackCustomEasyEdit.GetSelBounds(ALine : Integer; var ALeft, ARight : integer) : boolean;
begin
Result := Inherited GetSelBounds(aLine, ALine, False, ALeft, ARight);
end;
function tHackCustomEasyEdit.IncrementalSearch(Const s: TEasyString; DeleteLast: Boolean): Boolean;
begin
Result := Inherited IncrementalSearch (s, DeleteLast);
end;
{ TEasyEditBaseAction }
procedure TEasyEditBaseAction.GetLocalActionVariables (Target : TObject);
begin
fLastTarget := Target;
fCustomEasyEdit := GetCustomEasyEdit(Target);
end;
function TEasyEditBaseAction.GetCustomEasyEdit(Target: TObject): TCustomEasyEdit;
begin
IF Target is TCustomEasyEdit THEN
Result := Target as TCustomEasyEdit
ELSE
Result := NIL;
end;
function TEasyEditBaseAction.HandlesTarget(Target: TObject): Boolean;
begin
// Result := inherited HandlesTarget(Target);
// if not Result then
Result := Assigned(Target) and
(Target is TCustomEasyEdit) and
TCustomEasyEdit(Target).Focused;
IF Result THEN
IF (Target <> fLastTarget) THEN
GetLocalActionVariables (Target)
end;
procedure TEasyEditBaseAction.UpdateTarget(Target: TObject);
begin
IF (Target is TCustomEasyEdit) THEN
IF NOT Enabled THEN
Enabled := TRUE
ELSE
ELSE
IF Enabled THEN
Enabled := False;
end;
procedure TEasyEditBaseAction.ExecuteTarget(Target: TObject);
begin
if Assigned (fOnExecuteTarget) THEN
fOnExecuteTarget(Self, CustomEasyEdit)
ELSE
inherited ExecuteTarget (Target);
end;
procedure TEasyEditBaseEditAction.GetLocalActionVariables (Target : TObject);
Begin
Inherited GetLocalActionVariables(Target);
fCustomEdit := GetCustomEdit(Target);
End;
function TEasyEditBaseEditAction.GetCustomEdit(Target: TObject): TCustomEdit;
begin
IF Target is TCustomEdit THEN
Result := Target as TCustomEdit
ELSE
Result := NIL;
end;
function TEasyEditBaseEditAction.HandlesTarget(Target: TObject): Boolean;
begin
Result := inherited HandlesTarget(Target);
Result := Result OR (Assigned(CustomEdit) AND CustomEdit.Focused);
end;
procedure TEasyEditBaseEditAction.UpdateTarget(Target: TObject);
begin
IF (Target is TCustomEasyEdit) OR
(Target is TCustomEdit) THEN
IF NOT Enabled THEN
Enabled := TRUE
ELSE
ELSE
IF Enabled THEN
Enabled := False;
end;
type
TCustomEditCrack = class(TCustomEdit);
{ TEasyEditCutAction }
procedure TEasyEditCutAction.ExecuteTarget(Target: TObject);
begin
if Target is TCustomEasyEdit then
CustomEasyEdit.CutBlock
else
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?