-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2007 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 widget is deprecated. Use Gtk.Tree_View instead.
--
-- This widget displays a multi-column list. Each line is made of
-- a number of column, each being able to display any kind of widget.
--
-- The intersection of a line and a column is called a Cell. Each cell can
-- have a different type (Cell_Text, Cell_Pixmap, Cell_Pixtext), and display
-- its contents depending on this type. For instance, the text is not
-- displayed in the type is Cell_Pixmap.
-- Note that this type is changed dynamically by some of the subprograms
-- below, like Set_Pixmap, Set_Text, ... and Set_Cell_Contents
--
-- This is one of the most powerful widgets in GtkAda, that can be used to
-- display an kind of information. Look also into using Gtk_Ctree, which is
-- a similar widget.
--
-- You can add scrolling in a Gtk_Clist by adding it in a Gtk_Scrolled_Window.
--
-- 2.8.17
-- Obsolescent widgets
-- create_clist.adb
with Gdk.Bitmap;
with Gdk.Color;
with Gdk.Pixmap;
with Gdk.Window;
with Glib.Glist;
pragma Elaborate_All (Glib.Glist);
with Gtk.Adjustment;
with Gtk.Container;
with Gtk.Enums;
with Gtk.Style;
with Gtk.Widget;
with Gtkada.Types;
with Unchecked_Conversion;
package Gtk.Clist is
pragma Obsolescent ("Use Gtk.Tree_View instead");
type Gtk_Clist_Record is new Gtk.Container.Gtk_Container_Record
with private;
type Gtk_Clist is access all Gtk_Clist_Record'Class;
type Gtk_Clist_Row is new Gdk.C_Proxy;
-- A row of the clist.
-- Application-specific data can be associated with each row.
-- In the following subprograms, rows can also be accessed via their
-- number, starting from 0.
type Gtk_Button_Action is new Guint;
Button_Ignored : constant Gtk_Button_Action := 0;
Button_Selects : constant Gtk_Button_Action := 1 ** 0;
Button_Drags : constant Gtk_Button_Action := 1 ** 1;
Button_Expands : constant Gtk_Button_Action := 1 ** 2;
type Gtk_Cell_Type is
(Cell_Empty,
Cell_Text,
Cell_Pixmap,
Cell_Pixtext,
Cell_Widget);
pragma Convention (C, Gtk_Cell_Type);
type Gtk_Sort_Type is (Ascending, Descending);
pragma Convention (C, Gtk_Sort_Type);
-- The order in which the rows should be sorted.
--
function Convert is new Unchecked_Conversion
(Gtk_Clist_Row, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Gtk_Clist_Row);
package Row_List is new Glib.Glist.Generic_List (Gtk_Clist_Row);
--
type Gtk_Clist_Compare_Func is access
function
(Clist : access Gtk_Clist_Record'Class;
Row1 : Gtk_Clist_Row;
Row2 : Gtk_Clist_Row) return Gint;
-- Function used when sorting a clist. This function takes two
-- rows as its arguments, and should return a Gint indicating in which
-- order the rows are found (-1 if Row1 comes first, 0 if they are equal,
-- 1 if Row2 comes first).
------------------------------------------------
-- Creating a list and setting the attributes --
------------------------------------------------
procedure Gtk_New (Widget : out Gtk_Clist; Columns : in Gint);
-- Create a list with Columns columns.
-- Each line will have this exact number of column
-- The number of columns can not be changed once the widget has been
-- created.
procedure Initialize
(Widget : access Gtk_Clist_Record'Class; Columns : in Gint);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
procedure Gtk_New
(Widget : out Gtk_Clist;
Columns : in Gint;
Titles : in Gtkada.Types.Chars_Ptr_Array);
-- Create a new list with Columns columns.
-- The title of the columns is specified in Titles.
-- The results are undefined (and can raise an exception) if Titles does
-- not have at least Columns items.
procedure Initialize
(Widget : access Gtk_Clist_Record'Class;
Columns : in Gint;
Titles : in Gtkada.Types.Chars_Ptr_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 a Gtk_Clist.
procedure Set_Hadjustment
(Clist : access Gtk_Clist_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
-- Set the horizontal adjustment used for the clist.
-- Note that such an adjustment is automatically created when the clist
-- is added to a Gtk_Scrolled_Window. You should rather use
-- Gtk.Scrolled_Window.Set_Hadjustment if you want to modify the
-- adjustment.
-- If there was already such an adjustment, it is unref-ed, and might
-- be deleted.
procedure Set_Vadjustment
(Clist : access Gtk_Clist_Record;
Adjustment : Gtk.Adjustment.Gtk_Adjustment);
-- Set the vertical adjustment used for the clist.
-- Note that such an adjustment is automatically created when the clist
-- is added to a Gtk_Scrolled_Window. You should rather use
-- Gtk.Scrolled_Window.Set_Hadjustment if you want to modify the
-- adjustment.
-- If there was already such an adjustment, it is unref-ed, and might
-- be deleted.
function Get_Hadjustment
(Clist : access Gtk_Clist_Record) return Gtk.Adjustment.Gtk_Adjustment;
-- Return the horizontal adjustment used for the clist.
-- This indicates what position the clist is presently displaying, and
-- by changing its value, the clist is automatically scrolled horizontally.
-- This is done automatically when the clist's parent is a
-- Gtk_Scrolled_Window.
function Get_Vadjustment
(Clist : access Gtk_Clist_Record) return Gtk.Adjustment.Gtk_Adjustment;
-- Return the vertical adjustment used for the clist.
-- This indicates what position the clist is presently displaying, and
-- by changing its value, the clist is automatically scrolled vertically.
-- This is done automatically when the clist's parent is a
-- Gtk_Scrolled_Window.
procedure Set_Selection_Mode
(Clist : access Gtk_Clist_Record;
Mode : in Gtk.Enums.Gtk_Selection_Mode);
-- Modify the selection mode for the clist.
-- This indicates whether one or more lines can be selected at the
-- same time in the clist, and how this selection can done by the
-- user (does he have to click explicitly on an item, or can he
-- browse through the clist and select the last item he was on, etc.)
--
-- Note that changing the selection mode to Selection_Single or
-- Selection_Browse will deselect all the items in the clist.
function Get_Selection_Mode
(Clist : access Gtk_Clist_Record) return Gtk.Enums.Gtk_Selection_Mode;
-- Return the selection mode for the clist.
--
function Get_Clist_Window
(Clist : access Gtk_Clist_Record) return Gdk.Window.Gdk_Window;
-- Returns the scrolling window used in the clist. This function is
-- kept for backward compatibility reasons, and you probably won't have
-- to use it.
--
--------------------
-- Visual aspects --
--------------------
procedure Freeze (Clist : access Gtk_Clist_Record);
-- Freeze all visual updates on the list, while you make big changes.
-- This is more efficient than working on an unfrozen list.
procedure Thaw (Clist : access Gtk_Clist_Record);
-- Thaw the list, ie reactivate all the visual updates.
-- This also forces an immediate refresh of the list.
-- Note that each Freeze must be followed by a Thaw. The visual updates
-- are not reactivated until the last Thaw has been emitted, but there is
-- an immediate refresh every time anyway.
procedure Set_Shadow_Type
(Clist : access Gtk_Clist_Record;
The_Type : in Gtk.Enums.Gtk_Shadow_Type);
-- Set the border style of the clist.
----------------------------
-- Modifying the contents --
----------------------------
function Append
(Clist : access Gtk_Clist_Record;
Text : in Gtkada.Types.Chars_Ptr_Array) return Gint;
-- Append a new row to the clist, and return the index of the row created.
-- The row is added at the end of the Clist.
-- The behavior is undefined if Text does not have at least as many items
-- as there are columns in the Clist.
function Prepend
(Clist : access Gtk_Clist_Record;
Text : in Gtkada.Types.Chars_Ptr_Array) return Gint;
-- Add a new row at the beginning of the clist, and return its index.
-- The behavior is undefined if Text does not have at least as many items
-- as there are columns in the Clist.
procedure Insert
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Text : in Gtkada.Types.Chars_Ptr_Array);
-- Add a new row in the clist.
-- The row 0 is the first in the clist. If Row is not in the range for
-- clist, the new row is added at the end. The behavior is undefined if
-- Text does not have enough items.
procedure Remove (Clist : access Gtk_Clist_Record; Row : in Gint);
-- Remove a row from the clist (0 is the first one).
procedure Clear (Clist : access Gtk_Clist_Record);
-- Clears the entire list. This is much faster than doing a Remove on each
-- line.
procedure Swap_Rows
(Clist : access Gtk_Clist_Record;
Row1 : in Gint;
Row2 : in Gint);
-- Exchange the position of two rows in the clist.
procedure Row_Move
(Clist : access Gtk_Clist_Record;
Source_Row : in Gint;
Dest_Row : in Gint);
-- Move the row at Source_Row to Dest_Row (0 indicates the first row in
-- the clist)
procedure Set_Sort_Column
(Clist : access Gtk_Clist_Record;
Column : Gint);
-- Indicate the column on which to sort the clist.
-- This column is relevant when you use Sort or Set_Auto_Sort below.
-- The first column is number 0.
function Get_Sort_Column (Clist : access Gtk_Clist_Record) return Gint;
-- Return the column on which the clist is sorted.
procedure Set_Sort_Type
(Clist : access Gtk_Clist_Record;
Sort_Type : Gtk_Sort_Type);
-- Indicate in which order the sort should be done on the clist
-- (ascending or descending).
function Get_Sort_Type
(Clist : access Gtk_Clist_Record) return Gtk_Sort_Type;
-- Return the sort type currently used for the list
procedure Sort (Clist : access Gtk_Clist_Record);
-- Sort the lines of the clist, based on the column set by Set_Sort_Column,
-- and in the order set by Set_Sort_Type.
procedure Set_Auto_Sort
(Clist : access Gtk_Clist_Record;
Auto_Sort : Boolean);
-- If Auto_Sort is true, then the clist will be automatically sorted every
-- time a new line is inserted into the clist.
procedure Set_Compare_Func
(Clist : access Gtk_Clist_Record;
Func : Gtk_Clist_Compare_Func);
-- Set the function used when sorting the list. This function takes two
-- rows as its arguments, and should return a Gint indicating in which
-- order the rows are found (-1 if Row1 comes first, 0 if they are equal,
-- 1 if Row2 comes last).
-- Func should be null to restore the default sorting functions.
-------------
-- Columns --
-------------
function Get_Columns (Clist : access Gtk_Clist_Record) return Gint;
-- Return the number of columns in the clist.
procedure Column_Titles_Hide (Clist : access Gtk_Clist_Record);
-- Hide the column titles for the list.
-- This is the default behavior if no column titles were given when the
-- list was created.
procedure Column_Titles_Show (Clist : access Gtk_Clist_Record);
-- Show the column titles for the list.
-- This is the default behavior if some column titles were given when the
-- list was created.
procedure Column_Title_Active
(Clist : access Gtk_Clist_Record;
Column : in Gint);
-- Set the column title to be an activate title.
-- In other words, answer all button presses, highlights when the mouse is
-- over it, ...
procedure Column_Title_Passive
(Clist : access Gtk_Clist_Record;
Column : in Gint);
-- Set the column title to be passive.
-- Act just as a title, and do not react to mouse events.
procedure Column_Titles_Active (Clist : access Gtk_Clist_Record);
-- Set all column titles to be active.
procedure Column_Titles_Passive (Clist : access Gtk_Clist_Record);
-- Set all column titles to be passive.
procedure Set_Column_Title
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Title : in UTF8_String);
-- Set the text for the button of the column's title.
-- See Set_Column_Widget if you want to put a pixmap inside the button.
function Get_Column_Title
(Clist : access Gtk_Clist_Record;
Column : in Gint) return UTF8_String;
-- Return the text used for the title's column.
-- This is a copy of the title, so you can't modify it to automatically
-- change the column's title.
procedure Set_Column_Widget
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class);
-- Modify the widget used in the Gtk_Button that is the column's title.
-- By default, this button contains a simple Gtk_Label, which is replaced
-- by Widget. This is the function to use if you want to put a pixmap
-- (or a Gtk_Box that contains both a pixmap and some text) in a column's
-- title.
function Get_Column_Widget
(Clist : access Gtk_Clist_Record;
Column : in Gint) return Gtk.Widget.Gtk_Widget;
-- Return the child of the button that makes the column's title.
-- Unless you changed it with Set_Column_Widget, this will return a
-- Gtk_Label. Note also that if this widget was not created in Ada, but
-- transparently by gtk+, you have to 'with' Gtk.Type_Conversion so that
-- the correct type of the widget is created (See the user's guide for
-- more information on type conversion).
procedure Set_Column_Justification
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Justification : in Gtk.Enums.Gtk_Justification);
-- Change the way the text in the whole column is justified.
-- This function has no effect on the title if you used Set_Column_Widget
-- before.
procedure Set_Column_Visibility
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Visible : in Boolean);
-- Modify the visibility of a column.
-- Note that GtkAda prevents the last remaining visible column to be
-- hidden. Nothing will be done if you try to hide that last column.
-- See the example below for an example how to hide all the columns but
-- one.
procedure Set_Column_Resizeable
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Resizeable : in Boolean);
-- Set whether the column can be dynamically resized with the mouse.
-- If Resizeable is true, then the column can be resized by clicking
-- and dragging the lines that separates the column from the next one.
procedure Set_Column_Auto_Resize
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Auto_Resize : in Boolean);
-- Set whether the column should automatically be resized to the optimal
-- size (based on its contents). Note that this operation could slow things
-- down a lot if you have a lot of items in your list.
function Columns_Autosize (Clist : access Gtk_Clist_Record) return Gint;
-- Set all the columns' width to their optimal size.
-- Return the total width of the clist after this operation.
function Optimal_Column_Width
(Clist : access Gtk_Clist_Record;
Column : Gint) return Gint;
-- Return the optimal width for Column, based on its contents.
-- This is the maximal cell width in the column.
procedure Set_Column_Width
(Clist : access Gtk_Clist_Record;
Column : in Gint;
Width : in Gint);
-- Set the column width in pixels.
-- By default, the column's width is chosen from the column's title.
procedure Set_Column_Min_Width
(Clist : access Gtk_Clist_Record;
Column : Gint;
Min_Width : Gint);
-- Set the minimal width for the column, in pixels.
-- if Min_Width is negative, there is no limit on the minimal width for
-- the column.
procedure Set_Column_Max_Width
(Clist : access Gtk_Clist_Record;
Column : Gint;
Max_Width : Gint);
-- Set the maximal width for the column, in pixels.
-- If Max_Width is negative, there is no limit on the maximal width for
-- the column.
----------
-- Rows --
----------
function Get_Rows (Clist : access Gtk_Clist_Record) return Gint;
-- Return the number of rows in the clist.
procedure Set_Row_Height
(Clist : access Gtk_Clist_Record;
Height : Gint);
-- Set the height of the rows, in pixels.
-- if Height is 0, the chosen height will be the current's font height.
function Row_Is_Visible
(Clist : access Gtk_Clist_Record;
Row : in Gint) return Gtk.Enums.Gtk_Visibility;
-- Return the visibility status of the row.
procedure Set_Foreground
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Color : in Gdk.Color.Gdk_Color);
-- Set the foreground color for the row.
-- The color must already be allocated.
-- If no such row exists in the list, nothing is done.
procedure Set_Background
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Color : in Gdk.Color.Gdk_Color);
-- Set the background color for the row.
-- The color must already be allocated.
-- If no such row exists in the list, nothing is done.
procedure Set_Row_Style
(Clist : access Gtk_Clist_Record; Row : Gint;
Style : in Gtk.Style.Gtk_Style);
-- Set the default style for the cells in the row. This can be
-- overridden for each cell with Set_Cell_Style.
function Get_Row_Style
(Clist : access Gtk_Clist_Record;
Row : in Gint) return Gtk.Style.Gtk_Style;
-- Return the default style used for the row.
procedure Set_Selectable
(Clist : access Gtk_Clist_Record;
Row : Gint;
Selectable : Boolean);
-- Indicate whether the row can be selected or not.
-- The default value is True.
function Get_Selectable
(Clist : access Gtk_Clist_Record;
Row : Gint) return Boolean;
-- Return the selectable status of the row.
procedure Select_Row
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint);
-- Emit the signal "select_row". This simulates the user pressing
-- the mouse on Row, Column on the clist.
procedure Unselect_Row
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint);
-- Emit the signal "unselect_row", as if the user had clicked on
-- Row, Column on the clist.
procedure Undo_Selection (Clist : access Gtk_Clist_Record);
-- Undo the last select/unselect operation.
procedure Get_Selection_Info
(Clist : access Gtk_Clist_Record;
X : in Gint;
Y : in Gint;
Row : out Gint;
Column : out Gint;
Is_Valid : out Boolean);
-- Return the Row/Column corresponding to the coordinates X,Y in the
-- Row column. The coordinates X,Y are relative to the clist window
-- (ie 0,0 is the top left corner of the clist).
-- The result is valid only if Is_Valid is true
procedure Select_All (Clist : access Gtk_Clist_Record);
-- Select all the rows in the clist. This only works if the selection
-- mode allows for multiple rows selected at the same time (extended or
-- multiple).
procedure Unselect_All (Clist : access Gtk_Clist_Record);
-- Deselect all the rows in the clist. If the selection mode is
-- Browse, then only the current line is deselected.
function Get_Focus_Row (Clist : access Gtk_Clist_Record) return Gint;
-- Return the number of the line that currently has the focus.
function Get_Row_List
(Clist : access Gtk_Clist_Record) return Row_List.Glist;
-- Return the list of all the rows in the clist. This might speed up
-- the access to the rows a little.
-- You can then use the function Set_Cell_Contents to modify the cells
-- in the row, and Get_Text or Get_Pixmap to get its contents.
function Get_Selection
(Widget : access Gtk_Clist_Record) return Gtk.Enums.Gint_List.Glist;
-- Return the list of selected rows, by number.
-----------
-- Cells --
-----------
function Get_Cell_Type
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint) return Gtk_Cell_Type;
-- Return the type of the cell at Row/Column.
-- This indicates which of the functions Get_Text. Get_Pixmap, etc.
-- below you can use.
procedure Set_Text
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Text : in UTF8_String);
-- Set the cell's text, replacing its current contents.
-- This changes the type of the cell to Cell_Text. The pixmap (if any)
-- will no longer be displayed.
function Get_Text
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint) return UTF8_String;
-- Return the text contained in cell. The type of the cell should be
-- either Cell_Text or Cell_Pixtext.
-- If there was a problem, a null-length string is returned.
-- The problem might appear in case the row or the column are
-- invalid, or if the cell does not contain any text.
function Get_Text
(Clist : access Gtk_Clist_Record;
Row : Gtk_Clist_Row;
Column : in Gint) return UTF8_String;
-- Return the text contained in cell. The Row can be obtained from
-- Get_Row_List, this function speeds up the access a little compared
-- to the other Get_Text above.
procedure Set_Pixmap
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Pixmap : in Gdk.Pixmap.Gdk_Pixmap;
Mask : in Gdk.Bitmap.Gdk_Bitmap);
-- Set the cell's pixmap, replacing its current contents.
-- The type of the cell becomes Cell_Pixmap, and the text is no longer
-- displayed.
procedure Get_Pixmap
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Pixmap : out Gdk.Pixmap.Gdk_Pixmap;
Mask : out Gdk.Bitmap.Gdk_Bitmap;
Is_Valid : out Boolean);
-- Return the pixmap contained in a cell. The type of the cell should
-- be Cell_Pixmap.
-- The result is meaningful only if Is_Valid is True. If the Cell did not
-- contain a pixmap, Is_Valid is set to False
procedure Get_Pixmap
(Clist : access Gtk_Clist_Record;
Row : in Gtk_Clist_Row;
Column : in Gint;
Pixmap : out Gdk.Pixmap.Gdk_Pixmap;
Mask : out Gdk.Bitmap.Gdk_Bitmap;
Is_Valid : out Boolean);
-- Return the pixmap contained in a cell. Row can be obtained directly with
-- Get_Row_List, and speeds up the access a little compared to the previous
-- Get_Pixmap function.
procedure Set_Pixtext
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Text : in UTF8_String;
Spacing : in Guint8;
Pixmap : in Gdk.Pixmap.Gdk_Pixmap;
Mask : in Gdk.Bitmap.Gdk_Bitmap);
-- Set both the text and the pixmap for the cell.
-- Replace its current contents. The type of the cell becomes Cell_Pixtext,
-- and both the text and the pixmap are displayed.
procedure Get_Pixtext
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Spacing : out Guint8;
Pixmap : out Gdk.Pixmap.Gdk_Pixmap;
Mask : out Gdk.Bitmap.Gdk_Bitmap;
Is_Valid : out Boolean);
-- The result is not meaningful if Is_Valid is False.
-- The only way to get the string is to use Get_Text, since a String is
-- an unconstrained type in Ada and is not really convenient to use as an
-- out parameter.
procedure Set_Cell_Style
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Style : in Gtk.Style.Gtk_Style);
-- Set the style (font, color, ...) used for the cell.
-- This overrides the row's style.
function Get_Cell_Style
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint) return Gtk.Style.Gtk_Style;
-- Return the style of the cell.
procedure Set_Shift
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Vertical : in Gint;
Horizontal : in Gint);
-- Set a horizontal and vertical shift for drawing the content of the cell.
-- Both shifts can be either positive or negative.
-- This is particularly useful for indenting items in a columns.
procedure Set_Cell_Contents
(Clist : access Gtk_Clist_Record;
Row : Gtk_Clist_Row;
Column : Gint;
Cell_Type : Gtk_Cell_Type;
Text : UTF8_String;
Spacing : Guint8;
Pixmap : Gdk.Pixmap.Gdk_Pixmap;
Mask : Gdk.Bitmap.Gdk_Bitmap);
-- Modify the contents and type of a cell.
-- Cell_Type indicates what should be displayed in the cell. Note that
-- if you do not want any string, you should pass an empty string "".
-- You get Row from Get_Row_List.
-------------------------
-- Reordering the list --
-------------------------
procedure Set_Reorderable
(Clist : access Gtk_Clist_Record; Reorderable : Boolean);
-- Set whether the list can be dynamically reordered by the user.
-- (using a simple drag-n-drop protocol).
procedure Set_Use_Drag_Icons
(Clist : access Gtk_Clist_Record; Use_Icons : Boolean);
-- Set whether drag icons are shown while the user is reordering the list.
-- The default value is True.
procedure Set_Button_Actions
(Clist : access Gtk_Clist_Record;
Button : Guint;
Button_Action : Gtk_Button_Action);
-- Set the action for a specific button on the list.
-- The default if for the left mouse button to select or drag and item,
-- the other buttons are ignored.
-- The Button_Expands action has no effect on a clist.
procedure Moveto
(Clist : access Gtk_Clist_Record;
Row : in Gint;
Column : in Gint;
Row_Align : in Gfloat;
Col_Align : in Gfloat);
-- Scroll the list so that Row/Column is visible.
-- If Row is -1, the clist is not scrolled vertically.
-- If Column is -1, the clist is not scrolled horizontally.
-- The new location of Row/Column depends on the value of Row_Align and
-- Col_Align (from 0.0x0.0 (top-left) to 1.0x1.0 (bottom-right), all
-- intermediate values are possible).
---------------
-- Row_Data --
---------------
-- You can associate one private data with each row in the clist. If you
-- want to store multiple values, you should create a record type that
-- contains all the values, and associate with value with the relevant
-- line in the clist.
-- This package is the equivalent of Gtk.Widget.User_Data for the Clists.
--
-- This is your responsibility to use the Get and Set functions from the
-- same generic package. However, you can use different packages for
-- different lines (although this will definitely make things harder to
-- use!)
--
-- Note also that an internal copy of the Data is done, therefore the
-- "find" functions found in gtk+ have no equivalent in GtkAda, although it
-- would be enough to write one by iterating over the Row numbers.
generic
--
type Data_Type (<>) is private;
--
package Row_Data is
function Get
(Object : access Gtk_Clist_Record'Class;
Row : in Gint) return Data_Type;
-- Get the data associated to a specific row.
function Get
(Object : access Gtk_Clist_Record'Class;
Row : in Gtk_Clist_Row) return Data_Type;
-- Same as above, but acts directly on a row obtained through
-- Get_Row_List. This is faster for big lists.
procedure Set
(Object : access Gtk_Clist_Record'Class;
Row : in Gint;
Data : in Data_Type);
-- Modify the data associated with a row
procedure Set
(Object : access Gtk_Clist_Record'Class;
Row : in Gtk_Clist_Row;
Data : in Data_Type);
-- Same as above but acts directly on a row obtained through
-- Get_Row_List. This is faster for big lists.
private
--
procedure Free_Data (Data : System.Address);
-- Free memory associated with Data
pragma Convention (C, Free_Data);
--
end Row_Data;
--
procedure Set_Show_Titles (Clist : access Gtk_Clist_Record; Show : Boolean);
-- If show is true, call Column_Titles_Show. Do nothing otherwise.
-- This procedure is primarily used by Gate generated code.
--
----------------
-- Properties --
----------------
--
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties.
--
--
-------------
-- Signals --
-------------
--
-- The following new signals are defined for this widget:
--
-- - "select_row"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Row : Gint;
-- Column : Gint;
-- Event : Gdk.Event.Gdk_Event);
--
-- Emitted when a row is selected. Column contains the column number in
-- which the user has clicked, or -1 if the selection was done internally
-- by GtkAda.
-- Event will be null if the selection was not triggered by an event, eg
-- if the row was selected through a call to Select_Row.
--
-- - "unselect_row"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Row : Gint;
-- Column : Gint;
-- Event : Gdk.Event.Gdk_Event);
--
-- Emitted to request the unselection of a row. Event will be null most
-- of the time when the event is emitted directly by GtkAda. You should
-- use Unselect_Row instead.
--
-- - "row_move"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Source_Row : Gint;
-- Dest_Row : Gint);
--
-- Emitted to request the change of a Source_Row to Dest_Row. You should
-- use Row_Move instead.
--
-- - "click_column"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Column : Gint);
--
-- Emitted when the user has clicked on one of the buttons at the top
-- of a column. The first column has number 0.
--
-- - "resize_column"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Column : Gint;
-- Width : Gint);
--
-- Emitted to request a new size for a given column. You should use
-- Set_Column_Width instead.
--
-- - "toggle_focus_row"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Emitted to request the change of the selection status (selected/
-- unselected) of the focus row. This signal is not emitted internally
-- by GtkAda.
--
-- - "select_all"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Emitted to request the selection of all the rows in the Clist, if the
-- selection mode allows. You should use Select_All instead.
--
-- - "unselect_all"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Emitted to request the unselection of all the rows in the Clist, if
-- the selection mode is different from Browse. You should use
-- Unselect_All instead.
--
-- - "undo_selection"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Emitted to request the cancellation of the last select/unselect
-- operation. You should use Undo_Selection instead.
--
-- - "start_selection"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Request the start of the selection. This signal is not emitted
-- internally by GtkAda, but acts as if the user had clicked on the
-- focus row (the exact visual modification depends on the selection
-- mode).
--
-- - "end_selection"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Ends the current selection process. This is never emitted internally
-- by GtkAda, but acts as if the user had just released the mouse button.
--
-- - "toggle_add_mode"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Changes the add_mode for the clist (indicates whether the next line
-- clicked on will be added to the selection or will replace it).
-- This is never emitted internally by GtkAda.
--
-- - "extend_selection"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type;
-- Position : Gfloat;
-- Auto_Start_Selection : Boolean);
--
-- Extends the current selection. Position is used only for certain
-- values of Scroll_Type. It is never emitted internally by GtkAda. It
-- has no effect if the selection mode is not Extended.
--
-- - "scroll_vertical"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type;
-- Position : Gfloat);
--
-- Scrolls the clist vertically. This also modifies the selection.
-- It is never emitted internally by GtkAda. You should consider using
-- Moveto instead.
--
-- - "scroll_horizontal"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class;
-- Scroll_Type : Gtk.Enums.Gtk_Scroll_Type;
-- Position : Gfloat);
--
-- Scrolls the clist horizontally. This also modifies the selection.
-- It is never emitted internally by GtkAda. You should consider using
-- Moveto instead.
--
-- - "abort_column_resize"
-- procedure Handler (Clist : access Gtk_Clist_Record'Class);
--
-- Aborts the current interactive resizing of the column by the user.
-- This releases the grab done on the pointer. It is never emitted
-- internally by GtkAda.
--
--
Signal_Abort_Column_Resize : constant Glib.Signal_Name :=
"abort_column_resize";
Signal_Click_Column : constant Glib.Signal_Name :=
"click_column";
Signal_End_Selection : constant Glib.Signal_Name :=
"end_selection";
Signal_Extend_Selection : constant Glib.Signal_Name :=
"extend_selection";
Signal_Resize_Column : constant Glib.Signal_Name :=
"resize_column";
Signal_Row_Move : constant Glib.Signal_Name :=
"row_move";
Signal_Scroll_Horizontal : constant Glib.Signal_Name :=
"scroll_horizontal";
Signal_Scroll_Vertical : constant Glib.Signal_Name :=
"scroll_vertical";
Signal_Select_All : constant Glib.Signal_Name :=
"select_all";
Signal_Select_Row : constant Glib.Signal_Name :=
"select_row";
Signal_Set_Scroll_Adjustments : constant Glib.Signal_Name :=
"set_scroll_adjustments";
Signal_Start_Selection : constant Glib.Signal_Name :=
"start_selection";
Signal_Toggle_Add_Mode : constant Glib.Signal_Name :=
"toggle_add_mode";
Signal_Toggle_Focus_Row : constant Glib.Signal_Name :=
"toggle_focus_row";
Signal_Undo_Selection : constant Glib.Signal_Name :=
"undo_selection";
Signal_Unselect_All : constant Glib.Signal_Name :=
"unselect_all";
Signal_Unselect_Row : constant Glib.Signal_Name :=
"unselect_row";
private
type Gtk_Clist_Record is new Gtk.Container.Gtk_Container_Record with record
Sort_Func : Gtk_Clist_Compare_Func := null;
end record;
pragma Import (C, Get_Type, "gtk_clist_get_type");
end Gtk.Clist;
--
-- ../examples/documentation/clist.adb
--
-- The following subprograms never had a binding, and are now obsolescent:
-- No binding: gtk_clist_find_row_from_data
-- No binding: gtk_clist_set_row_data