[gtkada] Canvas signal "item_select" - can't complile
Enno Bartels
enno.bartels at m.eads.net
Wed Oct 23 17:05:21 CEST 2002
Hi
Am Mittwoch, 23. Oktober 2002 13:58 schrieb Stephen Leake:
> There is no version of "To_Marshaller" in Canvas_Cb that can take a
> handler procedure with a Canvas_Item parameter; only the general
> parameter types gint, guint, event are declared for you (see
> gtk-handlers.ads). So you need to instantiate your own. Something
> like:
>
> package Canvas_Item_Marshaller is new Marshallers.Generic_Marshaller
> (Canvas_Item, To_Canvas_Item);
>
> You have to write "To_Canvas_Item" as well; see gtk-arguments.ads, .adb.
>
> Then you can do:
>
> Canvas_Cb.Object_Connect
> (Canvas,
> "item_selected",
> Canvas_Item_Marshaller.To_Marshaller (Item_Select'Access),
> Canvas);
>
Thank you very much.
It works now. If I click on an item I get now the item with the number etc.
Here is the changed code that works:
-----------------------------------------
function To_Canvas_Item (C : System.Address) return Canvas_Item is
function Internal is new Unchecked_Conversion (System.Address, Canvas_Item);
begin
return Internal (C);
end To_Canvas_Item;
function To_Canvas_Item (Args : Gtk_Args; Num : Positive) return Canvas_Item is
begin
return To_Canvas_Item (Get_Nth (Args, Num));
end To_Canvas_Item;
......................
package Canvas_Cb is new Gtk.Handlers.Callback (Interactive_Canvas_Record);
package Canvas_Item_Marshaller
is new Canvas_Cb.Marshallers.Generic_Marshaller
(Canvas_Item, To_Canvas_Item);
......................
Canvas_Cb.Object_Connect (Canvas, "item_selected",
Canvas_Item_Marshaller.To_Marshaller(Item_Select'Access), Canvas);
Thanks again
Enno
More information about the gtkada
mailing list