with Cairo;
with Glib.Values;
with Gdk.Event;
with Glib.Object;
with Gtkada.Bindings; use Gtkada.Bindings;
with Gtk.Marshallers;
pragma Elaborate_All (Gtk.Marshallers);
with Gtk.Tree_Model;
with Gtk.Widget;
with Unchecked_Conversion;
package Gtk.Handlers is
pragma Elaborate_Body;
Null_Handler_Id : constant Gulong := 0;
type Handler_Id is record
Id : Gulong := Null_Handler_Id;
Closure : GClosure;
end record;
function To_Address (Path : Gtk.Tree_Model.Gtk_Tree_Path)
return System.Address;
procedure Set_On_Exception (Handler : Gtkada.Bindings.Exception_Handler)
renames Gtkada.Bindings.Set_On_Exception;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
type Return_Type is (<>);
package Return_Callback is
type Handler is access function
(Widget : access Widget_Type'Class;
Params : Glib.Values.GValues) return Return_Type;
type Simple_Handler is access function
(Widget : access Widget_Type'Class) return Return_Type;
package Marshallers is new Gtk.Marshallers.Return_Marshallers
(Widget_Type, Return_Type);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
pragma Inline (Connect);
pragma Inline (Object_Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller is new Marshallers.Generic_Marshaller
(Gint, Glib.Values.Get_Int);
package Guint_Marshaller is new Marshallers.Generic_Marshaller
(Guint, Glib.Values.Get_Uint);
package Event_Marshaller is new Marshallers.Generic_Marshaller
(Gdk.Event.Gdk_Event, Gdk.Event.Get_Event);
package Context_Marshaller is new Marshallers.Generic_Marshaller
(Cairo.Cairo_Context, Cairo.Get_Context);
package Widget_Marshaller is new Marshallers.Generic_Widget_Marshaller
(Gtk.Widget.Gtk_Widget_Record, Gtk.Widget.Gtk_Widget);
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Marshallers.Marshaller renames Gint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Context_Marshaller.Handler)
return Marshallers.Marshaller
renames Context_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Marshallers.Marshaller renames Guint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Marshallers.Marshaller renames Event_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Marshallers.Marshaller renames Widget_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Marshallers.Void_Marshaller.Handler)
return Marshallers.Marshaller
renames Marshallers.Void_Marshaller.To_Marshaller;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint)
return Return_Type renames Gint_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint)
return Return_Type renames Guint_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event) return Return_Type;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
return Return_Type renames Widget_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name)
return Return_Type renames Marshallers.Void_Marshaller.Emit_By_Name;
private
type Acc is access all Widget_Type'Class;
type Data_Type_Record is record
Func : Handler;
Proxy : Marshallers.Handler_Proxy := null;
Object : Acc := null;
end record;
type Data_Type_Access is access all Data_Type_Record;
pragma Convention (C, Data_Type_Access);
function Convert is new Unchecked_Conversion
(Data_Type_Access, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Data_Type_Access);
procedure Free_Data (Data : Data_Type_Access);
pragma Convention (C, Free_Data);
procedure First_Marshaller
(Closure : GClosure;
Return_Value : Glib.Values.GValue;
N_Params : Guint;
Params : Glib.Values.C_GValues;
Invocation_Hint : System.Address;
User_Data : System.Address);
pragma Convention (C, First_Marshaller);
First_M : constant C_Marshaller := First_Marshaller'Access;
end Return_Callback;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
type Return_Type is (<>);
type User_Type (<>) is private;
package User_Return_Callback is
type Handler is access function
(Widget : access Widget_Type'Class;
Params : Glib.Values.GValues;
User_Data : User_Type) return Return_Type;
type Simple_Handler is access function
(Widget : access Widget_Type'Class;
User_Data : User_Type) return Return_Type;
package Marshallers is new Gtk.Marshallers.User_Return_Marshallers
(Widget_Type, Return_Type, User_Type);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
pragma Inline (Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller is new Marshallers.Generic_Marshaller
(Gint, Glib.Values.Get_Int);
package Guint_Marshaller is new Marshallers.Generic_Marshaller
(Guint, Glib.Values.Get_Uint);
package Event_Marshaller is new Marshallers.Generic_Marshaller
(Gdk.Event.Gdk_Event, Gdk.Event.Get_Event);
package Widget_Marshaller is new Marshallers.Generic_Widget_Marshaller
(Gtk.Widget.Gtk_Widget_Record, Gtk.Widget.Gtk_Widget);
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Marshallers.Marshaller renames Gint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Marshallers.Marshaller renames Guint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Marshallers.Marshaller renames Event_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Marshallers.Marshaller renames Widget_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Marshallers.Void_Marshaller.Handler)
return Marshallers.Marshaller
renames Marshallers.Void_Marshaller.To_Marshaller;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint)
return Return_Type renames Gint_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint)
return Return_Type renames Guint_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event) return Return_Type;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
return Return_Type renames Widget_Marshaller.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name)
return Return_Type renames Marshallers.Void_Marshaller.Emit_By_Name;
private
type Acc is access all Widget_Type'Class;
type User_Access is access User_Type;
type Data_Type_Record is record
Func : Handler;
Proxy : Marshallers.Handler_Proxy := null;
User : User_Access := null;
Object : Acc := null;
end record;
type Data_Type_Access is access all Data_Type_Record;
pragma Convention (C, Data_Type_Access);
function Convert is new Unchecked_Conversion
(Data_Type_Access, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Data_Type_Access);
procedure Free_Data (Data : Data_Type_Access);
pragma Convention (C, Free_Data);
procedure First_Marshaller
(Closure : GClosure;
Return_Value : Glib.Values.GValue;
N_Params : Guint;
Params : Glib.Values.C_GValues;
Invocation_Hint : System.Address;
User_Data : System.Address);
pragma Convention (C, First_Marshaller);
First_M : constant C_Marshaller := First_Marshaller'Access;
end User_Return_Callback;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
type Return_Type is (<>);
type User_Type (<>) is private;
with procedure Setup (User_Data : User_Type; Id : Handler_Id);
package User_Return_Callback_With_Setup is
package Internal_Cb is new User_Return_Callback
(Widget_Type, Return_Type, User_Type);
subtype Handler is Internal_Cb.Handler;
subtype Simple_Handler is Internal_Cb.Simple_Handler;
package Marshallers renames Internal_Cb.Marshallers;
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
pragma Inline (Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller renames Internal_Cb.Gint_Marshaller;
package Guint_Marshaller renames Internal_Cb.Guint_Marshaller;
package Event_Marshaller renames Internal_Cb.Event_Marshaller;
package Widget_Marshaller renames Internal_Cb.Widget_Marshaller;
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Internal_Cb.Marshallers.Void_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint) return Return_Type renames Internal_Cb.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint) return Return_Type renames Internal_Cb.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event) return Return_Type
renames Internal_Cb.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
return Return_Type renames Internal_Cb.Emit_By_Name;
function Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name)
return Return_Type renames Internal_Cb.Emit_By_Name;
end User_Return_Callback_With_Setup;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
package Callback is
type Handler is access procedure
(Widget : access Widget_Type'Class;
Params : Glib.Values.GValues);
type Simple_Handler is access procedure
(Widget : access Widget_Type'Class);
package Marshallers is new
Gtk.Marshallers.Void_Marshallers (Widget_Type);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False);
pragma Inline (Connect);
pragma Inline (Object_Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller is new Marshallers.Generic_Marshaller
(Gint, Glib.Values.Get_Int);
package Guint_Marshaller is new Marshallers.Generic_Marshaller
(Guint, Glib.Values.Get_Uint);
package Event_Marshaller is new Marshallers.Generic_Marshaller
(Gdk.Event.Gdk_Event, Gdk.Event.Get_Event);
package Widget_Marshaller is new Marshallers.Generic_Widget_Marshaller
(Gtk.Widget.Gtk_Widget_Record, Gtk.Widget.Gtk_Widget);
package Tree_Path_Marshaller is new Marshallers.Generic_Marshaller
(Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path);
package Tree_Iter_Tree_Path_Marshaller is
new Marshallers.Generic_Marshaller_2
(Gtk.Tree_Model.Gtk_Tree_Iter, Gtk.Tree_Model.Get_Tree_Iter,
Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path);
package Tree_Path_Tree_Iter_Marshaller is
new Marshallers.Generic_Marshaller_2
(Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path,
Gtk.Tree_Model.Gtk_Tree_Iter, Gtk.Tree_Model.Get_Tree_Iter);
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Marshallers.Marshaller renames Gint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Marshallers.Marshaller renames Guint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Marshallers.Marshaller renames Event_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Marshallers.Marshaller renames Widget_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Marshallers.Void_Marshaller.Handler)
return Marshallers.Marshaller
renames Marshallers.Void_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Path_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Path_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Iter_Tree_Path_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Iter_Tree_Path_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Path_Tree_Iter_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Path_Tree_Iter_Marshaller.To_Marshaller;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint) renames Gint_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint) renames Guint_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event);
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
renames Widget_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name)
renames Marshallers.Void_Marshaller.Emit_By_Name;
procedure Emit_By_Name is
new Tree_Path_Marshaller.Emit_By_Name_Generic
(To_Address);
procedure Emit_By_Name is
new Tree_Iter_Tree_Path_Marshaller.Emit_By_Name_Generic
(Gtk.Tree_Model.To_Address,
To_Address);
procedure Emit_By_Name is
new Tree_Path_Tree_Iter_Marshaller.Emit_By_Name_Generic
(To_Address,
Gtk.Tree_Model.To_Address);
private
type Acc is access all Widget_Type'Class;
type Data_Type_Record is record
Func : Handler;
Proxy : Marshallers.Handler_Proxy := null;
Object : Acc := null;
end record;
type Data_Type_Access is access all Data_Type_Record;
pragma Convention (C, Data_Type_Access);
function Convert is new Unchecked_Conversion
(Data_Type_Access, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Data_Type_Access);
procedure Free_Data (Data : Data_Type_Access);
pragma Convention (C, Free_Data);
procedure First_Marshaller
(Closure : GClosure;
Return_Value : Glib.Values.GValue;
N_Params : Guint;
Params : Glib.Values.C_GValues;
Invocation_Hint : System.Address;
User_Data : System.Address);
pragma Convention (C, First_Marshaller);
First_M : constant C_Marshaller := First_Marshaller'Access;
end Callback;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
type User_Type (<>) is private;
package User_Callback is
type Handler is access procedure
(Widget : access Widget_Type'Class;
Params : Glib.Values.GValues;
User_Data : User_Type);
type Simple_Handler is access procedure
(Widget : access Widget_Type'Class;
User_Data : User_Type);
package Marshallers is new
Gtk.Marshallers.User_Void_Marshallers (Widget_Type, User_Type);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
pragma Inline (Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller is new Marshallers.Generic_Marshaller
(Gint, Glib.Values.Get_Int);
package Guint_Marshaller is new Marshallers.Generic_Marshaller
(Guint, Glib.Values.Get_Uint);
package Event_Marshaller is new Marshallers.Generic_Marshaller
(Gdk.Event.Gdk_Event, Gdk.Event.Get_Event);
package Widget_Marshaller is new Marshallers.Generic_Widget_Marshaller
(Gtk.Widget.Gtk_Widget_Record, Gtk.Widget.Gtk_Widget);
package Tree_Path_Marshaller is new Marshallers.Generic_Marshaller
(Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path);
package Tree_Iter_Tree_Path_Marshaller is
new Marshallers.Generic_Marshaller_2
(Gtk.Tree_Model.Gtk_Tree_Iter, Gtk.Tree_Model.Get_Tree_Iter,
Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path);
package Tree_Path_Tree_Iter_Marshaller is
new Marshallers.Generic_Marshaller_2
(Gtk.Tree_Model.Gtk_Tree_Path, Gtk.Tree_Model.Get_Tree_Path,
Gtk.Tree_Model.Gtk_Tree_Iter, Gtk.Tree_Model.Get_Tree_Iter);
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Marshallers.Marshaller renames Gint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Marshallers.Marshaller renames Guint_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Marshallers.Marshaller renames Event_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Marshallers.Marshaller renames Widget_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Marshallers.Void_Marshaller.Handler)
return Marshallers.Marshaller
renames Marshallers.Void_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Path_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Path_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Iter_Tree_Path_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Iter_Tree_Path_Marshaller.To_Marshaller;
function To_Marshaller
(Cb : Tree_Path_Tree_Iter_Marshaller.Handler)
return Marshallers.Marshaller
renames Tree_Path_Tree_Iter_Marshaller.To_Marshaller;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint) renames Gint_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint) renames Guint_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event);
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
renames Widget_Marshaller.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name)
renames Marshallers.Void_Marshaller.Emit_By_Name;
procedure Emit_By_Name is
new Tree_Path_Marshaller.Emit_By_Name_Generic
(To_Address);
procedure Emit_By_Name is
new Tree_Iter_Tree_Path_Marshaller.Emit_By_Name_Generic
(Gtk.Tree_Model.To_Address,
To_Address);
procedure Emit_By_Name is
new Tree_Path_Tree_Iter_Marshaller.Emit_By_Name_Generic
(To_Address,
Gtk.Tree_Model.To_Address);
private
type Acc is access all Widget_Type'Class;
type User_Access is access User_Type;
type Data_Type_Record is record
Func : Handler;
Proxy : Marshallers.Handler_Proxy := null;
User : User_Access := null;
Object : Acc := null;
end record;
type Data_Type_Access is access all Data_Type_Record;
pragma Convention (C, Data_Type_Access);
function Convert is new Unchecked_Conversion
(Data_Type_Access, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Data_Type_Access);
procedure Free_Data (Data : Data_Type_Access);
pragma Convention (C, Free_Data);
procedure First_Marshaller
(Closure : GClosure;
Return_Value : Glib.Values.GValue;
N_Params : Guint;
Params : Glib.Values.C_GValues;
Invocation_Hint : System.Address;
User_Data : System.Address);
pragma Convention (C, First_Marshaller);
First_M : constant C_Marshaller := First_Marshaller'Access;
end User_Callback;
generic
type Widget_Type is new Glib.Object.GObject_Record with private;
type User_Type (<>) is private;
with procedure Setup (User_Data : User_Type; Id : Handler_Id);
package User_Callback_With_Setup is
package Internal_Cb is new User_Callback (Widget_Type, User_Type);
package Marshallers renames Internal_Cb.Marshallers;
subtype Handler is Internal_Cb.Handler;
subtype Simple_Handler is Internal_Cb.Simple_Handler;
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
procedure Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
User_Data : User_Type;
After : Boolean := False);
procedure Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Simple_Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False);
pragma Inline (Connect);
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Marsh : Marshallers.Marshaller;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Connect
(Widget : access Widget_Type'Class;
Name : Glib.Signal_Name;
Cb : Handler;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
function Object_Connect
(Widget : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name;
Cb : Handler;
Slot_Object : access Widget_Type'Class;
User_Data : User_Type;
After : Boolean := False) return Handler_Id;
package Gint_Marshaller renames Internal_Cb.Gint_Marshaller;
package Guint_Marshaller renames Internal_Cb.Guint_Marshaller;
package Event_Marshaller renames Internal_Cb.Event_Marshaller;
package Widget_Marshaller renames Internal_Cb.Widget_Marshaller;
function To_Marshaller
(Cb : Gint_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Guint_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Event_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Widget_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
function To_Marshaller
(Cb : Internal_Cb.Marshallers.Void_Marshaller.Handler)
return Internal_Cb.Marshallers.Marshaller
renames Internal_Cb.To_Marshaller;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gint) renames Internal_Cb.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Guint) renames Internal_Cb.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : Gdk.Event.Gdk_Event) renames Internal_Cb.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name;
Param : access Gtk.Widget.Gtk_Widget_Record'Class)
renames Internal_Cb.Emit_By_Name;
procedure Emit_By_Name
(Object : access Widget_Type'Class;
Name : Glib.Signal_Name) renames Internal_Cb.Emit_By_Name;
end User_Callback_With_Setup;
procedure Add_Watch
(Id : Handler_Id; Object : access Glib.Object.GObject_Record'Class);
procedure Disconnect
(Object : access Glib.Object.GObject_Record'Class;
Id : in out Handler_Id);
procedure Emit_Stop_By_Name
(Object : access Glib.Object.GObject_Record'Class;
Name : Glib.Signal_Name);
procedure Handler_Block
(Obj : access Glib.Object.GObject_Record'Class;
Id : Handler_Id);
procedure Handlers_Destroy
(Obj : access Glib.Object.GObject_Record'Class);
procedure Handler_Unblock
(Obj : access Glib.Object.GObject_Record'Class;
Id : Handler_Id);
function Do_Signal_Connect
(Object : Glib.Object.GObject;
Name : Glib.Signal_Name;
Marshaller : C_Marshaller;
Handler : System.Address;
Func_Data : System.Address;
Destroy : System.Address;
After : Boolean;
Slot_Object : System.Address := System.Null_Address;
Expect_Return_Value : Boolean) return Handler_Id;
end Gtk.Handlers;