mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-07 12:52:42 +02:00
144 lines
5.3 KiB
ObjectPascal
144 lines
5.3 KiB
ObjectPascal
unit EMScriptClasses;
|
|
{
|
|
Classes that can be accessed from Scripts
|
|
}
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, SynEdit, SynEditTypes, uPSCompiler, uPSRuntime;
|
|
|
|
procedure CompRegisterTSynEdit(Cl: TPSPascalCompiler);
|
|
procedure ExecRegisterTSynEdit(cl: TPSRuntimeClassImporter);
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
procedure TSynEdit_CaretXY_W(Self: TSynEdit; const P: TPoint);
|
|
begin Self.CaretXY := P; end;
|
|
procedure TSynEdit_CaretXY_R(Self: TSynEdit; var P: TPoint);
|
|
begin P := Self.CaretXY; end;
|
|
|
|
procedure TSynEdit_CaretX_W(Self: TSynEdit; const I: Integer);
|
|
begin Self.CaretX := I; end;
|
|
procedure TSynEdit_CaretX_R(Self: TSynEdit; var I: Integer);
|
|
begin I := Self.CaretX; end;
|
|
|
|
procedure TSynEdit_CaretY_W(Self: TSynEdit; const I: Integer);
|
|
begin Self.CaretY := I; end;
|
|
procedure TSynEdit_CaretY_R(Self: TSynEdit; var I: Integer);
|
|
begin I := Self.CaretY; end;
|
|
|
|
procedure TSynEdit_LogicalCaretXY_W(Self: TSynEdit; const P: TPoint);
|
|
begin Self.LogicalCaretXY := P; end;
|
|
procedure TSynEdit_LogicalCaretXY_R(Self: TSynEdit; var P: TPoint);
|
|
begin P := Self.LogicalCaretXY; end;
|
|
|
|
procedure TSynEdit_LogicalCaretX_W(Self: TSynEdit; const I: Integer);
|
|
begin Self.LogicalCaretXY := Point(I, Self.CaretY); end;
|
|
procedure TSynEdit_LogicalCaretX_R(Self: TSynEdit; var I: Integer);
|
|
begin I := Self.LogicalCaretXY.X; end;
|
|
|
|
|
|
procedure TSynEdit_BlockBegin_W(Self: TSynEdit; const P: TPoint);
|
|
begin Self.BlockBegin := P; end;
|
|
procedure TSynEdit_BlockBegin_R(Self: TSynEdit; var P: TPoint);
|
|
begin P := Self.BlockBegin; end;
|
|
|
|
procedure TSynEdit_BlockEnd_W(Self: TSynEdit; const P: TPoint);
|
|
begin Self.BlockEnd := P; end;
|
|
procedure TSynEdit_BlockEnd_R(Self: TSynEdit; var P: TPoint);
|
|
begin P := Self.BlockEnd; end;
|
|
|
|
procedure TSynEdit_SelAvail_R(Self: TSynEdit; var V: Boolean);
|
|
begin V := Self.SelAvail; end;
|
|
|
|
procedure TSynEdit_SelText_W(Self: TSynEdit; const S: String);
|
|
begin Self.SelText := S; end;
|
|
procedure TSynEdit_SelText_R(Self: TSynEdit; var S: String);
|
|
begin S := Self.SelText; end;
|
|
|
|
procedure TSynEdit_SelectionMode_W(Self: TSynEdit; const M: TSynSelectionMode);
|
|
begin Self.SelectionMode := M; end;
|
|
procedure TSynEdit_SelectionMode_R(Self: TSynEdit; var M: TSynSelectionMode);
|
|
begin M := Self.SelectionMode; end;
|
|
|
|
|
|
procedure TSynEdit_Lines_R(Self: TSynEdit; var S: string; I: Longint);
|
|
begin S := Self.Lines[I]; end;
|
|
|
|
procedure TSynEdit_LineAtCaret_R(Self: TSynEdit; var S: string);
|
|
begin
|
|
S := Self.Lines[Self.CaretY-1];
|
|
end;
|
|
|
|
|
|
procedure CompRegisterTSynEdit(Cl: TPSPascalCompiler);
|
|
begin
|
|
cl.AddTypeS('TPoint', 'record x,y: Longint; end;');
|
|
CL.AddTypeS('TSynSelectionMode', '(smNormal, smLine, smColumn, smCurrent)');
|
|
CL.AddTypeS('TSynSearchOption',
|
|
'(ssoMatchCase, ssoWholeWord, ssoBackwards, ssoEntireScope, ' +
|
|
'ssoSelectedOnly, ssoReplace, ssoReplaceAll, ssoPrompt, ' +
|
|
'ssoSearchInReplacement, ssoRegExpr, ssoRegExprMultiLine, ssoFindContinue)'
|
|
);
|
|
CL.AddTypeS('TSynSearchOptions', 'set of TSynSearchOption');
|
|
|
|
|
|
with Cl.AddClassN(cl.FindClass('TOBJECT'), 'TSynEdit') do
|
|
begin
|
|
RegisterProperty('CaretXY', 'TPoint', iptRW);
|
|
RegisterProperty('CaretX', 'Integer', iptRW);
|
|
RegisterProperty('CaretY', 'Integer', iptRW);
|
|
RegisterProperty('LogicalCaretXY', 'TPoint', iptRW);
|
|
RegisterProperty('LogicalCaretX', 'Integer', iptRW);
|
|
|
|
RegisterProperty('BlockBegin', 'TPoint', iptRW);
|
|
RegisterProperty('BlockEnd', 'TPoint', iptRW);
|
|
RegisterProperty('SelAvail', 'Boolean', iptR);
|
|
RegisterProperty('SelText', 'string', iptRW);
|
|
RegisterProperty('SelectionMode', 'TSynSelectionMode', iptRW);
|
|
|
|
RegisterProperty('Lines', 'String Integer', iptR);
|
|
RegisterProperty('LineAtCaret', 'String', iptR); // LineText
|
|
|
|
RegisterMethod('function SearchReplace(const ASearch, AReplace: string; AOptions: TSynSearchOptions): integer;');
|
|
RegisterMethod('function SearchReplaceEx(const ASearch, AReplace: string; AOptions: TSynSearchOptions; AStart: TPoint): integer;');
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure ExecRegisterTSynEdit(cl: TPSRuntimeClassImporter);
|
|
begin
|
|
with Cl.Add(TSynEdit) do
|
|
begin
|
|
//RegisterConstructor(@TSynEdit.CREATE, 'CREATE');
|
|
|
|
RegisterPropertyHelper(@TSynEdit_CaretXY_R, @TSynEdit_CaretXY_W, 'CARETXY');
|
|
RegisterPropertyHelper(@TSynEdit_CaretX_R, @TSynEdit_CaretX_W, 'CARETX');
|
|
RegisterPropertyHelper(@TSynEdit_CaretY_R, @TSynEdit_CaretY_W, 'CARETY');
|
|
RegisterPropertyHelper(@TSynEdit_LogicalCaretXY_R, @TSynEdit_LogicalCaretXY_W, 'LOGICALCARETXY');
|
|
RegisterPropertyHelper(@TSynEdit_LogicalCaretX_R, @TSynEdit_LogicalCaretX_W, 'LOGICALCARETX');
|
|
|
|
RegisterPropertyHelper(@TSynEdit_BlockBegin_R, @TSynEdit_BlockBegin_W, 'BLOCKBEGIN');
|
|
RegisterPropertyHelper(@TSynEdit_BlockEnd_R, @TSynEdit_BlockEnd_W, 'BLOCKEND');
|
|
RegisterPropertyHelper(@TSynEdit_SelAvail_R, nil, 'SELAVAIL');
|
|
RegisterPropertyHelper(@TSynEdit_SelText_R, @TSynEdit_SelText_W, 'SELTEXT');
|
|
RegisterPropertyHelper(@TSynEdit_SelectionMode_R, @TSynEdit_SelectionMode_W, 'SELECTIONMODE');
|
|
|
|
RegisterPropertyHelper(@TSynEdit_Lines_R, nil, 'LINES');
|
|
RegisterPropertyHelper(@TSynEdit_LineAtCaret_R, nil, 'LINEATCARET');
|
|
|
|
RegisterMethod(@TSynEdit.SearchReplace, 'SEARCHREPLACE');
|
|
RegisterMethod(@TSynEdit.SearchReplaceEx, 'SEARCHREPLACEEX');
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|
|
|