[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