From 28544c79b9174b51e123391bf6b512fa1cb7a7d1 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 2 Jan 2009 13:26:50 +0000 Subject: [PATCH] synedit: allow code folding tree color customization git-svn-id: trunk@18046 - --- components/synedit/synedit.pp | 8 +++++++ components/synedit/syngutter.pp | 7 ++++++ components/synedit/syngutterchanges.pas | 2 +- components/synedit/synguttercodefolding.pp | 26 +++++++++++++++------- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index a0cfd6797a..791404fafc 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -471,6 +471,7 @@ type function GetLineHighlightColor: TSynSelectedColor; function GetLineNumberColor: TSynSelectedColor; function GetModifiedLineColor: TSynSelectedColor; + function GetCodeFoldingTreeColor: TSynSelectedColor; function GetOnGutterClick : TGutterClickEvent; function GetSelectedColor : TSynSelectedColor; function GetBracketMatchColor : TSynSelectedColor; @@ -938,6 +939,7 @@ type property LineNumberColor: TSynSelectedColor read GetLineNumberColor; property LineHighlightColor: TSynSelectedColor read GetLineHighlightColor; property ModifiedLineColor: TSynSelectedColor read GetModifiedLineColor; + property CodeFoldingTreeColor: TSynSelectedColor read GetCodeFoldingTreeColor; property BracketHighlightStyle: TSynEditBracketHighlightStyle read GetBracketHighlightStyle write SetBracketHighlightStyle; //property Color: TSynSelectedColor read GetSelectedColor; @@ -1083,6 +1085,7 @@ type property BracketHighlightStyle; property BracketMatchColor; property ModifiedLineColor; + property CodeFoldingTreeColor; property MouseLinkColor; property LineNumberColor; property LineHighlightColor; @@ -4103,6 +4106,11 @@ begin Result := Point(CaretX, CaretY); end; +function TCustomSynEdit.GetCodeFoldingTreeColor: TSynSelectedColor; +begin + Result := fGutter.MarkupInfoCodeFoldingTree; +end; + procedure TCustomSynEdit.SetCaretXY(Value: TPoint); // physical position (screen) var diff --git a/components/synedit/syngutter.pp b/components/synedit/syngutter.pp index f68ee7de44..35917dc615 100644 --- a/components/synedit/syngutter.pp +++ b/components/synedit/syngutter.pp @@ -157,6 +157,7 @@ type procedure SetShowOnlyLineNumbersMultiplesOf(const AValue: integer); function GetMarkupInfoLineNumber: TSynSelectedColor; function GetMarkupInfoModifiedLine: TSynSelectedColor; + function GetMarkupInfoCodeFoldingTree: TSynSelectedColor; function GetDigitCount : Integer; function GetZeroStart : Boolean; function GetShowOnlyLineNumbersMultiplesOf : Integer; @@ -206,6 +207,7 @@ type property ZeroStart: boolean read GetZeroStart write SetZeroStart; property MarkupInfoLineNumber: TSynSelectedColor read GetMarkupInfoLineNumber; property MarkupInfoModifiedLine: TSynSelectedColor read GetMarkupInfoModifiedLine; + property MarkupInfoCodeFoldingTree: TSynSelectedColor read GetMarkupInfoCodeFoldingTree; property LeadingZeros: boolean read GetLeadingZeros write SetLeadingZeros default FALSE; property DigitCount: integer read GetDigitCount write SetDigitCount @@ -479,6 +481,11 @@ begin Result := TSynGutterPartBase(FGutterPartList[Index]); end; +function TSynGutter.GetMarkupInfoCodeFoldingTree: TSynSelectedColor; +begin + Result := TSynGutterCodeFolding(FCodeFoldGutter).MarkupInfoCodeFoldingTree; +end; + procedure TSynGutter.SetLeftOffset(Value: integer); begin Value := Max(0, Value); diff --git a/components/synedit/syngutterchanges.pas b/components/synedit/syngutterchanges.pas index 15de6f1f21..3013555438 100644 --- a/components/synedit/syngutterchanges.pas +++ b/components/synedit/syngutterchanges.pas @@ -95,7 +95,7 @@ begin Canvas.FillRect(AClip); end; - Canvas.Pen.Width := Width ; + Canvas.Pen.Width := Width; Canvas.Pen.EndCap:= pecFlat; rcLine := AClip; diff --git a/components/synedit/synguttercodefolding.pp b/components/synedit/synguttercodefolding.pp index 09c2ec422b..6272ca8ed7 100644 --- a/components/synedit/synguttercodefolding.pp +++ b/components/synedit/synguttercodefolding.pp @@ -16,7 +16,7 @@ type private FEdit: TSynEditBase; FFoldView: TSynEditFoldedView; - + FMarkupInfoCodeFoldingTree: TSynSelectedColor; public constructor Create(AOwner : TSynEditBase; AFoldView : TSynEditFoldedView); @@ -25,6 +25,7 @@ type function RealGutterWidth(CharWidth: integer): integer; override; procedure DoOnGutterClick(X, Y: integer); override; public + property MarkupInfoCodeFoldingTree: TSynSelectedColor read FMarkupInfoCodeFoldingTree; end; implementation @@ -40,6 +41,12 @@ begin FEdit := AOwner; FFoldView := AFoldView; + FMarkupInfoCodeFoldingTree := TSynSelectedColor.Create; + FMarkupInfoCodeFoldingTree.Background := clNone; + FMarkupInfoCodeFoldingTree.Foreground := clDkGray; + FMarkupInfoCodeFoldingTree.FrameColor := clNone; + FMarkupInfoCodeFoldingTree.OnChange := @DoChange; + Width := 14; end; @@ -64,7 +71,6 @@ procedure TSynGutterCodeFolding.Paint(Canvas : TCanvas; AClip : TRect; FirstLine var iLine: integer; rcLine: TRect; - dc: HDC; rcCodeFold: TRect; tmp: TSynEditCodeFoldType; LineHeight, LineOffset: Integer; @@ -138,15 +144,19 @@ begin if not Visible then exit; LineHeight := TSynEdit(FEdit).LineHeight; LineOffset := 0; - Canvas.Brush.Color := Color; - dc := Canvas.Handle; - {$IFDEF SYN_LAZARUS} - LCLIntf.SetBkColor(dc,Canvas.Brush.Color); - {$ENDIF} + + if MarkupInfoCodeFoldingTree.Background <> clNone then + begin + Canvas.Brush.Color := MarkupInfoCodeFoldingTree.Background; + {$IFDEF SYN_LAZARUS} + LCLIntf.SetBkColor(Canvas.Handle, Canvas.Brush.Color); + {$ENDIF} + Canvas.FillRect(AClip); + end; with Canvas do begin - Pen.Color := clDkGray; + Pen.Color := MarkupInfoCodeFoldingTree.Foreground; Pen.Width := 1; rcLine.Bottom := FirstLine * LineHeight;