-----------------------------------------------------------------------
-- 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. --
-- --
-- As a special exception, if other files instantiate generics from --
-- this unit, or you link this unit with other files to produce an --
-- executable, this unit does not by itself cause the resulting --
-- executable to be covered by the GNU General Public License. This --
-- exception does not however invalidate any other reasons why the --
-- executable file might be covered by the GNU Public License. --
-----------------------------------------------------------------------
--
-- A Gtk_Color_Combo is a widget that ease the selection of colors
-- by the user. It is a special form of a Gtk_Combo_Box, that displays
-- a special popup window, with a list of colors.
--
-- Note that nothing appears in the button, this your responsibility to
-- update it when the user selects a new color (see the "changed" signal).
--
-- The recommended solution is to put a Gtk_Pixmap as the
-- child of the button of the combo box ("Add (Get_Button (Combo), Pixmap)"),
-- and updated it in the handler for this signal.
--
-- gtkextra 2.1.1
-- Selectors
with Gdk.Color;
with Gtk.Extra.Combo_Button;
package Gtk.Extra.Color_Combo is
type Gtk_Color_Combo_Record is
new Gtk.Extra.Combo_Button.Gtk_Combo_Button_Record with private;
type Gtk_Color_Combo is access all Gtk_Color_Combo_Record'Class;
procedure Gtk_New (Widget : out Gtk_Color_Combo);
-- Create a new default combo box.
-- It shows a list of 40 default colors.
procedure Initialize (Widget : access Gtk_Color_Combo_Record'Class);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
procedure Gtk_New
(Widget : out Gtk_Color_Combo;
Nrows : Gint;
Ncols : Gint;
Values : Gdk.Color.Gdk_Color_Array);
-- Create a new combo box with a specific list of colors.
-- Note that Color_Names must contain at least Nrows * Ncols elements.
procedure Initialize
(Widget : access Gtk_Color_Combo_Record;
Nrows : Gint;
Ncols : Gint;
Values : Gdk.Color.Gdk_Color_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_Color_Combo.
function Get_Color_At
(Widget : access Gtk_Color_Combo_Record;
Row : Gint;
Col : Gint) return Gdk.Color.Gdk_Color;
-- Return the name of the color at specific coordinates.
procedure Find_Color
(Color_Combo : access Gtk_Color_Combo_Record;
Color : Gdk.Color.Gdk_Color;
Row : out Gint;
Col : out Gint);
-- Return the coordinates in which a color appear in the popup window.
-- (-1, -1) is returned if the color was not found in the combo box.
function Get_Selection (Color_Combo : access Gtk_Color_Combo_Record)
return Gdk.Color.Gdk_Color;
-- Return the current selection in the combo.
function Set_Color
(Color_Combo : access Gtk_Color_Combo_Record;
Name : String)
return Boolean;
-- Set the new current color. If the color is not found in the list of
-- colors provided in the popup window, False is returned.
function Set_Color
(Color_Combo : access Gtk_Color_Combo_Record;
Color : Gdk.Color.Gdk_Color)
return Boolean;
-- Set the new current color. Color must have been allocated first. If the
-- color is not found in the list of colors provided in the popup window,
-- False is returned.
function Get_Ncols (Color_Combo : access Gtk_Color_Combo_Record)
return Gint;
-- Return the number of columns in the popup window
function Get_Nrows (Color_Combo : access Gtk_Color_Combo_Record)
return Gint;
-- Return the number of rows in the popup window
procedure Changed
(Color_Combo : access Gtk_Color_Combo_Record;
Row : Gint;
Col : Gint);
-- Emit the changed signal for the widget, as if the color at coordinates
-- (Row, Col) had been selected.
-- Note that this doesn't change the internal state of the widget (use
-- Set_Color for that).
-------------
-- Signals --
-------------
--
-- The following new signals are defined for this widget:
--
-- - "changed"
-- procedure Handler (Color_Combo : access Gtk_Color_Combo_Record'Class;
-- Selection : Gint;
-- Color : access Gdk.Color.Gdk_Color);
--
-- Emitted when the color has selected a new color.
-- Selection is the number of the selection (this is the total
-- row * Ncols + col). Color_Name is the name of the selected color.
--
private
type Gtk_Color_Combo_Record is
new Gtk.Extra.Combo_Button.Gtk_Combo_Button_Record with null record;
pragma Import (C, Get_Type, "gtk_color_combo_get_type");
end Gtk.Extra.Color_Combo;