------------------------------------------------------------------------------ -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2014, AdaCore -- -- -- -- This library is free software; you can redistribute it and/or modify it -- -- under terms of the GNU General Public License as published by the Free -- -- Software Foundation; either version 3, 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 MERCHAN- -- -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. -- -- -- -- As a special exception under Section 7 of GPL version 3, you are granted -- -- additional permissions described in the GCC Runtime Library Exception, -- -- version 3.1, as published by the Free Software Foundation. -- -- -- -- You should have received a copy of the GNU General Public License and -- -- a copy of the GCC Runtime Library Exception along with this program; -- -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- -- <http://www.gnu.org/licenses/>. -- -- -- ------------------------------------------------------------------------------ -- <description> -- Gtk.Tree_Sortable.Gtk_Tree_Sortable is an interface to be implemented by -- tree models which support sorting. The Gtk.Tree_View.Gtk_Tree_View uses the -- methods provided by this interface to sort the model. -- -- </description> pragma Ada_2005; pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Glib.Types; use Glib.Types;
with Gtk.Enums; use Gtk.Enums;
with Gtk.Tree_Model; use Gtk.Tree_Model;
package Gtk.Tree_Sortable is
type Gtk_Tree_Sortable is new Glib.Types.GType_Interface;
Null_Gtk_Tree_Sortable : constant Gtk_Tree_Sortable;
--------------- -- Callbacks -- --------------- type Gtk_Tree_Iter_Compare_Func is access function
(Model : Gtk.Tree_Model.Gtk_Tree_Model; A : Gtk.Tree_Model.Gtk_Tree_Iter; B : Gtk.Tree_Model.Gtk_Tree_Iter) return Gint;
-- A GtkTreeIterCompareFunc should return a negative integer, zero, or a -- positive integer if A sorts before B, A sorts with B, or A sorts after B -- respectively. If two iters compare as equal, their order in the sorted -- model is undefined. In order to ensure that the -- Gtk.Tree_Sortable.Gtk_Tree_Sortable behaves as expected, the -- GtkTreeIterCompareFunc must define a partial order on the model, i.e. it -- must be reflexive, antisymmetric and transitive. -- For example, if Model is a product catalogue, then a compare function -- for the "price" column could be one which returns 'price_of(A) - -- price_of(B)'. -- "model": The Gtk.Tree_Model.Gtk_Tree_Model the comparison is within -- "a": A Gtk.Tree_Model.Gtk_Tree_Iter in Model -- "b": Another Gtk.Tree_Model.Gtk_Tree_Iter in Model ------------------ -- Constructors -- ------------------ function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_tree_sortable_get_type");
------------- -- Methods -- ------------- procedure Get_Sort_Column_Id
(Sortable : Gtk_Tree_Sortable;
Sort_Column_Id : out Gint;
Order : out Gtk.Enums.Gtk_Sort_Type);
pragma Import (C, Get_Sort_Column_Id, "gtk_tree_sortable_get_sort_column_id");
-- Fills in Sort_Column_Id and Order with the current sort column and the -- order. It returns True unless the Sort_Column_Id is -- GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID or -- GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID. -- "sort_column_id": The sort column id to be filled in -- "order": The Gtk.Enums.Gtk_Sort_Type to be filled in procedure Set_Sort_Column_Id
(Sortable : Gtk_Tree_Sortable;
Sort_Column_Id : Gint;
Order : Gtk.Enums.Gtk_Sort_Type);
pragma Import (C, Set_Sort_Column_Id, "gtk_tree_sortable_set_sort_column_id");
-- Sets the current sort column to be Sort_Column_Id. The Sortable will -- resort itself to reflect this change, after emitting a -- Gtk.Tree_Sortable.Gtk_Tree_Sortable::sort-column-changed signal. -- Sort_Column_Id may either be a regular column id, or one of the -- following special values: -- 'GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID' -- * the default sort function will be used, if it is set -- 'GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID' -- * no sorting will occur -- "sort_column_id": the sort column id to set -- "order": The sort order of the column function Has_Default_Sort_Func
(Sortable : Gtk_Tree_Sortable) return Boolean;
-- Returns True if the model has a default sort function. This is used -- primarily by GtkTreeViewColumns in order to determine if a model can go -- back to the default state, or not. procedure Set_Default_Sort_Func
(Sortable : Gtk_Tree_Sortable;
Sort_Func : Gtk_Tree_Iter_Compare_Func);
-- Sets the default comparison function used when sorting to be Sort_Func. -- If the current sort column id of Sortable is -- GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, then the model will sort using -- this function. -- If Sort_Func is null, then there will be no default comparison -- function. This means that once the model has been sorted, it can't go -- back to the default state. In this case, when the current sort column id -- of Sortable is GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, the model will -- be unsorted. -- "sort_func": The comparison function generic type User_Data_Type (<>) is private;
with procedure Destroy (Data : in out User_Data_Type) is null;
package Set_Default_Sort_Func_User_Data is
type Gtk_Tree_Iter_Compare_Func is access function
(Model : Gtk.Tree_Model.Gtk_Tree_Model; A : Gtk.Tree_Model.Gtk_Tree_Iter; B : Gtk.Tree_Model.Gtk_Tree_Iter; User_Data : User_Data_Type) return Gint;
-- A GtkTreeIterCompareFunc should return a negative integer, zero, or a -- positive integer if A sorts before B, A sorts with B, or A sorts after B -- respectively. If two iters compare as equal, their order in the sorted -- model is undefined. In order to ensure that the -- Gtk.Tree_Sortable.Gtk_Tree_Sortable behaves as expected, the -- GtkTreeIterCompareFunc must define a partial order on the model, i.e. it -- must be reflexive, antisymmetric and transitive. -- For example, if Model is a product catalogue, then a compare function -- for the "price" column could be one which returns 'price_of(A) - -- price_of(B)'. -- "model": The Gtk.Tree_Model.Gtk_Tree_Model the comparison is within -- "a": A Gtk.Tree_Model.Gtk_Tree_Iter in Model -- "b": Another Gtk.Tree_Model.Gtk_Tree_Iter in Model -- "user_data": Data passed when the compare func is assigned e.g. by -- gtk_tree_sortable_set_sort_func procedure Set_Default_Sort_Func
(Sortable : Gtk.Tree_Sortable.Gtk_Tree_Sortable;
Sort_Func : Gtk_Tree_Iter_Compare_Func;
User_Data : User_Data_Type);
-- Sets the default comparison function used when sorting to be -- Sort_Func. If the current sort column id of Sortable is -- GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, then the model will sort -- using this function. -- If Sort_Func is null, then there will be no default comparison -- function. This means that once the model has been sorted, it can't go -- back to the default state. In this case, when the current sort column -- id of Sortable is GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, the model -- will be unsorted. -- "sort_func": The comparison function -- "user_data": User data to pass to Sort_Func, or null end Set_Default_Sort_Func_User_Data;
procedure Set_Sort_Func
(Sortable : Gtk_Tree_Sortable;
Sort_Column_Id : Gint;
Sort_Func : Gtk_Tree_Iter_Compare_Func);
-- Sets the comparison function used when sorting to be Sort_Func. If the -- current sort column id of Sortable is the same as Sort_Column_Id, then -- the model will sort using this function. -- "sort_column_id": the sort column id to set the function for -- "sort_func": The comparison function generic type User_Data_Type (<>) is private;
with procedure Destroy (Data : in out User_Data_Type) is null;
package Set_Sort_Func_User_Data is
type Gtk_Tree_Iter_Compare_Func is access function
(Model : Gtk.Tree_Model.Gtk_Tree_Model; A : Gtk.Tree_Model.Gtk_Tree_Iter; B : Gtk.Tree_Model.Gtk_Tree_Iter; User_Data : User_Data_Type) return Gint;
-- A GtkTreeIterCompareFunc should return a negative integer, zero, or a -- positive integer if A sorts before B, A sorts with B, or A sorts after B -- respectively. If two iters compare as equal, their order in the sorted -- model is undefined. In order to ensure that the -- Gtk.Tree_Sortable.Gtk_Tree_Sortable behaves as expected, the -- GtkTreeIterCompareFunc must define a partial order on the model, i.e. it -- must be reflexive, antisymmetric and transitive. -- For example, if Model is a product catalogue, then a compare function -- for the "price" column could be one which returns 'price_of(A) - -- price_of(B)'. -- "model": The Gtk.Tree_Model.Gtk_Tree_Model the comparison is within -- "a": A Gtk.Tree_Model.Gtk_Tree_Iter in Model -- "b": Another Gtk.Tree_Model.Gtk_Tree_Iter in Model -- "user_data": Data passed when the compare func is assigned e.g. by -- Gtk.Tree_Sortable.Set_Sort_Func procedure Set_Sort_Func
(Sortable : Gtk.Tree_Sortable.Gtk_Tree_Sortable;
Sort_Column_Id : Gint;
Sort_Func : Gtk_Tree_Iter_Compare_Func;
User_Data : User_Data_Type);
-- Sets the comparison function used when sorting to be Sort_Func. If -- the current sort column id of Sortable is the same as Sort_Column_Id, -- then the model will sort using this function. -- "sort_column_id": the sort column id to set the function for -- "sort_func": The comparison function -- "user_data": User data to pass to Sort_Func, or null end Set_Sort_Func_User_Data;
procedure Sort_Column_Changed (Sortable : Gtk_Tree_Sortable);
pragma Import (C, Sort_Column_Changed, "gtk_tree_sortable_sort_column_changed");
-- Emits a Gtk.Tree_Sortable.Gtk_Tree_Sortable::sort-column-changed signal -- on Sortable. ---------------------- -- GtkAda additions -- ---------------------- Default_Sort_Column_Id : constant Gint := -1;
Unsorted_Sort_Column_Id : constant Gint := -2;
-- Two special values for the sort column ------------- -- Signals -- ------------- type Cb_Gtk_Tree_Sortable_Void is not null access procedure (Self : Gtk_Tree_Sortable);
type Cb_GObject_Void is not null access procedure
(Self : access Glib.Object.GObject_Record'Class);
Signal_Sort_Column_Changed : constant Glib.Signal_Name := "sort-column-changed";
procedure On_Sort_Column_Changed
(Self : Gtk_Tree_Sortable;
Call : Cb_Gtk_Tree_Sortable_Void;
After : Boolean := False);
procedure On_Sort_Column_Changed
(Self : Gtk_Tree_Sortable;
Call : Cb_GObject_Void;
Slot : not null access Glib.Object.GObject_Record'Class;
After : Boolean := False);
-- The ::sort-column-changed signal is emitted when the sort column or -- sort order of Sortable is changed. The signal is emitted before the -- contents of Sortable are resorted. ---------------- -- Interfaces -- ---------------- -- This class implements several interfaces. See Glib.Types -- -- - "Gtk_Tree_Sortable" function "+" (W : Gtk_Tree_Sortable) return Gtk_Tree_Sortable;
pragma Inline ("+");
private Null_Gtk_Tree_Sortable : constant Gtk_Tree_Sortable :=
Gtk_Tree_Sortable (Glib.Types.Null_Interface);
end Gtk.Tree_Sortable;