summaryrefslogtreecommitdiff
path: root/src/fltk-text_buffers.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/fltk-text_buffers.ads')
-rw-r--r--src/fltk-text_buffers.ads345
1 files changed, 316 insertions, 29 deletions
diff --git a/src/fltk-text_buffers.ads b/src/fltk-text_buffers.ads
index a2b5a6a..956c03e 100644
--- a/src/fltk-text_buffers.ads
+++ b/src/fltk-text_buffers.ads
@@ -15,7 +15,7 @@ package FLTK.Text_Buffers is
type Text_Buffer_Reference (Data : access Text_Buffer'Class) is limited null record
with Implicit_Dereference => Data;
- type Position is new Natural;
+ subtype Position is Natural;
type Modification is (Insert, Restyle, Delete, None);
@@ -52,6 +52,14 @@ package FLTK.Text_Buffers is
(This : in out Text_Buffer;
Func : in Predelete_Callback);
+ procedure Remove_Modify_Callback
+ (This : in out Text_Buffer;
+ Func : in Modify_Callback);
+
+ procedure Remove_Predelete_Callback
+ (This : in out Text_Buffer;
+ Func : in Predelete_Callback);
+
procedure Call_Modify_Callbacks
(This : in out Text_Buffer);
@@ -68,88 +76,284 @@ package FLTK.Text_Buffers is
procedure Load_File
- (This : in Text_Buffer;
- Name : in String);
+ (This : in out Text_Buffer;
+ Name : in String;
+ Buffer : in Natural := 128 * 1024);
+
+ procedure Append_File
+ (This : in out Text_Buffer;
+ Name : in String;
+ Buffer : in Natural := 128 * 1024);
+
+ procedure Insert_File
+ (This : in out Text_Buffer;
+ Name : in String;
+ Place : in Position;
+ Buffer : in Natural := 128 * 1024);
+
+ procedure Output_File
+ (This : in Text_Buffer;
+ Name : in String;
+ Start, Finish : in Position;
+ Buffer : in Natural := 128 * 1024);
procedure Save_File
- (This : in Text_Buffer;
- Name : in String);
+ (This : in Text_Buffer;
+ Name : in String;
+ Buffer : in Natural := 128 * 1024);
procedure Insert_Text
+ (This : in out Text_Buffer;
+ Place : in Position;
+ Text : in String);
+
+ procedure Append_Text
(This : in out Text_Buffer;
- Pos : in Natural;
- Item : in String);
+ Text : in String);
+
+ procedure Replace_Text
+ (This : in out Text_Buffer;
+ Start, Finish : in Position;
+ Text : in String);
procedure Remove_Text
(This : in out Text_Buffer;
- Start, Finish : in Natural);
+ Start, Finish : in Position);
+
+ function Get_Entire_Text
+ (This : in Text_Buffer)
+ return String;
+
+ procedure Set_Entire_Text
+ (This : in out Text_Buffer;
+ Text : in String);
+
+ function Byte_At
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Character;
function Character_At
- (This : in Text_Buffer;
- Pos : in Natural)
+ (This : in Text_Buffer;
+ Place : in Position)
return Character;
function Text_At
(This : in Text_Buffer;
- Start, Finish : in Natural)
+ Start, Finish : in Position)
return String;
+ function Next_Char
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Character;
+
+ function Prev_Char
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Character;
+
+
+
+
+ function Count_Displayed_Characters
+ (This : in Text_Buffer;
+ Start, Finish : in Position)
+ return Integer;
+
+ function Count_Lines
+ (This : in Text_Buffer;
+ Start, Finish : in Position)
+ return Integer;
+
function Length
(This : in Text_Buffer)
return Natural;
+ function Get_Tab_Width
+ (This : in Text_Buffer)
+ return Natural;
+
+ procedure Set_Tab_Width
+ (This : in out Text_Buffer;
+ To : in Natural);
+
function Get_Selection
(This : in Text_Buffer;
- Start, Finish : out Natural)
+ Start, Finish : out Position)
+ return Boolean;
+
+ function Get_Secondary_Selection
+ (This : in Text_Buffer;
+ Start, Finish : out Position)
return Boolean;
procedure Set_Selection
(This : in out Text_Buffer;
- Start, Finish : in Natural);
+ Start, Finish : in Position);
+
+ procedure Set_Secondary_Selection
+ (This : in out Text_Buffer;
+ Start, Finish : in Position);
function Has_Selection
(This : in Text_Buffer)
return Boolean;
- procedure Remove_Selected_Text
+ function Has_Secondary_Selection
+ (This : in Text_Buffer)
+ return Boolean;
+
+ function Selection_Text
+ (This : in Text_Buffer)
+ return String;
+
+ function Secondary_Selection_Text
+ (This : in Text_Buffer)
+ return String;
+
+ procedure Replace_Selection
+ (This : in out Text_Buffer;
+ Text : in String);
+
+ procedure Replace_Secondary_Selection
+ (This : in out Text_Buffer;
+ Text : in String);
+
+ procedure Remove_Selection
+ (This : in out Text_Buffer);
+
+ procedure Remove_Secondary_Selection
+ (This : in out Text_Buffer);
+
+ procedure Unselect
+ (This : in out Text_Buffer);
+
+ procedure Secondary_Unselect
(This : in out Text_Buffer);
+ procedure Get_Highlight
+ (This : in Text_Buffer;
+ Start, Finish : out Position);
+
+ procedure Set_Highlight
+ (This : in out Text_Buffer;
+ Start, Finish : in Position);
+
+ function Get_Highlighted_Text
+ (This : in Text_Buffer)
+ return String;
+
+ procedure Unhighlight
+ (This : in out Text_Buffer);
+
+
+
+
+ function Findchar_Forward
+ (This : in Text_Buffer;
+ Start_At : in Position;
+ Item : in Character;
+ Found_At : out Position)
+ return Boolean;
+
+ function Findchar_Backward
+ (This : in Text_Buffer;
+ Start_At : in Position;
+ Item : in Character;
+ Found_At : out Position)
+ return Boolean;
+
function Search_Forward
(This : in Text_Buffer;
- Start_At : in Natural;
+ Start_At : in Position;
Item : in String;
- Found_At : out Natural;
- Match_Case : in Boolean)
+ Found_At : out Position;
+ Match_Case : in Boolean := False)
return Boolean;
function Search_Backward
(This : in Text_Buffer;
- Start_At : in Natural;
+ Start_At : in Position;
Item : in String;
- Found_At : out Natural;
- Match_Case : in Boolean)
+ Found_At : out Position;
+ Match_Case : in Boolean := False)
return Boolean;
+
+
+
+ function Word_Start
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Position;
+
+ function Word_End
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Position;
+
+ function Line_Start
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Position;
+
+ function Line_End
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Position;
+
+ function Line_Text
+ (This : in Text_Buffer;
+ Place : in Position)
+ return String;
+
-- only takes into account newline characters, not word wrap
function Skip_Lines
- (This : in out Text_Buffer;
- Start, Lines : in Natural)
- return Natural;
+ (This : in out Text_Buffer;
+ Start : in Position;
+ Lines : in Natural)
+ return Position;
-- only takes into account newline characters, not word wrap
function Rewind_Lines
- (This : in out Text_Buffer;
- Start, Lines : in Natural)
- return Natural;
+ (This : in out Text_Buffer;
+ Start : in Position;
+ Lines : in Natural)
+ return Position;
+
+ function Skip_Displayed_Characters
+ (This : in Text_Buffer;
+ Start : in Position;
+ Chars : in Natural)
+ return Position;
+
+
+
+
+ procedure Can_Undo
+ (This : in out Text_Buffer;
+ Flag : in Boolean);
+
+ procedure Copy
+ (This : in out Text_Buffer;
+ From : in Text_Buffer;
+ Start, Finish : in Position;
+ Insert_Pos : in Position);
+
+ function UTF8_Align
+ (This : in Text_Buffer;
+ Place : in Position)
+ return Position;
private
@@ -167,9 +371,10 @@ private
type Text_Buffer is new Wrapper with
record
- CB_Active : Boolean;
- Modify_CBs : Modify_Vectors.Vector;
- Predelete_CBs : Predelete_Vectors.Vector;
+ CB_Active : Boolean;
+ Modify_CBs : Modify_Vectors.Vector;
+ Predelete_CBs : Predelete_Vectors.Vector;
+ High_From, High_To : Natural := 0;
end record;
overriding procedure Finalize
@@ -195,5 +400,87 @@ private
package Text_Buffer_Convert is new System.Address_To_Access_Conversions (Text_Buffer);
+
+
+ pragma Inline (Add_Modify_Callback);
+ pragma Inline (Add_Predelete_Callback);
+ pragma Inline (Remove_Modify_Callback);
+ pragma Inline (Remove_Predelete_Callback);
+ pragma Inline (Call_Modify_Callbacks);
+ pragma Inline (Call_Predelete_Callbacks);
+ pragma Inline (Enable_Callbacks);
+ pragma Inline (Disable_Callbacks);
+
+
+ pragma Inline (Load_File);
+ pragma Inline (Append_File);
+ pragma Inline (Insert_File);
+ pragma Inline (Output_File);
+ pragma Inline (Save_File);
+
+
+ pragma Inline (Insert_Text);
+ pragma Inline (Append_Text);
+ pragma Inline (Replace_Text);
+ pragma Inline (Remove_Text);
+ pragma Inline (Get_Entire_Text);
+ pragma Inline (Set_Entire_Text);
+ pragma Inline (Byte_At);
+ pragma Inline (Character_At);
+ pragma Inline (Text_At);
+ pragma Inline (Next_Char);
+ pragma Inline (Prev_Char);
+
+
+ pragma Inline (Count_Displayed_Characters);
+ pragma Inline (Count_Lines);
+ pragma Inline (Length);
+ pragma Inline (Get_Tab_Width);
+ pragma Inline (Set_Tab_Width);
+
+
+ pragma Inline (Get_Selection);
+ pragma Inline (Get_Secondary_Selection);
+ pragma Inline (Set_Selection);
+ pragma Inline (Set_Secondary_Selection);
+ pragma Inline (Has_Selection);
+ pragma Inline (Has_Secondary_Selection);
+ pragma Inline (Selection_Text);
+ pragma Inline (Secondary_Selection_Text);
+ pragma Inline (Replace_Selection);
+ pragma Inline (Replace_Secondary_Selection);
+ pragma Inline (Remove_Selection);
+ pragma Inline (Remove_Secondary_Selection);
+ pragma Inline (Unselect);
+ pragma Inline (Secondary_Unselect);
+
+
+ pragma Inline (Get_Highlight);
+ pragma Inline (Set_Highlight);
+ pragma Inline (Get_Highlighted_Text);
+ pragma Inline (Unhighlight);
+
+
+ pragma Inline (Findchar_Forward);
+ pragma Inline (Findchar_Backward);
+ pragma Inline (Search_Forward);
+ pragma Inline (Search_Backward);
+
+
+ pragma Inline (Word_Start);
+ pragma Inline (Word_End);
+ pragma Inline (Line_Start);
+ pragma Inline (Line_End);
+ pragma Inline (Line_Text);
+ pragma Inline (Skip_Lines);
+ pragma Inline (Rewind_Lines);
+ pragma Inline (Skip_Displayed_Characters);
+
+
+ pragma Inline (Can_Undo);
+ pragma Inline (Copy);
+ pragma Inline (UTF8_Align);
+
+
end FLTK.Text_Buffers;