mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-26 23:00:15 +02:00
SynEdit: remove circular dependency between SynEdit and LazSynIMM
git-svn-id: trunk@64475 -
This commit is contained in:
parent
b6b32fe910
commit
33d906c98b
@ -115,7 +115,6 @@ type
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses SynEdit;
|
||||
|
||||
{ LazSynIme }
|
||||
|
||||
@ -192,7 +191,7 @@ end;
|
||||
|
||||
procedure LazSynImeSimple.DoStatusChanged(Sender: TObject; Changes: TSynStatusChanges);
|
||||
begin
|
||||
UpdateImeWinXY(TCustomSynEdit(FriendEdit).CaretXPix, TCustomSynEdit(FriendEdit).CaretYPix);
|
||||
UpdateImeWinXY(FriendEdit.CaretXPix, FriendEdit.CaretYPix);
|
||||
if Changes * [scCaretX, scCaretY] <> [] then
|
||||
StopIme(False);
|
||||
end;
|
||||
@ -206,7 +205,7 @@ begin
|
||||
imc := ImmGetContext(FriendEdit.Handle);
|
||||
if (imc <> 0) then begin
|
||||
UpdateImeWinFont(imc);
|
||||
UpdateImeWinXY(TCustomSynEdit(FriendEdit).CaretXPix, TCustomSynEdit(FriendEdit).CaretYPix, imc);
|
||||
UpdateImeWinXY(FriendEdit.CaretXPix, FriendEdit.CaretYPix, imc);
|
||||
ImmReleaseContext(FriendEdit.Handle, imc);
|
||||
end;
|
||||
end;
|
||||
@ -281,18 +280,18 @@ begin
|
||||
FImeBlockSelection := TSynEditSelection.Create(ViewedTextBuffer, False);
|
||||
FImeBlockSelection.InvalidateLinesMethod := @InvalidateLines;
|
||||
|
||||
TCustomSynEdit(FriendEdit).RegisterStatusChangedHandler(@DoStatusChanged, [scCaretX, scCaretY, scLeftChar, scTopLine, scModified]);
|
||||
TCustomSynEdit(FriendEdit).RegisterCommandHandler(@DoOnCommand, nil, [hcfInit]);
|
||||
TCustomSynEdit(FriendEdit).RegisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
FriendEdit.RegisterStatusChangedHandler(@DoStatusChanged, [scCaretX, scCaretY, scLeftChar, scTopLine, scModified]);
|
||||
FriendEdit.RegisterCommandHandler(@DoOnCommand, nil, [hcfInit]);
|
||||
FriendEdit.RegisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
end;
|
||||
|
||||
destructor LazSynImeSimple.Destroy;
|
||||
begin
|
||||
TextDrawer := nil;
|
||||
FreeAndNil(FImeBlockSelection);
|
||||
TCustomSynEdit(FriendEdit).UnregisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
TCustomSynEdit(FriendEdit).UnregisterCommandHandler(@DoOnCommand);
|
||||
TCustomSynEdit(FriendEdit).UnRegisterStatusChangedHandler(@DoStatusChanged);
|
||||
FriendEdit.UnregisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
FriendEdit.UnregisterCommandHandler(@DoOnCommand);
|
||||
FriendEdit.UnRegisterStatusChangedHandler(@DoStatusChanged);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -328,7 +327,7 @@ begin
|
||||
imc := ImmGetContext(FriendEdit.Handle);
|
||||
if (imc <> 0) then begin
|
||||
UpdateImeWinFont(imc);
|
||||
UpdateImeWinXY(TCustomSynEdit(FriendEdit).CaretXPix, TCustomSynEdit(FriendEdit).CaretYPix, imc, True);
|
||||
UpdateImeWinXY(FriendEdit.CaretXPix, FriendEdit.CaretYPix, imc, True);
|
||||
ImmReleaseContext(FriendEdit.Handle, imc);
|
||||
end;
|
||||
end;
|
||||
@ -354,8 +353,8 @@ begin
|
||||
if ImeCount > 0 then begin
|
||||
GetMem(p, ImeCount + 2);
|
||||
try
|
||||
TCustomSynEdit(FriendEdit).BeginUpdate;
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in TCustomSynEdit(FriendEdit).Options2) then
|
||||
FriendEdit.BeginUpdate;
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in FriendEdit.Options2) then
|
||||
SelectionObj.SelText := '';
|
||||
ImmGetCompositionStringW(imc, GCS_RESULTSTR, p, ImeCount + 2);
|
||||
p[ImeCount] := #0;
|
||||
@ -367,7 +366,7 @@ begin
|
||||
Msg.Result := 1;
|
||||
finally
|
||||
FreeMem(p, ImeCount + 2);
|
||||
TCustomSynEdit(FriendEdit).EndUpdate;
|
||||
FriendEdit.EndUpdate;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -387,7 +386,7 @@ begin
|
||||
imc := ImmGetContext(FriendEdit.Handle);
|
||||
if (imc <> 0) then begin
|
||||
UpdateImeWinFont(imc);
|
||||
UpdateImeWinXY(TCustomSynEdit(FriendEdit).CaretXPix, TCustomSynEdit(FriendEdit).CaretYPix, imc, True);
|
||||
UpdateImeWinXY(FriendEdit.CaretXPix, FriendEdit.CaretYPix, imc, True);
|
||||
ImmReleaseContext(FriendEdit.Handle, imc);
|
||||
end;
|
||||
FInCompose := True;
|
||||
@ -434,13 +433,13 @@ begin
|
||||
if (FLeftPosForTarget < 1) or not FAdjustLeftCharForTargets then
|
||||
exit;
|
||||
|
||||
r := FRightPosForTarget - TCustomSynEdit(FriendEdit).CharsInWindow;
|
||||
r := FRightPosForTarget - FriendEdit.CharsInWindow;
|
||||
|
||||
if (TCustomSynEdit(FriendEdit).LeftChar < r) then
|
||||
TCustomSynEdit(FriendEdit).LeftChar := r;
|
||||
if (FriendEdit.LeftChar < r) then
|
||||
FriendEdit.LeftChar := r;
|
||||
|
||||
if (TCustomSynEdit(FriendEdit).LeftChar > FLeftPosForTarget) then
|
||||
TCustomSynEdit(FriendEdit).LeftChar := FLeftPosForTarget;
|
||||
if (FriendEdit.LeftChar > FLeftPosForTarget) then
|
||||
FriendEdit.LeftChar := FLeftPosForTarget;
|
||||
|
||||
end;
|
||||
|
||||
@ -515,19 +514,19 @@ begin
|
||||
FImeMarkupSelection2.MarkupInfo.FrameStyle := slsSolid;
|
||||
FImeMarkupSelection2.MarkupInfo.FrameEdges := sfeBottom;
|
||||
|
||||
FImeMarkupSelection3.MarkupInfo.Assign(TCustomSynEdit(FriendEdit).SelectedColor);
|
||||
FImeMarkupSelection3.MarkupInfo.Assign(FriendEdit.SelectedColor);
|
||||
|
||||
TCustomSynEdit(FriendEdit).RegisterStatusChangedHandler(@DoStatusChanged, [scCaretX, scCaretY, scModified]);
|
||||
TCustomSynEdit(FriendEdit).RegisterCommandHandler(@DoOnCommand, nil, [hcfInit]);
|
||||
TCustomSynEdit(FriendEdit).RegisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
FriendEdit.RegisterStatusChangedHandler(@DoStatusChanged, [scCaretX, scCaretY, scModified]);
|
||||
FriendEdit.RegisterCommandHandler(@DoOnCommand, nil, [hcfInit]);
|
||||
FriendEdit.RegisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
|
||||
end;
|
||||
|
||||
destructor LazSynImeFull.Destroy;
|
||||
begin
|
||||
TCustomSynEdit(FriendEdit).UnregisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
TCustomSynEdit(FriendEdit).UnregisterCommandHandler(@DoOnCommand);
|
||||
TCustomSynEdit(FriendEdit).UnRegisterStatusChangedHandler(@DoStatusChanged);
|
||||
FriendEdit.UnregisterBeforeMouseDownHandler(@DoOnMouse);
|
||||
FriendEdit.UnregisterCommandHandler(@DoOnCommand);
|
||||
FriendEdit.UnRegisterStatusChangedHandler(@DoStatusChanged);
|
||||
TSynEditMarkupManager(MarkupMgr).RemoveMarkUp(FImeMarkupSelection);
|
||||
TSynEditMarkupManager(MarkupMgr).RemoveMarkUp(FImeMarkupSelection2);
|
||||
TSynEditMarkupManager(MarkupMgr).RemoveMarkUp(FImeMarkupSelection3);
|
||||
@ -580,13 +579,13 @@ begin
|
||||
dec(i);
|
||||
end;
|
||||
p1.x := x + i + 1;
|
||||
p1 := FriendEdit.ClientToScreen(TCustomSynEdit(FriendEdit)
|
||||
.ScreenXYToTextXY(TSynEdit(FriendEdit).TextXYToScreenXY(p1)));
|
||||
p1 := FriendEdit.ClientToScreen(FriendEdit
|
||||
.ScreenXYToTextXY(FriendEdit.TextXYToScreenXY(p1)));
|
||||
// RowColumnToPixels(ViewedTextBuffer.LogicalToPhysicalPos(p1)));
|
||||
|
||||
cp^.pt.y := p1.y;
|
||||
cp^.pt.x := p1.x;
|
||||
cp^.cLineHeight := TCustomSynEdit(FriendEdit).LineHeight;
|
||||
cp^.cLineHeight := FriendEdit.LineHeight;
|
||||
cp^.rcDocument.TopLeft := FriendEdit.ClientToScreen(FriendEdit.ClientRect.TopLeft);
|
||||
cp^.rcDocument.BottomRight := FriendEdit.ClientToScreen(FriendEdit.ClientRect.BottomRight);
|
||||
{$IFDEF WinIMEDebug}
|
||||
@ -697,13 +696,13 @@ begin
|
||||
CaretObj.LineBytePos := FImeBlockSelection.StartLineBytePos;
|
||||
grp := ViewedTextBuffer.UndoList.GroupUndo;
|
||||
ViewedTextBuffer.UndoList.GroupUndo := True;
|
||||
TCustomSynEdit(FriendEdit).BeginUpdate;
|
||||
FriendEdit.BeginUpdate;
|
||||
ViewedTextBuffer.UndoList.CurrentReason := ecImeStr;
|
||||
{$IFDEF WinIMEFullDeferOverwrite}
|
||||
if FHasPersistLock then
|
||||
SelectionObj.DecPersistentLock;
|
||||
FHasPersistLock := False;
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in TCustomSynEdit(FriendEdit).Options2)
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in FriendEdit.Options2)
|
||||
then begin
|
||||
SelectionObj.SelText := '';
|
||||
FImeBlockSelection.StartLineBytePos := SelectionObj.StartLineBytePos;
|
||||
@ -721,7 +720,7 @@ begin
|
||||
{$ENDIF}
|
||||
Msg.Result := 1;
|
||||
finally
|
||||
TCustomSynEdit(FriendEdit).EndUpdate;
|
||||
FriendEdit.EndUpdate;
|
||||
ViewedTextBuffer.UndoList.GroupUndo := grp;
|
||||
FreeMem(p, ImeCount + 2);
|
||||
end;
|
||||
@ -890,16 +889,16 @@ procedure LazSynImeFull.WMImeStartComposition(var Msg: TMessage);
|
||||
begin
|
||||
//debugln(['TCustomSynEdit.WMImeStartComposition ']);
|
||||
{$IFnDEF WinIMEFullDeferOverwrite}
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in TCustomSynEdit(FriendEdit).Options2)
|
||||
if SelectionObj.SelAvail and (not SelectionObj.Persistent) and (eoOverwriteBlock in FriendEdit.Options2)
|
||||
then begin
|
||||
{$IFnDEF WinIMEFullOverwriteSkipUndo}
|
||||
ViewedTextBuffer.UndoList.ForceGroupEnd;
|
||||
FUndoStamp1 := ViewedTextBuffer.UndoList.PeekItem;
|
||||
{$ENDIF}
|
||||
TCustomSynEdit(FriendEdit).BeginUpdate;
|
||||
FriendEdit.BeginUpdate;
|
||||
ViewedTextBuffer.UndoList.CurrentReason := ecImeStr;
|
||||
SelectionObj.SelText := '';
|
||||
TCustomSynEdit(FriendEdit).EndUpdate;
|
||||
FriendEdit.EndUpdate;
|
||||
{$IFnDEF WinIMEFullOverwriteSkipUndo}
|
||||
FUndoStamp2 := ViewedTextBuffer.UndoList.PeekItem;
|
||||
FNeedUndoOnCancel := FUndoStamp1 <> FUndoStamp2;
|
||||
@ -915,7 +914,7 @@ begin
|
||||
FHasPersistLock := True;
|
||||
{$ENDIF}
|
||||
|
||||
FImeMarkupSelection3.MarkupInfo.Assign(TCustomSynEdit(FriendEdit).SelectedColor);
|
||||
FImeMarkupSelection3.MarkupInfo.Assign(FriendEdit.SelectedColor);
|
||||
FImeBlockSelection.StartLineBytePos := CaretObj.LineBytePos;
|
||||
FInCompose := True;
|
||||
Msg.Result := 1;
|
||||
@ -930,7 +929,7 @@ begin
|
||||
{$IFnDEF WinIMEFullDeferOverwrite}
|
||||
{$IFnDEF WinIMEFullOverwriteSkipUndo}
|
||||
if FNeedUndoOnCancel and (ViewedTextBuffer.UndoList.PeekItem = FUndoStamp2) then
|
||||
TCustomSynEdit(FriendEdit).Undo;
|
||||
FriendEdit.Undo;
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$IFDEF WinIMEFullDeferOverwrite}
|
||||
|
@ -152,25 +152,6 @@ type
|
||||
TSynDropFilesEvent = procedure(Sender: TObject; X, Y: integer; AFiles: TStrings)
|
||||
of object;
|
||||
|
||||
THookedCommandEvent = procedure(Sender: TObject; AfterProcessing: boolean;
|
||||
var Handled: boolean; var Command: TSynEditorCommand;
|
||||
var AChar: TUTF8Char;
|
||||
Data: pointer; HandlerData: pointer) of object;
|
||||
THookedCommandFlag = (
|
||||
hcfInit, // run before On[User]CommandProcess (outside UndoBlock / should not do execution)
|
||||
hcfPreExec, // Run before CommandProcessor (unless handled by On[User]CommandProcess)
|
||||
hcfPostExec, // Run after CommandProcessor (unless handled by On[User]CommandProcess)
|
||||
hcfFinish // Run at the very end
|
||||
);
|
||||
THookedCommandFlags = set of THookedCommandFlag;
|
||||
|
||||
THookedKeyTranslationEvent = procedure(Sender: TObject;
|
||||
Code: word; SState: TShiftState; var Data: pointer; var IsStartOfCombo: boolean;
|
||||
var Handled: boolean; var Command: TSynEditorCommand;
|
||||
FinishComboOnly: Boolean; var ComboKeyStrokes: TSynEditKeyStrokes) of object;
|
||||
|
||||
TSynUndoRedoItemEvent = function (Caller: TObject; Item: TSynEditUndoItem): Boolean of object;
|
||||
|
||||
TPaintEvent = procedure(Sender: TObject; ACanvas: TCanvas) of object;
|
||||
|
||||
TChangeUpdatingEvent = procedure(ASender: TObject; AnUpdating: Boolean) of object;
|
||||
@ -609,15 +590,10 @@ type
|
||||
procedure UpdateScreenCaret;
|
||||
procedure AquirePrimarySelection;
|
||||
function GetChangeStamp: int64;
|
||||
function GetCharsInWindow: Integer;
|
||||
function GetCharWidth: integer;
|
||||
function GetDefSelectionMode: TSynSelectionMode;
|
||||
function GetFoldedCodeLineColor: TSynSelectedColor;
|
||||
function GetFoldState: String;
|
||||
function GetHiddenCodeLineColor: TSynSelectedColor;
|
||||
function GetLeftChar: Integer;
|
||||
function GetLineHeight: integer;
|
||||
function GetLinesInWindow: Integer;
|
||||
function GetModified: Boolean;
|
||||
function GetMouseActions: TSynEditMouseActions;
|
||||
function GetMouseSelActions: TSynEditMouseActions;
|
||||
@ -627,7 +603,6 @@ type
|
||||
function GetRightEdge: Integer;
|
||||
function GetRightEdgeColor: TColor;
|
||||
function GetTextBetweenPoints(aStartPoint, aEndPoint: TPoint): String;
|
||||
function GetTopLine: Integer;
|
||||
procedure SetBlockTabIndent(AValue: integer);
|
||||
procedure SetBracketMatchColor(AValue: TSynSelectedColor);
|
||||
procedure SetTextCursor(AValue: TCursor);
|
||||
@ -663,8 +638,6 @@ type
|
||||
function GetBlockEnd: TPoint;
|
||||
function GetBracketHighlightStyle: TSynEditBracketHighlightStyle;
|
||||
function GetCanPaste: Boolean;
|
||||
function GetCanRedo: Boolean;
|
||||
function GetCanUndo: Boolean;
|
||||
function GetCaretXY: TPoint;
|
||||
function GetFoldedCodeColor: TSynSelectedColor;
|
||||
function GetMarkup(Index: integer): TSynEditMarkup;
|
||||
@ -676,13 +649,11 @@ type
|
||||
function GetIncrementColor : TSynSelectedColor;
|
||||
function GetLineHighlightColor: TSynSelectedColor;
|
||||
function GetOnGutterClick : TGutterClickEvent;
|
||||
function GetSelectedColor : TSynSelectedColor;
|
||||
function GetBracketMatchColor : TSynSelectedColor;
|
||||
function GetMouseLinkColor : TSynSelectedColor;
|
||||
function GetTrimSpaceType: TSynEditStringTrimmingType;
|
||||
procedure SetBracketHighlightStyle(const AValue: TSynEditBracketHighlightStyle);
|
||||
procedure SetOnGutterClick(const AValue : TGutterClickEvent);
|
||||
procedure SetSelectedColor(const AValue : TSynSelectedColor);
|
||||
procedure SetSpecialLineColors(const AValue : TSpecialLineColorsEvent);
|
||||
procedure SetSpecialLineMarkup(const AValue : TSpecialLineMarkupEvent);
|
||||
function GetHookedCommandHandlersCount: integer;
|
||||
@ -729,7 +700,6 @@ type
|
||||
procedure SetLastMouseCaret(const AValue: TPoint);
|
||||
function CurrentMaxLeftChar: Integer;
|
||||
function CurrentMaxLineLen: Integer;
|
||||
procedure SetLeftChar(Value: Integer);
|
||||
procedure SetLineText(Value: string);
|
||||
procedure SetMaxLeftChar(Value: integer);
|
||||
procedure SetMaxUndo(const Value: Integer);
|
||||
@ -747,7 +717,6 @@ type
|
||||
procedure SetTabWidth(Value: integer);
|
||||
procedure SynSetText(const Value: string);
|
||||
function CurrentMaxTopView: Integer;
|
||||
procedure SetTopLine(Value: Integer);
|
||||
procedure ScrollAfterTopLineChanged;
|
||||
procedure SetWantTabs(const Value: boolean);
|
||||
procedure SetWordBlock(Value: TPoint);
|
||||
@ -835,6 +804,15 @@ type
|
||||
function CheckDragDropAccecpt(ANewCaret: TPoint; ASource: TObject; out ADropMove: boolean): boolean;
|
||||
|
||||
protected
|
||||
function GetCharsInWindow: Integer; override;
|
||||
function GetCharWidth: integer; override;
|
||||
function GetLeftChar: Integer; override;
|
||||
function GetLineHeight: integer; override;
|
||||
function GetLinesInWindow: Integer; override;
|
||||
function GetTopLine: Integer; override;
|
||||
procedure SetLeftChar(Value: Integer); override;
|
||||
procedure SetTopLine(Value: Integer); override;
|
||||
|
||||
procedure SetHighlighter(const Value: TSynCustomHighlighter); virtual;
|
||||
procedure UpdateShowing; override;
|
||||
procedure SetColor(Value: TColor); override;
|
||||
@ -851,7 +829,10 @@ type
|
||||
function GetTextBuffer: TSynEditStrings; override;
|
||||
procedure SetLines(Value: TStrings); override;
|
||||
function GetMarkupMgr: TObject; override;
|
||||
function GetCanRedo: Boolean; override;
|
||||
function GetCanUndo: Boolean; override;
|
||||
function GetCaretObj: TSynEditCaret; override;
|
||||
function GetSelectedColor : TSynSelectedColor; override;
|
||||
procedure FontChanged(Sender: TObject); override;
|
||||
procedure HighlighterAttrChanged(Sender: TObject);
|
||||
Procedure LineCountChanged(Sender: TSynEditStrings; AIndex, ACount : Integer);
|
||||
@ -875,6 +856,7 @@ type
|
||||
procedure SetName(const Value: TComponentName); override;
|
||||
procedure SetOptions(Value: TSynEditorOptions); override;
|
||||
procedure SetOptions2(Value: TSynEditorOptions2); override;
|
||||
procedure SetSelectedColor(const AValue : TSynSelectedColor); override;
|
||||
procedure SetSelTextPrimitive(PasteMode: TSynSelectionMode; Value: PChar;
|
||||
AddToUndoList: Boolean = false);
|
||||
procedure UndoItem(Item: TSynEditUndoItem);
|
||||
@ -906,15 +888,15 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure AfterLoadFromFile;
|
||||
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
procedure BeginUpdate(WithUndoBlock: Boolean = True);
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF};
|
||||
procedure EndUpdate;
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; override;
|
||||
procedure BeginUpdate(WithUndoBlock: Boolean = True); override;
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; override;
|
||||
procedure EndUpdate; override;
|
||||
|
||||
public
|
||||
// Caret
|
||||
function CaretXPix: Integer;
|
||||
function CaretYPix: Integer;
|
||||
function CaretXPix: Integer; override;
|
||||
function CaretYPix: Integer; override;
|
||||
procedure EnsureCursorPosVisible;
|
||||
procedure MoveCaretToVisibleArea;
|
||||
procedure MoveCaretIgnoreEOL(const NewCaret: TPoint);
|
||||
@ -975,11 +957,9 @@ type
|
||||
property Marks: TSynEditMarkList read fMarkList;
|
||||
|
||||
// Undo/Redo
|
||||
procedure ClearUndo;
|
||||
procedure Redo;
|
||||
procedure Undo;
|
||||
property CanRedo: boolean read GetCanRedo;
|
||||
property CanUndo: boolean read GetCanUndo;
|
||||
procedure ClearUndo; override;
|
||||
procedure Redo; override;
|
||||
procedure Undo; override;
|
||||
|
||||
// Clipboard
|
||||
procedure CopyToClipboard;
|
||||
@ -1049,47 +1029,47 @@ type
|
||||
First visible (scrolled in) screen line is 1
|
||||
First column is 1 => column does not take scrolling into account
|
||||
*)
|
||||
function ScreenXYToTextXY(AScreenXY: TPhysPoint; LimitToLines: Boolean = True): TPhysPoint;
|
||||
function TextXYToScreenXY(APhysTextXY: TPhysPoint): TPhysPoint;
|
||||
function ScreenXYToTextXY(AScreenXY: TPhysPoint; LimitToLines: Boolean = True): TPhysPoint; override;
|
||||
function TextXYToScreenXY(APhysTextXY: TPhysPoint): TPhysPoint; override;
|
||||
|
||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
procedure RegisterCommandHandler(AHandlerProc: THookedCommandEvent;
|
||||
AHandlerData: pointer; AFlags: THookedCommandFlags = [hcfPreExec, hcfPostExec]);
|
||||
procedure UnregisterCommandHandler(AHandlerProc: THookedCommandEvent);
|
||||
AHandlerData: pointer; AFlags: THookedCommandFlags = [hcfPreExec, hcfPostExec]); override;
|
||||
procedure UnregisterCommandHandler(AHandlerProc: THookedCommandEvent); override;
|
||||
|
||||
procedure RegisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc);
|
||||
procedure UnregisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc);
|
||||
procedure RegisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc);
|
||||
procedure UnregisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc);
|
||||
procedure RegisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc); override;
|
||||
procedure UnregisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc); override;
|
||||
procedure RegisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc); override;
|
||||
procedure UnregisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc); override;
|
||||
|
||||
procedure RegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent);
|
||||
procedure UnRegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent);
|
||||
procedure RegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); override;
|
||||
procedure UnRegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); override;
|
||||
|
||||
procedure RegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent);
|
||||
procedure UnRegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent);
|
||||
procedure RegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); override;
|
||||
procedure UnRegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); override;
|
||||
|
||||
procedure RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges);
|
||||
procedure UnRegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent);
|
||||
procedure RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges); override;
|
||||
procedure UnRegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent); override;
|
||||
|
||||
procedure RegisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent);
|
||||
procedure UnregisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent);
|
||||
procedure RegisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent); override;
|
||||
procedure UnregisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent); override;
|
||||
|
||||
procedure RegisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent);
|
||||
procedure UnregisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent);
|
||||
procedure RegisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent); override;
|
||||
procedure UnregisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent); override;
|
||||
|
||||
procedure RegisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent);
|
||||
procedure UnregisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent);
|
||||
procedure RegisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent);
|
||||
procedure UnregisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent);
|
||||
procedure RegisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent);
|
||||
procedure UnregisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent);
|
||||
procedure RegisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent);
|
||||
procedure UnregisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent);
|
||||
procedure RegisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent); override;
|
||||
procedure UnregisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent); override;
|
||||
procedure RegisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent); override;
|
||||
procedure UnregisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent); override;
|
||||
procedure RegisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent); override;
|
||||
procedure UnregisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent); override;
|
||||
procedure RegisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); override;
|
||||
procedure UnregisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); override;
|
||||
|
||||
procedure RegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc; AnEvents: TSynPaintEvents);
|
||||
procedure UnRegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc);
|
||||
procedure RegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc; AnEvents: TSynScrollEvents);
|
||||
procedure UnRegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc);
|
||||
procedure RegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc; AnEvents: TSynPaintEvents); override;
|
||||
procedure UnRegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc); override;
|
||||
procedure RegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc; AnEvents: TSynScrollEvents); override;
|
||||
procedure UnRegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc); override;
|
||||
|
||||
function SearchReplace(const ASearch, AReplace: string;
|
||||
AOptions: TSynSearchOptions): integer;
|
||||
@ -1125,13 +1105,7 @@ type
|
||||
procedure AddKey(Command: TSynEditorCommand; Key1: word; SS1: TShiftState;
|
||||
Key2: word; SS2: TShiftState);
|
||||
public
|
||||
property CharsInWindow: Integer read GetCharsInWindow;
|
||||
property CharWidth: integer read GetCharWidth;
|
||||
property LeftChar: Integer read GetLeftChar write SetLeftChar;
|
||||
property LineHeight: integer read GetLineHeight;
|
||||
property LinesInWindow: Integer read GetLinesInWindow;
|
||||
property MaxLeftChar: integer read fMaxLeftChar write SetMaxLeftChar default 1024;
|
||||
property TopLine: Integer read GetTopLine write SetTopLine;
|
||||
|
||||
property ScrollOnEditLeftOptions: TSynScrollOnEditOptions read FScrollOnEditLeftOptions write SetScrollOnEditLeftOptions;
|
||||
property ScrollOnEditRightOptions: TSynScrollOnEditOptions read FScrollOnEditRightOptions write SetScrollOnEditRightOptions;
|
||||
@ -1164,7 +1138,6 @@ type
|
||||
property HideSelection: boolean read fHideSelection write SetHideSelection default false;
|
||||
property DefaultSelectionMode: TSynSelectionMode read GetDefSelectionMode write SetDefSelectionMode default smNormal;
|
||||
property SelectionMode: TSynSelectionMode read GetSelectionMode write SetSelectionMode default smNormal;
|
||||
property SelectedColor: TSynSelectedColor read GetSelectedColor write SetSelectedColor;
|
||||
|
||||
// Cursor
|
||||
procedure UpdateCursorOverride;
|
||||
|
@ -49,7 +49,8 @@ uses
|
||||
// LCL
|
||||
LCLIntf, LCLType, Graphics, Controls, Clipbrd, ImgList,
|
||||
// SynEdit
|
||||
SynEditHighlighter, SynEditMiscProcs, SynEditTypes, LazSynEditText, SynEditPointClasses, SynEditMouseCmds;
|
||||
SynEditHighlighter, SynEditMiscProcs, SynEditTypes, LazSynEditText, SynEditPointClasses, SynEditMouseCmds,
|
||||
SynEditTextBase;
|
||||
|
||||
const
|
||||
SYNEDIT_DEFAULT_MOUSE_OPTIONS = [];
|
||||
@ -85,6 +86,10 @@ const
|
||||
|
||||
type
|
||||
|
||||
TSynUndoRedoItemEvent = function (Caller: TObject; Item: TSynEditUndoItem): Boolean of object;
|
||||
|
||||
TSynSelectedColor = class;
|
||||
|
||||
{ TSynWordBreaker }
|
||||
|
||||
TSynWordBreaker = class
|
||||
@ -142,11 +147,14 @@ type
|
||||
FOptions2: TSynEditorOptions2;
|
||||
function GetMarkupMgr: TObject; virtual; abstract;
|
||||
function GetLines: TStrings; virtual; abstract;
|
||||
function GetCanRedo: boolean; virtual; abstract;
|
||||
function GetCanUndo: boolean; virtual; abstract;
|
||||
function GetCaretObj: TSynEditCaret; virtual; abstract;
|
||||
function GetReadOnly: boolean; virtual;
|
||||
function GetIsBackwardSel: Boolean;
|
||||
function GetSelText: string;
|
||||
function GetSelAvail: Boolean;
|
||||
function GetSelectedColor: TSynSelectedColor; virtual; abstract;
|
||||
procedure SetLines(Value: TStrings); virtual; abstract;
|
||||
function GetViewedTextBuffer: TSynEditStringsLinked; virtual; abstract;
|
||||
function GetFoldedTextBuffer: TObject; virtual; abstract;
|
||||
@ -157,6 +165,16 @@ type
|
||||
procedure StatusChanged(AChanges: TSynStatusChanges); virtual; abstract;
|
||||
procedure SetOptions(AOptions: TSynEditorOptions); virtual; abstract;
|
||||
procedure SetOptions2(AOptions2: TSynEditorOptions2); virtual; abstract;
|
||||
procedure SetSelectedColor(const aSelectedColor: TSynSelectedColor); virtual; abstract;
|
||||
|
||||
function GetCharsInWindow: Integer; virtual; abstract;
|
||||
function GetCharWidth: integer; virtual; abstract;
|
||||
function GetLeftChar: Integer; virtual; abstract;
|
||||
function GetLineHeight: integer; virtual; abstract;
|
||||
function GetLinesInWindow: Integer; virtual; abstract;
|
||||
function GetTopLine: Integer; virtual; abstract;
|
||||
procedure SetLeftChar(Value: Integer); virtual; abstract;
|
||||
procedure SetTopLine(Value: Integer); virtual; abstract;
|
||||
|
||||
property MarkupMgr: TObject read GetMarkupMgr;
|
||||
property FoldedTextBuffer: TObject read GetFoldedTextBuffer; // TSynEditFoldedView
|
||||
@ -167,12 +185,80 @@ type
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
|
||||
function FindGutterFromGutterPartList(const APartList: TObject): TObject; virtual; abstract;
|
||||
public
|
||||
// Caret
|
||||
function CaretXPix: Integer; virtual; abstract;
|
||||
function CaretYPix: Integer; virtual; abstract;
|
||||
|
||||
function ScreenXYToTextXY(AScreenXY: TPhysPoint; LimitToLines: Boolean = True): TPhysPoint; virtual; abstract;
|
||||
function TextXYToScreenXY(APhysTextXY: TPhysPoint): TPhysPoint; virtual; abstract;
|
||||
public
|
||||
// Undo Redo
|
||||
procedure BeginUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; virtual; abstract;
|
||||
procedure BeginUpdate(WithUndoBlock: Boolean = True); virtual; abstract;
|
||||
procedure EndUndoBlock{$IFDEF SynUndoDebugBeginEnd}(ACaller: String = ''){$ENDIF}; virtual; abstract;
|
||||
procedure EndUpdate; virtual; abstract;
|
||||
|
||||
// Undo/Redo
|
||||
procedure ClearUndo; virtual; abstract;
|
||||
procedure Redo; virtual; abstract;
|
||||
procedure Undo; virtual; abstract;
|
||||
property CanRedo: boolean read GetCanRedo;
|
||||
property CanUndo: boolean read GetCanUndo;
|
||||
public
|
||||
// handlers
|
||||
procedure RegisterCommandHandler(AHandlerProc: THookedCommandEvent;
|
||||
AHandlerData: pointer; AFlags: THookedCommandFlags = [hcfPreExec, hcfPostExec]); virtual; abstract;
|
||||
procedure UnregisterCommandHandler(AHandlerProc: THookedCommandEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc); virtual; abstract;
|
||||
procedure UnregisterMouseActionSearchHandler(AHandlerProc: TSynEditMouseActionSearchProc); virtual; abstract;
|
||||
procedure RegisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc); virtual; abstract;
|
||||
procedure UnregisterMouseActionExecHandler(AHandlerProc: TSynEditMouseActionExecProc); virtual; abstract;
|
||||
|
||||
procedure RegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); virtual; abstract;
|
||||
procedure UnRegisterKeyTranslationHandler(AHandlerProc: THookedKeyTranslationEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); virtual; abstract;
|
||||
procedure UnRegisterUndoRedoItemHandler(AHandlerProc: TSynUndoRedoItemEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent; AChanges: TSynStatusChanges); virtual; abstract;
|
||||
procedure UnRegisterStatusChangedHandler(AStatusChangeProc: TStatusChangeEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent); virtual; abstract;
|
||||
procedure UnregisterBeforeMouseDownHandler(AHandlerProc: TMouseEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent); virtual; abstract;
|
||||
procedure UnregisterQueryMouseCursorHandler(AHandlerProc: TSynQueryMouseCursorEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent); virtual; abstract;
|
||||
procedure UnregisterBeforeKeyDownHandler(AHandlerProc: TKeyEvent); virtual; abstract;
|
||||
procedure RegisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent); virtual; abstract;
|
||||
procedure UnregisterBeforeKeyUpHandler(AHandlerProc: TKeyEvent); virtual; abstract;
|
||||
procedure RegisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent); virtual; abstract;
|
||||
procedure UnregisterBeforeKeyPressHandler(AHandlerProc: TKeyPressEvent); virtual; abstract;
|
||||
procedure RegisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); virtual; abstract;
|
||||
procedure UnregisterBeforeUtf8KeyPressHandler(AHandlerProc: TUTF8KeyPressEvent); virtual; abstract;
|
||||
|
||||
procedure RegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc; AnEvents: TSynPaintEvents); virtual; abstract;
|
||||
procedure UnRegisterPaintEventHandler(APaintEventProc: TSynPaintEventProc); virtual; abstract;
|
||||
procedure RegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc; AnEvents: TSynScrollEvents); virtual; abstract;
|
||||
procedure UnRegisterScrollEventHandler(AScrollEventProc: TSynScrollEventProc); virtual; abstract;
|
||||
|
||||
public
|
||||
property Lines: TStrings read GetLines write SetLines;
|
||||
// See SYNEDIT_UNIMPLEMENTED_OPTIONS for deprecated Values
|
||||
property Options: TSynEditorOptions read FOptions write SetOptions default SYNEDIT_DEFAULT_OPTIONS;
|
||||
property Options2: TSynEditorOptions2 read FOptions2 write SetOptions2 default SYNEDIT_DEFAULT_OPTIONS2;
|
||||
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default FALSE;
|
||||
property SelectedColor: TSynSelectedColor read GetSelectedColor write SetSelectedColor;
|
||||
|
||||
property CharsInWindow: Integer read GetCharsInWindow;
|
||||
property CharWidth: integer read GetCharWidth;
|
||||
property LeftChar: Integer read GetLeftChar write SetLeftChar;
|
||||
property LineHeight: integer read GetLineHeight;
|
||||
property LinesInWindow: Integer read GetLinesInWindow;
|
||||
property TopLine: Integer read GetTopLine write SetTopLine;
|
||||
|
||||
property MouseOptions: TSynEditorMouseOptions read FMouseOptions write SetMouseOptions
|
||||
default SYNEDIT_DEFAULT_MOUSE_OPTIONS;
|
||||
|
@ -42,7 +42,7 @@ interface
|
||||
|
||||
uses
|
||||
Classes, Menus, LCLType, SysUtils,
|
||||
SynEdit, SynEditKeyCmds, SynEditTypes, SynEditStrConst;
|
||||
SynEdit, SynEditKeyCmds, SynEditTypes, SynEditStrConst, SynEditMiscClasses;
|
||||
|
||||
type
|
||||
|
||||
|
@ -41,7 +41,7 @@ unit SynEditTypes;
|
||||
|
||||
interface
|
||||
uses
|
||||
SysUtils, types, Controls;
|
||||
SysUtils, types, Classes, Controls, LCLType, SynEditKeyCmds;
|
||||
|
||||
const
|
||||
TSynSpecialChars = [#128..#255]; // MG: special chars. Meaning depends on system encoding/codepage.
|
||||
@ -217,6 +217,23 @@ type
|
||||
);
|
||||
TLazSynBorderSides = set of TLazSynBorderSide;
|
||||
|
||||
THookedCommandEvent = procedure(Sender: TObject; AfterProcessing: boolean;
|
||||
var Handled: boolean; var Command: TSynEditorCommand;
|
||||
var AChar: TUtf8Char;
|
||||
Data: pointer; HandlerData: pointer) of object;
|
||||
THookedCommandFlag = (
|
||||
hcfInit, // run before On[User]CommandProcess (outside UndoBlock / should not do execution)
|
||||
hcfPreExec, // Run before CommandProcessor (unless handled by On[User]CommandProcess)
|
||||
hcfPostExec, // Run after CommandProcessor (unless handled by On[User]CommandProcess)
|
||||
hcfFinish // Run at the very end
|
||||
);
|
||||
THookedCommandFlags = set of THookedCommandFlag;
|
||||
|
||||
THookedKeyTranslationEvent = procedure(Sender: TObject;
|
||||
Code: word; SState: TShiftState; var Data: pointer; var IsStartOfCombo: boolean;
|
||||
var Handled: boolean; var Command: TSynEditorCommand;
|
||||
FinishComboOnly: Boolean; var ComboKeyStrokes: TSynEditKeyStrokes) of object;
|
||||
|
||||
const
|
||||
SynFrameEdgeToSides: array [TSynFrameEdges] of TLazSynBorderSides =
|
||||
( [], // sfeNone
|
||||
|
@ -43,7 +43,7 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, Types,
|
||||
FileUtil, LCLType, Menus,
|
||||
SynEdit, SynEditKeyCmds, SynEditPlugins, SynEditStrConst;
|
||||
SynEdit, SynEditKeyCmds, SynEditPlugins, SynEditStrConst, SynEditTypes;
|
||||
|
||||
type
|
||||
TSynMacroState = (msStopped, msRecording, msPlaying, msPaused); // msPaused = paused recording
|
||||
|
Loading…
Reference in New Issue
Block a user