diff options
Diffstat (limited to 'src/fltk-text_buffers.ads')
-rw-r--r-- | src/fltk-text_buffers.ads | 345 |
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; |