1. ----------------------------------------------------------------------- 
  2. --              GtkAda - Ada95 binding for Gtk+/Gnome                -- 
  3. --                                                                   -- 
  4. --                Copyright (C) 2006 AdaCore                         -- 
  5. --                                                                   -- 
  6. -- This library is free software; you can redistribute it and/or     -- 
  7. -- modify it under the terms of the GNU General Public               -- 
  8. -- License as published by the Free Software Foundation; either      -- 
  9. -- version 2 of the License, or (at your option) any later version.  -- 
  10. --                                                                   -- 
  11. -- This library is distributed in the hope that it will be useful,   -- 
  12. -- but WITHOUT ANY WARRANTY; without even the implied warranty of    -- 
  13. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU -- 
  14. -- General Public License for more details.                          -- 
  15. --                                                                   -- 
  16. -- You should have received a copy of the GNU General Public         -- 
  17. -- License along with this library; if not, write to the             -- 
  18. -- Free Software Foundation, Inc., 59 Temple Place - Suite 330,      -- 
  19. -- Boston, MA 02111-1307, USA.                                       -- 
  20. --                                                                   -- 
  21. -- As a special exception, if other files instantiate generics from  -- 
  22. -- this unit, or you link this unit with other files to produce an   -- 
  23. -- executable, this  unit  does not  by itself cause  the resulting  -- 
  24. -- executable to be covered by the GNU General Public License. This  -- 
  25. -- exception does not however invalidate any other reasons why the   -- 
  26. -- executable file  might be covered by the  GNU Public License.     -- 
  27. ----------------------------------------------------------------------- 
  28.  
  29. --  <description> 
  30. --  A Gtk_Combo_Box_Entry is a widget that allows the user to choose from a 
  31. --  list of valid choices or enter a different value. It is very similar to 
  32. --  Gtk_Combo_Box, but it displays the selected value in an entry to allow 
  33. --  modifying it. 
  34. -- 
  35. --  In contrast to a Gtk_Combo_Box, the underlying model of a 
  36. --  Gtk_Combo_Box_Entry must always have a text column (see Set_Text_Column), 
  37. --  and the entry will show the content of the text column in the selected row. 
  38. --  To get the text from the entry, use Gtk.Combo_Box.Get_Active_Text. 
  39. -- 
  40. --  The changed signal will be emitted while typing into a Gtk_Combo_Box_Entry, 
  41. --  as well as when selecting an item from the Gtk_Combo_Box_Entry's list. Use 
  42. --  Gtk.Combo_Box.Get_Active or Gtk.Combo_Box.Get_Active_Iter to discover 
  43. --  whether an item was actually selected from the list. 
  44. -- 
  45. --  Connect to the activate signal of the Gtk_Entry (use Gtk.Bin.Get_Child) to 
  46. --  detect when the user actually finishes entering text. 
  47. -- 
  48. --  The convenience API to construct simple text-only Gtk_Combo_Box can also be 
  49. --  used with Gtk_Combo_Box_Entry which have been constructed with 
  50. --  Gtk_New_Text. 
  51. --  </description> 
  52. --  </description> 
  53. --  <c_version>2.8.17</c_version> 
  54. --  <group>Trees and Lists</group> 
  55. --  <screenshot>gtk-combo_box_entry</screenshot> 
  56.  
  57. with Glib.Properties; 
  58. with Glib.Types; 
  59. with Gtk.Cell_Editable; 
  60. with Gtk.Cell_Layout; 
  61. with Gtk.Combo_Box; 
  62. with Gtk.Tree_Model; 
  63.  
  64. package Gtk.Combo_Box_Entry is 
  65.  
  66.    type Gtk_Combo_Box_Entry_Record is new Gtk.Combo_Box.Gtk_Combo_Box_Record 
  67.       with null record; 
  68.    type Gtk_Combo_Box_Entry is access all Gtk_Combo_Box_Entry_Record'Class; 
  69.  
  70.    procedure Gtk_New    (Combo : out Gtk_Combo_Box_Entry); 
  71.    procedure Initialize (Combo : access Gtk_Combo_Box_Entry_Record'Class); 
  72.    --  Creates a new combo entry which has a Gtk.Gentry.Gtk_Entry as child. 
  73.    --  After construction, you should set a model using Gtk.Combo_Box.Set_Model 
  74.    --  and text_column using Set_Text_Column. 
  75.  
  76.    procedure Gtk_New_Text    (Combo : out Gtk_Combo_Box_Entry); 
  77.    procedure Initialize_Text (Combo : access Gtk_Combo_Box_Entry_Record'Class); 
  78.    --  Convenience function which constructs a new editable text combo box, 
  79.    --  which is an entry just displaying strings. If you use this function to 
  80.    --  create a text combo box, you should only manipulate its data source with 
  81.    --  the convenience functions Gtk.Combo_Box.Append_Text, 
  82.    --  Gtk.Combo_Box.Insert_Text,... 
  83.  
  84.    procedure Gtk_New_With_Model 
  85.      (Combo       : out Gtk_Combo_Box_Entry; 
  86.       Model       : access Gtk.Tree_Model.Gtk_Tree_Model_Record'Class; 
  87.       Text_Column : Gint); 
  88.    procedure Initialize_With_Model 
  89.      (Combo       : access Gtk_Combo_Box_Entry_Record'Class; 
  90.       Model       : access Gtk.Tree_Model.Gtk_Tree_Model_Record'Class; 
  91.       Text_Column : Gint); 
  92.    --  Creates a new entry which has a Gtk_Entry as child and a list of strings 
  93.    --  as popup. You can get the Gtk_Entry using Gtk.Bin.Get_Child. To add and 
  94.    --  remove strings from the list, just modify Model 
  95.  
  96.    function Get_Type return Glib.GType; 
  97.    --  Returns the internal value used for Gtk_Combo_Box_Entry widgets 
  98.  
  99.    procedure Set_Text_Column 
  100.      (Entry_Box : access Gtk_Combo_Box_Entry_Record; Text_Column : Gint); 
  101.    function Get_Text_Column 
  102.      (Entry_Box : access Gtk_Combo_Box_Entry_Record)  return Gint; 
  103.    --  Sets the model column which Entry_Box should use to get strings from 
  104.    --  to be Text_Column. 
  105.  
  106.    ---------------- 
  107.    -- Interfaces -- 
  108.    ---------------- 
  109.    --  This class implements several interfaces. See Glib.Types 
  110.    -- 
  111.    --  - "Gtk_Cell_Layout" 
  112.    --    This interface should be used to add new renderers to the view, to 
  113.    --    render various columns of the model 
  114.    --  - "Gtk_Cell_Editable" 
  115.    --    This interface should be used to edit the contents of a tree model 
  116.    --    cell 
  117.  
  118.    package Implements_Cell_Layout is new Glib.Types.Implements 
  119.      (Gtk.Cell_Layout.Gtk_Cell_Layout, Gtk_Combo_Box_Entry_Record, 
  120.       Gtk_Combo_Box_Entry); 
  121.    function "+" 
  122.      (Box : access Gtk_Combo_Box_Entry_Record'Class) 
  123.       return Gtk.Cell_Layout.Gtk_Cell_Layout 
  124.       renames Implements_Cell_Layout.To_Interface; 
  125.    function "-" 
  126.      (Layout : Gtk.Cell_Layout.Gtk_Cell_Layout) 
  127.       return Gtk_Combo_Box_Entry 
  128.       renames Implements_Cell_Layout.To_Object; 
  129.    --  Converts to and from the Gtk_Cell_Layout interface 
  130.  
  131.    package Implements_Cell_Editable is new Glib.Types.Implements 
  132.      (Gtk.Cell_Editable.Gtk_Cell_Editable, 
  133.       Gtk_Combo_Box_Entry_Record, Gtk_Combo_Box_Entry); 
  134.    function "+" 
  135.      (Box : access Gtk_Combo_Box_Entry_Record'Class) 
  136.       return Gtk.Cell_Editable.Gtk_Cell_Editable 
  137.       renames Implements_Cell_Editable.To_Interface; 
  138.    function "-" 
  139.      (Editable : Gtk.Cell_Editable.Gtk_Cell_Editable) 
  140.       return Gtk_Combo_Box_Entry 
  141.       renames Implements_Cell_Editable.To_Object; 
  142.    --  Converts to and from the Gtk_Cell_Editable interface 
  143.  
  144.    ---------------- 
  145.    -- Properties -- 
  146.    ---------------- 
  147.    --  The following properties are defined for this widget. See 
  148.    --  Glib.Properties for more information on properties. 
  149.  
  150.    --  <properties> 
  151.    --  Name:  Text_Column_Property 
  152.    --  Type:  Int 
  153.    --  Descr: A column in the data source model to get the strings from 
  154.    --  </properties> 
  155.  
  156.    Text_Column_Property : constant Glib.Properties.Property_Int; 
  157.  
  158. private 
  159.    Text_Column_Property : constant Glib.Properties.Property_Int := 
  160.      Glib.Properties.Build ("text-column"); 
  161.  
  162.    pragma Import (C, Get_Type, "gtk_combo_box_entry_get_type"); 
  163. end Gtk.Combo_Box_Entry;