easyeditoractionsreg.pas.svn-base

来自「支持自定义语法高亮显示的编辑器控件」· SVN-BASE 代码 · 共 247 行

SVN-BASE
247
字号
unit EasyEditorActionsReg;

interface

procedure Register;

implementation

uses EasyEditorActions, Classes, StdActns, Windows, ActnRes, ActnList;

type
  TEasyEditActionClass = class of TAction;
  TEditActionClass = class of TAction;

  TEditActionWrapper = class(TAction);

  TEasyEditActionsInfo = record
    EasyEditActionClass: TEasyEditActionClass;
    EditActionClass: TEditActionClass;
    DefaultCaption: string;
    DefaultHint: string;
    DefaultImageIndex: Integer;
    DefaultShortCut: TShortCut;
  end;

const
  EasyEditActionsCount = 36;
  EasyEditActionsInfo: array[0..EasyEditActionsCount - 1] of TEasyEditActionsInfo = (
    (EasyEditActionClass: TEasyEditAction; EditActionClass: nil;
    DefaultCaption: 'Edit Action'; DefaultHint: ''; DefaultImageIndex: - 1;
      DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditCutAction; EditActionClass: TEditCut;
    DefaultCaption: 'Cu&t'; DefaultHint: 'Cut'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('X') + scCtrl),
    (EasyEditActionClass: TEasyEditCopyAction; EditActionClass: TEditCopy;
    DefaultCaption: '&Copy'; DefaultHint: 'Copy'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('C') + scCtrl),
    (EasyEditActionClass: TEasyEditPasteAction; EditActionClass: TEditPaste;
    DefaultCaption: '&Paste'; DefaultHint: 'Paste'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('V') + scCtrl),
    (EasyEditActionClass: TEasyEditClearAction; EditActionClass: TEditDelete;
    DefaultCaption: '&Clear All'; DefaultHint: 'Clear'; DefaultImageIndex: - 1;
      DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditSelectAllAction; EditActionClass: TEditSelectAll;
    DefaultCaption: 'Select &All'; DefaultHint: 'Select All'; DefaultImageIndex:
      - 1; DefaultShortCut: Ord('A') + scCtrl),
    (EasyEditActionClass: TEasyEditUndoAction; EditActionClass: nil {TEditUndo};
    DefaultCaption: '&Undo'; DefaultHint: 'Undo'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('Z') + scCtrl),
    (EasyEditActionClass: TEasyEditRedoAction; EditActionClass: nil;
    DefaultCaption: '&Redo'; DefaultHint: 'Redo'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('Y') + scCtrl),

    (EasyEditActionClass: TEasyEditAutoCorrectionAction; EditActionClass: nil;
    DefaultCaption: '&Auto Correction All Words'; DefaultHint: 'Starts the Autocorrection for all Words of the current text'; DefaultImageIndex: - 1;
      DefaultShortCut: 0),

    (EasyEditActionClass: TEasyEditIndentAction; EditActionClass: nil;
    DefaultCaption: '&Indent'; DefaultHint: 'Indent Block'; DefaultImageIndex: -
      1; DefaultShortCut: Ord('I') + scShift + scCtrl),
    (EasyEditActionClass: TEasyEditUnindentAction; EditActionClass: nil;
    DefaultCaption: '&Unindent'; DefaultHint: 'Unindent Block';
      DefaultImageIndex: - 1; DefaultShortCut: Ord('U') + scShift + scCtrl),
    (EasyEditActionClass: TEasyEditLowercaseAction; EditActionClass: nil;
    DefaultCaption: '&Lowercase'; DefaultHint: 'Lowercase Block';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditUppercaseAction; EditActionClass: nil;
    DefaultCaption: '&Uppercase'; DefaultHint: 'Uppercase Block';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditCommentAction; EditActionClass: nil;
    DefaultCaption: 'Comment Block'; DefaultHint:
      'Comment Block with Single Line Comment'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('M') + scCtrl),
    (EasyEditActionClass: TEasyEditUncommentAction; EditActionClass: nil;
    DefaultCaption: 'Uncomment Block'; DefaultHint:
      'Uncomment Block from Single Line Comment'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('M') + scCtrl + scShift),
    (EasyEditActionClass: TEasyEditSortUpAction; EditActionClass: nil;
    DefaultCaption: 'Sort Up'; DefaultHint: 'Sort Block Upwards';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditSortDownAction; EditActionClass: nil;
    DefaultCaption: 'Sort Down'; DefaultHint: 'Sort Block Downwards';
      DefaultImageIndex: - 1; DefaultShortCut: 0),

    (EasyEditActionClass: TEasyEditSearchAction; EditActionClass: nil;
    DefaultCaption: 'Search'; DefaultHint: 'Search'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('F') + scCtrl),
    (EasyEditActionClass: TEasyEditSearchAndReplaceAction; EditActionClass: nil;
    DefaultCaption: 'Replace'; DefaultHint: 'Replace'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('R') + scCtrl),
    (EasyEditActionClass: TEasyEditSearchAgainAction; EditActionClass: nil;
    DefaultCaption: 'Search Again'; DefaultHint: 'Search Again';
      DefaultImageIndex: - 1; DefaultShortCut: VK_F3),
    (EasyEditActionClass: TEasyEditSearchAndReplaceAgainAction; EditActionClass: nil;
    DefaultCaption: 'Replace Again'; DefaultHint: 'Replace Again';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditSearchAndReplaceAgainAction; EditActionClass: nil;
    DefaultCaption: 'Replace Again'; DefaultHint: 'Replace Again';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditIncSearchAction; EditActionClass: nil;
    DefaultCaption: 'Incremental Search'; DefaultHint: 'Activating Incremental Search'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('E') + scCtrl),
    (EasyEditActionClass: TEasyEditSearchPrevIdentifier; EditActionClass: nil;
    DefaultCaption: 'Search Previous Identifier'; DefaultHint: 'Searches for the previous current Identifier'; DefaultImageIndex: - 1;
      DefaultShortCut: VK_UP + scAlt+ scCtrl),
    (EasyEditActionClass: TEasyEditSearchNextIdentifier; EditActionClass: nil;
    DefaultCaption: 'Search Next Identifier'; DefaultHint: 'Searches for the next current Identifier'; DefaultImageIndex: - 1;
      DefaultShortCut: VK_DOWN + scAlt+ scCtrl),
    (EasyEditActionClass: TEasyEditSearchOpenBracketAction; EditActionClass: nil;
    DefaultCaption: 'Find Open Bracket'; DefaultHint: 'Searches for the next open Bracket before current position'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('8') + scAlt+ scCtrl),
    (EasyEditActionClass: TEasyEditSearchCloseBracketAction; EditActionClass: nil;
    DefaultCaption: 'Find Close Bracket'; DefaultHint: 'Searches for the next close Bracket behind current position'; DefaultImageIndex: - 1;
      DefaultShortCut: Ord('9') + scAlt+ scCtrl),

    (EasyEditActionClass: TEasyEditGotoLineAction; EditActionClass: nil;
    DefaultCaption: 'Goto Line'; DefaultHint: 'Goto Line';
      DefaultImageIndex: -1; DefaultShortCut: Ord('G') + scAlt),
    (EasyEditActionClass: TEasyEditPrintAction; EditActionClass: nil;
    DefaultCaption: 'Print'; DefaultHint: 'Print';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditPrintPreviewAction; EditActionClass: nil;
    DefaultCaption: 'Print Preview'; DefaultHint: 'Print Preview';
      DefaultImageIndex: - 1; DefaultShortCut: 0),
    (EasyEditActionClass: TEasyEditCustomizeAction; EditActionClass: nil;
    DefaultCaption: 'Customize Editor'; DefaultHint: 'Customize Editor Settings';
      DefaultImageIndex: - 1; DefaultShortCut: 0),

//    (EasyEditActionClass: TEasyEditCollapsableAction; EditActionClass: nil;
//    DefaultCaption: 'Collapsable Block'; DefaultHint: 'Make block Collapsable';
//      DefaultImageIndex: - 1; DefaultShortCut: Ord('C') + scAlt),
//    (EasyEditActionClass: TEasyEditUncollapsableAction; EditActionClass: nil;
//    DefaultCaption: 'Uncollapse Block'; DefaultHint: 'Uncollapse block';
//      DefaultImageIndex: - 1; DefaultShortCut: Ord('U') + scAlt),

    (EasyEditActionClass: TEasyEditWordWrapAction; EditActionClass: nil;
    DefaultCaption: 'Word Wrap'; DefaultHint: 'Enable/Disable Word Wrap';
      DefaultImageIndex: - 1; DefaultShortCut: 0)    ,
    (EasyEditActionClass: TEasyEditShowFormattingMarksAction; EditActionClass: nil;
    DefaultCaption: 'Show Formatting Marks'; DefaultHint: 'Show/Hide Formatting Marks for CRLF or TAB';
      DefaultImageIndex: - 1; DefaultShortCut: 0)    ,
    (EasyEditActionClass: TEasyEditHiglightBracketsAction; EditActionClass: nil;
    DefaultCaption: 'Highlight Brackets'; DefaultHint: 'Enable/Disable Bracket Highlighting';
      DefaultImageIndex: - 1; DefaultShortCut: 0)    ,
    (EasyEditActionClass: TEasyEditShowRulersAction; EditActionClass: nil;
    DefaultCaption: 'Show Rulers'; DefaultHint: 'Show/Hide Rulers';
      DefaultImageIndex: - 1; DefaultShortCut: 0)    ,
    (EasyEditActionClass: TEasyEditShowLineNumbersAction; EditActionClass: nil;
    DefaultCaption: 'Show Line Numbers'; DefaultHint: 'Show/Hide Line Numbers';
      DefaultImageIndex: - 1; DefaultShortCut: 0)    );

type
  TEasyStandardActions = class(TStandardActions)
  protected
    procedure CreateByInfo(AEditActionsInfo: TEasyEditActionsInfo);
    function FindEditActionByClassType(AEditActionClass: TEditActionClass):
      TEditAction;
  public
    constructor Create(AOwner: TComponent); override;
  end;

procedure Register;
begin
  RegisterActions('EasyEditor', [
      {TEasyEditBaseAction, }TEasyEditAction,
      TEasyEditCutAction, TEasyEditCopyAction,
      TEasyEditPasteAction, TEasyEditClearAction,
      TEasyEditSelectAllAction, TEasyEditUndoAction, TEasyEditRedoAction,

      TEasyEditAutoCorrectionAction,

      TEasyEditIndentAction, TEasyEditUnindentAction,
      TEasyEditLowercaseAction, TEasyEditUppercaseAction,
      TEasyEditCollapsableAction, TEasyEditUncollapsableAction,
      TEasyEditCommentAction, TEasyEditUncommentAction,
      TEasyEditSortUpAction, TEasyEditSortDownAction,

      TEasyEditSearchAction, TEasyEditSearchAgainAction,
      TEasyEditSearchAndReplaceAction, TEasyEditSearchAndReplaceAgainAction,
      TEasyEditSearchPrevIdentifier, TEasyEditSearchNextIdentifier,
      TEasyEditSearchOpenBracketAction, TEasyEditSearchCloseBracketAction,
      TEasyEditIncSearchAction,

      TEasyEditGotoLineAction,  TEasyEditCustomizeAction,
      TEasyEditPrintAction, TEasyEditPrintPreviewAction,

      tEasyEditShowFormattingMarksAction, tEasyEditShowLineNumbersAction,
      tEasyEditWordWrapAction, tEasyEditShowRulersAction, TEasyEditHiglightBracketsAction
      ],
        TEasyStandardActions);
end;

{ TEasyStandardActions }

constructor TEasyStandardActions.Create(AOwner: TComponent);
var
  I: Integer;
begin
  inherited;
  for I := Low(EasyEditActionsInfo) to High(EasyEditActionsInfo) do
    CreateByInfo(EasyEditActionsInfo[I]);
end;

procedure TEasyStandardActions.CreateByInfo(
  AEditActionsInfo: TEasyEditActionsInfo);
var
  AEditAction: TEditAction;
  AEasyEditAction: TAction;
begin
  AEditAction := FindEditActionByClassType(AEditActionsInfo.EditActionClass);
  AEasyEditAction := AEditActionsInfo.EasyEditActionClass.Create(Self);
  with AEasyEditAction do
  begin
    if AEditAction <> nil then
    begin
      Caption := TEditActionWrapper(AEditAction).Caption;
      Hint := TEditActionWrapper(AEditAction).Hint;
      ShortCut := TEditActionWrapper(AEditAction).ShortCut;
    end
    else
    begin
      Caption := AEditActionsInfo.DefaultCaption;
      Hint := AEditActionsInfo.DefaultHint;
      ImageIndex := AEditActionsInfo.DefaultImageIndex;
      ShortCut := AEditActionsInfo.DefaultShortCut;
    end;
  end;
end;

function TEasyStandardActions.FindEditActionByClassType(
  AEditActionClass: TEditActionClass): TEditAction;
var
  I: Integer;
begin
  Result := nil;
  for I := 0 to ComponentCount - 1 do
    if (Components[I].ClassType = AEditActionClass) and (Components[I] is
      TEditAction) then
    begin
      Result := Components[I] as TEditAction;
      Break;
    end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?