You've already forked lazarus-ccr
richmemo: implemented gtk2 getting para-range and style-range
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3791 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -49,9 +49,12 @@ type
|
|||||||
published
|
published
|
||||||
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override;
|
||||||
|
|
||||||
class function GetTextAttributes(const AWinControl: TWinControl; TextStart: Integer; var Params: TIntFontParams): Boolean; override;
|
class function GetStyleRange(const AWinControl: TWinControl; TextStart: Integer;
|
||||||
class procedure SetTextAttributes(const AWinControl: TWinControl; TextStart, TextLen: Integer; const Params: TIntFontParams); override;
|
var RangeStart, RangeLen: Integer): Boolean; override;
|
||||||
|
class function GetTextAttributes(const AWinControl: TWinControl; TextStart: Integer;
|
||||||
|
var Params: TIntFontParams): Boolean; override;
|
||||||
|
class procedure SetTextAttributes(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
||||||
|
const Params: TIntFontParams); override;
|
||||||
class function GetParaAlignment(const AWinControl: TWinControl; TextStart: Integer;
|
class function GetParaAlignment(const AWinControl: TWinControl; TextStart: Integer;
|
||||||
var AAlign: TIntParaAlignment): Boolean; override;
|
var AAlign: TIntParaAlignment): Boolean; override;
|
||||||
class procedure SetParaAlignment(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
class procedure SetParaAlignment(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
||||||
@ -62,6 +65,7 @@ type
|
|||||||
class procedure SetParaMetric(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
class procedure SetParaMetric(const AWinControl: TWinControl; TextStart, TextLen: Integer;
|
||||||
const AMetric: TIntParaMetric); override;
|
const AMetric: TIntParaMetric); override;
|
||||||
|
|
||||||
|
class function GetParaRange(const AWinControl: TWinControl; TextStart: Integer; var rng: TParaRange): 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 Search(const AWinControl: TWinControl; const ANiddle: string; const SearchOpts: TIntSearchOpt): Integer; override;
|
class function Search(const AWinControl: TWinControl; const ANiddle: string; const SearchOpts: TIntSearchOpt): Integer; override;
|
||||||
@ -233,6 +237,32 @@ begin
|
|||||||
SetCallbacks(Widget, WidgetInfo);
|
SetCallbacks(Widget, WidgetInfo);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class function TGtk2WSCustomRichMemo.GetStyleRange(
|
||||||
|
const AWinControl: TWinControl; TextStart: Integer; var RangeStart,
|
||||||
|
RangeLen: Integer): Boolean;
|
||||||
|
var
|
||||||
|
w : PGtkWidget;
|
||||||
|
b : PGtkTextBuffer;
|
||||||
|
istart : TGtkTextIter;
|
||||||
|
iend : TGtkTextIter;
|
||||||
|
begin
|
||||||
|
GetWidgetBuffer(AWinControl, w, b);
|
||||||
|
if not Assigned(b) then begin
|
||||||
|
Result:=false;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
gtk_text_buffer_get_iter_at_offset (b, @istart, TextStart+1);
|
||||||
|
gtk_text_iter_backward_to_tag_toggle(@istart, nil);
|
||||||
|
RangeStart:=gtk_text_iter_get_offset(@istart);
|
||||||
|
|
||||||
|
gtk_text_buffer_get_iter_at_offset (b, @iend, TextStart);
|
||||||
|
gtk_text_iter_forward_to_tag_toggle(@iend, nil);
|
||||||
|
|
||||||
|
RangeLen:=gtk_text_iter_get_offset(@iend)-RangeStart;
|
||||||
|
Result:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
class procedure TGtk2WSCustomRichMemo.SetTextAttributes(const AWinControl: TWinControl; TextStart, TextLen: Integer; const Params: TIntFontParams);
|
class procedure TGtk2WSCustomRichMemo.SetTextAttributes(const AWinControl: TWinControl; TextStart, TextLen: Integer; const Params: TIntFontParams);
|
||||||
var
|
var
|
||||||
TextWidget: PGtkWidget;
|
TextWidget: PGtkWidget;
|
||||||
@ -391,6 +421,28 @@ begin
|
|||||||
ApplyTag(buffer, tag, TextStart, TextLen, true);
|
ApplyTag(buffer, tag, TextStart, TextLen, true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
class function TGtk2WSCustomRichMemo.GetParaRange(
|
||||||
|
const AWinControl: TWinControl; TextStart: Integer; var rng: TParaRange
|
||||||
|
): Boolean;
|
||||||
|
var
|
||||||
|
w : PGtkWidget;
|
||||||
|
b : PGtkTextBuffer;
|
||||||
|
istart : TGtkTextIter;
|
||||||
|
iend : TGtkTextIter;
|
||||||
|
begin
|
||||||
|
GetWidgetBuffer(AWinControl, w, b);
|
||||||
|
if not Assigned(b) then Exit;
|
||||||
|
gtk_text_buffer_get_iter_at_offset (b, @istart, TextStart);
|
||||||
|
gtk_text_buffer_get_iter_at_offset (b, @iend, TextStart);
|
||||||
|
gtk_text_iter_set_line_offset(@istart, 0);
|
||||||
|
gtk_text_iter_forward_to_line_end(@iend);
|
||||||
|
rng.start:=gtk_text_iter_get_offset(@istart);
|
||||||
|
rng.lenghtNoBr:=gtk_text_iter_get_offset(@iend)-rng.start;
|
||||||
|
|
||||||
|
gtk_text_iter_forward_char(@iend); // if there's a character to move, then it's end of line, if not then it won't change!
|
||||||
|
rng.length:=gtk_text_iter_get_offset(@iend)-rng.start;
|
||||||
|
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