-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 2000-2008, 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. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- In recent versions of gtk+, this package has been deprecated in favor of
-- Gtk.UIManager. However, the subprograms have not been marked as such in the
-- C files themselves, so are still available in GtkAda as well.
--
-- 2.8.17
-- create_item_factory.adb
with Gdk.Types;
with Gtk.Accel_Group;
with Gtk.Widget;
with Gtk.Object;
with Gtkada.Types;
package Gtk.Item_Factory is
pragma Obsolescent;
type Gtk_Item_Factory_Record is new Object.Gtk_Object_Record with private;
type Gtk_Item_Factory is access all Gtk_Item_Factory_Record'Class;
--
type Item_Type_Enum is
(Title,
-- Create a title item
Item,
-- Create a simple item
Image_Item,
-- Create an item holding an image
Stock_Item,
-- Create an item holding a stock image
Check_Item,
-- Create a check item
Toggle_Item,
-- Create a toggle item
Radio_Item,
-- Create a radio item
Separator,
-- Create a separator
Tearoff,
-- Create a tearoff item
Branch,
-- Create an item to hold sub items
Last_Branch
-- Create a right justified item to hold sub items
);
-- Identify the predefined item types used to create a
-- Gtk_Item_Factory_Entry.
type Gtk_Item_Factory_Entry is private;
type Gtk_Item_Factory_Entry_Array is array (Gint range <>) of
Gtk_Item_Factory_Entry;
procedure Gtk_New
(Ifactory : out Gtk_Item_Factory;
Container_Type : Gtk_Type;
Path : UTF8_String;
Accel_Group : Gtk.Accel_Group.Gtk_Accel_Group);
procedure Initialize
(Ifactory : access Gtk_Item_Factory_Record'Class;
Container_Type : Gtk_Type;
Path : UTF8_String := "";
Accel_Group : Gtk.Accel_Group.Gtk_Accel_Group);
-- Creates or initializes a new item factory.
-- Possible values of Container_Type are:
-- - Gtk.Option_Menu.Get_Type
-- - Gtk.Menu_Bar.Get_Type
-- - Gtk.Menu.Get_Type
function Get_Type return Gtk_Type;
-- Return the internal value associated with a Gtk_Item_Factory
procedure Add_Foreign
(Accel_Widget : access Gtk.Widget.Gtk_Widget_Record'Class;
Full_Path : UTF8_String;
Accel_Group : Gtk.Accel_Group.Gtk_Accel_Group;
Keyval : Guint;
Modifiers : Gdk.Types.Gdk_Modifier_Type);
function From_Widget
(Widget : access Gtk.Widget.Gtk_Widget_Record'Class)
return Gtk_Item_Factory;
function Path_From_Widget
(Widget : access Gtk.Widget.Gtk_Widget_Record'Class) return UTF8_String;
function Get_Item
(Ifactory : access Gtk_Item_Factory_Record;
Path : UTF8_String) return Gtk.Widget.Gtk_Widget;
function Get_Widget
(Ifactory : access Gtk_Item_Factory_Record;
Path : UTF8_String) return Gtk.Widget.Gtk_Widget;
function Get_Widget_By_Action
(Ifactory : access Gtk_Item_Factory_Record;
Action : Guint) return Gtk.Widget.Gtk_Widget;
function Get_Item_By_Action
(Ifactory : access Gtk_Item_Factory_Record;
Action : Guint) return Gtk.Widget.Gtk_Widget;
procedure Delete_Item
(Ifactory : access Gtk_Item_Factory_Record;
Path : UTF8_String);
procedure Delete_Entry
(Ifactory : access Gtk_Item_Factory_Record;
Ientry : Gtk_Item_Factory_Entry);
procedure Delete_Entries
(Ifactory : access Gtk_Item_Factory_Record;
Entries : Gtk_Item_Factory_Entry_Array);
procedure Popup
(Ifactory : access Gtk_Item_Factory_Record;
X : Guint;
Y : Guint;
Mouse_Button : Guint;
Time : Guint32);
generic
type Data_Type (<>) is limited private;
package Data_Item is
type Data_Type_Access is access all Data_Type;
type Gtk_Print_Func is access procedure
(Func_Data : Data_Type_Access;
Str : String); -- gchar* ???
type Gtk_Translate_Func is access function
(Path : UTF8_String; -- const gchar* ???
Func_Data : Data_Type_Access) return Gtkada.Types.Chars_Ptr;
pragma Convention (C, Gtk_Translate_Func);
type Limited_Widget is limited private;
Null_Widget : constant Limited_Widget;
function To_Widget
(Widget : Limited_Widget) return Gtk.Widget.Gtk_Widget;
type Gtk_Item_Factory_Callback is access procedure
(Callback_Data : Data_Type_Access;
Callback_Action : Guint;
Widget : Limited_Widget);
function Gtk_New
(Path : UTF8_String;
Accelerator : String := "";
Callback : Gtk_Item_Factory_Callback := null;
Item_Type : Item_Type_Enum;
Callback_Action : Guint := 0) return Gtk_Item_Factory_Entry;
-- Create a Gtk_Item_Factory_Entry.
-- It is up to you to call Free at an appropriate point to avoid memory
-- leaks.
function Gtk_New
(Path : UTF8_String;
Accelerator : String := "";
Callback : Gtk_Item_Factory_Callback := null;
Item_Type : String := "";
Callback_Action : Guint := 0) return Gtk_Item_Factory_Entry;
-- Create a Gtk_Item_Factory_Entry.
-- It is up to you to call Free at an appropriate point to avoid memory
-- leaks.
function Gtk_New
(Path : UTF8_String;
Accelerator : String := "";
Stock_Id : String;
Callback : Gtk_Item_Factory_Callback := null;
Callback_Action : Guint := 0) return Gtk_Item_Factory_Entry;
-- Create a Gtk_Item_Factory_Entry from a stock item.
-- It is up to you to call Free at an appropriate point to avoid memory
-- leaks.
function Gtk_New
(Path : UTF8_String;
Accelerator : String := "";
Callback : Gtk_Item_Factory_Callback := null;
Pixbuf : access Guchar_Array;
Callback_Action : Guint := 0) return Gtk_Item_Factory_Entry;
-- Create a Gtk_Item_Factory_Entry from an inline pixbuf image.
-- It is up to you to call Free at an appropriate point to avoid memory
-- leaks.
procedure Free (Ientry : in out Gtk_Item_Factory_Entry);
-- Free all the dynamic data associated with an item factory entry.
procedure Free (Ientries : in out Gtk_Item_Factory_Entry_Array);
-- Free all the dynamic data associated with each item factory entry.
procedure Create_Item
(Ifactory : access Gtk_Item_Factory_Record'Class;
Ientry : Gtk_Item_Factory_Entry;
Callback_Data : Data_Type_Access;
Callback_Type : Guint);
-- Callback_Type = 0 -> Gtk_Item_Factory_Callback
-- Callback_Type = 1 -> Gtk_Item_Factory_Callback1
procedure Create_Items
(Ifactory : access Gtk_Item_Factory_Record'Class;
Entries : Gtk_Item_Factory_Entry_Array;
Callback_Data : Data_Type_Access);
function Popup_Data
(Ifactory : access Gtk_Item_Factory_Record'Class)
return Data_Type_Access;
function Popup_Data_From_Widget
(Widget : access Gtk.Widget.Gtk_Widget_Record'Class)
return Data_Type_Access;
procedure Popup_With_Data
(Ifactory : access Gtk_Item_Factory_Record'Class;
Popup_Data : Data_Type_Access;
Destroy : System.Address; -- Gtk_Destroy_Notify ???
X : Guint;
Y : Guint;
Mouse_Button : Guint;
Time : Guint32);
procedure Set_Translate_Func
(Ifactory : access Gtk_Item_Factory_Record'Class;
Func : Gtk_Translate_Func;
Data : Data_Type_Access;
Notify : System.Address); -- Gtk_Destroy_Notify ???
private
type Limited_Widget is new System.Address;
Null_Widget : constant Limited_Widget :=
Limited_Widget (System.Null_Address);
end Data_Item;
--
----------------
-- Properties --
----------------
--
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties.
--
--
private
type Gtk_Item_Factory_Record is new Gtk.Object.Gtk_Object_Record
with null record;
type Gtk_Item_Factory_Entry is record
Path : Gtkada.Types.Chars_Ptr;
Accelerator : Gtkada.Types.Chars_Ptr;
Callback : System.Address;
Callback_Action : Guint;
Item_Type : Gtkada.Types.Chars_Ptr;
-- Extra data for some item types:
-- Image_Item -> pointer to inline pixbuf
-- Stock_Item -> name of stock item
Extra_Data : Gtkada.Types.Chars_Ptr;
end record;
pragma Convention (C, Gtk_Item_Factory_Entry);
pragma Import (C, Get_Type, "gtk_item_factory_get_type");
end Gtk.Item_Factory;
-- The following subprograms never had a binding, are now obsolescent:
-- No binding: gtk_item_factories_path_delete
-- No binding: gtk_item_factory_construct
-- No binding: gtk_item_factory_create_items_ac
-- No binding: gtk_item_factory_create_menu_entries
-- No binding: gtk_item_factory_from_path