You've already forked lazarus-ccr
richmemo: gtk2 missing links implementation
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4604 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -40,6 +40,7 @@ uses
|
|||||||
const
|
const
|
||||||
TagNameNumeric = 'numeric';
|
TagNameNumeric = 'numeric';
|
||||||
TagNameSubOrSuper = 'suborsuper';
|
TagNameSubOrSuper = 'suborsuper';
|
||||||
|
TagNameLink = 'link';
|
||||||
BulletChar = #$E2#$80#$A2;
|
BulletChar = #$E2#$80#$A2;
|
||||||
TabChar = #$09;
|
TabChar = #$09;
|
||||||
|
|
||||||
@ -90,6 +91,12 @@ type
|
|||||||
var AStopList: TTabStopList): Boolean; override;
|
var AStopList: TTabStopList): Boolean; override;
|
||||||
|
|
||||||
class function GetParaRange(const AWinControl: TWinControl; TextStart: Integer; var rng: TParaRange): Boolean; override;
|
class function GetParaRange(const AWinControl: TWinControl; TextStart: Integer; var rng: TParaRange): Boolean; override;
|
||||||
|
|
||||||
|
class procedure SetTextUIParams(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
||||||
|
const ui: TTextUIParam); override;
|
||||||
|
class function GetTextUIParams(const AWinControl: TWinControl; TextStart: Integer;
|
||||||
|
var ui: TTextUIParam): Boolean; override;
|
||||||
|
|
||||||
class procedure InDelText(const AWinControl: TWinControl; const TextUTF8: String; DstStart, DstLen: Integer); override;
|
class procedure InDelText(const AWinControl: TWinControl; const TextUTF8: String; DstStart, DstLen: Integer); override;
|
||||||
class function CharAtPos(const AWinControl: TWinControl; x,y: Integer): Integer; override;
|
class function CharAtPos(const AWinControl: TWinControl; x,y: Integer): Integer; override;
|
||||||
|
|
||||||
@ -628,6 +635,9 @@ var
|
|||||||
WidgetInfo: PWidgetInfo;
|
WidgetInfo: PWidgetInfo;
|
||||||
buffer: PGtkTextBuffer;
|
buffer: PGtkTextBuffer;
|
||||||
SS:TPoint;
|
SS:TPoint;
|
||||||
|
gcolor : TGdkColor;
|
||||||
|
const
|
||||||
|
pu: array [Boolean] of gint = (PANGO_UNDERLINE_NONE, PANGO_UNDERLINE_SINGLE);
|
||||||
begin
|
begin
|
||||||
Widget := gtk_scrolled_window_new(nil, nil);
|
Widget := gtk_scrolled_window_new(nil, nil);
|
||||||
Result := TLCLIntfHandle(PtrUInt(Widget));
|
Result := TLCLIntfHandle(PtrUInt(Widget));
|
||||||
@ -674,6 +684,13 @@ begin
|
|||||||
|
|
||||||
gtk_text_buffer_create_tag (buffer, TagNameSubOrSuper, nil);
|
gtk_text_buffer_create_tag (buffer, TagNameSubOrSuper, nil);
|
||||||
|
|
||||||
|
gcolor := TColortoTGDKColor(clBlue);
|
||||||
|
gtk_text_buffer_create_tag (buffer, TagNameLink, 'foreground-gdk', [@gcolor,
|
||||||
|
'foreground-set', gboolean(gTRUE),
|
||||||
|
'underline-set', gboolean(gTRUE),
|
||||||
|
'underline', gint(pu[true]),
|
||||||
|
nil] );
|
||||||
|
|
||||||
Set_RC_Name(AWinControl, Widget);
|
Set_RC_Name(AWinControl, Widget);
|
||||||
SetCallbacks(Widget, WidgetInfo);
|
SetCallbacks(Widget, WidgetInfo);
|
||||||
end;
|
end;
|
||||||
@ -1188,6 +1205,33 @@ begin
|
|||||||
Result:=true;
|
Result:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class procedure TGtk2WSCustomRichMemo.SetTextUIParams(
|
||||||
|
const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
||||||
|
const ui: TTextUIParam);
|
||||||
|
var
|
||||||
|
TextWidget: PGtkWidget;
|
||||||
|
buffer : PGtkTextBuffer;
|
||||||
|
tag : Pointer;
|
||||||
|
istart : TGtkTextIter;
|
||||||
|
iend : TGtkTextIter;
|
||||||
|
begin
|
||||||
|
GetWidgetBuffer(AWinControl, TextWidget, buffer);
|
||||||
|
if not Assigned(buffer) then Exit;
|
||||||
|
|
||||||
|
if uiLink in ui.features then begin
|
||||||
|
gtk_text_buffer_get_iter_at_offset (buffer, @istart, TextStart);
|
||||||
|
gtk_text_buffer_get_iter_at_offset (buffer, @iend, TextStart+TextLen);
|
||||||
|
gtk_text_buffer_apply_tag_by_name(buffer, TagNameLink, @istart, @iend);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TGtk2WSCustomRichMemo.GetTextUIParams(
|
||||||
|
const AWinControl: TWinControl; TextStart: Integer; var ui: TTextUIParam
|
||||||
|
): Boolean;
|
||||||
|
begin
|
||||||
|
//Result:=inherited GetTextUIParams(AWinControl, TextStart, ui);
|
||||||
|
end;
|
||||||
|
|
||||||
class procedure TGtk2WSCustomRichMemo.InDelText(const AWinControl: TWinControl;
|
class procedure TGtk2WSCustomRichMemo.InDelText(const AWinControl: TWinControl;
|
||||||
const TextUTF8: String; DstStart, DstLen: Integer);
|
const TextUTF8: String; DstStart, DstLen: Integer);
|
||||||
var
|
var
|
||||||
|
Reference in New Issue
Block a user