diff options
Diffstat (limited to 'src/fltk-widgets-groups-browsers-textline.adb')
-rw-r--r-- | src/fltk-widgets-groups-browsers-textline.adb | 1183 |
1 files changed, 0 insertions, 1183 deletions
diff --git a/src/fltk-widgets-groups-browsers-textline.adb b/src/fltk-widgets-groups-browsers-textline.adb deleted file mode 100644 index 2830732..0000000 --- a/src/fltk-widgets-groups-browsers-textline.adb +++ /dev/null @@ -1,1183 +0,0 @@ - - --- Programmed by Jedidiah Barber --- Released into the public domain - - -with - - Ada.Assertions, - Ada.Unchecked_Deallocation, - FLTK.Images, - Interfaces.C.Strings; - -use type - - Interfaces.C.int, - Interfaces.C.Strings.chars_ptr; - - -package body FLTK.Widgets.Groups.Browsers.Textline is - - - package Chk renames Ada.Assertions; - - - - - ------------------------ - -- Functions From C -- - ------------------------ - - function get_error_message - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, get_error_message, "get_error_message"); - pragma Inline (get_error_message); - - - - - function new_fl_browser - (X, Y, W, H : in Interfaces.C.int; - Text : in Interfaces.C.char_array) - return Storage.Integer_Address; - pragma Import (C, new_fl_browser, "new_fl_browser"); - pragma Inline (new_fl_browser); - - procedure free_fl_browser - (B : in Storage.Integer_Address); - pragma Import (C, free_fl_browser, "free_fl_browser"); - pragma Inline (free_fl_browser); - - - - - procedure fl_browser_add - (B : in Storage.Integer_Address; - T : in Interfaces.C.char_array; - D : in Storage.Integer_Address); - pragma Import (C, fl_browser_add, "fl_browser_add"); - pragma Inline (fl_browser_add); - - procedure fl_browser_insert - (B : in Storage.Integer_Address; - L : in Interfaces.C.int; - T : in Interfaces.C.char_array; - D : in Storage.Integer_Address); - pragma Import (C, fl_browser_insert, "fl_browser_insert"); - pragma Inline (fl_browser_insert); - - procedure fl_browser_move - (B : in Storage.Integer_Address; - T, F : in Interfaces.C.int); - pragma Import (C, fl_browser_move, "fl_browser_move"); - pragma Inline (fl_browser_move); - - procedure fl_browser_swap - (B : in Storage.Integer_Address; - X, Y : in Interfaces.C.int); - pragma Import (C, fl_browser_swap, "fl_browser_swap"); - pragma Inline (fl_browser_swap); - - procedure fl_browser_remove - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_remove, "fl_browser_remove"); - pragma Inline (fl_browser_remove); - - procedure fl_browser_clear - (B : in Storage.Integer_Address); - pragma Import (C, fl_browser_clear, "fl_browser_clear"); - pragma Inline (fl_browser_clear); - - function fl_browser_size - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_size, "fl_browser_size"); - pragma Inline (fl_browser_size); - - - - - function fl_browser_load - (B : in Storage.Integer_Address; - F : in Interfaces.C.char_array) - return Interfaces.C.int; - pragma Import (C, fl_browser_load, "fl_browser_load"); - pragma Inline (fl_browser_load); - - function fl_browser_get_text - (B : in Storage.Integer_Address; - L : in Interfaces.C.int) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_browser_get_text, "fl_browser_get_text"); - pragma Inline (fl_browser_get_text); - - procedure fl_browser_set_text - (B : in Storage.Integer_Address; - L : in Interfaces.C.int; - T : in Interfaces.C.char_array); - pragma Import (C, fl_browser_set_text, "fl_browser_set_text"); - pragma Inline (fl_browser_set_text); - - function fl_browser_get_textsize - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_get_textsize, "fl_browser_get_textsize"); - pragma Inline (fl_browser_get_textsize); - - procedure fl_browser_set_textsize - (B : in Storage.Integer_Address; - S : in Interfaces.C.int); - pragma Import (C, fl_browser_set_textsize, "fl_browser_set_textsize"); - pragma Inline (fl_browser_set_textsize); - - - - - function fl_browser_get_column_char - (B : in Storage.Integer_Address) - return Interfaces.C.char; - pragma Import (C, fl_browser_get_column_char, "fl_browser_get_column_char"); - pragma Inline (fl_browser_get_column_char); - - procedure fl_browser_set_column_char - (B : in Storage.Integer_Address; - C : in Interfaces.C.char); - pragma Import (C, fl_browser_set_column_char, "fl_browser_set_column_char"); - pragma Inline (fl_browser_set_column_char); - - procedure fl_browser_set_column_widths - (B, W : in Storage.Integer_Address); - pragma Import (C, fl_browser_set_column_widths, "fl_browser_set_column_widths"); - pragma Inline (fl_browser_set_column_widths); - - function fl_browser_get_format_char - (B : in Storage.Integer_Address) - return Interfaces.C.char; - pragma Import (C, fl_browser_get_format_char, "fl_browser_get_format_char"); - pragma Inline (fl_browser_get_format_char); - - procedure fl_browser_set_format_char - (B : in Storage.Integer_Address; - C : in Interfaces.C.char); - pragma Import (C, fl_browser_set_format_char, "fl_browser_set_format_char"); - pragma Inline (fl_browser_set_format_char); - - - - - function fl_browser_get_topline - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_get_topline, "fl_browser_get_topline"); - pragma Inline (fl_browser_get_topline); - - procedure fl_browser_set_topline - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_set_topline, "fl_browser_set_topline"); - pragma Inline (fl_browser_set_topline); - - procedure fl_browser_middleline - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_middleline, "fl_browser_middleline"); - pragma Inline (fl_browser_middleline); - - procedure fl_browser_bottomline - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_bottomline, "fl_browser_bottomline"); - pragma Inline (fl_browser_bottomline); - - procedure fl_browser_lineposition - (B : in Storage.Integer_Address; - L, P : in Interfaces.C.int); - pragma Import (C, fl_browser_lineposition, "fl_browser_lineposition"); - pragma Inline (fl_browser_lineposition); - - - - - function fl_browser_select - (B : in Storage.Integer_Address; - L, V : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_browser_select, "fl_browser_select"); - pragma Inline (fl_browser_select); - - function fl_browser_selected - (B : in Storage.Integer_Address; - L : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_browser_selected, "fl_browser_selected"); - pragma Inline (fl_browser_selected); - - function fl_browser_value - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_value, "fl_browser_value"); - pragma Inline (fl_browser_value); - - - - - function fl_browser_visible - (B : in Storage.Integer_Address; - L : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_browser_visible, "fl_browser_visible"); - pragma Inline (fl_browser_visible); - - procedure fl_browser_make_visible - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_make_visible, "fl_browser_make_visible"); - pragma Inline (fl_browser_make_visible); - - function fl_browser_displayed - (B : in Storage.Integer_Address; - L : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_browser_displayed, "fl_browser_displayed"); - pragma Inline (fl_browser_displayed); - - procedure fl_browser_show_line - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_show_line, "fl_browser_show_line"); - pragma Inline (fl_browser_show_line); - - procedure fl_browser_hide_line - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_hide_line, "fl_browser_hide_line"); - pragma Inline (fl_browser_hide_line); - - procedure fl_browser_show - (B : in Storage.Integer_Address); - pragma Import (C, fl_browser_show, "fl_browser_show"); - pragma Inline (fl_browser_show); - - procedure fl_browser_hide - (B : in Storage.Integer_Address); - pragma Import (C, fl_browser_hide, "fl_browser_hide"); - pragma Inline (fl_browser_hide); - - - - - procedure fl_browser_set_size - (B : in Storage.Integer_Address; - W, H : in Interfaces.C.int); - pragma Import (C, fl_browser_set_size, "fl_browser_set_size"); - pragma Inline (fl_browser_set_size); - - - - - procedure fl_browser_set_icon - (B : in Storage.Integer_Address; - L : in Interfaces.C.int; - C : in Storage.Integer_Address); - pragma Import (C, fl_browser_set_icon, "fl_browser_set_icon"); - pragma Inline (fl_browser_set_icon); - - procedure fl_browser_remove_icon - (B : in Storage.Integer_Address; - L : in Interfaces.C.int); - pragma Import (C, fl_browser_remove_icon, "fl_browser_remove_icon"); - pragma Inline (fl_browser_remove_icon); - - - - - function fl_browser_item_width - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_item_width, "fl_browser_item_width"); - pragma Inline (fl_browser_item_width); - - function fl_browser_item_height - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_item_height, "fl_browser_item_height"); - pragma Inline (fl_browser_item_height); - - function fl_browser_item_first - (B : in Storage.Integer_Address) - return Storage.Integer_Address; - pragma Import (C, fl_browser_item_first, "fl_browser_item_first"); - pragma Inline (fl_browser_item_first); - - function fl_browser_item_last - (B : in Storage.Integer_Address) - return Storage.Integer_Address; - pragma Import (C, fl_browser_item_last, "fl_browser_item_last"); - pragma Inline (fl_browser_item_last); - - function fl_browser_item_next - (B, I : in Storage.Integer_Address) - return Storage.Integer_Address; - pragma Import (C, fl_browser_item_next, "fl_browser_item_next"); - pragma Inline (fl_browser_item_next); - - function fl_browser_item_prev - (B, I : in Storage.Integer_Address) - return Storage.Integer_Address; - pragma Import (C, fl_browser_item_prev, "fl_browser_item_prev"); - pragma Inline (fl_browser_item_prev); - - function fl_browser_item_at - (B : in Storage.Integer_Address; - N : in Interfaces.C.int) - return Storage.Integer_Address; - pragma Import (C, fl_browser_item_at, "fl_browser_item_at"); - pragma Inline (fl_browser_item_at); - - procedure fl_browser_item_select - (B, I : in Storage.Integer_Address; - V : in Interfaces.C.int); - pragma Import (C, fl_browser_item_select, "fl_browser_item_select"); - pragma Inline (fl_browser_item_select); - - function fl_browser_item_selected - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_item_selected, "fl_browser_item_selected"); - pragma Inline (fl_browser_item_selected); - - procedure fl_browser_item_swap - (B, X, Y : in Storage.Integer_Address); - pragma Import (C, fl_browser_item_swap, "fl_browser_item_swap"); - pragma Inline (fl_browser_item_swap); - - function fl_browser_item_text - (B, I : in Storage.Integer_Address) - return Interfaces.C.Strings.chars_ptr; - pragma Import (C, fl_browser_item_text, "fl_browser_item_text"); - pragma Inline (fl_browser_item_text); - - procedure fl_browser_item_draw - (B, I : in Storage.Integer_Address; - X, Y, W, H : in Interfaces.C.int); - pragma Import (C, fl_browser_item_draw, "fl_browser_item_draw"); - pragma Inline (fl_browser_item_draw); - - - - - function fl_browser_full_width - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_full_width, "fl_browser_full_width"); - pragma Inline (fl_browser_full_width); - - function fl_browser_full_height - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_full_height, "fl_browser_full_height"); - pragma Inline (fl_browser_full_height); - - function fl_browser_incr_height - (B : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_incr_height, "fl_browser_incr_height"); - pragma Inline (fl_browser_incr_height); - - function fl_browser_item_quick_height - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_item_quick_height, "fl_browser_item_quick_height"); - pragma Inline (fl_browser_item_quick_height); - - - - - function fl_browser_lineno - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_browser_lineno, "fl_browser_lineno"); - pragma Inline (fl_browser_lineno); - - - - - procedure fl_browser_draw - (B : in Storage.Integer_Address); - pragma Import (C, fl_browser_draw, "fl_browser_draw"); - pragma Inline (fl_browser_draw); - - function fl_browser_handle - (B : in Storage.Integer_Address; - E : in Interfaces.C.int) - return Interfaces.C.int; - pragma Import (C, fl_browser_handle, "fl_browser_handle"); - pragma Inline (fl_browser_handle); - - - - - ------------------- - -- Destructors -- - ------------------- - - procedure Free is new Ada.Unchecked_Deallocation - (Object => C_Col_Widths, - Name => C_Col_Widths_Access); - - procedure Free is new Ada.Unchecked_Deallocation - (Object => FLTK.Images.Image'Class, - Name => Image_Access); - - - procedure Extra_Final - (This : in out Textline_Browser) is - begin - Free (This.Columns); - for Icon_Ptr of This.Icons loop - Free (Icon_Ptr); - end loop; - Extra_Final (Browser (This)); - end Extra_Final; - - - procedure Finalize - (This : in out Textline_Browser) is - begin - Extra_Final (This); - if This.Void_Ptr /= Null_Pointer and This.Needs_Dealloc then - free_fl_browser (This.Void_Ptr); - This.Void_Ptr := Null_Pointer; - end if; - end Finalize; - - - - - -------------------- - -- Constructors -- - -------------------- - - procedure Extra_Init - (This : in out Textline_Browser; - X, Y, W, H : in Integer; - Text : in String) is - begin - Extra_Init (Browser (This), X, Y, W, H, Text); - end Extra_Init; - - - procedure Initialize - (This : in out Textline_Browser) is - begin - This.Item_Override_Ptrs := - (Item_Width_Ptr => fl_browser_item_width'Address, - Item_Height_Ptr => fl_browser_item_height'Address, - Item_First_Ptr => fl_browser_item_first'Address, - Item_Last_Ptr => fl_browser_item_last'Address, - Item_Next_Ptr => fl_browser_item_next'Address, - Item_Previous_Ptr => fl_browser_item_prev'Address, - Item_At_Ptr => fl_browser_item_at'Address, - Item_Select_Ptr => fl_browser_item_select'Address, - Item_Selected_Ptr => fl_browser_item_selected'Address, - Item_Swap_Ptr => fl_browser_item_swap'Address, - Item_Text_Ptr => fl_browser_item_text'Address, - Item_Draw_Ptr => fl_browser_item_draw'Address); - This.Wide_High_Ptrs := - (Full_List_Width_Ptr => fl_browser_full_width'Address, - Full_List_Height_Ptr => fl_browser_full_height'Address, - Average_Item_Height_Ptr => fl_browser_incr_height'Address, - Item_Quick_Height_Ptr => fl_browser_item_quick_height'Address); - This.Draw_Ptr := fl_browser_draw'Address; - This.Handle_Ptr := fl_browser_handle'Address; - end Initialize; - - - package body Forge is - - function Create - (X, Y, W, H : in Integer; - Text : in String := "") - return Textline_Browser is - begin - return This : Textline_Browser do - This.Void_Ptr := new_fl_browser - (Interfaces.C.int (X), - Interfaces.C.int (Y), - Interfaces.C.int (W), - Interfaces.C.int (H), - Interfaces.C.To_C (Text)); - Extra_Init (This, X, Y, W, H, Text); - end return; - end Create; - - end Forge; - - - - - ----------------------- - -- API Subprograms -- - ----------------------- - - procedure Add - (This : in out Textline_Browser; - Text : in String) is - begin - fl_browser_add - (This.Void_Ptr, - Interfaces.C.To_C (Text), - Null_Pointer); - end Add; - - - procedure Insert - (This : in out Textline_Browser; - Above : in Positive; - Text : in String) is - begin - fl_browser_insert - (This.Void_Ptr, - Interfaces.C.int (Above), - Interfaces.C.To_C (Text), - Null_Pointer); - end Insert; - - - procedure Move - (This : in out Textline_Browser; - From, To : in Positive) is - begin - fl_browser_move - (This.Void_Ptr, - Interfaces.C.int (To), - Interfaces.C.int (From)); - end Move; - - - procedure Swap - (This : in out Textline_Browser; - A, B : in Positive) is - begin - fl_browser_swap - (This.Void_Ptr, - Interfaces.C.int (A), - Interfaces.C.int (B)); - end Swap; - - - procedure Remove - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_remove - (This.Void_Ptr, - Interfaces.C.int (Line)); - end Remove; - - - procedure Clear - (This : in out Textline_Browser) is - begin - fl_browser_clear (This.Void_Ptr); - end Clear; - - - function Number_Of_Lines - (This : in Textline_Browser) - return Natural is - begin - return Natural (fl_browser_size (This.Void_Ptr)); - end Number_Of_Lines; - - - - - procedure Load - (This : in out Textline_Browser; - File : in String) - is - Msg : Interfaces.C.Strings.chars_ptr; - Code : Interfaces.C.int := fl_browser_load (This.Void_Ptr, Interfaces.C.To_C (File)); - begin - if Code = 0 then - Msg := get_error_message; - if Msg = Interfaces.C.Strings.Null_Ptr then - raise Browser_Load_Error; - else - raise Browser_Load_Error with Interfaces.C.Strings.Value (Msg); - end if; - else - pragma Assert (Code = 1); - end if; - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Load; - - - function Get_Line_Text - (This : in Textline_Browser; - Line : in Positive) - return String - is - Ptr : Interfaces.C.Strings.chars_ptr := fl_browser_get_text - (This.Void_Ptr, - Interfaces.C.int (Line)); - begin - if Ptr = Interfaces.C.Strings.Null_Ptr then - return ""; - else - return Interfaces.C.Strings.Value (Ptr); - end if; - end Get_Line_Text; - - - procedure Set_Line_Text - (This : in out Textline_Browser; - Line : in Positive; - Text : in String) is - begin - fl_browser_set_text - (This.Void_Ptr, - Interfaces.C.int (Line), - Interfaces.C.To_C (Text)); - end Set_Line_Text; - - - function Get_Text_Size - (This : in Textline_Browser) - return Font_Size is - begin - return Font_Size (fl_browser_get_textsize (This.Void_Ptr)); - end Get_Text_Size; - - - procedure Set_Text_Size - (This : in out Textline_Browser; - Size : in Font_Size) is - begin - fl_browser_set_textsize (This.Void_Ptr, Interfaces.C.int (Size)); - end Set_Text_Size; - - - - - function Get_Column_Character - (This : in Textline_Browser) - return Character is - begin - return Interfaces.C.To_Ada (fl_browser_get_column_char (This.Void_Ptr)); - end Get_Column_Character; - - - procedure Set_Column_Character - (This : in out Textline_Browser; - Value : in Character) is - begin - fl_browser_set_column_char (This.Void_Ptr, Interfaces.C.To_C (Value)); - end Set_Column_Character; - - - function Get_Column_Widths - (This : in Textline_Browser) - return Column_Widths is - begin - if This.Columns = null then - return Result : Column_Widths (1 .. 0); - else - return Result : Column_Widths (This.Columns'First .. This.Columns'Last - 1) do - for Index in Result'Range loop - Result (Index) := Integer (This.Columns (Index)); - end loop; - end return; - end if; - end Get_Column_Widths; - - - procedure Set_Column_Widths - (This : in out Textline_Browser; - Widths : in Column_Widths) is - begin - Free (This.Columns); - This.Columns := new C_Col_Widths (1 .. Widths'Length + 1); - for Index in This.Columns'Range loop - This.Columns (Index) := Interfaces.C.int (Widths (Widths'First + Index - 1)); - end loop; - This.Columns (This.Columns'Last) := 0; - fl_browser_set_column_widths (This.Void_Ptr, Storage.To_Integer (This.Columns.all'Address)); - end Set_Column_Widths; - - - function Get_Format_Character - (This : in Textline_Browser) - return Character is - begin - return Interfaces.C.To_Ada (fl_browser_get_format_char (This.Void_Ptr)); - end Get_Format_Character; - - - procedure Set_Format_Character - (This : in out Textline_Browser; - Value : in Character) is - begin - fl_browser_set_format_char (This.Void_Ptr, Interfaces.C.To_C (Value)); - end Set_Format_Character; - - - - - function Get_Top_Line - (This : in Textline_Browser) - return Positive is - begin - return Positive (fl_browser_get_topline (This.Void_Ptr)); - end Get_Top_Line; - - - procedure Set_Top_Line - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_set_topline (This.Void_Ptr, Interfaces.C.int (Line)); - end Set_Top_Line; - - - procedure Set_Middle_Line - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_middleline (This.Void_Ptr, Interfaces.C.int (Line)); - end Set_Middle_Line; - - - procedure Set_Bottom_Line - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_bottomline (This.Void_Ptr, Interfaces.C.int (Line)); - end Set_Bottom_Line; - - - procedure Set_Line_Position - (This : in out Textline_Browser; - Line : in Positive; - Place : in Line_Position) is - begin - fl_browser_lineposition (This.Void_Ptr, Interfaces.C.int (Line), Line_Position'Pos (Place)); - end Set_Line_Position; - - - - - function Set_Select - (This : in out Textline_Browser; - Line : in Positive; - State : in Boolean := True) - return Boolean - is - Code : Interfaces.C.int := fl_browser_select - (This.Void_Ptr, - Interfaces.C.int (Line), - Boolean'Pos (State)); - begin - pragma Assert (Code in 0 .. 1); - return Boolean'Val (Code); - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Set_Select; - - - procedure Set_Select - (This : in out Textline_Browser; - Line : in Positive; - State : in Boolean := True) - is - Code : Interfaces.C.int := fl_browser_select - (This.Void_Ptr, - Interfaces.C.int (Line), - Boolean'Pos (State)); - begin - pragma Assert (Code in 0 .. 1); - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Set_Select; - - - function Is_Selected - (This : in Textline_Browser; - Line : in Positive) - return Boolean - is - Code : Interfaces.C.int := fl_browser_selected - (This.Void_Ptr, - Interfaces.C.int (Line)); - begin - pragma Assert (Code in 0 .. 1); - return Boolean'Val (Code); - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Is_Selected; - - - function Selected_Index - (This : in Textline_Browser) - return Natural is - begin - return Natural (fl_browser_value (This.Void_Ptr)); - end Selected_Index; - - - - - function Is_Visible - (This : in Textline_Browser; - Line : in Positive) - return Boolean is - begin - return fl_browser_visible (This.Void_Ptr, Interfaces.C.int (Line)) /= 0; - end Is_Visible; - - - procedure Make_Visible - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_make_visible (This.Void_Ptr, Interfaces.C.int (Line)); - end Make_Visible; - - - function Is_Displayed - (This : in Textline_Browser; - Line : in Positive) - return Boolean - is - Code : Interfaces.C.int := fl_browser_displayed - (This.Void_Ptr, - Interfaces.C.int (Line)); - begin - pragma Assert (Code in 0 .. 1); - return Boolean'Val (Code); - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Is_Displayed; - - - procedure Show_Line - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_show_line (This.Void_Ptr, Interfaces.C.int (Line)); - end Show_Line; - - - procedure Hide_Line - (This : in out Textline_Browser; - Line : in Positive) is - begin - fl_browser_hide_line (This.Void_Ptr, Interfaces.C.int (Line)); - end Hide_Line; - - - procedure Show - (This : in out Textline_Browser) is - begin - fl_browser_show (This.Void_Ptr); - end Show; - - - procedure Hide - (This : in out Textline_Browser) is - begin - fl_browser_hide (This.Void_Ptr); - end Hide; - - - - - procedure Resize - (This : in out Textline_Browser; - W, H : in Integer) is - begin - fl_browser_set_size - (This.Void_Ptr, - Interfaces.C.int (W), - Interfaces.C.int (H)); - end Resize; - - - - - function Has_Icon - (This : in Textline_Browser; - Line : in Positive) - return Boolean is - begin - return Line <= This.Icons.Last_Index and then This.Icons.Element (Line) /= null; - end Has_Icon; - - - function Get_Icon - (This : in Textline_Browser; - Line : in Positive) - return FLTK.Images.Image_Reference is - begin - return Ref : FLTK.Images.Image_Reference (Data => This.Icons.Element (Line)); - end Get_Icon; - - - procedure Set_Icon - (This : in out Textline_Browser; - Line : in Positive; - Icon : in FLTK.Images.Image'Class) is - begin - fl_browser_set_icon (This.Void_Ptr, Interfaces.C.int (Line), Wrapper (Icon).Void_Ptr); - if Line > This.Icons.Last_Index then - This.Icons.Append (null, Ada.Containers.Count_Type (Line - This.Icons.Last_Index - 1)); - This.Icons.Append (new FLTK.Images.Image); - Wrapper (This.Icons.Element (Line).all).Needs_Dealloc := False; - elsif This.Icons.Element (Line) = null then - This.Icons.Replace_Element (Line, new FLTK.Images.Image); - Wrapper (This.Icons.Element (Line).all).Needs_Dealloc := False; - end if; - Wrapper (This.Icons.Element (Line).all).Void_Ptr := Wrapper (Icon).Void_Ptr; - end Set_Icon; - - - procedure Remove_Icon - (This : in out Textline_Browser; - Line : in Positive) - is - Ptr : Image_Access; - begin - fl_browser_remove_icon (This.Void_Ptr, Interfaces.C.int (Line)); - if Line <= This.Icons.Last_Index then - Ptr := This.Icons.Element (Line); - Free (Ptr); - This.Icons.Replace_Element (Line, null); - end if; - end Remove_Icon; - - - - - function Full_List_Height - (This : in Textline_Browser) - return Integer is - begin - return Browser (This).Full_List_Height; - end Full_List_Height; - - - function Average_Item_Height - (This : in Textline_Browser) - return Integer is - begin - return Browser (This).Average_Item_Height; - end Average_Item_Height; - - - - - function Item_Width - (This : in Textline_Browser; - Item : in Item_Cursor) - return Integer - is - function my_item_width - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - for my_item_width'Address use This.Item_Override_Ptrs (Item_Width_Ptr); - pragma Import (Ada, my_item_width); - begin - return Integer (my_item_width (This.Void_Ptr, Cursor_To_Address (Item))); - end Item_Width; - - - function Item_Height - (This : in Textline_Browser; - Item : in Item_Cursor) - return Integer - is - function my_item_height - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - for my_item_height'Address use This.Item_Override_Ptrs (Item_Height_Ptr); - pragma Import (Ada, my_item_height); - begin - return Integer (my_item_height (This.Void_Ptr, Cursor_To_Address (Item))); - end Item_Height; - - - function Item_First - (This : in Textline_Browser) - return Item_Cursor - is - function my_item_first - (B : in Storage.Integer_Address) - return Storage.Integer_Address; - for my_item_first'Address use This.Item_Override_Ptrs (Item_First_Ptr); - pragma Import (Ada, my_item_first); - begin - return Address_To_Cursor (my_item_first (This.Void_Ptr)); - end Item_First; - - - function Item_Last - (This : in Textline_Browser) - return Item_Cursor - is - function my_item_last - (B : in Storage.Integer_Address) - return Storage.Integer_Address; - for my_item_last'Address use This.Item_Override_Ptrs (Item_Last_Ptr); - pragma Import (Ada, my_item_last); - begin - return Address_To_Cursor (my_item_last (This.Void_Ptr)); - end Item_Last; - - - function Item_Next - (This : in Textline_Browser; - Item : in Item_Cursor) - return Item_Cursor - is - function my_item_next - (B, I : in Storage.Integer_Address) - return Storage.Integer_Address; - for my_item_next'Address use This.Item_Override_Ptrs (Item_Next_Ptr); - pragma Import (Ada, my_item_next); - begin - return Address_To_Cursor (my_item_next (This.Void_Ptr, Cursor_To_Address (Item))); - end Item_Next; - - - function Item_Previous - (This : in Textline_Browser; - Item : in Item_Cursor) - return Item_Cursor - is - function my_item_prev - (B, I : in Storage.Integer_Address) - return Storage.Integer_Address; - for my_item_prev'Address use This.Item_Override_Ptrs (Item_Previous_Ptr); - pragma Import (Ada, my_item_prev); - begin - return Address_To_Cursor (my_item_prev (This.Void_Ptr, Cursor_To_Address (Item))); - end Item_Previous; - - - function Item_At - (This : in Textline_Browser; - Index : in Positive) - return Item_Cursor - is - function my_item_at - (B : in Storage.Integer_Address; - N : in Interfaces.C.int) - return Storage.Integer_Address; - for my_item_at'Address use This.Item_Override_Ptrs (Item_At_Ptr); - pragma Import (Ada, my_item_at); - begin - return Address_To_Cursor (my_item_at (This.Void_Ptr, Interfaces.C.int (Index))); - end Item_At; - - - procedure Item_Select - (This : in out Textline_Browser; - Item : in Item_Cursor; - State : in Boolean := True) - is - procedure my_item_select - (B, I : in Storage.Integer_Address; - V : in Interfaces.C.int); - for my_item_select'Address use This.Item_Override_Ptrs (Item_Select_Ptr); - pragma Import (Ada, my_item_select); - begin - my_item_select (This.Void_Ptr, Cursor_To_Address (Item), Boolean'Pos (State)); - end Item_Select; - - - function Item_Selected - (This : in Textline_Browser; - Item : in Item_Cursor) - return Boolean - is - function my_item_selected - (B, I : in Storage.Integer_Address) - return Interfaces.C.int; - for my_item_selected'Address use This.Item_Override_Ptrs (Item_Selected_Ptr); - pragma Import (Ada, my_item_selected); - Code : Interfaces.C.int := my_item_selected (This.Void_Ptr, Cursor_To_Address (Item)); - begin - pragma Assert (Code in 0 .. 1); - return Boolean'Val (Code); - exception - when Chk.Assertion_Error => raise Internal_FLTK_Error; - end Item_Selected; - - - procedure Item_Swap - (This : in out Textline_Browser; - A, B : in Item_Cursor) - is - procedure my_item_swap - (B, X, Y : in Storage.Integer_Address); - for my_item_swap'Address use This.Item_Override_Ptrs (Item_Swap_Ptr); - pragma Import (Ada, my_item_swap); - begin - my_item_swap (This.Void_Ptr, Cursor_To_Address (A), Cursor_To_Address (B)); - end Item_Swap; - - - function Item_Text - (This : in Textline_Browser; - Item : in Item_Cursor) - return String - is - function my_item_text - (B, I : in Storage.Integer_Address) - return Interfaces.C.Strings.chars_ptr; - for my_item_text'Address use This.Item_Override_Ptrs (Item_Text_Ptr); - pragma Import (Ada, my_item_text); - begin - return Interfaces.C.Strings.Value (my_item_text (This.Void_Ptr, Cursor_To_Address (Item))); - end Item_Text; - - - procedure Item_Draw - (This : in Textline_Browser; - Item : in Item_Cursor; - X, Y, W, H : in Integer) - is - procedure my_item_draw - (B, I : in Storage.Integer_Address; - X, Y, W, H : in Interfaces.C.int); - for my_item_draw'Address use This.Item_Override_Ptrs (Item_Draw_Ptr); - pragma Import (Ada, my_item_draw); - begin - my_item_draw - (This.Void_Ptr, - Cursor_To_Address (Item), - Interfaces.C.int (X), - Interfaces.C.int (Y), - Interfaces.C.int (W), - Interfaces.C.int (H)); - end Item_Draw; - - - - - function Line_Number - (This : in Textline_Browser; - Item : in Item_Cursor) - return Natural is - begin - return Natural (fl_browser_lineno (This.Void_Ptr, Cursor_To_Address (Item))); - end Line_Number; - - -end FLTK.Widgets.Groups.Browsers.Textline; - - |