1. ----------------------------------------------------------------------- 
  2. --               GtkAda - Ada95 binding for Gtk+/Gnome               -- 
  3. --                                                                   -- 
  4. --      Copyright (C) 2000 E. Briot, J. Brobecker and A. Charlet     -- 
  5. --                Copyright (C) 2000-2006 AdaCore                    -- 
  6. --                                                                   -- 
  7. -- This library is free software; you can redistribute it and/or     -- 
  8. -- modify it under the terms of the GNU General Public               -- 
  9. -- License as published by the Free Software Foundation; either      -- 
  10. -- version 2 of the License, or (at your option) any later version.  -- 
  11. --                                                                   -- 
  12. -- This library is distributed in the hope that it will be useful,   -- 
  13. -- but WITHOUT ANY WARRANTY; without even the implied warranty of    -- 
  14. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -- 
  15. -- General Public License for more details.                          -- 
  16. --                                                                   -- 
  17. -- You should have received a copy of the GNU General Public         -- 
  18. -- License along with this library; if not, write to the             -- 
  19. -- Free Software Foundation, Inc., 59 Temple Place - Suite 330,      -- 
  20. -- Boston, MA 02111-1307, USA.                                       -- 
  21. --                                                                   -- 
  22. -- As a special exception, if other files instantiate generics from  -- 
  23. -- this unit, or you link this unit with other files to produce an   -- 
  24. -- executable, this  unit  does not  by itself cause  the resulting  -- 
  25. -- executable to be covered by the GNU General Public License. This  -- 
  26. -- exception does not however invalidate any other reasons why the   -- 
  27. -- executable file  might be covered by the  GNU Public License.     -- 
  28. ----------------------------------------------------------------------- 
  29.  
  30. --  <description> 
  31. --  A Gtk_Color_Combo is a widget that ease the selection of colors 
  32. --  by the user. It is a special form of a Gtk_Combo_Box, that displays 
  33. --  a special popup window, with a list of colors. 
  34. -- 
  35. --  Note that nothing appears in the button, this your responsibility to 
  36. --  update it when the user selects a new color (see the "changed" signal). 
  37. -- 
  38. --  The recommended solution is to put a Gtk_Pixmap as the 
  39. --  child of the button of the combo box ("Add (Get_Button (Combo), Pixmap)"), 
  40. --  and updated it in the handler for this signal. 
  41. --  </description> 
  42. --  <c_version>gtkextra 2.1.1</c_version> 
  43. --  <group>Selectors</group> 
  44.  
  45. with Gdk.Color; 
  46. with Gtk.Extra.Combo_Button; 
  47.  
  48. package Gtk.Extra.Color_Combo is 
  49.  
  50.    type Gtk_Color_Combo_Record is 
  51.      new Gtk.Extra.Combo_Button.Gtk_Combo_Button_Record with private; 
  52.    type Gtk_Color_Combo is access all Gtk_Color_Combo_Record'Class; 
  53.  
  54.    procedure Gtk_New (Widget : out Gtk_Color_Combo); 
  55.    --  Create a new default combo box. 
  56.    --  It shows a list of 40 default colors. 
  57.  
  58.    procedure Initialize (Widget : access Gtk_Color_Combo_Record'Class); 
  59.    --  Internal initialization function. 
  60.    --  See the section "Creating your own widgets" in the documentation. 
  61.  
  62.    procedure Gtk_New 
  63.      (Widget : out Gtk_Color_Combo; 
  64.       Nrows  : Gint; 
  65.       Ncols  : Gint; 
  66.       Values : Gdk.Color.Gdk_Color_Array); 
  67.    --  Create a new combo box with a specific list of colors. 
  68.    --  Note that Color_Names must contain at least Nrows * Ncols elements. 
  69.  
  70.    procedure Initialize 
  71.      (Widget : access Gtk_Color_Combo_Record; 
  72.       Nrows  : Gint; 
  73.       Ncols  : Gint; 
  74.       Values : Gdk.Color.Gdk_Color_Array); 
  75.    --  Internal initialization function. 
  76.    --  See the section "Creating your own widgets" in the documentation. 
  77.  
  78.    function Get_Type return Gtk.Gtk_Type; 
  79.    --  Return the internal value associated with a Gtk_Color_Combo. 
  80.  
  81.    function Get_Color_At 
  82.      (Widget : access Gtk_Color_Combo_Record; 
  83.       Row    : Gint; 
  84.       Col    : Gint) return Gdk.Color.Gdk_Color; 
  85.    --  Return the name of the color at specific coordinates. 
  86.  
  87.    procedure Find_Color 
  88.      (Color_Combo : access Gtk_Color_Combo_Record; 
  89.       Color       : Gdk.Color.Gdk_Color; 
  90.       Row         : out Gint; 
  91.       Col         : out Gint); 
  92.    --  Return the coordinates in which a color appear in the popup window. 
  93.    --  (-1, -1) is returned if the color was not found in the combo box. 
  94.  
  95.    function Get_Selection (Color_Combo : access Gtk_Color_Combo_Record) 
  96.       return Gdk.Color.Gdk_Color; 
  97.    --  Return the current selection in the combo. 
  98.  
  99.    function Set_Color 
  100.      (Color_Combo : access Gtk_Color_Combo_Record; 
  101.       Name        : String) 
  102.      return Boolean; 
  103.    --  Set the new current color. If the color is not found in the list of 
  104.    --  colors provided in the popup window, False is returned. 
  105.  
  106.    function Set_Color 
  107.      (Color_Combo : access Gtk_Color_Combo_Record; 
  108.       Color       : Gdk.Color.Gdk_Color) 
  109.      return Boolean; 
  110.    --  Set the new current color. Color must have been allocated first.  If the 
  111.    --  color is not found in the list of colors provided in the popup window, 
  112.    --  False is returned. 
  113.  
  114.    function Get_Ncols (Color_Combo : access Gtk_Color_Combo_Record) 
  115.       return Gint; 
  116.    --  Return the number of columns in the popup window 
  117.  
  118.    function Get_Nrows (Color_Combo : access Gtk_Color_Combo_Record) 
  119.       return Gint; 
  120.    --  Return the number of rows in the popup window 
  121.  
  122.    procedure Changed 
  123.      (Color_Combo : access Gtk_Color_Combo_Record; 
  124.       Row : Gint; 
  125.       Col : Gint); 
  126.    --  Emit the changed signal for the widget, as if the color at coordinates 
  127.    --  (Row, Col) had been selected. 
  128.    --  Note that this doesn't change the internal state of the widget (use 
  129.    --  Set_Color for that). 
  130.  
  131.    ------------- 
  132.    -- Signals -- 
  133.    ------------- 
  134.  
  135.    --  <signals> 
  136.    --  The following new signals are defined for this widget: 
  137.    -- 
  138.    --  - "changed" 
  139.    --  procedure Handler (Color_Combo : access Gtk_Color_Combo_Record'Class; 
  140.    --                     Selection   : Gint; 
  141.    --                     Color       : access Gdk.Color.Gdk_Color); 
  142.    -- 
  143.    --  Emitted when the color has selected a new color. 
  144.    --  Selection is the number of the selection (this is the total 
  145.    --  row * Ncols + col). Color_Name is the name of the selected color. 
  146.    --  </signals> 
  147.  
  148. private 
  149.    type Gtk_Color_Combo_Record is 
  150.      new Gtk.Extra.Combo_Button.Gtk_Combo_Button_Record with null record; 
  151.    pragma Import (C, Get_Type, "gtk_color_combo_get_type"); 
  152. end Gtk.Extra.Color_Combo;