mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 10:19:22 +02:00
SynEdit, MacroRecorder: Added AssignEvents
git-svn-id: trunk@37678 -
This commit is contained in:
parent
04a085258f
commit
e5c319db91
@ -51,19 +51,22 @@ resourcestring
|
||||
sCannotResume = 'Can only resume when paused';
|
||||
|
||||
type
|
||||
TSynMacroState = (msStopped, msRecording, msPlaying, msPaused);
|
||||
TSynMacroState = (msStopped, msRecording, msPlaying, msPaused); // msPaused = paused recording
|
||||
TSynMacroCommand = (mcRecord, mcPlayback);
|
||||
|
||||
{ TSynMacroEvent }
|
||||
|
||||
TSynMacroEvent = class(TObject)
|
||||
protected
|
||||
fRepeatCount: Byte;
|
||||
function GetAsString : string; virtual; abstract;
|
||||
procedure InitEventParameters(aStr : string); virtual; abstract;
|
||||
public
|
||||
constructor Create; {$IFNDEF FPC}virtual;{$ENDIF}
|
||||
constructor Create; virtual;
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); virtual; abstract;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); virtual;
|
||||
{ the CommandID must not be read inside LoadFromStream/SaveToStream. It's read by the
|
||||
MacroRecorder component to decide which MacroEvent class to instanciate }
|
||||
procedure LoadFromStream(aStream: TStream); virtual; abstract;
|
||||
@ -73,6 +76,8 @@ type
|
||||
property RepeatCount : Byte read fRepeatCount write fRepeatCount;
|
||||
end;
|
||||
|
||||
TSynMacroEventClass = class of TSynMacroEvent;
|
||||
|
||||
{ TSynIgnoredEvent }
|
||||
|
||||
TSynIgnoredEvent = class(TSynMacroEvent)
|
||||
@ -88,6 +93,8 @@ type
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
end;
|
||||
|
||||
{ TSynBasicEvent }
|
||||
|
||||
TSynBasicEvent = class(TSynMacroEvent)
|
||||
protected
|
||||
fCommand: TSynEditorCommand;
|
||||
@ -97,6 +104,7 @@ type
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); override;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); override;
|
||||
procedure LoadFromStream(aStream: TStream); override;
|
||||
procedure SaveToStream(aStream: TStream); override;
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
@ -104,6 +112,8 @@ type
|
||||
property Command: TSynEditorCommand read fCommand write fCommand;
|
||||
end;
|
||||
|
||||
{ TSynCharEvent }
|
||||
|
||||
TSynCharEvent = class(TSynMacroEvent)
|
||||
protected
|
||||
fKey: TUTF8Char;
|
||||
@ -113,6 +123,7 @@ type
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); override;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); override;
|
||||
procedure LoadFromStream(aStream: TStream); override;
|
||||
procedure SaveToStream(aStream: TStream); override;
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
@ -120,6 +131,8 @@ type
|
||||
property Key: TUTF8Char read fKey write fKey;
|
||||
end;
|
||||
|
||||
{ TSynStringEvent }
|
||||
|
||||
TSynStringEvent = class(TSynMacroEvent)
|
||||
protected
|
||||
fString: string;
|
||||
@ -129,6 +142,7 @@ type
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); override;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); override;
|
||||
procedure LoadFromStream(aStream: TStream); override;
|
||||
procedure SaveToStream(aStream: TStream); override;
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
@ -136,6 +150,8 @@ type
|
||||
property Value: string read fString write fString;
|
||||
end;
|
||||
|
||||
{ TSynPositionEvent }
|
||||
|
||||
TSynPositionEvent = class(TSynBasicEvent)
|
||||
protected
|
||||
fPosition: TPoint;
|
||||
@ -145,6 +161,7 @@ type
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); override;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); override;
|
||||
procedure LoadFromStream(aStream: TStream); override;
|
||||
procedure SaveToStream(aStream: TStream); override;
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
@ -152,6 +169,8 @@ type
|
||||
property Position: TPoint read fPosition write fPosition;
|
||||
end;
|
||||
|
||||
{ TSynDataEvent }
|
||||
|
||||
TSynDataEvent = class(TSynBasicEvent)
|
||||
protected
|
||||
fData: Pointer;
|
||||
@ -159,6 +178,7 @@ type
|
||||
procedure Initialize(aCmd: TSynEditorCommand;
|
||||
const aChar: TUTF8Char;
|
||||
aData: Pointer); override;
|
||||
procedure Assign(AnEvent: TSynMacroEvent); override;
|
||||
procedure LoadFromStream(aStream: TStream); override;
|
||||
procedure SaveToStream(aStream: TStream); override;
|
||||
procedure Playback(aEditor: TCustomSynEdit); override;
|
||||
@ -234,6 +254,7 @@ type
|
||||
procedure Stop;
|
||||
procedure Pause;
|
||||
procedure Resume;
|
||||
procedure AssignEventsFrom(AMacroRecorder: TCustomSynMacroRecorder);
|
||||
property IsEmpty: boolean read GetIsEmpty;
|
||||
property State: TSynMacroState read fState;
|
||||
procedure Clear;
|
||||
@ -319,7 +340,13 @@ procedure TSynDataEvent.Initialize(aCmd: TSynEditorCommand; const aChar: TUTF8Ch
|
||||
begin
|
||||
fCommand := aCmd;
|
||||
Assert( aChar = #0 );
|
||||
fData := aData;
|
||||
fData := aData; // Todo: must be copied...
|
||||
end;
|
||||
|
||||
procedure TSynDataEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
inherited Assign(AnEvent);
|
||||
// Todo: COPY data.
|
||||
end;
|
||||
|
||||
procedure TSynDataEvent.LoadFromStream(aStream: TStream);
|
||||
@ -659,6 +686,22 @@ begin
|
||||
StateChanged;
|
||||
end;
|
||||
|
||||
procedure TCustomSynMacroRecorder.AssignEventsFrom(AMacroRecorder: TCustomSynMacroRecorder);
|
||||
var
|
||||
i: Integer;
|
||||
NewEvent: TSynMacroEvent;
|
||||
begin
|
||||
Clear;
|
||||
if AMacroRecorder.fEvents = nil then exit;
|
||||
|
||||
fEvents := TList.Create;
|
||||
for i := 0 to AMacroRecorder.fEvents.Count -1 do begin
|
||||
NewEvent := TSynMacroEventClass(TSynMacroEvent(AMacroRecorder.fEvents[i]).ClassType).Create;
|
||||
NewEvent.Assign(TSynMacroEvent(AMacroRecorder.fEvents[i]));
|
||||
fEvents.add(NewEvent);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCustomSynMacroRecorder.SaveToStream(aDest: TStream);
|
||||
var
|
||||
cEvent, eCnt : integer;
|
||||
@ -857,6 +900,13 @@ begin
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TSynBasicEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
inherited Assign(AnEvent);
|
||||
if AnEvent is TSynBasicEvent then
|
||||
fCommand := TSynBasicEvent(AnEvent).fCommand;
|
||||
end;
|
||||
|
||||
procedure TSynBasicEvent.LoadFromStream(aStream: TStream);
|
||||
begin
|
||||
aStream.Read( fRepeatCount, SizeOf(fRepeatCount) );
|
||||
@ -906,6 +956,13 @@ begin
|
||||
Assert( aData = nil );
|
||||
end;
|
||||
|
||||
procedure TSynCharEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
inherited Assign(AnEvent);
|
||||
if AnEvent is TSynCharEvent then
|
||||
fKey := TSynCharEvent(AnEvent).fKey;
|
||||
end;
|
||||
|
||||
procedure TSynCharEvent.LoadFromStream(aStream: TStream);
|
||||
begin
|
||||
aStream.Read( fKey, SizeOf(Key) );
|
||||
@ -978,6 +1035,13 @@ begin
|
||||
Position := Point( 0, 0 );
|
||||
end;
|
||||
|
||||
procedure TSynPositionEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
inherited Assign(AnEvent);
|
||||
if AnEvent is TSynPositionEvent then
|
||||
fPosition := TSynPositionEvent(AnEvent).fPosition;
|
||||
end;
|
||||
|
||||
procedure TSynPositionEvent.LoadFromStream(aStream: TStream);
|
||||
begin
|
||||
aStream.Read( fPosition, SizeOf(Position) );
|
||||
@ -1045,6 +1109,13 @@ begin
|
||||
Value := String(aData);
|
||||
end;
|
||||
|
||||
procedure TSynStringEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
inherited Assign(AnEvent);
|
||||
if AnEvent is TSynStringEvent then
|
||||
fString := TSynStringEvent(AnEvent).fString;
|
||||
end;
|
||||
|
||||
procedure TSynStringEvent.LoadFromStream(aStream: TStream);
|
||||
var
|
||||
l : Integer;
|
||||
@ -1108,4 +1179,9 @@ begin
|
||||
fRepeatCount := 1;
|
||||
end;
|
||||
|
||||
procedure TSynMacroEvent.Assign(AnEvent: TSynMacroEvent);
|
||||
begin
|
||||
fRepeatCount := AnEvent.fRepeatCount;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user