summaryrefslogtreecommitdiff
path: root/src/fltk-text_buffers.ads
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2017-04-27 10:40:48 +1000
committerJed Barber <jjbarber@y7mail.com>2017-04-27 10:40:48 +1000
commit0d842f0423ba0754fb3675c7468397a8da5f6e1b (patch)
treed5da172bc7af2f7f48a3415eceac67ed67542787 /src/fltk-text_buffers.ads
parent5d88963cd203f30b79433e34e5c89bfcf8abfe60 (diff)
Organising source
Diffstat (limited to 'src/fltk-text_buffers.ads')
-rw-r--r--src/fltk-text_buffers.ads180
1 files changed, 180 insertions, 0 deletions
diff --git a/src/fltk-text_buffers.ads b/src/fltk-text_buffers.ads
new file mode 100644
index 0000000..d3e1bab
--- /dev/null
+++ b/src/fltk-text_buffers.ads
@@ -0,0 +1,180 @@
+
+
+private with Ada.Containers.Vectors;
+private with System.Address_To_Access_Conversions;
+
+
+package FLTK.Text_Buffers is
+
+
+ type Text_Buffer is new Wrapper with private;
+ type Text_Buffer_Cursor (Data : access Text_Buffer'Class) is limited null record
+ with Implicit_Dereference => Data;
+
+
+ type Position is new Natural;
+ type Modification is (Insert, Restyle, Delete, None);
+
+
+ type Modify_Callback is access procedure
+ (Action : in Modification;
+ Place : in Position;
+ Length : in Natural;
+ Deleted_Text : in String);
+
+
+ type Predelete_Callback is access procedure
+ (Place : in Position;
+ Length : in Natural);
+
+
+ function Create
+ (Requested_Size : in Natural := 0;
+ Preferred_Gap_Size : in Natural := 1024)
+ return Text_Buffer;
+
+
+ procedure Add_Modify_Callback
+ (This : in out Text_Buffer;
+ Func : in Modify_Callback);
+
+
+ procedure Add_Predelete_Callback
+ (This : in out Text_Buffer;
+ Func : in Predelete_Callback);
+
+
+ procedure Call_Modify_Callbacks
+ (This : in out Text_Buffer);
+
+
+ procedure Call_Predelete_Callbacks
+ (This : in out Text_Buffer);
+
+
+ procedure Enable_Callbacks
+ (This : in out Text_Buffer);
+
+
+ procedure Disable_Callbacks
+ (This : in out Text_Buffer);
+
+
+ procedure Insert_Text
+ (This : in out Text_Buffer;
+ Pos : in Natural;
+ Item : in String);
+
+
+ procedure Remove_Text
+ (This : in out Text_Buffer;
+ Start, Finish : in Natural);
+
+
+ function Length
+ (This : in Text_Buffer)
+ return Natural;
+
+
+ procedure Load_File
+ (This : in Text_Buffer;
+ Name : in String);
+
+
+ procedure Remove_Selected_Text
+ (This : in out Text_Buffer);
+
+
+ procedure Save_File
+ (This : in Text_Buffer;
+ Name : in String);
+
+
+ function Search_Forward
+ (This : in Text_Buffer;
+ Start_At : in Natural;
+ Item : in String;
+ Found_At : out Natural;
+ Match_Case : in Boolean)
+ return Boolean;
+
+
+ function Search_Backward
+ (This : in Text_Buffer;
+ Start_At : in Natural;
+ Item : in String;
+ Found_At : out Natural;
+ Match_Case : in Boolean)
+ return Boolean;
+
+
+ procedure Set_Selection
+ (This : in out Text_Buffer;
+ Start, Finish : in Natural);
+
+
+ function Get_Selection
+ (This : in Text_Buffer;
+ Start, Finish : out Natural)
+ return Boolean;
+
+
+ function Has_Selection
+ (This : in Text_Buffer)
+ return Boolean;
+
+
+ -- only takes into account newline characters, not word wrap
+ function Skip_Lines
+ (This : in out Text_Buffer;
+ Start, Lines : in Natural)
+ return Natural;
+
+
+ -- only takes into account newline characters, not word wrap
+ function Rewind_Lines
+ (This : in out Text_Buffer;
+ Start, Lines : in Natural)
+ return Natural;
+
+
+ function Character_At
+ (This : in Text_Buffer;
+ Pos : in Natural)
+ return Character;
+
+
+ function Text_At
+ (This : in Text_Buffer;
+ Start, Finish : in Natural)
+ return String;
+
+
+private
+
+
+ package Modify_Vectors is new Ada.Containers.Vectors
+ (Index_Type => Positive,
+ Element_Type => Modify_Callback);
+ package Predelete_Vectors is new Ada.Containers.Vectors
+ (Index_Type => Positive,
+ Element_Type => Predelete_Callback);
+
+
+ type Text_Buffer is new Wrapper with
+ record
+ CB_Active : Boolean;
+ Modify_CBs : Modify_Vectors.Vector;
+ Predelete_CBs : Predelete_Vectors.Vector;
+ end record;
+
+
+ overriding procedure Finalize
+ (This : in out Text_Buffer);
+
+
+ package Text_Buffer_Convert is new System.Address_To_Access_Conversions (Text_Buffer);
+
+
+end FLTK.Text_Buffers;
+