----------------------------------------------------------------------- -- GtkAda - Ada95 binding for Gtk+/Gnome -- -- -- -- Copyright (C) 2001-2006 -- -- AdaCore -- -- -- -- This library is free software; you can redistribute it and/or -- -- modify it under the terms of the GNU General Public -- -- License as published by the Free Software Foundation; either -- -- version 2 of the License, or (at your option) any later version. -- -- -- -- This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- -- General Public License for more details. -- -- -- -- You should have received a copy of the GNU General Public -- -- License along with this library; if not, write to the -- -- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- -- -- This package implements a specific model to store your data in. Each -- item in the list will correspond to one line in the tree view. Multiple -- columns can be displayed for each line. -- -- 2.8.17 -- Trees and Lists with Gdk.Pixbuf; with Glib.Types; with Glib.Values; with Gtk; with Gtk.Tree_Dnd; with Gtk.Tree_Model; with Gtk.Tree_Sortable; package Gtk.List_Store is type Gtk_List_Store_Record is new Gtk.Tree_Model.Gtk_Tree_Model_Record with null record; type Gtk_List_Store is access all Gtk_List_Store_Record'Class; procedure Gtk_New (List_Store : out Gtk_List_Store; Types : GType_Array); -- Creates a new list store using Types to fill the columns. procedure Initialize (List_Store : access Gtk_List_Store_Record'Class; Types : GType_Array); -- Internal initialization function. -- See the section "Creating your own widgets" in the documentation. function Get_Type return Gtk.Gtk_Type; -- Return the internal value associated with this widget. procedure Set_Column_Types (List_Store : access Gtk_List_Store_Record; Types : GType_Array); procedure Set_Value (List_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Column : Gint; Value : Glib.Values.GValue); -- Set the data in the cell specified by Iter and Column. -- The type of Value must be convertible to the type of the column. procedure Set (Tree_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Column : Gint; Value : UTF8_String); -- Same as above, for an UTF8 string. procedure Set (Tree_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Column : Gint; Value : Gint); -- Same as above, for a Gint. procedure Set (Tree_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Column : Gint; Value : Gdk.Pixbuf.Gdk_Pixbuf); -- Same as above for a pixbuf procedure Set (Tree_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Column : Gint; Value : Boolean); -- Same as above for a boolean procedure Remove (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter); -- Remove the given row from the list store. -- After being removed, Iter is set to be the next valid row, or -- invalidated if it pointed to the last row in List_Store. procedure Insert (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter; Position : Gint); -- Create a new row at Position. -- Iter will be changed to point to this new row. -- If Position is larger than the number of rows on the list, then the new -- row will be appended to the list. The row will be empty before this -- function is called. To fill in values, you need to call Set_Value. procedure Insert_Before (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter; Sibling : Gtk.Tree_Model.Gtk_Tree_Iter); -- Insert a new row before Sibling. -- If Sibling is Null_Iter, then the row will be appended to the end of the -- list. Iter will be changed to point to this new row. The row will be -- empty before this function is called. To fill in values, you need to -- call Set_Value. procedure Insert_After (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter; Sibling : Gtk.Tree_Model.Gtk_Tree_Iter); -- Insert a new row after Sibling. -- If Sibling is Null_Iter, then the row will be prepended to the beginning -- of the list. Iter will be changed to point to this new row. The row will -- be empty after this function is called. To fill in values, you need to -- call Set_Value. procedure Insert_With_Valuesv (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter; Position : Glib.Gint; Columns : Glib.Gint_Array; Values : Glib.Values.GValue_Array); -- Creates a new row at Position. Iter will be changed to point to this new -- row. If Position is larger than the number of rows on the list, then the -- new row will be appended to the list. The row will be filled with the -- values given to this function. -- Using this function is more efficient that calling Insert and then -- Set for each column, since that will not emit the rows_reordered signal -- when the model is sorted. procedure Prepend (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter); -- Prepend a new row to List_Store. -- Iter will be changed to point to this new row. The row will be empty -- after this function is called. To fill in values, you need to call -- Set_Value. procedure Append (List_Store : access Gtk_List_Store_Record; Iter : in out Gtk.Tree_Model.Gtk_Tree_Iter); -- Append a new row to List_Store. -- Iter will be changed to point to this new row. The row will be empty -- after this function is called. To fill in values, you need to call -- Set_Value. procedure Clear (List_Store : access Gtk_List_Store_Record); -- Remove all the rows in List_Store. function Iter_Is_Valid (List_Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter) return Boolean; -- WARNING: This function is slow. Only use it for debugging and/or testing -- purposes. -- Checks if the given iter is a valid iter for List_Store. procedure Move_After (Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Position : Gtk.Tree_Model.Gtk_Tree_Iter); -- Moves the row pointed to by Iter to the position after Position. Note -- that this function only works with unsorted stores. If Position is -- Null_Iter, Iter will be moved to the start of the list. procedure Move_Before (Store : access Gtk_List_Store_Record; Iter : Gtk.Tree_Model.Gtk_Tree_Iter; Position : Gtk.Tree_Model.Gtk_Tree_Iter); -- Moves the row pointed to by Iter to the position before Position. Note -- that this function only works with unsorted stores. If Position is -- Null_Iter, Iter will be moved to the end of the list. procedure Reorder (Store : access Gtk_List_Store_Record; New_Order : Glib.Gint_Array); -- Reorders Store to follow the order indicated by New_order. Note that -- this function only works with unsorted stores. -- New_Order is an array of integers mapping the new position of each child -- to its old position before the re-ordering, -- i.e. New_Order[newpos] = oldpos procedure Swap (Store : access Gtk_List_Store_Record; A : Gtk.Tree_Model.Gtk_Tree_Iter; B : Gtk.Tree_Model.Gtk_Tree_Iter); -- Swaps the rwos pointed to by A and B. Note that this function only works -- with unsorted stores. ---------------- -- Interfaces -- ---------------- -- This class implements several interfaces. See Glib.Types -- -- - "Gtk_Tree_Sortable" -- This interface allows you to specify your own sort function -- -- - "Gtk_Tree_Drag_Source" -- This interface allows this widget to act as a dnd source -- -- - "Gtk_Tree_Drag_Dest" -- This interface allows this widget to act as a dnd destination package Implements_Tree_Sortable is new Glib.Types.Implements (Gtk.Tree_Sortable.Gtk_Tree_Sortable, Gtk_List_Store_Record, Gtk_List_Store); function "+" (Model : access Gtk_List_Store_Record'Class) return Gtk.Tree_Sortable.Gtk_Tree_Sortable renames Implements_Tree_Sortable.To_Interface; function "-" (Sortable : Gtk.Tree_Sortable.Gtk_Tree_Sortable) return Gtk_List_Store renames Implements_Tree_Sortable.To_Object; -- Converts to and from the Gtk_Tree_Sortable interface package Implements_Drag_Source is new Glib.Types.Implements (Gtk.Tree_Dnd.Gtk_Tree_Drag_Source, Gtk_List_Store_Record, Gtk_List_Store); function "+" (Model : access Gtk_List_Store_Record'Class) return Gtk.Tree_Dnd.Gtk_Tree_Drag_Source renames Implements_Drag_Source.To_Interface; function "-" (Drag_Source : Gtk.Tree_Dnd.Gtk_Tree_Drag_Source) return Gtk_List_Store renames Implements_Drag_Source.To_Object; -- Converts to and from the Gtk_Tree_Drag_Source interface package Implements_Drag_Dest is new Glib.Types.Implements (Gtk.Tree_Dnd.Gtk_Tree_Drag_Dest, Gtk_List_Store_Record, Gtk_List_Store); function "+" (Model : access Gtk_List_Store_Record'Class) return Gtk.Tree_Dnd.Gtk_Tree_Drag_Dest renames Implements_Drag_Dest.To_Interface; function "-" (Drag_Dest : Gtk.Tree_Dnd.Gtk_Tree_Drag_Dest) return Gtk_List_Store renames Implements_Drag_Dest.To_Object; -- Converts to and from the Gtk_Tree_Drag_Source interface private pragma Import (C, Get_Type, "gtk_list_store_get_type"); end Gtk.List_Store; -- No binding: gtk_list_store_new -- No binding: gtk_list_store_set -- No binding: gtk_list_store_set_valist -- No binding: gtk_list_store_insert_with_values