-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-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. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- A Gtk_Sheet is a table like the one you can find in most spreadsheets.
-- Each cell can contain some text or any kind of widgets.
--
-- gtkextra 2.1.1
-- GtkExtra, additional widgets
-- create_sheet.adb
-- gtk-sheet
with Gtk.Adjustment; use Gtk.Adjustment;
with Gtk.Container;
with Gtk.Enums; use Gtk.Enums;
with Gtk.GEntry;
with Gdk.Rectangle;
with Gdk.Color;
with Gdk.GC;
with Pango.Font;
with Gtk.Widget;
package Gtk.Extra.Sheet is
type Gtk_Sheet_Record is new Gtk.Container.Gtk_Container_Record
with private;
type Gtk_Sheet is access all Gtk_Sheet_Record'Class;
type Gtk_Sheet_Range_Record is record
Row0, Col0 : Gint; -- Upper-left cell
Rowi, Coli : Gint; -- Lower-Right cell
end record;
type Gtk_Sheet_Range is access all Gtk_Sheet_Range_Record;
-- A range in the sheet.
-- This is a part of the sheet represented by its upper-left cell and
-- its lower-right cell.
-- Most operations below apply to such ranges.
type Gtk_Sheet_Child_Record is
new Gtk.Widget.Gtk_Widget_Record with private;
type Gtk_Sheet_Child is access all Gtk_Sheet_Child_Record'Class;
-- A widget insert in the sheet.
-- This structure includes both a widget pointer and the position in the
-- table in which it is put.
----------------
-- Enum types --
----------------
--
type Sheet_Attr_Type is
(Sheet_Foreground,
Sheet_Background,
Sheet_Font,
Sheet_Justification,
Sheet_Border,
Sheet_Border_Color,
Sheet_Is_Editable,
Sheet_Is_Visible);
-- Attributes that can be set for the sheet.
-- No function is provided at the Ada level to modify these attributes
-- directly.
pragma Convention (C, Sheet_Attr_Type);
--
type Sheet_State is
(Sheet_Normal,
Sheet_Row_Selected,
Sheet_Column_Selected,
Sheet_Range_Selected);
-- The state of the selection.
pragma Convention (C, Sheet_State);
type Gtk_Sheet_Border is new Integer;
-- Mask that indicates which borders should be visible in a cell.
No_Border : constant Gtk_Sheet_Border;
Left_Border : constant Gtk_Sheet_Border;
Right_Border : constant Gtk_Sheet_Border;
Top_Border : constant Gtk_Sheet_Border;
Bottom_Border : constant Gtk_Sheet_Border;
All_Borders : constant Gtk_Sheet_Border;
-------------------------------
-- Creation and modification --
-------------------------------
procedure Gtk_New
(Sheet : out Gtk_Sheet;
Rows : Guint;
Columns : Guint;
Title : UTF8_String := "";
Entry_Type : Gtk_Type := GType_Invalid);
-- Create a new sheet with a specific number of rows and columns.
-- You can fully specify which type the entry used to modify the value of
-- cells should have. The value of Entry_Type can be found by using one
-- of the Get_Type subprograms in the GtkAda packages.
-- The Title is internal, and does not appear on the screen.
procedure Initialize
(Sheet : access Gtk_Sheet_Record'Class;
Rows : Guint;
Columns : Guint;
Title : UTF8_String := "";
Entry_Type : Gtk_Type := GType_Invalid);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
procedure Gtk_New_Browser
(Sheet : out Gtk_Sheet;
Rows : Guint;
Columns : Guint;
Title : UTF8_String := "");
-- Create a new sheet browser with a specific number of rows and columns.
-- This is a standard Gtk_Sheet, except that it is read-only and that its
-- cells will automatically resize themselves depending on their contents.
procedure Initialize_Browser (Sheet : access Gtk_Sheet_Record'Class;
Rows : in Guint;
Columns : in Guint;
Title : in UTF8_String := "");
-- 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_Sheet.
procedure Set_Hadjustment
(Sheet : access Gtk_Sheet_Record;
Adjustment : access Gtk_Adjustment_Record'Class);
-- Change the horizontal adjustment.
-- It indicates what range of columns is visible.
procedure Set_Vadjustment
(Sheet : access Gtk_Sheet_Record;
Adjustment : access Gtk_Adjustment_Record'Class);
-- Change the vertical adjustment.
-- It indicates what range of rows is visible.
function Get_Vadjustment
(Sheet : access Gtk_Sheet_Record)
return Gtk.Adjustment.Gtk_Adjustment;
-- Return the adjustment used to indicate the range of visible rows.
function Get_Hadjustment
(Sheet : access Gtk_Sheet_Record)
return Gtk.Adjustment.Gtk_Adjustment;
-- Return the adjustment used to indicate the range of visible columns.
procedure Change_Entry
(Sheet : access Gtk_Sheet_Record;
Entry_Type : Gtk_Type);
-- Change the type of widget used to interactively modify the value of
-- the cells.
function Get_Entry
(Sheet : access Gtk_Sheet_Record) return Gtk.GEntry.Gtk_Entry;
-- Return the entry used to modify the content of the cells.
-- This can be the same widget as Get_Entry_Widget, if set, or some default
-- widget associated with the specific child otherwise
function Get_Entry_Widget
(Sheet : access Gtk_Sheet_Record) return Gtk.Widget.Gtk_Widget;
-- Return the entry used to modify the content of the cells.
procedure Set_Title
(Sheet : access Gtk_Sheet_Record;
Title : UTF8_String);
-- Change the title of the sheet.
procedure Freeze (Sheet : access Gtk_Sheet_Record);
-- Freeze all visual updates of the sheet, until you thaw it.
-- The update will occur in a more efficient way.
procedure Thaw (Sheet : access Gtk_Sheet_Record);
-- Thaw the sheet, so that visual updates occur again.
-- Note that you have to call Thaw as many times as you have called
-- Freeze to actually thaw the widget.
procedure Moveto
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Column : Gint;
Row_Align : Gfloat;
Col_Align : Gfloat);
-- Scroll the viewing area to (Row, Column).
-- (Row_Align, Col_Align) represent the location on the screen that the
-- cell should appear at. (0.0, 0.0) is at the top-left of the screen,
-- whereas (1.0, 1.0) is at the bottom-right corner.
-- If Row or Column is negative, there is no change.
procedure Set_Background
(Sheet : access Gtk_Sheet_Record; Color : Gdk.Color.Gdk_Color);
-- Change the background color of the cells.
procedure Set_Grid
(Sheet : access Gtk_Sheet_Record; Color : Gdk.Color.Gdk_Color);
-- Set the color to use for the grid.
procedure Show_Grid
(Sheet : access Gtk_Sheet_Record; Show : Boolean);
-- Whether the grid should be made visible
function Grid_Visible (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether the grid is currently visible
----------------------------
-- Selection and Clipping --
----------------------------
function Get_State (Sheet : access Gtk_Sheet_Record) return Sheet_State;
-- Return the status of the selection in the sheet.
function Get_Range (Sheet : access Gtk_Sheet_Record) return Gtk_Sheet_Range;
-- Return the selected range.
procedure Get_Visible_Range
(Sheet : access Gtk_Sheet_Record;
The_Range : out Gtk_Sheet_Range);
-- Return the range visible on the screen.
procedure Set_Selection_Mode
(Sheet : access Gtk_Sheet_Record;
Mode : Gtk.Enums.Gtk_Selection_Mode);
-- Change the selection mode.
procedure Select_Column
(Sheet : access Gtk_Sheet_Record;
Column : Gint);
-- Replace the current selection with a specific column.
-- The range is highlighted.
procedure Select_Row
(Sheet : access Gtk_Sheet_Record;
Row : Gint);
-- Replace the current selection with a specific row.
-- The range is highlighted.
procedure Set_Autoresize
(Sheet : access Gtk_Sheet_Record; Autoresize : Boolean);
-- Whether cells should automatically resize to fit their contents
function Autoresize (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether cells automatically resize to fit their contents
procedure Set_Autoscroll
(Sheet : access Gtk_Sheet_Record; Autoscroll : Boolean);
-- Whether the sheet should automatically scroll to show the active cell at
-- all times.
function Autoscroll (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether the sheet automatically scrolls to show the active cell at all
-- times.
procedure Set_Clip_Text
(Sheet : access Gtk_Sheet_Record; Clip : Boolean);
-- Set when the text contained in the cells is automatically clipped to
-- their width.
function Clip_Text (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether the text contained in the cells is automatically clipped to
-- their width.
procedure Set_Justify_Entry
(Sheet : access Gtk_Sheet_Record; Justify_Entry : Boolean);
-- Set when the justification attribute for entries should be taken into
-- account
function Justify_Entry (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether the justification attribute is used for entries
procedure Set_Locked
(Sheet : access Gtk_Sheet_Record; Locked : Boolean);
-- If Locked is true, the cells are no longer editable
function Locked (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether cells are currently read-only
procedure Select_Range
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range);
-- Select a new range of cells.
procedure Unselect_Range (Sheet : access Gtk_Sheet_Record);
-- Unselect a specific range of cells.
-- If null is passed, the current selected range is used.
procedure Clip_Range (Sheet : access Gtk_Sheet_Record;
The_Range : in Gtk_Sheet_Range);
-- Create a new clip range, which is copied to the clipboard
-- That range is flashed on the screen.
procedure Unclip_Range (Sheet : access Gtk_Sheet_Record);
-- Destroy the clip area.
function In_Clip (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether a range was copied to the clipboard
function Set_Active_Cell
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Column : Gint)
return Boolean;
-- Set active cell where the entry will be displayed.
-- Returns FALSE if the current cell can not be deactivated or if the
-- requested cell can't be activated.
-- Depending on the value passed to Set_Autoscroll, the sheet might be
-- scrolled.
procedure Get_Active_Cell
(Sheet : access Gtk_Sheet_Record;
Row : out Gint;
Column : out Gint);
-- Return the coordinates of the active cell.
-- This is the cell that the user is currently editing.
-------------
-- Columns --
-------------
procedure Set_Column_Title
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Title : UTF8_String);
-- Modify the title of a column.
-- The first column on the left has the number 0.
-- Note that this title does not appear on the screen, and can only be
-- used internally to find a specific column.
function Get_Column_Title
(Sheet : access Gtk_Sheet_Record;
Column : Gint) return UTF8_String;
-- Return the title of a specific column.
procedure Set_Column_Titles_Height
(Sheet : access Gtk_Sheet_Record; Height : Guint);
-- Modify the height of the row in which the column titles appear.
procedure Column_Button_Add_Label
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Label : UTF8_String);
-- Modify the label of the button that appears at the top of each column.
function Column_Button_Get_Label
(Sheet : access Gtk_Sheet_Record; Column : Gint) return UTF8_String;
-- Return the label for the button that appears at the top of each column
procedure Column_Button_Justify
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Justification : Gtk.Enums.Gtk_Justification);
-- Modify the justification for the label in the column button.
procedure Show_Column_Titles (Sheet : access Gtk_Sheet_Record);
-- Show the row in which the column titles appear.
procedure Hide_Column_Titles (Sheet : access Gtk_Sheet_Record);
-- Hide the row in which the column titles appear.
function Column_Titles_Visible
(Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether a special row is added at the top to show the title of the
-- columns.
procedure Columns_Set_Sensitivity
(Sheet : access Gtk_Sheet_Record;
Sensitive : Boolean);
-- Modify the sensitivity of all the columns.
-- If Sensitive is False, the columns can not be resized dynamically.
-- This also modifies the sensitivity of the button at the top of the
-- columns.
procedure Column_Set_Sensitivity
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Sensitive : Boolean);
-- Modify the sensitivity of a specific column and its title button.
-- If Sensitive if False, the column can not be dynamically resized.
procedure Column_Set_Visibility
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Visible : Boolean);
-- Change the visibility of a column.
procedure Columns_Set_Resizable
(Sheet : access Gtk_Sheet_Record; Resizable : Boolean);
-- Whether columns are resizable
function Columns_Resizable (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether columns are resizable
procedure Column_Label_Set_Visibility
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Visible : Boolean := True);
-- Change the visibility of the label in a given column.
procedure Columns_Labels_Set_Visibility
(Sheet : access Gtk_Sheet_Record;
Visible : Boolean := True);
-- Change the visibility for all the column labels.
procedure Set_Column_Width
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Width : Guint);
-- Modify the width in pixels of a specific column.
function Get_Column_Width (Sheet : access Gtk_Sheet_Record;
Column : in Gint)
return Gint;
-- Return the width in pixels of the Column-nth in Sheet.
procedure Add_Column
(Sheet : access Gtk_Sheet_Record;
Ncols : Guint);
-- Add some empty columns at the end of the sheet.
procedure Insert_Columns
(Sheet : access Gtk_Sheet_Record;
Col : Guint;
Ncols : Guint);
-- Add Ncols empty columns just before the columns number Col.
procedure Delete_Columns
(Sheet : access Gtk_Sheet_Record;
Col : Guint;
Ncols : Guint);
-- Delete Ncols columns starting from Col.
procedure Column_Set_Justification
(Sheet : access Gtk_Sheet_Record;
Column : Gint;
Justification : Gtk.Enums.Gtk_Justification);
-- Set the default justification for the cells in the specific column.
function Get_Columns_Count (Sheet : access Gtk_Sheet_Record) return Guint;
-- Return the maximum column number of the displayed cells.
----------
-- Rows --
----------
procedure Set_Row_Title
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Title : UTF8_String);
-- Modify the title of a row.
-- The first row at the top has the number 0.
-- Note that this title does not appear on the screen, and can only be
-- used internally to find a specific row.
function Get_Row_Title
(Sheet : access Gtk_Sheet_Record; Row : Gint) return UTF8_String;
-- Return the title of a specific row.
procedure Set_Row_Titles_Width
(Sheet : access Gtk_Sheet_Record; Width : Guint);
-- Modify the width of the column that has the row titles.
procedure Row_Button_Add_Label
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Label : UTF8_String);
-- Modify the label of the button that appears on the left of each row.
function Row_Button_Get_Label
(Sheet : access Gtk_Sheet_Record; Row : Gint) return UTF8_String;
-- Return the label for the button that appears on the left of each row.
procedure Row_Button_Justify
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Justification : Gtk.Enums.Gtk_Justification);
-- Modify the justification for the label of the row button.
procedure Show_Row_Titles (Sheet : access Gtk_Sheet_Record);
-- Show the column in which the row titles appear.
procedure Hide_Row_Titles (Sheet : access Gtk_Sheet_Record);
-- Hide the column in which the row titles appear.
function Row_Titles_Visible
(Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether a special column is added to the left to show the title of the
-- rows.
procedure Rows_Set_Sensitivity (Sheet : access Gtk_Sheet_Record;
Sensitive : in Boolean);
-- Modify the sensitivity of all the rows.
-- If Sensitive is False, the rows can not be resized dynamically.
-- This also modifies the sensitivity of the button at the left of the
-- row.
procedure Row_Set_Sensitivity (Sheet : access Gtk_Sheet_Record;
Row : in Gint;
Sensitive : in Boolean);
-- Modify the sensitivity of a specific row and its title button.
-- If Sensitive if False, the row can not be dynamically resized.
procedure Row_Set_Visibility (Sheet : access Gtk_Sheet_Record;
Row : in Gint;
Visible : in Boolean);
-- Modify the visibility of a specific row
procedure Row_Label_Set_Visibility
(Sheet : access Gtk_Sheet_Record;
Row : in Gint;
Visible : in Boolean := True);
-- Change the visibility of the label in a given Row.
procedure Rows_Labels_Set_Visibility
(Sheet : access Gtk_Sheet_Record;
Visible : Boolean := True);
-- Change the visibility for all the row labels.
procedure Rows_Set_Resizable
(Sheet : access Gtk_Sheet_Record; Resizable : Boolean);
-- Whether rows are resizable
function Rows_Resizable (Sheet : access Gtk_Sheet_Record) return Boolean;
-- Whether rows are resizable
procedure Set_Row_Height
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Height : Guint);
-- Set the height in pixels of a specific row.
function Get_Row_Height (Sheet : access Gtk_Sheet_Record;
Row : in Gint)
return Gint;
-- Return the height in pixels of the Row-th row in Sheet.
procedure Add_Row
(Sheet : access Gtk_Sheet_Record;
Nrows : Guint);
-- Append Nrows row at the end of the sheet.
procedure Insert_Rows
(Sheet : access Gtk_Sheet_Record;
Row : Guint;
Nrows : Guint);
-- Add Nrows empty rows just before the row number Row.
procedure Delete_Rows
(Sheet : access Gtk_Sheet_Record;
Row : Guint;
Nrows : Guint);
-- Delete Nrows rows starting from Row.
function Get_Rows_Count (Sheet : access Gtk_Sheet_Record) return Guint;
-- Return the maximum row number of displayed cells.
-----------
-- Range --
-----------
function Range_Get_Type return Gtk.Gtk_Type;
-- Return the internal value associate with a Gtk_Sheet_Range
procedure Range_Clear
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range);
-- Clear the content of the range.
procedure Range_Delete
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range);
-- Clear the content of the range and delete all the links (user_data)
procedure Range_Set_Background
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Color : Gdk.Color.Gdk_Color);
-- Set the background color for the cells in a specific range.
procedure Range_Set_Foreground
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Color : Gdk.Color.Gdk_Color);
-- Set the foreground color for the cells in a specific range.
procedure Range_Set_Justification
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Justification : Gtk.Enums.Gtk_Justification);
-- Set the text justification for the cells in the range.
procedure Range_Set_Editable
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Editable : Boolean);
-- Set whether the cells in the range are editable.
procedure Range_Set_Visible (Sheet : access Gtk_Sheet_Record;
The_Range : in Gtk_Sheet_Range;
Visible : in Boolean);
-- Set whether the cells in the range are visible.
procedure Range_Set_Border
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Mask : Gtk_Sheet_Border;
Width : Guint;
Line_Style : Gdk.GC.Gdk_Line_Style);
-- Set the style of the border for the cells in the range.
procedure Range_Set_Border_Color
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Color : Gdk.Color.Gdk_Color);
-- Change the color for the borders of the cells in the range.
procedure Range_Set_Font
(Sheet : access Gtk_Sheet_Record;
The_Range : Gtk_Sheet_Range;
Font : Pango.Font.Pango_Font_Description);
-- Change the font of the cells in the range.
-----------
-- Cells --
-----------
procedure Set_Cell
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint;
Justification : Gtk.Enums.Gtk_Justification;
Text : UTF8_String);
-- Set the cell contents.
-- Set Text to the empty string to delete the content of the cell.
procedure Set_Cell_Text
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint;
Text : UTF8_String);
-- Set the cell contents.
-- The justification used is the previous one used in that cell.
function Cell_Get_Text
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint)
return UTF8_String;
-- Return the text put in a specific cell.
-- The empty string is returned if there is no text in that cell.
procedure Cell_Clear
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint);
-- Clear the contents of the cell.
procedure Cell_Delete
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint);
-- Clear the contents of the cell and remove the user data associated
-- with it.
function Cell_Get_State (Sheet : access Gtk_Sheet_Record;
Row : in Gint;
Col : in Gint)
return Gtk.Enums.Gtk_State_Type;
-- Return the state of the cell (normal or selected).
procedure Get_Pixel_Info
(Sheet : access Gtk_Sheet_Record;
X : Gint;
Y : Gint;
Row : out Gint;
Column : out Gint);
-- Return the row and column matching a given pixel on the screen.
-- Constraint_Error is raised if no such cell exists.
procedure Get_Cell_Area
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Column : Gint;
Area : out Gdk.Rectangle.Gdk_Rectangle);
-- Get the area of the screen that a cell is mapped to.
-- Constraint_Error is raised if no such cell exists;
--------------
-- Children --
--------------
-- A Gtk_Sheet can contain some children, attached to some specific
-- cells.
procedure Put
(Sheet : access Gtk_Sheet_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
X : Gint;
Y : Gint);
-- Put a new child at a specific location (in pixels) in the sheet.
procedure Attach
(Sheet : access Gtk_Sheet_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
Row : Gint;
Col : Gint;
Xoptions : Gtk.Enums.Gtk_Attach_Options := Expand or Fill;
Yoptions : Gtk.Enums.Gtk_Attach_Options := Expand or Fill;
Xpadding : Gint := 0;
Ypadding : Gint := 0);
-- Attach a child to a specific Cell in the sheet.
-- X_Align and Y_Align should be between 0.0 and 1.0, indicating that
-- the child should be aligned from the Left (resp. Top) to the Right
-- (resp. Bottom) of the cell.
-- If Row or Col is negative, the widget is attached to the row buttons or
-- column buttons.
-- Widget will not be moved if the cell is moved.
procedure Attach_Floating
(Sheet : access Gtk_Sheet_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
Row : Gint;
Col : Gint);
-- Attach a child at the current location or (Row, Col).
-- If the cell is moved because of resizing or other reasons, Widget will
-- be moved as well.
procedure Move_Child
(Sheet : access Gtk_Sheet_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
X : Gint;
Y : Gint);
-- Move a child of the table to a specific location in pixels.
-- A warning is printed if Widget is not already a child of Sheet.
function Get_Child_At
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint)
return Gtk_Sheet_Child;
-- Return the widget associated with the cell.
function Get_Widget (Child : Gtk_Sheet_Child) return Gtk.Widget.Gtk_Widget;
-- Return the widget in the child.
procedure Button_Attach
(Sheet : access Gtk_Sheet_Record;
Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
Row : Gint;
Col : Gint);
-- Attach a new button in the row or column title.
-- One of Row or Col must be negative (but only one).
-- This can be used to modify the standard buttons that appear at the top
-- of each column, or on the left of each row.
-----------------------
-- Links / User_Data --
-----------------------
-- You can associate any kind of data with a cell, just like you
-- can associate user_data with all the widgets.
-- Note that this uses a generic package, which must be instantiated at
-- library level since it has internal clean up functions.
generic
--
type Data_Type (<>) is private;
package Links is
type Data_Type_Access is access all Data_Type;
--
procedure Link_Cell
(Sheet : access Gtk_Sheet_Record'Class;
Row : Gint;
Col : Gint;
Link : Data_Type);
-- Associate some user specific data with a given cell.
function Get_Link
(Sheet : access Gtk_Sheet_Record'Class;
Row : Gint;
Col : Gint)
return Data_Type_Access;
-- Return the user data associated with the cell.
-- null is returned if the cell has no user data.
end Links;
procedure Remove_Link
(Sheet : access Gtk_Sheet_Record;
Row : Gint;
Col : Gint);
-- Delete the user data associated with the cell.
-------------
-- Signals --
-------------
--
-- The following new signals are defined for this widget:
--
-- - "set_scroll_adjustments"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Hadj : Gtk_Adjustement;
-- Vadj : Gtk_Adjustment);
--
-- Emitted when the adjustments used to indicate which area of the sheet
-- is visible are set or changed. This is not called when their value is
-- changed, only when a new one is set.
--
-- - "select_row"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint);
--
-- Emitted when a new row is selected.
--
-- - "select_column"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Column : Gint);
--
-- Emitted when a new column is selected.
--
-- - "select_range"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- The_Range : Gtk_Sheet_Range);
--
-- Emitted when a new range of cells is selected.
--
-- - "clip_range"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Clip_Range : Gtk_Sheet_Range);
--
-- Emitted when the clip area is set to a new value.
--
-- - "resize_range"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Old_Range : Gtk_Sheet_Range;
-- New_Range : Gtk_Sheet_Range);
--
-- Emitted when the current range of selected cell is resized (ie new
-- cells are added to it or removed from it).
--
-- - "move_range"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Old_Range : Gtk_Sheet_Range;
-- New_Range : Gtk_Sheet_Range);
--
-- Emitted when the current range of selected cell is moved (ie the
-- top-left cell is changed, but the size is not modified).
--
-- - "traverse"
-- function Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint;
-- New_Row : Gint_Access;
-- New_Column : Gint_Access)
-- return Boolean;
--
-- Emitted when the user wants to make a new cell active. The coordinates
-- of the currently active cell are passed in (Row, Column), the
-- coordinates of the cell that the user would like to select are
-- passed in (New_Row, New_Column). The callback can modify the new
-- values, and should return True if the new coordinates are accepted,
-- False if the selection should be refused.
--
-- - "deactivate"
-- function Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint)
-- return Boolean;
--
-- Emitted when the user wants to deactivate a specific cell. The
-- callback should return True if the cell can be deactivated, False
-- otherwise. See the subprogram Deactivate_Cell.
--
-- - "activate"
-- function Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint)
-- return Boolean;
--
-- Emitted when the user wants to activate a specific cell. The
-- callback should return True if the cell can be activated, False
-- otherwise. See the subprogram Activate_Cell.
--
-- - "set_cell"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint);
--
-- Emitted from Hide_Active_Cell, when the cell is non-empty. ???
--
-- - "clear_cell"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint);
--
-- Emitted when the content of the cell has been deleted (the text is
-- now the empty string).
--
-- - "changed"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Column : Gint);
--
-- Emitted when the content of the cell is modified (either the text
-- itself, or its properties, alignment,...)
-- A value of -1 for Row or Column means the row title, the column
-- title, or their intersection.
--
-- - "new_column_width"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Column : Gint;
-- Width : Guint);
--
-- Emitted whenever the width of the column is changed, either by the
-- user or automatically if the cells should automatically resize
-- themselves depending on their contents).
--
-- - "new_row_height"
-- procedure Handler (Sheet : access Gtk_Sheet_Record'Class;
-- Row : Gint;
-- Height : Guint);
--
-- Emitted whenever the height of the row is changed.
--
private
type Gtk_Sheet_Record is new Gtk.Container.Gtk_Container_Record
with null record;
type Gtk_Sheet_Child_Record is
new Gtk.Widget.Gtk_Widget_Record with null record;
pragma Import (C, Get_Type, "gtk_sheet_get_type");
pragma Import (C, Range_Get_Type, "gtk_sheet_range_get_type");
No_Border : constant Gtk_Sheet_Border := 0;
Left_Border : constant Gtk_Sheet_Border := 1;
Right_Border : constant Gtk_Sheet_Border := 2;
Top_Border : constant Gtk_Sheet_Border := 4;
Bottom_Border : constant Gtk_Sheet_Border := 8;
All_Borders : constant Gtk_Sheet_Border := 15;
pragma Convention (C, Gtk_Sheet_Range);
end Gtk.Extra.Sheet;
-- Unbound:
-- gtk_sheet_get_entry_widget
-- gtk_sheet_get_attributes